[SCM] Samba Shared Repository - branch v3-5-test updated - release-4-0-0alpha8-1380-gb01a7fc

Jeremy Allison jra at samba.org
Mon Sep 7 10:30:55 MDT 2009


The branch, v3-5-test has been updated
       via  b01a7fce838329fa751dda34eaa5c49b2985f065 (commit)
       via  b76a027d4ff46383a31c5ba26f5a27cf10ed2517 (commit)
       via  cfeb524646309ff10fddf4777ec6d16bd74deaf1 (commit)
       via  4f96f49d4eb537c199118ab41f477c31d12b8fc2 (commit)
       via  9f04bdf2b0d4b29228922ec74263b5c3c0e44f1a (commit)
       via  ea80a6cb1f681d2c1ac2646d67127daf11fa350f (commit)
       via  e0c029aaf60ce1283e51997e91e12264a83aadfc (commit)
       via  5981c9efcc6c4cf7851767101a703555f5492340 (commit)
      from  87822aa751846365040cf9c19f6bed3515c27393 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test


- Log -----------------------------------------------------------------
commit b01a7fce838329fa751dda34eaa5c49b2985f065
Author: Jeremy Allison <jra at samba.org>
Date:   Sun Sep 6 21:38:50 2009 -0700

    Fix bug 6673 - smbpasswd does not work with "unix password sync = yes".
    Revert change from 3.3 -> 3.4 with read_socket_with_timeout changed
    from sys_read() to sys_recv(). read_socket_with_timeout() is called
    with non-fd's (with a pty in chgpasswd.c and with a disk file in
    lib/dbwrap_file.c via read_data()). recv works for the disk file,
    but not the pty. Change the name of read_socket_with_timeout() to
    read_fd_with_timeout() to make this clear (and add comments).
    Jeremy.

commit b76a027d4ff46383a31c5ba26f5a27cf10ed2517
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Sep 6 15:18:58 2009 +0200

    s3:winbind: Convert WINBINDD_SET_HWM to the new API

commit cfeb524646309ff10fddf4777ec6d16bd74deaf1
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Sep 6 14:59:41 2009 +0200

    s3:winbind: Convert WINBINDD_REMOVE_MAPPING to the new API

commit 4f96f49d4eb537c199118ab41f477c31d12b8fc2
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Sep 6 14:47:06 2009 +0200

    s3:winbind: Convert WINBINDD_SET_MAPPING to the new API

commit 9f04bdf2b0d4b29228922ec74263b5c3c0e44f1a
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Sep 6 09:32:34 2009 +0200

    s3:winbind: Convert WINBINDD_CHECK_MACHACC to the new API

commit ea80a6cb1f681d2c1ac2646d67127daf11fa350f
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Sep 5 19:20:16 2009 +0200

    s3:smbd: Add the ntstatus to the smb_panic in share_mode_lock_destructor
    
    This might help finding why bug 6518 happens

commit e0c029aaf60ce1283e51997e91e12264a83aadfc
Author: Simo Sorce <idra at samba.org>
Date:   Sat Sep 5 10:18:12 2009 -0400

    Check we read off the compelte event from inotify
    
    The kernel may return a short read, so we must use read_data() to make sure we
    read off the full buffer. If somethign bad happens we also need to kill the
    inotify watch because the filedescriptor will return out of sync structures if
    we read only part of the data.

commit 5981c9efcc6c4cf7851767101a703555f5492340
Author: Simo Sorce <idra at samba.org>
Date:   Sat Sep 5 10:17:48 2009 -0400

    Save and report the correct errno value.

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

