diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-15 15:15:35 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-13 11:54:14 +0100 |
commit | 6557b429ef9f330d66f42a02530d40db14bc3493 (patch) | |
tree | c2a5d7fc96feadda6d472ae8449732e079dd78e2 /librpc | |
parent | 3f40cde3ea21c54f3134e529914515059a2927b3 (diff) | |
download | samba-6557b429ef9f330d66f42a02530d40db14bc3493.tar.gz samba-6557b429ef9f330d66f42a02530d40db14bc3493.tar.xz samba-6557b429ef9f330d66f42a02530d40db14bc3493.zip |
librpc/rpc: add dcerpc_binding_get_string_option()
This allows get value string of a [key=value] option
of the dcerpc_binding.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Diffstat (limited to 'librpc')
-rw-r--r-- | librpc/rpc/binding.c | 32 | ||||
-rw-r--r-- | librpc/rpc/rpc_common.h | 2 |
2 files changed, 34 insertions, 0 deletions
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c index de319be4b46..277900c7355 100644 --- a/librpc/rpc/binding.c +++ b/librpc/rpc/binding.c @@ -425,6 +425,38 @@ _PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struc return NT_STATUS_OK; } +_PUBLIC_ const char *dcerpc_binding_get_string_option(const struct dcerpc_binding *b, + const char *name) +{ + size_t i; + + if (b->options == NULL) { + return NULL; + } + + for (i=0; b->options[i]; i++) { + const char *o = b->options[i]; + const char *vs = NULL; + size_t name_len = strlen(name); + int ret; + + ret = strncmp(name, o, name_len); + if (ret != 0) { + continue; + } + + if (o[name_len] != '=') { + continue; + } + + vs = &o[name_len + 1]; + + return vs; + } + + return NULL; +} + _PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(const struct epm_floor *epm_floor, struct ndr_syntax_id *syntax) { diff --git a/librpc/rpc/rpc_common.h b/librpc/rpc/rpc_common.h index 6d23cebc2c0..89312ce620f 100644 --- a/librpc/rpc/rpc_common.h +++ b/librpc/rpc/rpc_common.h @@ -136,6 +136,8 @@ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding **b_out); NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out); char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b); +const char *dcerpc_binding_get_string_option(const struct dcerpc_binding *b, + const char *name); NTSTATUS dcerpc_floor_get_lhs_data(const struct epm_floor *epm_floor, struct ndr_syntax_id *syntax); const char *derpc_transport_string_by_transport(enum dcerpc_transport_t t); enum dcerpc_transport_t dcerpc_transport_by_name(const char *name); |