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