svn commit: samba r3136 - in branches/SAMBA_4_0/source: ldap_server librpc/rpc rpc_server smb_server smbd torture/local torture/rpc

jelmer at samba.org jelmer at samba.org
Fri Oct 22 10:53:24 GMT 2004


Author: jelmer
Date: 2004-10-22 10:52:57 +0000 (Fri, 22 Oct 2004)
New Revision: 3136

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=3136&nolog=1

Log:
- Allow specifying socket type when adding smbd service 
- Make sure a epm_tower struct is completely initialized
- Some more minor fixes

Modified:
   branches/SAMBA_4_0/source/ldap_server/ldap_server.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c
   branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c
   branches/SAMBA_4_0/source/smb_server/smb_server.c
   branches/SAMBA_4_0/source/smbd/service.c
   branches/SAMBA_4_0/source/torture/local/binding_string.c
   branches/SAMBA_4_0/source/torture/rpc/epmapper.c


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_server.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_server.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_server.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -40,10 +40,10 @@
 	uint16_t port = 389;
 	char *ip_str = talloc_strdup(service, inet_ntoa(*ifip));
 
-	srv_sock = service_setup_socket(service, model_ops, ip_str, &port);
+	srv_sock = service_setup_socket(service, model_ops, "ipv4", ip_str, &port);
 
 	port = 3268;
-	srv_sock = service_setup_socket(service, model_ops, ip_str, &port);
+	srv_sock = service_setup_socket(service, model_ops, "ipv4", ip_str, &port);
 
 	talloc_free(ip_str);
 }

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h	2004-10-22 10:52:57 UTC (rev 3136)
@@ -145,6 +145,7 @@
 struct dcerpc_binding {
 	enum dcerpc_transport_t transport;
 	struct GUID object;
+	int object_version;
 	const char *host;
 	const char **options;
 	uint32_t flags;

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -359,6 +359,8 @@
 		ZERO_STRUCT(b->object);
 	}
 
+	b->object_version = 0;
+
 	p = strchr(s, ':');
 	if (!p) {
 		return NT_STATUS_INVALID_PARAMETER;
@@ -641,6 +643,7 @@
 
 	/* Set object uuid */
 	binding->object = tower->floors[0].lhs.info.uuid.uuid;
+	binding->object_version = tower->floors[0].lhs.info.uuid.version;
 
 	/* Ignore floor 1, it contains the NDR version info */
 	
@@ -661,18 +664,12 @@
 	return NT_STATUS_OK;
 }
 
-NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower **tower)
+NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower *tower)
 {
 	const enum epm_protocols *protseq;
 	int num_protocols = -1, i;
 	NTSTATUS status;
 	
-	*tower = talloc_p(mem_ctx, struct epm_tower);
-
-	if (!(*tower)) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
 	/* Find transport */
 	for (i=0;i<ARRAY_SIZE(transports);i++) {
 		if (transports[i].transport == binding->transport) {
@@ -687,31 +684,34 @@
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
-	(*tower)->num_floors = 2 + num_protocols;
-	(*tower)->floors = talloc_array_p(mem_ctx, struct epm_floor, (*tower)->num_floors);
+	tower->num_floors = 2 + num_protocols;
+	tower->floors = talloc_array_p(mem_ctx, struct epm_floor, tower->num_floors);
 
 	/* Floor 0 */
-	(*tower)->floors[0].lhs.protocol = EPM_PROTOCOL_UUID;
-	(*tower)->floors[0].lhs.info.uuid.uuid = binding->object;
-	(*tower)->floors[0].lhs.info.uuid.version = 0;
+	tower->floors[0].lhs.protocol = EPM_PROTOCOL_UUID;
+	tower->floors[0].lhs.info.uuid.uuid = binding->object;
+	tower->floors[0].lhs.info.uuid.version = binding->object_version;
+	tower->floors[0].rhs.uuid.unknown = 0;
 	
 	/* Floor 1 */
-	(*tower)->floors[1].lhs.protocol = EPM_PROTOCOL_UUID;
-	(*tower)->floors[1].lhs.info.uuid.version = NDR_GUID_VERSION;
-	status = GUID_from_string(NDR_GUID, &(*tower)->floors[1].lhs.info.uuid.uuid);
+	tower->floors[1].lhs.protocol = EPM_PROTOCOL_UUID;
+	tower->floors[1].lhs.info.uuid.version = NDR_GUID_VERSION;
+	tower->floors[1].rhs.uuid.unknown = 0;
+	status = GUID_from_string(NDR_GUID, &tower->floors[1].lhs.info.uuid.uuid);
 	if (NT_STATUS_IS_ERR(status)) {
 		return status;
 	}
 
 	/* Floor 2 to num_protocols */
 	for (i = 0; i < num_protocols; i++) {
-		(*tower)->floors[2 + i].lhs.protocol = protseq[i];
-		ZERO_STRUCT((*tower)->floors[2 + i].rhs);
+		tower->floors[2 + i].lhs.protocol = protseq[i];
+		tower->floors[2 + i].lhs.info.lhs_data = data_blob_talloc(mem_ctx, NULL, 0);
+		ZERO_STRUCT(tower->floors[2 + i].rhs);
 	}
 
 	/* The top floor contains the endpoint */
 	if (num_protocols >= 1 && binding->options && binding->options[0]) {
-		status = floor_set_rhs_data(mem_ctx, &(*tower)->floors[2 + num_protocols - 1], binding->options[0]);
+		status = floor_set_rhs_data(mem_ctx, &tower->floors[2 + num_protocols - 1], binding->options[0]);
 		if (NT_STATUS_IS_ERR(status)) {
 			return status;
 		}
@@ -719,7 +719,7 @@
 
 	/* The second-to-top floor contains the network address */
 	if (num_protocols >= 2 && binding->host) {
-		status = floor_set_rhs_data(mem_ctx, &(*tower)->floors[2 + num_protocols - 2], binding->host);
+		status = floor_set_rhs_data(mem_ctx, &tower->floors[2 + num_protocols - 2], binding->host);
 		if (NT_STATUS_IS_ERR(status)) {
 			return status;
 		}

Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -70,7 +70,7 @@
 			if (e->ep_description.options && e->ep_description.options[0]) 
 				port = atoi(e->ep_description.options[0]);
 
-			sock = service_setup_socket(service,model_ops, ip_str, &port);
+			sock = service_setup_socket(service,model_ops, "ipv4", ip_str, &port);
 			if (!sock) {
 				DEBUG(0,("service_setup_socket(port=%u) failed\n",port));
 				continue;

Modified: branches/SAMBA_4_0/source/smb_server/smb_server.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/smb_server.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/smb_server/smb_server.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -693,7 +693,7 @@
 	for (i=0;ports[i];i++) {
 		uint16_t port = atoi(ports[i]);
 		if (port == 0) continue;
-		service_setup_socket(service, model_ops, ip_str, &port);
+		service_setup_socket(service, model_ops, "ipv4", ip_str, &port);
 	}
 
 	talloc_free(ip_str);

Modified: branches/SAMBA_4_0/source/smbd/service.c
===================================================================
--- branches/SAMBA_4_0/source/smbd/service.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/smbd/service.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -88,6 +88,7 @@
  */
 struct server_socket *service_setup_socket(struct server_service *service,
 					   const struct model_ops *model_ops,
+					   const char *family,
 					   const char *sock_addr,
 					   uint16_t *port)
 {
@@ -97,7 +98,7 @@
 	struct fd_event fde;
 	int i;
 
-	status = socket_create("ipv4", SOCKET_TYPE_STREAM, &socket_ctx, 0);
+	status = socket_create(family, SOCKET_TYPE_STREAM, &socket_ctx, 0);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0,("Failed to open socket on %s:%u - %s\n",
 			sock_addr, *port, nt_errstr(status)));

Modified: branches/SAMBA_4_0/source/torture/local/binding_string.c
===================================================================
--- branches/SAMBA_4_0/source/torture/local/binding_string.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/torture/local/binding_string.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -26,7 +26,7 @@
 {
 	struct dcerpc_binding b, b2;
 	const char *s, *s2;
-	struct epm_tower *tower;
+	struct epm_tower tower;
 	NTSTATUS status;
 
 	/* Parse */
@@ -56,7 +56,7 @@
 
 	/* Convert back to binding and then back to string and compare */
 
-	status = dcerpc_binding_from_tower(mem_ctx, tower, &b2);
+	status = dcerpc_binding_from_tower(mem_ctx, &tower, &b2);
 	if (NT_STATUS_IS_ERR(status)) {
 		DEBUG(0, ("Error generating binding from tower for original binding '%s': %s\n", binding, nt_errstr(status)));
 		return False;

Modified: branches/SAMBA_4_0/source/torture/rpc/epmapper.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/epmapper.c	2004-10-22 07:01:32 UTC (rev 3135)
+++ branches/SAMBA_4_0/source/torture/rpc/epmapper.c	2004-10-22 10:52:57 UTC (rev 3136)
@@ -78,7 +78,7 @@
 			break;
 
 		case EPM_PROTOCOL_UNIX_DS:
-			printf(" Unix Domain Socket:%s", rhs->unix_ds.path);
+			printf(" Unix:%s", rhs->unix_ds.path);
 			break;
 
 		case EPM_PROTOCOL_NETBIOS:



More information about the samba-cvs mailing list