svn commit: samba r10765 - in
branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Ethereal: .
jelmer at samba.org
jelmer at samba.org
Thu Oct 6 11:57:25 GMT 2005
Author: jelmer
Date: 2005-10-06 11:57:25 +0000 (Thu, 06 Oct 2005)
New Revision: 10765
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10765
Log:
Actually use VALS() setting for enums
Modified:
branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Ethereal/NDR.pm
Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Ethereal/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Ethereal/NDR.pm 2005-10-06 11:15:20 UTC (rev 10764)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Ethereal/NDR.pm 2005-10-06 11:57:25 UTC (rev 10765)
@@ -31,24 +31,6 @@
"ptr" => "NDR_POINTER_PTR"
);
-sub type2ft($)
-{
- my($t) = shift;
-
- return "FT_UINT$1" if $t =~ /uint(8|16|32|64)/;
- return "FT_INT$1" if $t =~ /int(8|16|32|64)/;
- return "FT_UINT64", if $t eq "HYPER_T" or $t eq "NTTIME_hyper"
- or $t eq "hyper";
-
- # TODO: should NTTIME_hyper be a FT_ABSOLUTE_TIME as well?
-
- return "FT_ABSOLUTE_TIME" if $t eq "NTTIME" or $t eq "NTTIME_1sec";
-
- return "FT_STRING" if ($t eq "string");
-
- return "FT_NONE";
-}
-
sub StripPrefixes($)
{
my ($s) = @_;
@@ -156,7 +138,7 @@
my $enum_size = $e->{BASE_TYPE};
$enum_size =~ s/uint//g;
- register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, drep, \@HF\@, \@PARAM\@);", type2ft($e->{BASE_TYPE}), "BASE_DEC", "0", "VALS($valsstring)", $enum_size / 8);
+ register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, drep, \@HF\@, \@PARAM\@);", "FT_UINT$enum_size", "BASE_DEC", "0", "VALS($valsstring)", $enum_size / 8);
}
sub Bitmap($$$)
@@ -230,7 +212,7 @@
my $size = $e->{BASE_TYPE};
$size =~ s/uint//g;
- register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, drep, \@HF\@, \@PARAM\@);", type2ft($e->{BASE_TYPE}), "BASE_DEC", "0", "NULL", $size/8);
+ register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, drep, \@HF\@, \@PARAM\@);", "FT_UINT$size", "BASE_DEC", "0", "NULL", $size/8);
}
sub ElementLevel($$$$$)
@@ -330,7 +312,19 @@
my $call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, drep);";
- my $hf = register_hf_field("hf_$ifname\_$pn\_$e->{NAME}", field2name($e->{NAME}), "$ifname.$pn.$e->{NAME}", type2ft($e->{TYPE}), "BASE_HEX", "NULL", 0, "");
+ my $type = find_type($e->{TYPE});
+
+ if (not defined($type)) {
+ # default settings
+ $type = {
+ MASK => 0,
+ VALSSTRING => "NULL",
+ FT_TYPE => "FT_NONE",
+ BASE_TYPE => "BASE_HEX"
+ };
+ }
+
+ my $hf = register_hf_field("hf_$ifname\_$pn\_$e->{NAME}", field2name($e->{NAME}), "$ifname.$pn.$e->{NAME}", $type->{FT_TYPE}, $type->{BASE_TYPE}, $type->{VALSSTRING}, $type->{MASK}, "");
$hf_used{$hf} = 1;
my $eltname = StripPrefixes($pn) . ".$e->{NAME}";
@@ -685,7 +679,13 @@
pidl_hdr "#endif /* $define */";
}
+sub find_type($)
+{
+ my $n = shift;
+ return $conformance->{types}->{$n};
+}
+
sub register_type($$$$$$$)
{
my ($type,$call,$ft,$base,$mask,$vals,$length) = @_;
More information about the samba-cvs
mailing list