diff options
-rw-r--r-- | librpc/idl/file_id.idl | 14 | ||||
-rw-r--r-- | librpc/idl/wscript_build | 2 | ||||
-rw-r--r-- | librpc/wscript_build | 5 | ||||
-rw-r--r-- | source3/Makefile.in | 2 | ||||
-rw-r--r-- | source3/include/locking.h | 9 | ||||
-rw-r--r-- | source3/include/proto.h | 3 | ||||
-rw-r--r-- | source3/librpc/idl/notify.idl | 2 | ||||
-rw-r--r-- | source3/librpc/ndr/util.c | 39 | ||||
-rw-r--r-- | source3/librpc/wscript_build | 2 |
9 files changed, 25 insertions, 53 deletions
diff --git a/librpc/idl/file_id.idl b/librpc/idl/file_id.idl new file mode 100644 index 0000000000..cd1febedf4 --- /dev/null +++ b/librpc/idl/file_id.idl @@ -0,0 +1,14 @@ +[ + pointer_default(unique) +] +interface file_id +{ + typedef [public] struct { + /* we don't use SMB_DEV_T and SMB_INO_T as we want a fixed size here, + and we may be using file system specific code to fill in something + other than a dev_t for the device */ + udlong devid; + udlong inode; + udlong extid; /* Support systems that use an extended id (e.g. snapshots). */ + } file_id; +} diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build index 2d65d748ee..7342228e20 100644 --- a/librpc/idl/wscript_build +++ b/librpc/idl/wscript_build @@ -3,7 +3,7 @@ bld.SAMBA_PIDL_LIST('PIDL', '''atsvc.idl drsuapi.idl epmapper.idl initshutdown.idl misc.idl ntlmssp.idl schannel.idl trkwks.idl - audiosrv.idl dfsblobs.idl dsbackup.idl eventlog.idl keysvc.idl + audiosrv.idl dfsblobs.idl dsbackup.idl eventlog.idl file_id.idl keysvc.idl msgsvc.idl ntsvcs.idl remact.idl security.idl unixinfo.idl wzcsvc.idl browser.idl dfs.idl dssetup.idl frsapi.idl krb5pac.idl named_pipe_auth.idl orpc.idl rot.idl spoolss.idl w32time.idl xattr.idl diff --git a/librpc/wscript_build b/librpc/wscript_build index 9cbd9fa37c..89d0980d85 100644 --- a/librpc/wscript_build +++ b/librpc/wscript_build @@ -286,6 +286,11 @@ bld.SAMBA_SUBSYSTEM('NDR_BACKUPKEY', public_deps='ndr' ) +bld.SAMBA_SUBSYSTEM('NDR_FILE_ID', + source='../librpc/gen_ndr/ndr_file_id.c', + public_deps='ndr' + ) + bld.SAMBA_SUBSYSTEM('RPC_NDR_XATTR', source='../librpc/gen_ndr/ndr_xattr_c.c', public_deps='NDR_XATTR dcerpc' diff --git a/source3/Makefile.in b/source3/Makefile.in index 0ce97b8ca3..5a4435badb 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -769,7 +769,7 @@ OPLOCK_OBJ = smbd/oplock.o smbd/oplock_irix.o smbd/oplock_linux.o \ smbd/oplock_onefs.o NOTIFY_OBJ = smbd/notify.o smbd/notify_inotify.o smbd/notify_internal.o \ - librpc/gen_ndr/ndr_notify.o + librpc/gen_ndr/ndr_notify.o librpc/gen_ndr/ndr_file_id.o FNAME_UTIL_OBJ = smbd/filename_util.o diff --git a/source3/include/locking.h b/source3/include/locking.h index 88104b0fef..5504da6dc3 100644 --- a/source3/include/locking.h +++ b/source3/include/locking.h @@ -43,14 +43,7 @@ struct lock_context { struct files_struct; -struct file_id { - /* we don't use SMB_DEV_T and SMB_INO_T as we want a fixed size here, - and we may be using file system specific code to fill in something - other than a dev_t for the device */ - uint64_t devid; - uint64_t inode; - uint64_t extid; /* Support systems that use an extended id (e.g. snapshots). */ -}; +#include "../librpc/gen_ndr/file_id.h" struct byte_range_lock { struct files_struct *fsp; diff --git a/source3/include/proto.h b/source3/include/proto.h index a3597cc2c8..29dbcc9763 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1584,9 +1584,6 @@ unsigned wins_srv_count_tag(const char *tag); enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r); enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r); void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r); -enum ndr_err_code ndr_push_file_id(struct ndr_push *ndr, int ndr_flags, const struct file_id *r); -enum ndr_err_code ndr_pull_file_id(struct ndr_pull *ndr, int ndr_flags, struct file_id *r); -void ndr_print_file_id(struct ndr_print *ndr, const char *name, const struct file_id *r); _PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss); const char *ndr_errstr(enum ndr_err_code err); extern const struct ndr_syntax_id null_ndr_syntax_id; diff --git a/source3/librpc/idl/notify.idl b/source3/librpc/idl/notify.idl index 040f661b33..e776d5d715 100644 --- a/source3/librpc/idl/notify.idl +++ b/source3/librpc/idl/notify.idl @@ -1,5 +1,7 @@ #include "idl_types.h" +import "file_id.idl"; + /* IDL structures for notify change code diff --git a/source3/librpc/ndr/util.c b/source3/librpc/ndr/util.c index 225d520ca6..ed24f87387 100644 --- a/source3/librpc/ndr/util.c +++ b/source3/librpc/ndr/util.c @@ -161,45 +161,6 @@ void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct s ndr->depth--; } -enum ndr_err_code ndr_push_file_id(struct ndr_push *ndr, int ndr_flags, const struct file_id *r) -{ - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_push_align(ndr, 4)); - NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, - (uint64_t)r->devid)); - NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, - (uint64_t)r->inode)); - NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, - (uint64_t)r->extid)); - } - if (ndr_flags & NDR_BUFFERS) { - } - return NDR_ERR_SUCCESS; -} - -enum ndr_err_code ndr_pull_file_id(struct ndr_pull *ndr, int ndr_flags, struct file_id *r) -{ - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_pull_align(ndr, 4)); - NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->devid)); - NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->inode)); - NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->extid)); - } - if (ndr_flags & NDR_BUFFERS) { - } - return NDR_ERR_SUCCESS; -} - -void ndr_print_file_id(struct ndr_print *ndr, const char *name, const struct file_id *r) -{ - ndr_print_struct(ndr, name, "file_id"); - ndr->depth++; - ndr_print_udlong(ndr, "devid", (uint64_t)r->devid); - ndr_print_udlong(ndr, "inode", (uint64_t)r->inode); - ndr_print_udlong(ndr, "extid", (uint64_t)r->extid); - ndr->depth--; -} - _PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss) { char addr[INET6_ADDRSTRLEN]; diff --git a/source3/librpc/wscript_build b/source3/librpc/wscript_build index 5b305075bd..adf7f70c49 100644 --- a/source3/librpc/wscript_build +++ b/source3/librpc/wscript_build @@ -17,7 +17,7 @@ bld.SAMBA_SUBSYSTEM('NDR_MESSAGING', bld.SAMBA_SUBSYSTEM('NDR_NOTIFY', source='gen_ndr/ndr_notify.c', - public_deps='ndr' + public_deps='ndr NDR_FILE_ID' ) bld.SAMBA_SUBSYSTEM('NDR_PREG', |