[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Jun 20 14:21:03 UTC 2016


The branch, master has been updated
       via  2d348bd pidl/ws: fix missing $name when generating MAPI dissector
       via  0757c57 pidl/ws: fix failing tests
       via  8a691e5 pidl/s4/python: typo in comment
       via  deabf7a pidl/ws: directly use `di` param instead of casting `private_data` member.
       via  97eda22 pidl/ws: Document CODE_START and HEADER_START
       via  b18d075 pidl/ws: whitespace cleanup
       via  372b41e pidl/ws: Add HEADER START/HEADER END in ws dissector
       via  0d209ea pidl/ws: dereference pointers when passing name param.
       via  57bc1ce pidl/ws: Remove pinfo->private_data from DCERPC dissectors.
       via  4981890 pidl/ws: remove any starting _ in WS field names
       via  cafb68f pidl/ws: avoid trailing tabs
       via  bce8543 pidl: use https urls and update dead msdn link
       via  ad99cfb pidl/ws: Eliminate e_uuid_t in favor of e_guid_t
       via  fda6c78 pidl/ws: Remove #pragma warning (MSVC)
       via  e3d15db pidl/ws: fix Assigned value is garbage or undefined found by Clang Analyzer
       via  82f3f25 pidl/ws: fix indent (use 4 tabs) and remove trailing whitespace
       via  30e7be5 pidl/ws: Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
       via  5489855 pidl/ws: enhance dissector
       via  c5b598d pidl/ws: fix -Wmissing-prototype
       via  33baf1c pidl/ws: Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
      from  0c04f5f selftest: make samba3.blackbox.smbclient_tar as flapping

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2d348bdb8d6aa53ddf5d7a4c9c02777a79668bbe
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Wed May 18 15:01:56 2016 +0200

    pidl/ws: fix missing $name when generating MAPI dissector
    
    Port Wireshark commit 0e80176
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Fri Mar 4 19:28:26 2016 +0100
    
        PIDL (NDR): fix missing $name when regenerate MAPI dissector
    
        Issue coming from ge41f08858b
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Mon Jun 20 16:20:00 CEST 2016 on sn-devel-144

commit 0757c57d9941b0df8e92c92fc2dde69399336512
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Wed May 18 14:23:56 2016 +0200

    pidl/ws: fix failing tests
    
    This commit fixes 2 test failures in Pidl test suite.
    
    - commit 02cd7808 changed the error the test was expecting
      => update expected output in the test
    - commit c76b65e changed whitespaces in the output
      => revert to the old output in the generator
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 8a691e5aff59fe5a152791c3f2a658fefa9f3dc8
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Wed Feb 24 17:05:25 2016 +0100

    pidl/s4/python: typo in comment
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit deabf7ab07bb98d81d8fc3e7e0355c9b8d0df6a4
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Wed Feb 10 15:05:45 2016 +0100

    pidl/ws: directly use `di` param instead of casting `private_data` member.
    
    As in Wireshark repo.
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 97eda222d08e7aa32ca8c8c6af41f2901ac174ba
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Wed Feb 10 14:52:52 2016 +0100

    pidl/ws: Document CODE_START and HEADER_START
    
    Port Wireshark commit 833d315
    
    Author: Guy Harris <guy at alum.mit.edu>
    Date:   Mon Jan 13 21:18:29 2014 +0000
    
        Document {CODE,HEADER} {START,END}.
    
        Clean up indentation.
    
        svn path=/trunk/; revision=54721
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit b18d075e5c726062995a89d1cc88a8e39c3043d7
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 18:54:39 2016 +0100

    pidl/ws: whitespace cleanup
    
    Imported from the WS repo.
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 372b41eede4cfcedcea7fbe8370dd7ac2d015db2
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 18:52:30 2016 +0100

    pidl/ws: Add HEADER START/HEADER END in ws dissector
    
    Port Wireshark commit a297950
    
    Author: Guy Harris <guy at alum.mit.edu>
    Date:   Mon Jan 13 21:05:44 2014 +0000
    
        Add HEADER START and HEADER END, similar to CODE START and CODE END, to
        allow stuff to be put into the .h file; that way, if you put helper
        functions into the .c file, for use by dissectors other than the one
        being generated, you can put declarations for them into the .h file.
    
        Do some checks for mis-nesting of CODE and HEADER blocks.
    
        Clean up the "this is generated code" header.
    
        svn path=/trunk/; revision=54720
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 0d209ea24b4c7a0e403e8903fdc445493894e114
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 17:36:19 2016 +0100

    pidl/ws: dereference pointers when passing name param.
    
    Port parts of Wireshark commit a58c986f to the samba repo.
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 57bc1ced67b9c1a65f9997d54bf560cdeb3802a2
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 17:30:09 2016 +0100

    pidl/ws: Remove pinfo->private_data from DCERPC dissectors.
    
    Sort of re-apply Wireshark commit 79cd356 which was never sync with
    samba. It was reverted then reintroduced in the WS repo (yes this is
    quite convulted).
    
    Original commit message:
    
    Author: Michael Mann <mmann78 at netscape.net>
    Date:   Wed Nov 6 12:36:09 2013 +0000
    
        Remove pinfo->private_data from DCERPC dissectors.  Bug 9387 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9387)
    
        This is the PIDL input file changes necessary to support removing pinfo->private_data from the DCERPC dissectors in favor of passing it through function parameters.  I didn't regenerate the dissector source, so this is just a "good faith" effort to mimic the manual changes.
    
        svn path=/trunk/; revision=53098
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 498189087beaf2c52622b55cb3f5c9f411be3346
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 17:12:41 2016 +0100

    pidl/ws: remove any starting _ in WS field names
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit cafb68fdc4a1e9ba14802a085d08aa98e3e8662e
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 16:10:12 2016 +0100

    pidl/ws: avoid trailing tabs
    
    Port Wireshark commit 4f04a3c
    
    Author: Stefan Metzmacher <metze at samba.org>
    Date:   Thu Oct 29 08:32:52 2015 +0100
    
        tools/pidl: avoid trailing tabs
    
        Change-Id: I293dd6f2d7ff3b0e27bc3cc49e69977604f12260
        Signed-off-by: Stefan Metzmacher <metze at samba.org>
        Reviewed-on: https://code.wireshark.org/review/11433
        Reviewed-by: Anders Broman <a.broman58 at gmail.com>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit bce85437b61e86f4cf7a693e61811b04ab64eefe
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 15:43:53 2016 +0100

    pidl: use https urls and update dead msdn link
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit ad99cfb9c5414e8d31b89184a1e666f3f12125ab
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Tue Feb 9 15:32:51 2016 +0100

    pidl/ws: Eliminate e_uuid_t in favor of e_guid_t
    
    Port Wireshark commit 499d959
    
    Author: Guy Harris <guy at alum.mit.edu>
    Date:   Tue Mar 3 02:47:53 2015 -0800
    
        Eliminate e_uuid_t in favor of e_guid_t.
    
        That eliminates a redundant and confusing data type, and avoids issues
        with one piece of code using e_uuid_t but wanting to use routines
        expecting an e_guid_t.
    
        Change-Id: I95e172d46d342ab40f6254300ecbd2a0530cde60
        Reviewed-on: https://code.wireshark.org/review/7506
        Reviewed-by: Guy Harris <guy at alum.mit.edu>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit fda6c784fd7420cbc4bacdff00be02ff574b16a3
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 15:31:16 2016 +0100

    pidl/ws: Remove #pragma warning (MSVC)
    
    Port Wireshark commit ceda0f9
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Sun Oct 5 19:34:46 2014 +0200
    
        Remove #pragma warning (MSVC) for PIDL generate dissector
    
        Change-Id: I1e4c7944a2cd877f5c707703dcff44fe9f955a2c
        Reviewed-on: https://code.wireshark.org/review/4479
        Reviewed-by: Alexis La Goutte <alexis.lagoutte at gmail.com>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit e3d15db0308b37d0097de3a8462a1897f86db998
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 15:29:28 2016 +0100

    pidl/ws: fix Assigned value is garbage or undefined found by Clang Analyzer
    
    Port Wireshark commit 683d657
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Sun Oct 5 19:27:15 2014 +0200
    
        PIDL (DCERPC): fix Assigned value is garbage or undefined found by Clang Analyzer
    
        packet-dcerpc-dnsserver.c:1002:12: warning: Assigned value is garbage or undefined
        packet-dcerpc-frstrans.c:1137:12: warning: Assigned value is garbage or undefined
        packet-dcerpc-lsa.c:6345:12: warning: Assigned value is garbage or undefined
        packet-dcerpc-nspi.c:7805:12: warning: Assigned value is garbage or undefined
        packet-dcerpc-dfs.c:3245:11: warning: Function call argument is an uninitialized value
        packet-dcerpc-dfs.c:3245:9: warning: 'level' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
        Change-Id: Ife6a2f565ae215535d0e3d72ef50800114240e3f
        Reviewed-on: https://code.wireshark.org/review/4478
        Reviewed-by: Evan Huus <eapache at gmail.com>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 82f3f25b3ae5b336fba0dc0c79c325403f16804b
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 15:25:57 2016 +0100

    pidl/ws: fix indent (use 4 tabs) and remove trailing whitespace
    
    Port Wireshark commit 4110bde
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Fri Sep 26 19:51:34 2014 +0200
    
        PIDL: fix indent (use 4 tabs) and remove trailing whitespace
    
        Change-Id: I0ee63a040867b44ac9915704f5e581483ed6f7e2
        Reviewed-on: https://code.wireshark.org/review/4310
        Reviewed-by: Anders Broman <a.broman58 at gmail.com>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 30e7be511e85919bc71f8e653b0b089c76c6f31f
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 14:43:04 2016 +0100

    pidl/ws: Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
    
    Port Wireshark commit f6b9e7a
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Sun Sep 28 20:57:13 2014 +0200
    
        PIDL: Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
    
        Change-Id: Ibae478771b30d6e9ae07315985f1e71bc6b65423
        Reviewed-on: https://code.wireshark.org/review/4350
        Reviewed-by: Michael Mann <mmann78 at netscape.net>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 54898557d83bd7db78086b270e109b67d9ea6455
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 14:38:55 2016 +0100

    pidl/ws: enhance dissector
    
    Port Wireshark commit 28ec9c2
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Fri Sep 26 23:29:43 2014 +0200
    
        PIDL (DCERPC winreg): enhance dissector
    
        * Fix PIDL generator for NOEMIT Element (fix -Wunused-function for DCERPC winreg dissector)
        * Fix indent (use tabs)
        * Remove DCERPC winreg dissector from DIRTY list
    
        Change-Id: I5d16cbfe8481a5e5f7e5df9b51735c93ae4375a7
        Reviewed-on: https://code.wireshark.org/review/4322
        Reviewed-by: Michael Mann <mmann78 at netscape.net>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit c5b598d383bd391bc238249e414c65c90448971b
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 14:36:27 2016 +0100

    pidl/ws: fix -Wmissing-prototype
    
    Port Wireshark commit e759d82
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Fri Sep 26 18:47:53 2014 +0200
    
        PIDL: fix -Wmissing-prototype
    
        Change-Id: I4cae47450e8026b10bd373828f235184560e0a99
        Reviewed-on: https://code.wireshark.org/review/4308
        Petri-Dish: Alexis La Goutte <alexis.lagoutte at gmail.com>
        Tested-by: Petri Dish Buildbot <buildbot-no-reply at wireshark.org>
        Reviewed-by: Michael Mann <mmann78 at netscape.net>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 33baf1cccbd600e803ddfdc0cb8e7c374dc46aef