Summary of changes:
 source3/Makefile.in                            |    5 +-
 source3/include/proto.h                        |    2 +-
 source3/lib/util_sock.c                        |   62 ++-
 source3/librpc/gen_ndr/cli_wbint.c             |  616 ++++++++++++++++++++++++
 source3/librpc/gen_ndr/cli_wbint.h             |   48 ++
 source3/librpc/gen_ndr/ndr_wbint.c             |  274 +++++++++++-
 source3/librpc/gen_ndr/ndr_wbint.h             |   17 +-
 source3/librpc/gen_ndr/srv_wbint.c             |  322 ++++++++++++-
 source3/librpc/gen_ndr/srv_wbint.h             |    8 +
 source3/librpc/gen_ndr/wbint.h                 |   64 +++
 source3/librpc/idl/wbint.idl                   |   26 +
 source3/libsmb/clientgen.c                     |    2 +-
 source3/locking/locking.c                      |   20 +-
 source3/smbd/chgpasswd.c                       |    2 +-
 source3/smbd/notify_inotify.c                  |   10 +-
 source3/smbd/process.c                         |    4 +-
 source3/winbindd/winbindd.c                    |   15 +-
 source3/winbindd/winbindd_check_machine_acct.c |   88 ++++
 source3/winbindd/winbindd_domain.c             |    4 -
 source3/winbindd/winbindd_dual_srv.c           |  119 +++++
 source3/winbindd/winbindd_idmap.c              |  187 -------
 source3/winbindd/winbindd_misc.c               |   68 ---
 source3/winbindd/winbindd_proto.h              |   27 +
 source3/winbindd/winbindd_remove_mapping.c     |  106 ++++
 source3/winbindd/winbindd_set_hwm.c            |   95 ++++
 source3/winbindd/winbindd_set_mapping.c        |  106 ++++
 source3/winbindd/winbindd_sid.c                |  142 ------
 27 files changed, 1993 insertions(+), 446 deletions(-)
 create mode 100644 source3/winbindd/winbindd_check_machine_acct.c
 create mode 100644 source3/winbindd/winbindd_remove_mapping.c
 create mode 100644 source3/winbindd/winbindd_set_hwm.c
 create mode 100644 source3/winbindd/winbindd_set_mapping.c
 delete mode 100644 source3/winbindd/winbindd_sid.c


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index 5e3e7eb..3528d6c 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -1141,7 +1141,6 @@ WINBINDD_OBJ1 = \
 		winbindd/winbindd_util.o  \
 		winbindd/winbindd_cache.o \
 		winbindd/winbindd_pam.o   \
-		winbindd/winbindd_sid.o   \
 		winbindd/winbindd_misc.o  \
 		winbindd/winbindd_cm.o    \
 		winbindd/winbindd_wins.o  \
@@ -1213,6 +1212,10 @@ WINBINDD_OBJ1 = \
 		winbindd/winbindd_getdcname.o \
 		winbindd/winbindd_list_users.o \
 		winbindd/winbindd_list_groups.o \
+		winbindd/winbindd_check_machine_acct.o \
+		winbindd/winbindd_set_mapping.o \
+		winbindd/winbindd_remove_mapping.o \
+		winbindd/winbindd_set_hwm.o \
 		auth/token_util.o \
 		../nsswitch/libwbclient/wb_reqtrans.o \
 		smbd/connection.o
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 9314e57..4bdd306 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1383,7 +1383,7 @@ ssize_t read_udp_v4_socket(int fd,
 			char *buf,
 			size_t len,
 			struct sockaddr_storage *psa);
