diff options
author | Samuel Cabrero <scabrero@suse.de> | 2019-01-24 12:03:45 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-10-18 16:07:36 +0000 |
commit | 63b78894618a9badac595fbc59cea0f097feeded (patch) | |
tree | a5012f759be5839542dfbcd0bd91fd26de81175b /librpc | |
parent | ae9956a65e6913a73dfa68e2b5deebfeaf52c0e5 (diff) | |
download | samba-63b78894618a9badac595fbc59cea0f097feeded.tar.gz |
librpc: Move dcerpc_log_packet from s4 librpc to common librpc
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'librpc')
-rw-r--r-- | librpc/rpc/dcerpc_util.c | 36 | ||||
-rw-r--r-- | librpc/rpc/rpc_common.h | 5 |
2 files changed, 41 insertions, 0 deletions
diff --git a/librpc/rpc/dcerpc_util.c b/librpc/rpc/dcerpc_util.c index 3386d5e2f15..01dc2e7061d 100644 --- a/librpc/rpc/dcerpc_util.c +++ b/librpc/rpc/dcerpc_util.c @@ -1405,3 +1405,39 @@ NTSTATUS dcerpc_ncacn_push_auth(DATA_BLOB *blob, return NT_STATUS_OK; } + +/* + log a rpc packet in a format suitable for ndrdump. This is especially useful + for sealed packets, where ethereal cannot easily see the contents + + this triggers on a debug level of >= 10 +*/ +void dcerpc_log_packet(const char *lockdir, + const struct ndr_interface_table *ndr, + uint32_t opnum, uint32_t flags, + const DATA_BLOB *pkt) +{ + const int num_examples = 20; + int i; + + if (lockdir == NULL) return; + + for (i=0;i<num_examples;i++) { + char *name=NULL; + int ret; + ret = asprintf(&name, "%s/rpclog/%s-%u.%d.%s", + lockdir, ndr->name, opnum, i, + (flags&NDR_IN)?"in":"out"); + if (ret == -1) { + return; + } + if (!file_exist(name)) { + if (file_save(name, pkt->data, pkt->length)) { + DEBUG(10,("Logged rpc packet to %s\n", name)); + } + free(name); + break; + } + free(name); + } +} diff --git a/librpc/rpc/rpc_common.h b/librpc/rpc/rpc_common.h index 7cd6d16bf58..9812146d0ba 100644 --- a/librpc/rpc/rpc_common.h +++ b/librpc/rpc/rpc_common.h @@ -452,4 +452,9 @@ NTSTATUS dcerpc_ncacn_push_auth(DATA_BLOB *blob, struct ncacn_packet *pkt, struct dcerpc_auth *auth_info); +void dcerpc_log_packet(const char *lockdir, + const struct ndr_interface_table *ndr, + uint32_t opnum, uint32_t flags, + const DATA_BLOB *pkt); + #endif /* __DEFAULT_LIBRPC_RPCCOMMON_H__ */ |