Author: Aurelien Aptel <aaptel at suse.com>
Date:   Fri Feb 5 14:29:22 2016 +0100

    pidl/ws: Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
    
    Port Wireshark commit f0b5fb7
    
    Author: Alexis La Goutte <alexis.lagoutte at gmail.com>
    Date:   Fri Sep 26 21:31:32 2014 +0200
    
        PIDL: Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
    
        Change-Id: I7f6f974732b7905f4ea4686e1a79ca6fbef78fa8
        Reviewed-on: https://code.wireshark.org/review/4319
        Reviewed-by: Alexis La Goutte <alexis.lagoutte at gmail.com>
    
    Signed-off-by: Aurelien Aptel <aaptel at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm      |   2 +-
 pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm     |   2 +-
 pidl/lib/Parse/Pidl/Samba4/Python.pm         |  22 +--
 pidl/lib/Parse/Pidl/Wireshark/Conformance.pm |  60 ++++++-
 pidl/lib/Parse/Pidl/Wireshark/NDR.pm         | 235 +++++++++++++++------------
 pidl/pidl                                    | 156 +++++++++---------
 pidl/tests/wireshark-conf.pl                 |   2 +-
 7 files changed, 279 insertions(+), 200 deletions(-)


Changeset truncated at 500 lines:

diff --git a/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm b/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
index 28d5245..6acf1c5 100644
--- a/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
+++ b/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
@@ -25,7 +25,7 @@ $VERSION = '0.01';
 sub indent($) { my ($self) = @_; $self->{tabs}.="\t"; }
 sub deindent($) { my ($self) = @_; $self->{tabs} = substr($self->{tabs}, 1); }
 sub pidl($$) { my ($self,$txt) = @_; $self->{res} .= $txt ? "$self->{tabs}$txt\n" : "\n"; }
