svn commit: samba r19856 - in branches/SAMBA_4_0/source: librpc/idl librpc/ndr pidl/lib/Parse/Pidl pidl/lib/Parse/Pidl/Samba4/NDR

jelmer at samba.org jelmer at samba.org
Thu Nov 23 13:48:02 GMT 2006


Author: jelmer
Date: 2006-11-23 13:48:01 +0000 (Thu, 23 Nov 2006)
New Revision: 19856

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19856

Log:
Use sptr as basis for full ptr implementation. Will add checks for duplicates later.

Modified:
   branches/SAMBA_4_0/source/librpc/idl/epmapper.idl
   branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/epmapper.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/epmapper.idl	2006-11-23 13:12:47 UTC (rev 19855)
+++ branches/SAMBA_4_0/source/librpc/idl/epmapper.idl	2006-11-23 13:48:01 UTC (rev 19856)
@@ -248,8 +248,8 @@
 	/* Function 0x02      */
 	error_status_t epm_Lookup(
 		[in]            uint32          inquiry_type,
-		[in,sptr]       GUID            *object,
-		[in,sptr]       rpc_if_id_t     *interface_id,
+		[in,ptr]       GUID            *object,
+		[in,ptr]       rpc_if_id_t     *interface_id,
 		[in]            uint32          vers_option,
 		[in,out]        policy_handle   *entry_handle,
 		[in]            uint32          max_ents,
@@ -266,8 +266,8 @@
 	} epm_twr_p_t;
 
 	error_status_t epm_Map(
-		[in,sptr]       GUID            *object,
-		[in,sptr]       epm_twr_t       *map_tower,
+		[in,ptr]       GUID            *object,
+		[in,ptr]       epm_twr_t       *map_tower,
 		[in,out]        policy_handle   *entry_handle,
 		[in]            uint32          max_towers,
 		[out]           uint32          *num_towers,
@@ -292,8 +292,8 @@
 	/* Function 0x06      */
 	error_status_t epm_MgmtDelete(
 		[in]            uint32          object_speced,
-		[in,sptr]       GUID            *object,
-		[in,sptr]       epm_twr_t       *tower
+		[in,ptr]       GUID            *object,
+		[in,ptr]       epm_twr_t       *tower
 		);
 
 	/**********************/

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c	2006-11-23 13:12:47 UTC (rev 19855)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c	2006-11-23 13:48:01 UTC (rev 19856)
@@ -481,7 +481,7 @@
 /*
   push a 'simple' full non-zero value if a pointer is non-NULL, otherwise 0
 */
-_PUBLIC_ NTSTATUS ndr_push_sptr_ptr(struct ndr_push *ndr, const void *p)
+_PUBLIC_ NTSTATUS ndr_push_full_ptr(struct ndr_push *ndr, const void *p)
 {
 	uint32_t ptr = 0;
 	if (p) {

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-11-23 13:12:47 UTC (rev 19855)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-11-23 13:48:01 UTC (rev 19856)
@@ -309,7 +309,7 @@
 	return undef unless $e->{POINTERS};
 	
 	return "ref" if (has_property($e, "ref"));
-	return "ptr" if (has_property($e, "ptr"));
+	return "full" if (has_property($e, "ptr"));
 	return "sptr" if (has_property($e, "sptr"));
 	return "unique" if (has_property($e, "unique"));
 	return "relative" if (has_property($e, "relative"));
@@ -789,7 +789,6 @@
 	# pointer
 	"ref"			=> ["ELEMENT"],
 	"ptr"			=> ["ELEMENT"],
-	"sptr"			=> ["ELEMENT"],
 	"unique"		=> ["ELEMENT"],
 	"ignore"		=> ["ELEMENT"],
 	"relative"		=> ["ELEMENT"],
@@ -885,10 +884,6 @@
 
 	ValidProperties($e,"ELEMENT");
 
-	if (has_property($e, "ptr")) {
-		fatal($e, el_name($e) . " : pidl does not support full NDR pointers yet\n");
-	}
-
 	# Check whether switches are used correctly.
 	if (my $switch = has_property($e, "switch_is")) {
 		my $e2 = find_sibling($e, $switch);
@@ -946,7 +941,6 @@
 
 	if (!$e->{POINTERS} && (
 		has_property($e, "ptr") or
-		has_property($e, "sptr") or
 		has_property($e, "unique") or
 		has_property($e, "relative") or
 		has_property($e, "ref"))) {
@@ -1055,11 +1049,8 @@
 	ValidProperties($interface,"INTERFACE");
 
 	if (has_property($interface, "pointer_default")) {
-		if ($interface->{PROPERTIES}->{pointer_default} eq "ptr") {
-			nonfatal $interface, "Full pointers are not supported yet, falling back to sptr";
-			$interface->{PROPERTIES}->{pointer_default} = "sptr";
-		} elsif (not grep (/$interface->{PROPERTIES}->{pointer_default}/, 
-					("ref", "unique", "ptr", "sptr"))) {
+		if (not grep (/$interface->{PROPERTIES}->{pointer_default}/, 
+					("ref", "unique", "ptr"))) {
 			fatal $interface, "Unknown default pointer type `$interface->{PROPERTIES}->{pointer_default}'";
 		}
 	}

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm	2006-11-23 13:12:47 UTC (rev 19855)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm	2006-11-23 13:48:01 UTC (rev 19856)
@@ -669,8 +669,8 @@
 		pidl "NDR_CHECK(ndr_push_relative_ptr1(ndr, $var_name));";
 	} elsif ($l->{POINTER_TYPE} eq "unique") {
 		pidl "NDR_CHECK(ndr_push_unique_ptr(ndr, $var_name));";
-	} elsif ($l->{POINTER_TYPE} eq "sptr") {
-		pidl "NDR_CHECK(ndr_push_sptr_ptr(ndr, $var_name));";
+	} elsif ($l->{POINTER_TYPE} eq "full") {
+		pidl "NDR_CHECK(ndr_push_full_ptr(ndr, $var_name));";
 	} else {
 		die("Unhandled pointer type $l->{POINTER_TYPE}");
 	}
@@ -1085,7 +1085,7 @@
 		return;
 	} elsif (($l->{POINTER_TYPE} eq "unique") or 
 		 ($l->{POINTER_TYPE} eq "relative") or
-		 ($l->{POINTER_TYPE} eq "sptr")) {
+		 ($l->{POINTER_TYPE} eq "full")) {
 		pidl "NDR_CHECK(ndr_pull_generic_ptr($ndr, &_ptr_$e->{NAME}));";
 		pidl "if (_ptr_$e->{NAME}) {";
 		indent;



More information about the samba-cvs mailing list