亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ndr.pm

?? wireshark 0.99.7 最新源碼
?? PM
?? 第 1 頁 / 共 3 頁
字號:
################################################### Samba4 NDR parser generator for IDL structures# Copyright tridge@samba.org 2000-2003# Copyright tpot@samba.org 2001,2005# Copyright jelmer@samba.org 2004-2007# Portions based on idl2eth.c by Ronnie Sahlberg# released under the GNU GPL=pod=head1 NAMEParse::Pidl::Wireshark::NDR - Parser generator for Wireshark=cutpackage Parse::Pidl::Wireshark::NDR;use Exporter;@ISA = qw(Exporter);@EXPORT_OK = qw(field2name %res PrintIdl StripPrefixes RegisterInterfaceHandoff register_hf_field CheckUsed ProcessImport ProcessInclude find_type DumpEttList DumpEttDeclaration DumpHfList DumpHfDeclaration DumpFunctionTable register_type register_ett);use strict;use Parse::Pidl qw(error warning);use Parse::Pidl::Typelist qw(getType);use Parse::Pidl::Util qw(has_property property_matches make_str);use Parse::Pidl::NDR qw(ContainsString GetNextLevel);use Parse::Pidl::Dump qw(DumpType DumpFunction);use Parse::Pidl::Wireshark::Conformance qw(ReadConformance);use File::Basename;	use vars qw($VERSION);$VERSION = '0.01';my %return_types = ();my %dissector_used = ();my %ptrtype_mappings = (	"unique" => "NDR_POINTER_UNIQUE",	"ref" => "NDR_POINTER_REF",	"ptr" => "NDR_POINTER_PTR");sub StripPrefixes($$){	my ($s, $prefixes) = @_;	foreach (@$prefixes) {		$s =~ s/^$_\_//g;	}	return $s;}# Convert a IDL structure field name (e.g access_mask) to a prettier# string like 'Access Mask'.sub field2name($){    my($field) = shift;    $field =~ s/_/ /g;		# Replace underscores with spaces    $field =~ s/(\w+)/\u\L$1/g;	# Capitalise each word        return $field;}sub new($){	my ($class) = @_;	my $self = {res => {hdr => "", def => "", code => ""}, tabs => "", cur_fn => undef,		hf_used => {}, ett => [], conformance => undef	};	bless($self, $class);}sub pidl_fn_start($$){	my ($self, $fn) = @_;	$self->{cur_fn} = $fn;}sub pidl_fn_end($$){	my ($self, $fn) = @_;	die("Inconsistent state: $fn != $self->{cur_fn}") if ($fn ne $self->{cur_fn});	$self->{cur_fn} = undef;}sub pidl_code($$){	my ($self, $d) = @_;	return if (defined($self->{cur_fn}) and defined($self->{conformance}->{manual}->{$self->{cur_fn}})); 	if ($d) {		$self->{res}->{code} .= $self->{tabs};		$self->{res}->{code} .= $d;	}	$self->{res}->{code} .="\n";}sub pidl_hdr($$) { my ($self,$x) = @_; $self->{res}->{hdr} .= "$x\n"; }sub pidl_def($$) { my ($self,$x) = @_; $self->{res}->{def} .= "$x\n"; }sub indent($){	my ($self) = @_;	$self->{tabs} .= "\t";}sub deindent($){	my ($self) = @_;	$self->{tabs} = substr($self->{tabs}, 0, -1);}sub PrintIdl($$){	my ($self, $idl) = @_;	foreach (split /\n/, $idl) {		$self->pidl_code("/* IDL: $_ */");	}	$self->pidl_code("");}###################################################################### parse the interface definitionssub Interface($$){	my($self, $interface) = @_;	$self->Const($_,$interface->{NAME}) foreach (@{$interface->{CONSTS}});	$self->Type($_, $_->{NAME}, $interface->{NAME}) foreach (@{$interface->{TYPES}});	$self->Function($_,$interface->{NAME}) foreach (@{$interface->{FUNCTIONS}});}sub Enum($$$$){	my ($self, $e,$name,$ifname) = @_;	my $valsstring = "$ifname\_$name\_vals";	my $dissectorname = "$ifname\_dissect\_enum\_".StripPrefixes($name, $self->{conformance}->{strip_prefixes});	return if (defined($self->{conformance}->{noemit}->{StripPrefixes($name, $self->{conformance}->{strip_prefixes})}));   	foreach (@{$e->{ELEMENTS}}) {		if (/([^=]*)=(.*)/) {			$self->pidl_hdr("#define $1 ($2)");		}	}		$self->pidl_hdr("extern const value_string $valsstring\[];");	$self->pidl_hdr("int $dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);");	$self->pidl_def("const value_string ".$valsstring."[] = {");    	foreach (@{$e->{ELEMENTS}}) {		next unless (/([^=]*)=(.*)/);		$self->pidl_def("\t{ $1, \"$1\" },");	}	$self->pidl_def("{ 0, NULL }");	$self->pidl_def("};");	$self->pidl_fn_start($dissectorname);	$self->pidl_code("int");	$self->pidl_code("$dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)");	$self->pidl_code("{");	$self->indent;	$self->pidl_code("g$e->{BASE_TYPE} parameter=0;");	$self->pidl_code("if(param){");	$self->indent;	$self->pidl_code("parameter=(g$e->{BASE_TYPE})*param;");	$self->deindent;	$self->pidl_code("}");	$self->pidl_code("offset = dissect_ndr_$e->{BASE_TYPE}(tvb, offset, pinfo, tree, drep, hf_index, &parameter);");	$self->pidl_code("if(param){");	$self->indent;	$self->pidl_code("*param=(guint32)parameter;");	$self->deindent;	$self->pidl_code("}");	$self->pidl_code("return offset;");	$self->deindent;	$self->pidl_code("}\n");	$self->pidl_fn_end($dissectorname);	my $enum_size = $e->{BASE_TYPE};	$enum_size =~ s/uint//g;	$self->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($$$$){	my ($self,$e,$name,$ifname) = @_;	my $dissectorname = "$ifname\_dissect\_bitmap\_".StripPrefixes($name, $self->{conformance}->{strip_prefixes});	$self->register_ett("ett_$ifname\_$name");	$self->pidl_hdr("int $dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);");	$self->pidl_fn_start($dissectorname);	$self->pidl_code("int");	$self->pidl_code("$dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)");	$self->pidl_code("{");	$self->indent;	$self->pidl_code("proto_item *item = NULL;");	$self->pidl_code("proto_tree *tree = NULL;");	$self->pidl_code("");			$self->pidl_code("g$e->{BASE_TYPE} flags;");	if ($e->{ALIGN} > 1) {		$self->pidl_code("ALIGN_TO_$e->{ALIGN}_BYTES;");	}	$self->pidl_code("");	$self->pidl_code("if (parent_tree) {");	$self->indent;	$self->pidl_code("item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, $e->{ALIGN}, TRUE);");	$self->pidl_code("tree = proto_item_add_subtree(item,ett_$ifname\_$name);");	$self->deindent;	$self->pidl_code("}\n");	$self->pidl_code("offset = dissect_ndr_$e->{BASE_TYPE}(tvb, offset, pinfo, NULL, drep, -1, &flags);");	$self->pidl_code("proto_item_append_text(item, \": \");\n");	$self->pidl_code("if (!flags)");	$self->pidl_code("\tproto_item_append_text(item, \"(No values set)\");\n");	foreach (@{$e->{ELEMENTS}}) {		next unless (/([^ ]*) (.*)/);		my ($en,$ev) = ($1,$2);		my $hf_bitname = "hf_$ifname\_$name\_$en";		my $filtername = "$ifname\.$name\.$en";		$self->{hf_used}->{$hf_bitname} = 1;				$self->register_hf_field($hf_bitname, field2name($en), $filtername, "FT_BOOLEAN", $e->{ALIGN} * 8, "TFS(&$name\_$en\_tfs)", $ev, "");		$self->pidl_def("static const true_false_string $name\_$en\_tfs = {");		if (defined($self->{conformance}->{tfs}->{$hf_bitname})) {			$self->pidl_def("   $self->{conformance}->{tfs}->{$hf_bitname}->{TRUE_STRING},");			$self->pidl_def("   $self->{conformance}->{tfs}->{$hf_bitname}->{FALSE_STRING},");			$self->{conformance}->{tfs}->{$hf_bitname}->{USED} = 1;		} else {			$self->pidl_def("   \"$en is SET\",");			$self->pidl_def("   \"$en is NOT SET\",");		}		$self->pidl_def("};");				$self->pidl_code("proto_tree_add_boolean(tree, $hf_bitname, tvb, offset-$e->{ALIGN}, $e->{ALIGN}, flags);");		$self->pidl_code("if (flags&$ev){");		$self->pidl_code("\tproto_item_append_text(item, \"$en\");");		$self->pidl_code("\tif (flags & (~$ev))");		$self->pidl_code("\t\tproto_item_append_text(item, \", \");");		$self->pidl_code("}");		$self->pidl_code("flags&=(~$ev);");		$self->pidl_code("");	}	$self->pidl_code("if (flags) {");	$self->pidl_code("\tproto_item_append_text(item, \"Unknown bitmap value 0x%x\", flags);");	$self->pidl_code("}\n");	$self->pidl_code("return offset;");	$self->deindent;	$self->pidl_code("}\n");	$self->pidl_fn_end($dissectorname);	my $size = $e->{BASE_TYPE};	$size =~ s/uint//g;	$self->register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, drep, \@HF\@, \@PARAM\@);", "FT_UINT$size", "BASE_HEX", "0", "NULL", $size/8);}sub ElementLevel($$$$$$$){	my ($self,$e,$l,$hf,$myname,$pn,$ifname) = @_;	my $param = 0;	if (defined($self->{conformance}->{dissectorparams}->{$myname})) {		$param = $self->{conformance}->{dissectorparams}->{$myname}->{PARAM};	}	if ($l->{TYPE} eq "POINTER") {		my $type;		if ($l->{LEVEL} eq "TOP") {			$type = "toplevel";		} elsif ($l->{LEVEL} eq "EMBEDDED") {			$type = "embedded";		}		$self->pidl_code("offset = dissect_ndr_$type\_pointer(tvb, offset, pinfo, tree, drep, $myname\_, $ptrtype_mappings{$l->{POINTER_TYPE}}, \"Pointer to ".field2name(StripPrefixes($e->{NAME}, $self->{conformance}->{strip_prefixes})) . " ($e->{TYPE})\",$hf);");	} elsif ($l->{TYPE} eq "ARRAY") {		if ($l->{IS_INLINE}) {			error($e->{ORIGINAL}, "Inline arrays not supported");		} elsif ($l->{IS_FIXED}) {			$self->pidl_code("int i;");			$self->pidl_code("for (i = 0; i < $l->{SIZE_IS}; i++)");			$self->pidl_code("\toffset = $myname\_(tvb, offset, pinfo, tree, drep);");		} else {			my $type = "";			$type .= "c" if ($l->{IS_CONFORMANT});			$type .= "v" if ($l->{IS_VARYING});			unless ($l->{IS_ZERO_TERMINATED}) {				$self->pidl_code("offset = dissect_ndr_u" . $type . "array(tvb, offset, pinfo, tree, drep, $myname\_);");			} else {				my $nl = GetNextLevel($e,$l);				$self->pidl_code("char *data;");				$self->pidl_code("");				$self->pidl_code("offset = dissect_ndr_$type" . "string(tvb, offset, pinfo, tree, drep, sizeof(g$nl->{DATA_TYPE}), $hf, FALSE, &data);");				$self->pidl_code("proto_item_append_text(tree, \": %s\", data);");			}		}	} elsif ($l->{TYPE} eq "DATA") {		if ($l->{DATA_TYPE} eq "string") {			my $bs = 2; # Byte size defaults to that of UCS2			($bs = 1) if (property_matches($e, "flag", ".*LIBNDR_FLAG_STR_ASCII.*"));						if (property_matches($e, "flag", ".*LIBNDR_FLAG_STR_SIZE4.*") and property_matches($e, "flag", ".*LIBNDR_FLAG_STR_LEN4.*")) {				$self->pidl_code("char *data;\n");				$self->pidl_code("offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, $bs, $hf, FALSE, &data);");				$self->pidl_code("proto_item_append_text(tree, \": %s\", data);");			} elsif (property_matches($e, "flag", ".*LIBNDR_FLAG_STR_SIZE4.*")) {				$self->pidl_code("offset = dissect_ndr_vstring(tvb, offset, pinfo, tree, drep, $bs, $hf, FALSE, NULL);");			} else {				warn("Unable to handle string with flags $e->{PROPERTIES}->{flag}");			}		} else {			my $call;			if ($self->{conformance}->{imports}->{$l->{DATA_TYPE}}) {				$call = $self->{conformance}->{imports}->{$l->{DATA_TYPE}}->{DATA};					$self->{conformance}->{imports}->{$l->{DATA_TYPE}}->{USED} = 1; 		        } elsif (defined($self->{conformance}->{imports}->{"$pn.$e->{NAME}"})) { 			        $call = $self->{conformance}->{imports}->{"$pn.$e->{NAME}"}->{DATA};				$self->{conformance}->{imports}->{"$pn.$e->{NAME}"}->{USED} = 1;			    			} elsif (defined($self->{conformance}->{types}->{$l->{DATA_TYPE}})) {				$call= $self->{conformance}->{types}->{$l->{DATA_TYPE}}->{DISSECTOR_NAME};				$self->{conformance}->{types}->{$l->{DATA_TYPE}}->{USED} = 1;			} else {				$self->pidl_code("offset = $ifname\_dissect_struct_" . $l->{DATA_TYPE} . "(tvb,offset,pinfo,tree,drep,$hf,$param);");				return;			}			$call =~ s/\@HF\@/$hf/g;			$call =~ s/\@PARAM\@/$param/g;			$self->pidl_code($call);		}	} elsif ($_->{TYPE} eq "SUBCONTEXT") {		my $num_bits = ($l->{HEADER_SIZE}*8);		$self->pidl_code("guint$num_bits size;");		$self->pidl_code("int start_offset = offset;");		$self->pidl_code("tvbuff_t *subtvb;");		$self->pidl_code("offset = dissect_ndr_uint$num_bits(tvb, offset, pinfo, tree, drep, $hf, &size);");		$self->pidl_code("proto_tree_add_text(tree, tvb, start_offset, offset - start_offset + size, \"Subcontext size\");");		$self->pidl_code("subtvb = tvb_new_subset(tvb, offset, size, -1);");		$self->pidl_code("$myname\_(subtvb, 0, pinfo, tree, drep);");	} else {		die("Unknown type `$_->{TYPE}'");	}}sub Element($$$){	my ($self,$e,$pn,$ifname) = @_;	my $dissectorname = "$ifname\_dissect\_element\_".StripPrefixes($pn, $self->{conformance}->{strip_prefixes})."\_".StripPrefixes($e->{NAME}, $self->{conformance}->{strip_prefixes});	my $call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, drep);";	my $type = $self->find_type($e->{TYPE});	if (not defined($type)) {		# default settings		$type = {			MASK => 0,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产99国产精品| 亚洲国产高清在线观看视频| 久久精品国产一区二区三| 中文字幕在线不卡一区| 2021久久国产精品不只是精品| 在线欧美日韩国产| 97国产精品videossex| 成人污污视频在线观看| 韩国精品主播一区二区在线观看| 五月天激情小说综合| 亚洲精品日日夜夜| 综合久久国产九一剧情麻豆| 亚洲精品综合在线| 国产乱理伦片在线观看夜一区| 国产精品白丝av| 91精品午夜视频| 91精品国产入口| 日韩精品一区二区在线| 欧美变态口味重另类| 国产精品全国免费观看高清| 中文字幕一区二区三区色视频| 美女久久久精品| 国产精品一区二区在线观看网站| 7777精品伊人久久久大香线蕉完整版| 亚洲欧美日韩国产成人精品影院| 亚洲一区二区三区在线看| 亚洲高清在线精品| 国产原创一区二区| 色综合一个色综合| 欧美精品v国产精品v日韩精品| 精品对白一区国产伦| 久久国产麻豆精品| 欧美成人a∨高清免费观看| 午夜电影一区二区| 欧美日韩夫妻久久| 亚洲国产精品黑人久久久| 国产一区二区三区观看| 久久久久久黄色| 一区二区三区视频在线观看| 九九**精品视频免费播放| 91视频91自| 久久婷婷国产综合国色天香| 精品一区二区在线播放| 精品999在线播放| 国产福利91精品一区二区三区| 欧美视频精品在线观看| 欧美国产在线观看| 99久久久国产精品| 亚洲动漫第一页| 精品久久久久久久一区二区蜜臀| 国产精品资源在线| 18涩涩午夜精品.www| 欧美三级韩国三级日本一级| 国产精品乱码人人做人人爱| 91在线播放网址| 亚洲18色成人| 色婷婷国产精品| 国产三级精品三级在线专区| 婷婷六月综合亚洲| 337p粉嫩大胆色噜噜噜噜亚洲| 成人一区二区三区视频| 亚洲女与黑人做爰| 日韩免费高清视频| a级高清视频欧美日韩| 国产视频一区在线观看| 麻豆成人在线观看| 国产日本一区二区| 欧美亚洲国产一区二区三区va | 久久久久久久久97黄色工厂| 成人在线一区二区三区| 一区二区在线看| 精品日本一线二线三线不卡| 成人国产精品免费观看视频| 久久午夜老司机| 欧洲av在线精品| 国产精品一区专区| 香蕉久久一区二区不卡无毒影院 | 欧美亚洲一区二区在线| 久久精品国产**网站演员| 亚洲日本欧美天堂| 久久在线观看免费| 欧美三级资源在线| 成人网页在线观看| 日本 国产 欧美色综合| 在线综合视频播放| 91在线观看美女| 国产精品系列在线播放| 毛片av一区二区| 亚洲综合自拍偷拍| 中文字幕精品—区二区四季| 欧美一区二区视频免费观看| 一本一道波多野结衣一区二区| 九色porny丨国产精品| 亚洲一区在线观看视频| 国产精品久久久久久户外露出| av电影天堂一区二区在线观看| 麻豆精品久久久| 五月激情综合婷婷| 亚洲一区二区精品久久av| 国产精品毛片久久久久久久| 日韩欧美卡一卡二| 91精品国产综合久久精品app| 91麻豆国产精品久久| caoporn国产精品| 成人一区二区视频| 国产一区二区剧情av在线| 天堂久久久久va久久久久| 久久久久久久久一| 日韩欧美一二三四区| 在线不卡免费欧美| 在线不卡中文字幕播放| 9191成人精品久久| 欧美日韩成人高清| 欧美日韩一卡二卡三卡| 欧美巨大另类极品videosbest | 久久精品视频免费| 国产日韩欧美在线一区| 久久嫩草精品久久久精品一| 精品国产不卡一区二区三区| 日韩精品中文字幕在线不卡尤物 | 成人精品视频一区| 粉嫩aⅴ一区二区三区四区五区| 中文字幕视频一区| 中文字幕在线一区| 综合久久久久久| 亚洲精品高清在线| 亚洲电影视频在线| 日韩电影在线观看电影| 国产精品麻豆久久久| 亚洲日本欧美天堂| 亚洲一区二区在线免费观看视频| 一区二区三区成人| 亚洲国产日产av| 午夜精品在线看| 久久国产麻豆精品| 成人毛片视频在线观看| 99热99精品| 欧美欧美欧美欧美| 337p日本欧洲亚洲大胆精品 | 波多野结衣在线一区| 99久久精品国产毛片| 欧美三区免费完整视频在线观看| 欧美一级专区免费大片| 中文字幕精品三区| 亚洲电影第三页| 精品一区二区免费| 91亚洲精品久久久蜜桃网站| 欧美日韩一区 二区 三区 久久精品| 日韩欧美久久久| 17c精品麻豆一区二区免费| 一区二区三区四区在线免费观看| 偷拍日韩校园综合在线| 国产成人免费视频网站| 欧美伊人久久久久久午夜久久久久| 欧美乱妇20p| 国产精品女人毛片| 日韩专区欧美专区| 成人av电影免费观看| 7777女厕盗摄久久久| 成人免费小视频| 久久精品久久精品| 在线视频中文字幕一区二区| 久久久久久97三级| 一区2区3区在线看| 国产美女精品在线| 欧美精品乱码久久久久久按摩| 久久久久久久久久久久久女国产乱| 亚洲最新在线观看| 成人开心网精品视频| 欧美成人精品福利| 亚洲一区二区三区小说| 成人午夜激情片| 欧美videofree性高清杂交| 亚洲综合激情网| av综合在线播放| 国产欧美精品在线观看| 免费成人在线观看视频| 欧美在线制服丝袜| 国产精品电影一区二区| 国内外成人在线视频| 这里只有精品免费| 亚洲一区二区三区四区五区黄| 国产成人免费在线视频| xnxx国产精品| 奇米影视7777精品一区二区| 欧美视频一区二区在线观看| 中文字幕一区二区三区蜜月| 国产精品99久久久久久久vr| 欧美一级电影网站| 国产欧美一区视频| 美女尤物国产一区| 欧美一区二区在线视频| 亚洲一卡二卡三卡四卡无卡久久| 国产a视频精品免费观看| 欧美成人a视频| 国产一区二区三区最好精华液| 91精品国产色综合久久| 久久电影国产免费久久电影| 91精品国产麻豆国产自产在线| 五月开心婷婷久久|