-sub pidl_hdr($$) { my ($self, $txt) = @_; $self->{res_hdr} .= "$txt\n"; } 
+sub pidl_hdr($$) { my ($self, $txt) = @_; $self->{res_hdr} .= "$txt\n"; }
 sub fn_declare($$) { my ($self,$n) = @_; $self->pidl($n); $self->pidl_hdr("$n;"); }
 
 sub new($)
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
index 29cdfa9..94f4855 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
@@ -702,7 +702,7 @@ sub ParseElementPushLevel
 			$self->ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 0, 1);
 			$self->deindent;
 			$self->pidl("}");
-		}	
+		}
 	} elsif ($l->{TYPE} eq "SWITCH") {
 		$self->ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, $primitives, $deferred);
 	}
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index f43e4d6..07c18de 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -1027,21 +1027,21 @@ sub ConvertObjectFromPythonData($$$$$$;$)
 	my $ctype_alias = "";
 	my $uint_max = "";
 	if ($actual_ctype->{TYPE} eq "ENUM") {
-	        # Importantly, ENUM values are unsigned in pidl, and
-	        # typically map to uint32
-	        $ctype_alias = enum_type_fn($actual_ctype);
+		# Importantly, ENUM values are unsigned in pidl, and
+		# typically map to uint32
+		$ctype_alias = enum_type_fn($actual_ctype);
 	} elsif ($actual_ctype->{TYPE} eq "BITMAP") {
-	        $ctype_alias = bitmap_type_fn($actual_ctype);
+		$ctype_alias = bitmap_type_fn($actual_ctype);
 	} elsif ($actual_ctype->{TYPE} eq "SCALAR") {
-	        $ctype_alias = expandAlias($actual_ctype->{NAME});
+		$ctype_alias = expandAlias($actual_ctype->{NAME});
 	}
 
 	# This is the unsigned Python Integer -> C integer validation
