1 ###################################################
2 # parse an ethereal conformance file
3 # Copyright jelmer@samba.org 2005
4 # released under the GNU GPL
6 package Parse::Pidl::Ethereal::Conformance;
11 @EXPORT_OK = qw(EmitProhibited FindDissectorParam %hf_renames);
15 use Parse::Pidl::Util qw(has_property);
17 sub handle_union_tag_size($$)
22 sub handle_type($$$$$$$)
24 my ($name,$dissectorname,$ft_type,$base_type,$mask,$valsstring,$alignment) = @_;
28 use vars qw(%hf_renames);
30 sub handle_hf_rename($$)
33 $hf_renames{$old} = $new;
36 my %dissectorparams = ();
38 sub handle_param_value($$)
40 my ($dissector_name,$value) = @_;
42 $dissectorparams{$dissector_name} = $value;
46 sub handle_hf_field($$$$$$$$)
48 my ($hf,$title,$filter,$ft_type,$base_type,$valsstring,$mask,$blub) = @_;
52 sub handle_strip_prefix($)
63 push (@noemit, $type);
66 my %field_handlers = (
67 UNION_TAG_SIZE => \&handle_union_tag_size,
68 TYPE => \&handle_type,
69 NOEMIT => \&handle_noemit,
70 PARAM_VALUE => \&handle_param_value,
71 HF_FIELD => \&handle_hf_field,
72 HF_RENAME => \&handle_hf_rename,
73 STRIP_PREFIX => \&handle_strip_prefix
80 open(IN,$f) or return undef;
86 my @fields = split(/ /);
88 $field_handlers{$fields[0]}(@fields);
98 return 1 if (grep(/$type/,@noemit));
103 sub FindDissectorParam($)
107 return $dissectorparams{$type} if defined ($dissectorparams{$type});