summaryrefslogtreecommitdiffstats
path: root/librpc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-15 15:15:35 +0100
committerGünther Deschner <gd@samba.org>2014-02-13 11:54:14 +0100
commit6557b429ef9f330d66f42a02530d40db14bc3493 (patch)
treec2a5d7fc96feadda6d472ae8449732e079dd78e2 /librpc
parent3f40cde3ea21c54f3134e529914515059a2927b3 (diff)
downloadsamba-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.c32
-rw-r--r--librpc/rpc/rpc_common.h2
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);