-	# case.  The signed case is below.
+	# case.	 The signed case is below.
 	if ($ctype_alias  =~ /^(uint[0-9]*|hyper|udlong|udlongr
-                                |NTTIME_hyper|NTTIME|NTTIME_1sec
-                                |uid_t|gid_t)$/x) {
-	        $self->pidl("{");
+				|NTTIME_hyper|NTTIME|NTTIME_1sec
+				|uid_t|gid_t)$/x) {
+		$self->pidl("{");
 		$self->indent;
 		$self->pidl("const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof($target));");
 		$self->pidl("if (PyLong_Check($cvar)) {");
@@ -1092,7 +1092,7 @@ sub ConvertObjectFromPythonData($$$$$$;$)
 	# above, so while it looks like a duplicate, it is not
 	# actually a duplicate.
 	if ($ctype_alias  =~ /^(dlong|char|int[0-9]*|time_t)$/x) {
-	        $self->pidl("{");
+		$self->pidl("{");
 		$self->indent;
 		$self->pidl("const long long int_max = ndr_sizeof2intmax(sizeof($target));");
 		$self->pidl("const long long int_min = -int_max - 1;");
@@ -1547,7 +1547,7 @@ sub Parse($$$$$)
 #include \"$ndr_hdr\"
 
 /*
- * These functions are here to ensure they can be optomised out by
+ * These functions are here to ensure they can be optimized out by
  * the compiler based on the constant input values
  */
 
diff --git a/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm b/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm
index b81cf5e..01a8c47 100644
--- a/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm
+++ b/pidl/lib/Parse/Pidl/Wireshark/Conformance.pm
@@ -89,6 +89,14 @@ to write a function manually. This can be used to remove the function
 for only one level for a particular element rather than all the functions and 
 ett/hf variables for a particular element as the NOEMIT command does.
 
+=item I<CODE START>/I<CODE END>
+Begin and end a section of code to be put directly into the generated
+source file for the dissector.
+
+=item I<HEADER START>/I<HEADER END>
+Begin and end a section of code to be put directly into the generated
+header file for the dissector.
+
 =back
 
 =head1 EXAMPLE
@@ -396,6 +404,7 @@ sub ReadConformanceFH($$$)
 	my ($fh,$data,$f) = @_;
 
 	my $incodeblock = 0;
+	my $inheaderblock = 0;
 
 	my $ln = 0;
 
@@ -407,9 +416,27 @@ sub ReadConformanceFH($$$)
 		s/[\r\n]//g;
 
 		if ($_ eq "CODE START") {
+			if ($incodeblock) {
+				warning({ FILE => $f, LINE => $ln }, 
+					"CODE START inside CODE section");
+			}
+			if ($inheaderblock) {
+				error({ FILE => $f, LINE => $ln }, 
+					"CODE START inside HEADER section");
+				return undef;
+			}
 			$incodeblock = 1;
 			next;
-		} elsif ($incodeblock and $_ eq "CODE END") {
+		} elsif ($_ eq "CODE END") {
+			if (!$incodeblock) {
+				warning({ FILE => $f, LINE => $ln }, 
+					"CODE END outside CODE section");
+			}
+			if ($inheaderblock) {
+				error({ FILE => $f, LINE => $ln }, 
+					"CODE END inside HEADER section");
+				return undef;
+			}
 			$incodeblock = 0;
 			next;
 		} elsif ($incodeblock) {
@@ -419,6 +446,37 @@ sub ReadConformanceFH($$$)
 				$data->{override} = "$_\n";
 			}
 			next;
+		} elsif ($_ eq "HEADER START") {
+			if ($inheaderblock) {
+				warning({ FILE => $f, LINE => $ln }, 
+					"HEADER START inside HEADER section");
+			}
+			if ($incodeblock) {
+				error({ FILE => $f, LINE => $ln }, 
+					"HEADER START inside CODE section");
+				return undef;
+			}
+			$inheaderblock = 1;
+			next;
+		} elsif ($_ eq "HEADER END") {
+			if (!$inheaderblock) {
+				warning({ FILE => $f, LINE => $ln }, 
+					"HEADER END outside HEADER section");
+			}
+			if ($incodeblock) {
+				error({ FILE => $f, LINE => $ln }, 
+					"CODE END inside HEADER section");
+				return undef;
+			}
+			$inheaderblock = 0;
+			next;
+		} elsif ($inheaderblock) {
+			if (exists $data->{header}) {
+				$data->{header}.="$_\n";
+			} else {
+				$data->{header} = "$_\n";
+			}
+			next;
 		}
 
 		my @fields = /([^ "]+|"[^"]+")/g;
diff --git a/pidl/lib/Parse/Pidl/Wireshark/NDR.pm b/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
index caa58c2..8161646 100644
--- a/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
+++ b/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
@@ -59,6 +59,7 @@ sub field2name($)
 {
 	my($field) = shift;
 
+	$field =~ s/^(_)*//g;		# Remove any starting underscores
 	$field =~ s/_/ /g;		# Replace underscores with spaces
 	$field =~ s/(\w+)/\u\L$1/g;	# Capitalise each word
 
@@ -150,7 +151,7 @@ sub Enum($$$$)
 	}
 
 	$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_, g$e->{BASE_TYPE} *param _U_);");
+	$self->pidl_hdr("int $dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, g$e->{BASE_TYPE} *param _U_);");
 
 	$self->pidl_def("const value_string ".$valsstring."[] = {");
 	foreach (@{$e->{ELEMENTS}}) {
@@ -163,7 +164,7 @@ sub Enum($$$$)
 
 	$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_, g$e->{BASE_TYPE} *param _U_)");
+	$self->pidl_code("$dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, g$e->{BASE_TYPE} *param _U_)");
 	$self->pidl_code("{");
 	$self->indent;
 	$self->pidl_code("g$e->{BASE_TYPE} parameter=0;");
@@ -172,7 +173,7 @@ sub Enum($$$$)
 	$self->pidl_code("parameter = *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("offset = dissect_ndr_$e->{BASE_TYPE}(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);");
 	$self->pidl_code("if (param) {");
 	$self->indent;
 	$self->pidl_code("*param = parameter;");
@@ -185,7 +186,7 @@ sub Enum($$$$)
 
 	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);
+	$self->register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, di, drep, \@HF\@, \@PARAM\@);", "FT_UINT$enum_size", "BASE_DEC", "0", "VALS($valsstring)", $enum_size / 8);
 }
 
 sub Pipe($$$$)
