[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-304-gfcdc096
Günther Deschner
gd at samba.org
Wed Mar 19 01:21:28 GMT 2008
The branch, v3-2-test has been updated
via fcdc09674571b8e81233acc9e8dc8651b66cd21d (commit)
via 6c6700ed7148b73b2ce52fc00020c7e253a577d3 (commit)
from e9c56250eb7a2dc4e69962c5b48875834941ccfc (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit fcdc09674571b8e81233acc9e8dc8651b66cd21d
Author: Günther Deschner <gd at samba.org>
Date: Wed Mar 19 01:31:09 2008 +0100
Remove unused marshalling for SRV_NET_FILE_ENUM.
Guenther
commit 6c6700ed7148b73b2ce52fc00020c7e253a577d3
Author: Günther Deschner <gd at samba.org>
Date: Wed Mar 19 01:25:59 2008 +0100
Use pidl for _srvsvc_NetFileEnum.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/include/rpc_srvsvc.h | 39 -----
source/rpc_parse/parse_srv.c | 289 -------------------------------------
source/rpc_server/srv_srvsvc_nt.c | 169 +++++++++-------------
3 files changed, 71 insertions(+), 426 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/include/rpc_srvsvc.h b/source/include/rpc_srvsvc.h
index 4d840d0..0d24ec5 100644
--- a/source/include/rpc_srvsvc.h
+++ b/source/include/rpc_srvsvc.h
@@ -217,43 +217,4 @@ typedef struct r_net_conn_enum_info
/***************************/
-typedef struct {
- uint32 id; /* file index */
- uint32 perms; /* file permissions. don't know what format */
- uint32 num_locks; /* file locks */
- UNISTR2 *path; /* file name */
- UNISTR2 *user; /* file owner */
-} FILE_INFO_3;
-
-typedef struct {
- uint32 level; /* switch value */
- uint32 ptr_file_info; /* pointer to file info union */
-
- uint32 num_entries;
- uint32 ptr_entries;
- uint32 num_entries2;
- union {
- FILE_INFO_3 *info3;
- } file;
-
-} SRV_FILE_INFO_CTR;
-
-typedef struct {
- UNISTR2 *servername;
- UNISTR2 *qualifier;
- UNISTR2 *username;
- uint32 level;
- SRV_FILE_INFO_CTR ctr;
- uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
- ENUM_HND enum_hnd;
-} SRV_Q_NET_FILE_ENUM;
-
-typedef struct {
- uint32 level;
- SRV_FILE_INFO_CTR ctr;
- uint32 total_entries;
- ENUM_HND enum_hnd;
- WERROR status;
-} SRV_R_NET_FILE_ENUM;
-
#endif /* _RPC_SRVSVC_H */
diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c
index b184848..9755254 100644
--- a/source/rpc_parse/parse_srv.c
+++ b/source/rpc_parse/parse_srv.c
@@ -698,292 +698,3 @@ bool srv_io_r_net_conn_enum(const char *desc, SRV_R_NET_CONN_ENUM *r_n, prs_str
return True;
}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-static bool srv_io_file_info3_str(const char *desc, FILE_INFO_3 *sh1, prs_struct *ps, int depth)
-{
- if (sh1 == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "srv_io_file_info3_str");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if ( sh1->path ) {
- if(!smb_io_unistr2("", sh1->path, True, ps, depth))
- return False;
- }
-
- if ( sh1->user ) {
- if(!smb_io_unistr2("", sh1->user, True, ps, depth))
- return False;
- }
-
- return True;
-}
-
-/*******************************************************************
- Inits a FILE_INFO_3 structure
-********************************************************************/
-
-void init_srv_file_info3( FILE_INFO_3 *fl3, uint32 id, uint32 perms, uint32 num_locks,
- const char *user_name, const char *path_name )
-{
- fl3->id = id;
- fl3->perms = perms;
- fl3->num_locks = num_locks;
-
- if ( path_name ) {
- if ( (fl3->path = TALLOC_P( talloc_tos(), UNISTR2 )) == NULL )
- return;
- init_unistr2(fl3->path, path_name, UNI_STR_TERMINATE);
- }
-
- if ( user_name ) {
- if ( (fl3->user = TALLOC_P( talloc_tos(), UNISTR2 )) == NULL )
- return;
- init_unistr2(fl3->user, user_name, UNI_STR_TERMINATE);
- }
-
- return;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-static bool srv_io_file_info3(const char *desc, FILE_INFO_3 *fl3, prs_struct *ps, int depth)
-{
- uint32 uni_p;
-
- if (fl3 == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "srv_io_file_info3");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint32("id ", ps, depth, &fl3->id))
- return False;
- if(!prs_uint32("perms ", ps, depth, &fl3->perms))
- return False;
- if(!prs_uint32("num_locks ", ps, depth, &fl3->num_locks))
- return False;
-
- uni_p = fl3->path ? 1 : 0;
- if(!prs_uint32("ptr", ps, depth, &uni_p))
- return False;
- if (UNMARSHALLING(ps)) {
- if ( (fl3->path = PRS_ALLOC_MEM( ps, UNISTR2, 1)) == NULL ) {
- return False;
- }
- }
-
- uni_p = fl3->user ? 1 : 0;
- if(!prs_uint32("ptr", ps, depth, &uni_p))
- return False;
- if (UNMARSHALLING(ps)) {
- if ( (fl3->user = PRS_ALLOC_MEM( ps, UNISTR2, 1)) == NULL ) {
- return False;
- }
- }
-
- return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-static bool srv_io_srv_file_ctr(const char *desc, SRV_FILE_INFO_CTR *ctr, prs_struct *ps, int depth)
-{
- if (ctr == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "srv_io_srv_file_ctr");
- depth++;
-
- if (UNMARSHALLING(ps)) {
- ZERO_STRUCTP(ctr);
- }
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint32("level", ps, depth, &ctr->level))
- return False;
-
- if(!prs_uint32("ptr_file_info", ps, depth, &ctr->ptr_file_info))
- return False;
- if(!prs_uint32("num_entries", ps, depth, &ctr->num_entries))
- return False;
- if(!prs_uint32("ptr_entries", ps, depth, &ctr->ptr_entries))
- return False;
-
- if (ctr->ptr_entries == 0)
- return True;
-
- if(!prs_uint32("num_entries2", ps, depth, &ctr->num_entries2))
- return False;
-
- switch (ctr->level) {
- case 3: {
- FILE_INFO_3 *info3 = ctr->file.info3;
- int num_entries = ctr->num_entries;
- int i;
-
- if (UNMARSHALLING(ps) && num_entries) {
- if (!(info3 = PRS_ALLOC_MEM(ps, FILE_INFO_3, num_entries)))
- return False;
- ctr->file.info3 = info3;
- }
-
- for (i = 0; i < num_entries; i++) {
- if(!srv_io_file_info3("", &ctr->file.info3[i], ps, depth))
- return False;
- }
-
- for (i = 0; i < num_entries; i++) {
- if(!srv_io_file_info3_str("", &ctr->file.info3[i], ps, depth))
- return False;
- }
- break;
- }
- default:
- DEBUG(5,("%s no file info at switch_value %d\n", tab_depth(5,depth), ctr->level));
- break;
- }
-
- return True;
-}
-
-/*******************************************************************
- Inits a SRV_Q_NET_FILE_ENUM structure.
-********************************************************************/
-
-void init_srv_q_net_file_enum(SRV_Q_NET_FILE_ENUM *q_n,
- const char *srv_name, const char *qual_name,
- const char *user_name,
- uint32 file_level, SRV_FILE_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd)
-{
- uint32 ptr;
-
- if ( srv_name ) {
- if ( (q_n->servername = TALLOC_P( talloc_tos(), UNISTR2 )) == NULL )
- return;
- init_buf_unistr2(q_n->servername, &ptr, srv_name);
- }
-
- if ( qual_name ) {
- if ( (q_n->qualifier = TALLOC_P( talloc_tos(), UNISTR2 )) == NULL )
- return;
- init_buf_unistr2(q_n->qualifier, &ptr, qual_name);
- }
-
- if ( user_name ) {
- if ( (q_n->username = TALLOC_P( talloc_tos(), UNISTR2 )) == NULL )
- return;
- init_buf_unistr2(q_n->username, &ptr, user_name);
- }
-
- q_n->level = q_n->ctr.level = file_level;
-
- q_n->preferred_len = preferred_len;
- q_n->ctr.ptr_file_info = 1;
- q_n->ctr.num_entries = 0;
- q_n->ctr.num_entries2 = 0;
-
- memcpy(&q_n->enum_hnd, hnd, sizeof(*hnd));
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_q_net_file_enum(const char *desc, SRV_Q_NET_FILE_ENUM *q_u, prs_struct *ps, int depth)
-{
- if (q_u == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "srv_io_q_net_file_enum");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_pointer("servername", ps, depth, (void*)&q_u->servername,
- sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
- return False;
- if(!prs_align(ps))
- return False;
-
- if(!prs_pointer("qualifier", ps, depth, (void*)&q_u->qualifier,
- sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
- return False;
- if(!prs_align(ps))
- return False;
-
- if(!prs_pointer("username", ps, depth, (void*)&q_u->username,
- sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
- return False;
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint32("level", ps, depth, &q_u->level))
- return False;
-
- if (q_u->level != (uint32)-1) {
- if(!srv_io_srv_file_ctr("file_ctr", &q_u->ctr, ps, depth))
- return False;
- }
-
- if(!prs_uint32("preferred_len", ps, depth, &q_u->preferred_len))
- return False;
-
- if(!smb_io_enum_hnd("enum_hnd", &q_u->enum_hnd, ps, depth))
- return False;
-
- return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_r_net_file_enum(const char *desc, SRV_R_NET_FILE_ENUM *r_n, prs_struct *ps, int depth)
-{
- if (r_n == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "srv_io_r_net_file_enum");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint32("level", ps, depth, &r_n->level))
- return False;
-
- if (r_n->level != 0) {
- if(!srv_io_srv_file_ctr("file_ctr", &r_n->ctr, ps, depth))
- return False;
- }
-
- if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
- return False;
- if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
- return False;
- if(!prs_werror("status", ps, depth, &r_n->status))
- return False;
-
- return True;
-}
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 56d3159..053f57e 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -34,8 +34,7 @@ extern const struct generic_mapping file_generic_mapping;
struct file_enum_count {
TALLOC_CTX *ctx;
const char *username;
- int count;
- FILE_INFO_3 *info;
+ struct srvsvc_NetFileCtr3 *ctr3;
};
struct sess_file_count {
@@ -52,8 +51,8 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
{
struct pipe_open_rec prec;
struct file_enum_count *fenum = (struct file_enum_count *)p;
- FILE_INFO_3 *f;
- int i = fenum->count;
+ struct srvsvc_NetFileInfo3 *f;
+ int i = fenum->ctr3->count;
char *fullpath = NULL;
const char *username;
@@ -78,21 +77,22 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
return 1;
}
- f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, FILE_INFO_3, i+1 );
+ f = TALLOC_REALLOC_ARRAY(fenum->ctx, fenum->ctr3->array,
+ struct srvsvc_NetFileInfo3, i+1);
if ( !f ) {
DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1));
return 1;
}
- fenum->info = f;
+ fenum->ctr3->array = f;
- init_srv_file_info3(
- &fenum->info[i],
- (uint32)((procid_to_pid(&prec.pid)<<16) & prec.pnum),
- (FILE_READ_DATA|FILE_WRITE_DATA),
- 0, username, fullpath);
+ init_srvsvc_NetFileInfo3(&fenum->ctr3->array[i],
+ (uint32_t)((procid_to_pid(&prec.pid)<<16) & prec.pnum),
+ (FILE_READ_DATA|FILE_WRITE_DATA),
+ 0,
+ fullpath,
+ username);
- TALLOC_FREE(fullpath);
- fenum->count++;
+ fenum->ctr3->count++;
return 0;
}
@@ -100,16 +100,16 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
/*******************************************************************
********************************************************************/
-static WERROR net_enum_pipes( TALLOC_CTX *ctx, const char *username,
- FILE_INFO_3 **info,
- uint32 *count, uint32 resume )
+static WERROR net_enum_pipes(TALLOC_CTX *ctx,
+ const char *username,
+ struct srvsvc_NetFileCtr3 **ctr3,
+ uint32_t resume )
{
struct file_enum_count fenum;
fenum.ctx = ctx;
fenum.username = username;
- fenum.count = *count;
- fenum.info = *info;
+ fenum.ctr3 = *ctr3;
if (connections_traverse(pipe_enum_fn, &fenum) == -1) {
DEBUG(0,("net_enum_pipes: traverse of connections.tdb "
@@ -117,8 +117,7 @@ static WERROR net_enum_pipes( TALLOC_CTX *ctx, const char *username,
return WERR_NOMEM;
}
- *info = fenum.info;
- *count = fenum.count;
+ *ctr3 = fenum.ctr3;
return WERR_OK;
}
@@ -133,8 +132,8 @@ static void enum_file_fn( const struct share_mode_entry *e,
struct file_enum_count *fenum =
(struct file_enum_count *)private_data;
- FILE_INFO_3 *f;
- int i = fenum->count;
+ struct srvsvc_NetFileInfo3 *f;
+ int i = fenum->ctr3->count;
files_struct fsp;
struct byte_range_lock *brl;
int num_locks = 0;
@@ -155,12 +154,13 @@ static void enum_file_fn( const struct share_mode_entry *e,
return;
}
- f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, FILE_INFO_3, i+1 );
+ f = TALLOC_REALLOC_ARRAY(fenum->ctx, fenum->ctr3->array,
+ struct srvsvc_NetFileInfo3, i+1);
if ( !f ) {
DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1));
return;
}
- fenum->info = f;
+ fenum->ctr3->array = f;
/* need to count the number of locks on a file */
@@ -186,36 +186,33 @@ static void enum_file_fn( const struct share_mode_entry *e,
/* mask out create (what ever that is) */
permissions = e->share_access & (FILE_READ_DATA|FILE_WRITE_DATA);
- /* now fill in the FILE_INFO_3 struct */
- init_srv_file_info3( &fenum->info[i],
- e->share_file_id,
- permissions,
- num_locks,
- username,
- fullpath );
-
- TALLOC_FREE(fullpath);
- fenum->count++;
+ /* now fill in the srvsvc_NetFileInfo3 struct */
+ init_srvsvc_NetFileInfo3(&fenum->ctr3->array[i],
+ e->share_file_id,
+ permissions,
+ num_locks,
+ username,
+ fullpath);
+ fenum->ctr3->count++;
}
/*******************************************************************
********************************************************************/
-static WERROR net_enum_files( TALLOC_CTX *ctx, const char *username,
- FILE_INFO_3 **info,
- uint32 *count, uint32 resume )
+static WERROR net_enum_files(TALLOC_CTX *ctx,
+ const char *username,
+ struct srvsvc_NetFileCtr3 **ctr3,
+ uint32_t resume)
{
struct file_enum_count f_enum_cnt;
f_enum_cnt.ctx = ctx;
f_enum_cnt.username = username;
--
Samba Shared Repository
More information about the samba-cvs
mailing list