-NTSTATUS read_socket_with_timeout(int fd, char *buf,
+NTSTATUS read_fd_with_timeout(int fd, char *buf,
 				  size_t mincnt, size_t maxcnt,
 				  unsigned int time_out,
 				  size_t *size_ret);
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index ec88b60..6cc2e53 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -538,13 +538,15 @@ ssize_t read_udp_v4_socket(int fd,
 }
 
 /****************************************************************************
- Read data from a socket with a timout in msec.
+ Read data from a file descriptor with a timout in msec.
  mincount = if timeout, minimum to read before returning
  maxcount = number to be read.
  time_out = timeout in milliseconds
+ NB. This can be called with a non-socket fd, don't change
+ sys_read() to sys_recv() or other socket call.
 ****************************************************************************/
 
-NTSTATUS read_socket_with_timeout(int fd, char *buf,
+NTSTATUS read_fd_with_timeout(int fd, char *buf,
 				  size_t mincnt, size_t maxcnt,
 				  unsigned int time_out,
 				  size_t *size_ret)
@@ -555,6 +557,7 @@ NTSTATUS read_socket_with_timeout(int fd, char *buf,
 	size_t nread = 0;
 	struct timeval timeout;
 	char addr[INET6_ADDRSTRLEN];
+	int save_errno;
 
 	/* just checking .... */
 	if (maxcnt <= 0)
@@ -567,28 +570,29 @@ NTSTATUS read_socket_with_timeout(int fd, char *buf,
 		}
 
 		while (nread < mincnt) {
-			readret = sys_recv(fd, buf + nread, maxcnt - nread, 0);
+			readret = sys_read(fd, buf + nread, maxcnt - nread);
 
 			if (readret == 0) {
-				DEBUG(5,("read_socket_with_timeout: "
+				DEBUG(5,("read_fd_with_timeout: "
 					"blocking read. EOF from client.\n"));
 				return NT_STATUS_END_OF_FILE;
 			}
 
 			if (readret == -1) {
+				save_errno = errno;
 				if (fd == get_client_fd()) {
 					/* Try and give an error message
 					 * saying what client failed. */
-					DEBUG(0,("read_socket_with_timeout: "
+					DEBUG(0,("read_fd_with_timeout: "
 						"client %s read error = %s.\n",
 						get_peer_addr(fd,addr,sizeof(addr)),
-						strerror(errno) ));
+						strerror(save_errno) ));
 				} else {
-					DEBUG(0,("read_socket_with_timeout: "
+					DEBUG(0,("read_fd_with_timeout: "
 						"read error = %s.\n",
-						strerror(errno) ));
+						strerror(save_errno) ));
 				}
-				return map_nt_error_from_unix(errno);
+				return map_nt_error_from_unix(save_errno);
 			}
 			nread += readret;
 		}
@@ -613,51 +617,53 @@ NTSTATUS read_socket_with_timeout(int fd, char *buf,
 
 		/* Check if error */
 		if (selrtn == -1) {
+			save_errno = errno;
 			/* something is wrong. Maybe the socket is dead? */
 			if (fd == get_client_fd()) {
 				/* Try and give an error message saying
 				 * what client failed. */
-				DEBUG(0,("read_socket_with_timeout: timeout "
+				DEBUG(0,("read_fd_with_timeout: timeout "
 				"read for client %s. select error = %s.\n",
 				get_peer_addr(fd,addr,sizeof(addr)),
-				strerror(errno) ));
+				strerror(save_errno) ));
 			} else {
-				DEBUG(0,("read_socket_with_timeout: timeout "
+				DEBUG(0,("read_fd_with_timeout: timeout "
 				"read. select error = %s.\n",
-				strerror(errno) ));
+				strerror(save_errno) ));
 			}
-			return map_nt_error_from_unix(errno);
+			return map_nt_error_from_unix(save_errno);
 		}
 
 		/* Did we timeout ? */
 		if (selrtn == 0) {
-			DEBUG(10,("read_socket_with_timeout: timeout read. "
+			DEBUG(10,("read_fd_with_timeout: timeout read. "
 				"select timed out.\n"));
 			return NT_STATUS_IO_TIMEOUT;
 		}
 
-		readret = sys_recv(fd, buf+nread, maxcnt-nread, 0);
+		readret = sys_read(fd, buf+nread, maxcnt-nread);
 
 		if (readret == 0) {
 			/* we got EOF on the file descriptor */
-			DEBUG(5,("read_socket_with_timeout: timeout read. "
+			DEBUG(5,("read_fd_with_timeout: timeout read. "
 				"EOF from client.\n"));
 			return NT_STATUS_END_OF_FILE;
 		}
 
 		if (readret == -1) {
+			save_errno = errno;
 			/* the descriptor is probably dead */
 			if (fd == get_client_fd()) {
 				/* Try and give an error message
 				 * saying what client failed. */
-				DEBUG(0,("read_socket_with_timeout: timeout "
+				DEBUG(0,("read_fd_with_timeout: timeout "
 					"read to client %s. read error = %s.\n",
 					get_peer_addr(fd,addr,sizeof(addr)),
-					strerror(errno) ));
+					strerror(save_errno) ));
 			} else {
-				DEBUG(0,("read_socket_with_timeout: timeout "
+				DEBUG(0,("read_fd_with_timeout: timeout "
 					"read. read error = %s.\n",
-					strerror(errno) ));
+					strerror(save_errno) ));
 			}
 			return map_nt_error_from_unix(errno);
 		}
@@ -674,16 +680,20 @@ NTSTATUS read_socket_with_timeout(int fd, char *buf,
 }
 
 /****************************************************************************
- Read data from the client, reading exactly N bytes.
+ Read data from an fd, reading exactly N bytes.
+ NB. This can be called with a non-socket fd, don't add dependencies
+ on socket calls.
 ****************************************************************************/
 
 NTSTATUS read_data(int fd, char *buffer, size_t N)
 {
-	return read_socket_with_timeout(fd, buffer, N, N, 0, NULL);
+	return read_fd_with_timeout(fd, buffer, N, N, 0, NULL);
 }
 
 /****************************************************************************
  Write all data from an iov array
+ NB. This can be called with a non-socket fd, don't add dependencies
+ on socket calls.
 ****************************************************************************/
 
 ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt)
@@ -753,6 +763,8 @@ ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt)
 
 /****************************************************************************
  Write data to a fd.
+ NB. This can be called with a non-socket fd, don't add dependencies
+ on socket calls.
 ****************************************************************************/
 
 ssize_t write_data(int fd, const char *buffer, size_t N)
@@ -813,7 +825,7 @@ NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf,
 	int msg_type;
 	NTSTATUS status;
 
-	status = read_socket_with_timeout(fd, inbuf, 4, 4, timeout, NULL);
+	status = read_fd_with_timeout(fd, inbuf, 4, 4, timeout, NULL);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
@@ -894,7 +906,7 @@ NTSTATUS receive_smb_raw(int fd, char *buffer, size_t buflen, unsigned int timeo
 			len = MIN(len,maxlen);
 		}
 
-		status = read_socket_with_timeout(
+		status = read_fd_with_timeout(
 			fd, buffer+4, len, len, timeout, &len);
 
 		if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/librpc/gen_ndr/cli_wbint.c b/source3/librpc/gen_ndr/cli_wbint.c
index 6037b72..3e5fc44 100644
--- a/source3/librpc/gen_ndr/cli_wbint.c
+++ b/source3/librpc/gen_ndr/cli_wbint.c
@@ -2929,3 +2929,619 @@ NTSTATUS rpccli_wbint_LookupRids(struct rpc_pipe_client *cli,
 	return r.out.result;
 }
 
+struct rpccli_wbint_CheckMachineAccount_state {
+	struct wbint_CheckMachineAccount orig;
+	struct wbint_CheckMachineAccount tmp;
+	TALLOC_CTX *out_mem_ctx;
+	NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
+};
+
+static void rpccli_wbint_CheckMachineAccount_done(struct tevent_req *subreq);
+
+struct tevent_req *rpccli_wbint_CheckMachineAccount_send(TALLOC_CTX *mem_ctx,
+							 struct tevent_context *ev,
+							 struct rpc_pipe_client *cli)
+{
+	struct tevent_req *req;
+	struct rpccli_wbint_CheckMachineAccount_state *state;
+	struct tevent_req *subreq;
+
+	req = tevent_req_create(mem_ctx, &state,
+				struct rpccli_wbint_CheckMachineAccount_state);
+	if (req == NULL) {
+		return NULL;
+	}
+	state->out_mem_ctx = NULL;
+	state->dispatch_recv = cli->dispatch_recv;
+
+	/* In parameters */
+
+	/* Out parameters */
+
+	/* Result */
+	ZERO_STRUCT(state->orig.out.result);
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(wbint_CheckMachineAccount, &state->orig);
+	}
+
+	/* make a temporary copy, that we pass to the dispatch function */
+	state->tmp = state->orig;
+
+	subreq = cli->dispatch_send(state, ev, cli,
+				    &ndr_table_wbint,
+				    NDR_WBINT_CHECKMACHINEACCOUNT,
+				    &state->tmp);
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
+	}
+	tevent_req_set_callback(subreq, rpccli_wbint_CheckMachineAccount_done, req);
+	return req;
+}
+
+static void rpccli_wbint_CheckMachineAccount_done(struct tevent_req *subreq)
+{
+	struct tevent_req *req = tevent_req_callback_data(
+		subreq, struct tevent_req);
+	struct rpccli_wbint_CheckMachineAccount_state *state = tevent_req_data(
+		req, struct rpccli_wbint_CheckMachineAccount_state);
+	NTSTATUS status;
+	TALLOC_CTX *mem_ctx;
+
+	if (state->out_mem_ctx) {
+		mem_ctx = state->out_mem_ctx;
+	} else {
+		mem_ctx = state;
+	}
+
+	status = state->dispatch_recv(subreq, mem_ctx);
+	TALLOC_FREE(subreq);
+	if (!NT_STATUS_IS_OK(status)) {
+		tevent_req_nterror(req, status);
+		return;
+	}
+
+	/* Copy out parameters */
+
+	/* Copy result */
+	state->orig.out.result = state->tmp.out.result;
+
+	/* Reset temporary structure */
+	ZERO_STRUCT(state->tmp);
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(wbint_CheckMachineAccount, &state->orig);
+	}
+
+	tevent_req_done(req);
+}
+
+NTSTATUS rpccli_wbint_CheckMachineAccount_recv(struct tevent_req *req,
+					       TALLOC_CTX *mem_ctx,
+					       NTSTATUS *result)
+{
+	struct rpccli_wbint_CheckMachineAccount_state *state = tevent_req_data(
+		req, struct rpccli_wbint_CheckMachineAccount_state);
+	NTSTATUS status;
+
+	if (tevent_req_is_nterror(req, &status)) {
+		tevent_req_received(req);
+		return status;
+	}
+
+	/* Steal possbile out parameters to the callers context */
+	talloc_steal(mem_ctx, state->out_mem_ctx);
+
+	/* Return result */
+	*result = state->orig.out.result;
+
+	tevent_req_received(req);
+	return NT_STATUS_OK;
+}
+
+NTSTATUS rpccli_wbint_CheckMachineAccount(struct rpc_pipe_client *cli,
+					  TALLOC_CTX *mem_ctx)
+{
+	struct wbint_CheckMachineAccount r;
+	NTSTATUS status;
+
+	/* In parameters */
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(wbint_CheckMachineAccount, &r);
+	}
+
+	status = cli->dispatch(cli,
+				mem_ctx,
+				&ndr_table_wbint,
+				NDR_WBINT_CHECKMACHINEACCOUNT,
+				&r);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(wbint_CheckMachineAccount, &r);
+	}
+
+	if (NT_STATUS_IS_ERR(status)) {
+		return status;
+	}
+
+	/* Return variables */
+
+	/* Return result */
+	return r.out.result;
+}
+
+struct rpccli_wbint_SetMapping_state {
+	struct wbint_SetMapping orig;
+	struct wbint_SetMapping tmp;
+	TALLOC_CTX *out_mem_ctx;
+	NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
+};
+
+static void rpccli_wbint_SetMapping_done(struct tevent_req *subreq);
+
+struct tevent_req *rpccli_wbint_SetMapping_send(TALLOC_CTX *mem_ctx,
+						struct tevent_context *ev,
+						struct rpc_pipe_client *cli,
+						struct dom_sid *_sid /* [in] [ref] */,
+						enum wbint_IdType _type /* [in]  */,
+						uint64_t _id /* [in]  */)
+{
+	struct tevent_req *req;
+	struct rpccli_wbint_SetMapping_state *state;
+	struct tevent_req *subreq;
+
+	req = tevent_req_create(mem_ctx, &state,
+				struct rpccli_wbint_SetMapping_state);
+	if (req == NULL) {
+		return NULL;
+	}
+	state->out_mem_ctx = NULL;
+	state->dispatch_recv = cli->dispatch_recv;
+
+	/* In parameters */
+	state->orig.in.sid = _sid;
+	state->orig.in.type = _type;
+	state->orig.in.id = _id;
+
+	/* Out parameters */
+
+	/* Result */
+	ZERO_STRUCT(state->orig.out.result);
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(wbint_SetMapping, &state->orig);
+	}
+
+	/* make a temporary copy, that we pass to the dispatch function */
+	state->tmp = state->orig;
+
+	subreq = cli->dispatch_send(state, ev, cli,
+				    &ndr_table_wbint,
+				    NDR_WBINT_SETMAPPING,
+				    &state->tmp);
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
+	}
+	tevent_req_set_callback(subreq, rpccli_wbint_SetMapping_done, req);
+	return req;
+}
+
+static void rpccli_wbint_SetMapping_done(struct tevent_req *subreq)
+{
+	struct tevent_req *req = tevent_req_callback_data(
+		subreq, struct tevent_req);
+	struct rpccli_wbint_SetMapping_state *state = tevent_req_data(
+		req, struct rpccli_wbint_SetMapping_state);
+	NTSTATUS status;
+	TALLOC_CTX *mem_ctx;
+
+	if (state->out_mem_ctx) {
+		mem_ctx = state->out_mem_ctx;
+	} else {
+		mem_ctx = state;
+	}
+
+	status = state->dispatch_recv(subreq, mem_ctx);
+	TALLOC_FREE(subreq);
+	if (!NT_STATUS_IS_OK(status)) {
+		tevent_req_nterror(req, status);
+		return;
+	}
+
+	/* Copy out parameters */
+
+	/* Copy result */
+	state->orig.out.result = state->tmp.out.result;
+
+	/* Reset temporary structure */
+	ZERO_STRUCT(state->tmp);
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(wbint_SetMapping, &state->orig);
+	}
+
+	tevent_req_done(req);
+}
+
+NTSTATUS rpccli_wbint_SetMapping_recv(struct tevent_req *req,
+				      TALLOC_CTX *mem_ctx,
+				      NTSTATUS *result)
+{
+	struct rpccli_wbint_SetMapping_state *state = tevent_req_data(
+		req, struct rpccli_wbint_SetMapping_state);
+	NTSTATUS status;
+
+	if (tevent_req_is_nterror(req, &status)) {
+		tevent_req_received(req);
+		return status;
+	}
+
+	/* Steal possbile out parameters to the callers context */
+	talloc_steal(mem_ctx, state->out_mem_ctx);
+
+	/* Return result */
+	*result = state->orig.out.result;
+
+	tevent_req_received(req);
+	return NT_STATUS_OK;
+}
+
+NTSTATUS rpccli_wbint_SetMapping(struct rpc_pipe_client *cli,
+				 TALLOC_CTX *mem_ctx,
+				 struct dom_sid *sid /* [in] [ref] */,
+				 enum wbint_IdType type /* [in]  */,
+				 uint64_t id /* [in]  */)
+{
+	struct wbint_SetMapping r;
+	NTSTATUS status;
+
+	/* In parameters */
+	r.in.sid = sid;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list