@@ -202,11 +203,11 @@ sub Bitmap($$$$)
 
 	$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_hdr("int $dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _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("$dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)");
 	$self->pidl_code("{");
 	$self->indent;
 	$self->pidl_code("proto_item *item = NULL;");
@@ -227,7 +228,7 @@ sub Bitmap($$$$)
 	$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("offset = dissect_ndr_$e->{BASE_TYPE}(tvb, offset, pinfo, tree, di, drep, -1, &flags);");
 
 	$self->pidl_code("proto_item_append_text(item, \": \");\n");
 	$self->pidl_code("if (!flags)");
@@ -274,7 +275,7 @@ sub Bitmap($$$$)
 
 	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);
+	$self->register_type($name, "offset = $dissectorname(tvb, offset, pinfo, tree, di, drep, \@HF\@, \@PARAM\@);", "FT_UINT$size", "BASE_HEX", "0", "NULL", $size/8);
 }
 
 sub ElementLevel($$$$$$$$)
@@ -292,26 +293,26 @@ sub ElementLevel($$$$$$$$)
 		} 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);");
+		$self->pidl_code("offset = dissect_ndr_$type\_pointer(tvb, offset, pinfo, tree, di, 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);");
+			$self->pidl_code("\toffset = $myname\_(tvb, offset, pinfo, tree, di, 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\_);");
+				$self->pidl_code("offset = dissect_ndr_u" . $type . "array(tvb, offset, pinfo, tree, di, 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("offset = dissect_ndr_$type" . "string(tvb, offset, pinfo, tree, di, drep, sizeof(g$nl->{DATA_TYPE}), $hf, FALSE, &data);");
 				$self->pidl_code("proto_item_append_text(tree, \": %s\", data);");
 			}
 		}
@@ -324,10 +325,10 @@ sub ElementLevel($$$$$$$$)
 
 			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("offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, 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);");
+				$self->pidl_code("offset = dissect_ndr_vstring(tvb, offset, pinfo, tree, di, drep, $bs, $hf, FALSE, NULL);");
 			} elsif (property_matches($e, "flag", ".*STR_NULLTERM.*")) {
 				if ($bs == 2) {
 					$self->pidl_code("offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, $hf , 0);")
@@ -340,18 +341,16 @@ sub ElementLevel($$$$$$$$)
 		} elsif ($l->{DATA_TYPE} eq "DATA_BLOB") {
 			my $remain = 0;
 			$remain = 1 if (property_matches($e->{ORIGINAL}, "flag", ".*LIBNDR_FLAG_REMAINING.*"));
-			$self->pidl_code("offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, drep, $hf, $remain);");
+			$self->pidl_code("offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, $hf, $remain);");
 		} 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;
@@ -363,7 +362,7 @@ sub ElementLevel($$$$$$$$)
 					$t = $l->{DATA_TYPE};
 				}
 
-				$self->pidl_code("offset = $ifname\_dissect_struct_" . $t . "(tvb,offset,pinfo,tree,drep,$hf,$param);");
+				$self->pidl_code("offset = $ifname\_dissect_struct_" . $t . "(tvb,offset,pinfo,tree,di,drep,$hf,$param);");
 
 				return;
 			}
@@ -381,7 +380,6 @@ sub ElementLevel($$$$$$$$)
 		my $hf2 = $self->register_hf_field($hf."_", "Subcontext length", "$ifname.$pn.$_->{NAME}subcontext", "FT_UINT$num_bits", "BASE_HEX", "NULL", 0, "");
 		$num_bits = 3264 if ($num_bits == 32);
 		$self->{hf_used}->{$hf2} = 1;
-		$self->pidl_code("dcerpc_info *di = (dcerpc_info*)pinfo->private_data;");
 		$self->pidl_code("guint$num_bits size;");
 		$self->pidl_code("int conformant = di->conformant_run;");
 		$self->pidl_code("tvbuff_t *subtvb;");
@@ -391,19 +389,19 @@ sub ElementLevel($$$$$$$$)
 		$self->pidl_code("if (!conformant) {");
 		$self->indent;
 		$self->pidl_code("guint32 saved_flags = di->call_data->flags;");
-		$self->pidl_code("offset = dissect_ndr_uint$num_bits(tvb, offset, pinfo, tree, drep, $hf2, &size);");
+		$self->pidl_code("offset = dissect_ndr_uint$num_bits(tvb, offset, pinfo, tree, di, drep, $hf2, &size);");
 		# This is a subcontext, there is normally no such thing as
 		# 64 bit NDR is subcontext so we clear the flag so that we can
 		# continue to dissect handmarshalled stuff with pidl
 		$self->pidl_code("di->call_data->flags &= ~DCERPC_IS_NDR64;");
 
-		$self->pidl_code("subtvb = tvb_new_subset(tvb, offset, size, -1);");
+		$self->pidl_code("subtvb = tvb_new_subset(tvb, offset, (const gint)size, -1);");
 		if ($param ne 0) {
-			$self->pidl_code("$myname\_(subtvb, 0, pinfo, tree, drep, $param);");
+			$self->pidl_code("$myname\_(subtvb, 0, pinfo, tree, di, drep, $param);");
 		} else {
-			$self->pidl_code("$myname\_(subtvb, 0, pinfo, tree, drep);");
+			$self->pidl_code("$myname\_(subtvb, 0, pinfo, tree, di, drep);");
 		}
-		$self->pidl_code("offset += size;");
+		$self->pidl_code("offset += (int)size;");
 		$self->pidl_code("di->call_data->flags = saved_flags;");
 		$self->deindent;
 		$self->pidl_code("}");
@@ -437,9 +435,9 @@ sub SwitchType($$;$)
 	return $switch_type
 }
 
-sub Element($$$$$)
+sub Element($$$$$$)
 {
-	my ($self,$e,$pn,$ifname,$isoruseswitch) = @_;
+	my ($self,$e,$pn,$ifname,$isoruseswitch,%switchvars) = @_;
 
 	my $dissectorname = "$ifname\_dissect\_element\_".StripPrefixes($pn, $self->{conformance}->{strip_prefixes})."\_".StripPrefixes($e->{NAME}, $self->{conformance}->{strip_prefixes});
 
@@ -449,18 +447,36 @@ sub Element($$$$$)
 		my $type = $isoruseswitch->[0];
 		my $name = $isoruseswitch->[1];
 
+		my $switch_dt =  getType($type);
 		my $switch_raw_type = SwitchType($e, $type, "uint32");
 		if (not defined($switch_raw_type)) {
 			die("Unknown type[$type]\n");
 		}
 		my $switch_type = "g${switch_raw_type}";
 
-		$moreparam = ", $switch_type *".$name;
-		$param = $name;
-		$call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, drep, &$name);";
+		if ($name ne "") {
+			$moreparam = ", $switch_type *".$name;
+		} else {
+			$moreparam = "";
+		}
+		if (($e->{PROPERTIES}->{switch_is} eq "") && ($switchvars{$name}) &&
+			#not a "native" type
+			(!($type =~ /^uint(8|16|1632|32|3264|64)/))) {
+			$param = $name;
+		} elsif ( $switch_dt->{DATA}->{TYPE} eq "ENUM") {
+			$param = $name;
+		} elsif ($name ne "") {
+			$param = "*".$name;
+		}
+
+		if ($name ne "") {
+			$call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, di, drep, &$name);";
+		} else {
+			$call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, di, drep);";
+		}
 	} else {
 		$moreparam = "";
-		$call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, drep);";
+		$call_code = "offset = $dissectorname(tvb, offset, pinfo, tree, di, drep);";
 	}
 
 
@@ -505,13 +521,16 @@ sub Element($$$$$)
 	foreach (@{$e->{LEVELS}}) {
 		if (defined $_->{SWITCH_IS}) {
 			$oldparam = $param;
-			$param = "*$param";
+			if (($param ne "0") && (!($param =~ /\*/))) {
+				$param = "*$param";
+			}
 		}
 		next if ($_->{TYPE} eq "SWITCH");
-		$self->pidl_def("static int $dissectorname$add(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_$moreparam);");
+		next if (defined($self->{conformance}->{noemit}->{"$dissectorname$add"}));
+		$self->pidl_def("static int $dissectorname$add(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_$moreparam);");
 		$self->pidl_fn_start("$dissectorname$add");
 		$self->pidl_code("static int");
-		$self->pidl_code("$dissectorname$add(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_$moreparam)");
+		$self->pidl_code("$dissectorname$add(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_$moreparam)");
 		$self->pidl_code("{");
 		$self->indent;
 
@@ -539,7 +558,7 @@ sub Function($$$)
 	my %dissectornames;
 
 	foreach (@{$fn->{ELEMENTS}}) {
-	    $dissectornames{$_->{NAME}} = $self->Element($_, $fn->{NAME}, $ifname, undef) if not defined($dissectornames{$_->{NAME}});
+	    $dissectornames{$_->{NAME}} = $self->Element($_, $fn->{NAME}, $ifname, undef, undef) if not defined($dissectornames{$_->{NAME}});
 	}
 
 	my $fn_name = $_->{NAME};
@@ -548,7 +567,7 @@ sub Function($$$)
 	$self->PrintIdl(DumpFunction($fn->{ORIGINAL}));
 	$self->pidl_fn_start("$ifname\_dissect\_$fn_name\_response");
 	$self->pidl_code("static int");
-	$self->pidl_code("$ifname\_dissect\_${fn_name}_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)");
+	$self->pidl_code("$ifname\_dissect\_${fn_name}_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)");
 	$self->pidl_code("{");
 	$self->indent;
 	if ( not defined($fn->{RETURN_TYPE})) {
@@ -567,23 +586,23 @@ sub Function($$$)
 		error($fn, "unknown return type `$fn->{RETURN_TYPE}'");
 	}
 
-	$self->pidl_code("pinfo->dcerpc_procedure_name=\"${fn_name}\";");
+	$self->pidl_code("di->dcerpc_procedure_name=\"${fn_name}\";");
 	foreach (@{$fn->{ELEMENTS}}) {
 		if (grep(/out/,@{$_->{DIRECTION}})) {
 			$self->pidl_code("$dissectornames{$_->{NAME}}");
-			$self->pidl_code("offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);");
+			$self->pidl_code("offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);");
 			$self->pidl_code("");
 		}
 	}
 
 	if (not defined($fn->{RETURN_TYPE})) {
 	} elsif ($fn->{RETURN_TYPE} eq "NTSTATUS") {
-		$self->pidl_code("offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf\_$ifname\_status, &status);\n");
+		$self->pidl_code("offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf\_$ifname\_status, &status);\n");
 		$self->pidl_code("if (status != 0)");
 		$self->pidl_code("\tcol_append_fstr(pinfo->cinfo, COL_INFO, \", Error: %s\", val_to_str(status, NT_errors, \"Unknown NT status 0x%08x\"));\n");
 		$return_types{$ifname}->{"status"} = ["NTSTATUS", "NT Error"];
 	} elsif ($fn->{RETURN_TYPE} eq "WERROR") {
-		$self->pidl_code("offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf\_$ifname\_werror, &status);\n");
+		$self->pidl_code("offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf\_$ifname\_werror, &status);\n");
 		$self->pidl_code("if (status != 0)");
 		$self->pidl_code("\tcol_append_fstr(pinfo->cinfo, COL_INFO, \", Error: %s\", val_to_str(status, WERR_errors, \"Unknown DOS error 0x%08x\"));\n");
 
@@ -593,12 +612,12 @@ sub Function($$$)
 			my $return_type = "g".Parse::Pidl::Typelist::enum_type_fn($type->{DATA});
 			my $return_dissect = "dissect_ndr_" .Parse::Pidl::Typelist::enum_type_fn($type->{DATA});
 
-			$self->pidl_code("offset = $return_dissect(tvb, offset, pinfo, tree, drep, hf\_$ifname\_$fn->{RETURN_TYPE}_status, &status);");
+			$self->pidl_code("offset = $return_dissect(tvb, offset, pinfo, tree, di, drep, hf\_$ifname\_$fn->{RETURN_TYPE}_status, &status);");
 			$self->pidl_code("if (status != 0)");
 			$self->pidl_code("\tcol_append_fstr(pinfo->cinfo, COL_INFO, \", Status: %s\", val_to_str(status, $ifname\_$fn->{RETURN_TYPE}\_vals, \"Unknown " . $fn->{RETURN_TYPE} . " error 0x%08x\"));\n");
 			$return_types{$ifname}->{$fn->{RETURN_TYPE}."_status"} = [$fn->{RETURN_TYPE}, $fn->{RETURN_TYPE}];
 		} elsif ($type->{DATA}->{TYPE} eq "SCALAR") {
-			$self->pidl_code("offset = dissect_ndr_$fn->{RETURN_TYPE}(tvb, offset, pinfo, tree, drep, hf\_$ifname\_$fn->{RETURN_TYPE}_status, &status);");
+			$self->pidl_code("offset = dissect_ndr_$fn->{RETURN_TYPE}(tvb, offset, pinfo, tree, di, drep, hf\_$ifname\_$fn->{RETURN_TYPE}_status, &status);");
 			$self->pidl_code("if (status != 0)");
 			$self->pidl_code("\tcol_append_fstr(pinfo->cinfo, COL_INFO, \", Status: %d\", status);\n");
 			$return_types{$ifname}->{$fn->{RETURN_TYPE}."_status"} = [$fn->{RETURN_TYPE}, $fn->{RETURN_TYPE}];
@@ -612,14 +631,14 @@ sub Function($$$)
 
 	$self->pidl_fn_start("$ifname\_dissect\_$fn_name\_request");
 	$self->pidl_code("static int");
-	$self->pidl_code("$ifname\_dissect\_${fn_name}_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)");
+	$self->pidl_code("$ifname\_dissect\_${fn_name}_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)");
 	$self->pidl_code("{");


-- 
Samba Shared Repository



More information about the samba-cvs mailing list