return (void *)vp;
}
+_PUBLIC_ NTSTATUS _dcerpc_binding_set_pointer_option(struct dcerpc_binding *b,
+ const char *name,
+ const char *type,
+ const void *vp)
+{
+ char tsbuf[256];
+ char vsbuf[20];
+ const char *vs = NULL;
+
+ if (strlen(name) > 100) {
+ return NT_STATUS_INVALID_PARAMETER_MIX;
+ }
+
+ if (strlen(type) > 100) {
+ return NT_STATUS_INVALID_PARAMETER_MIX;
+ }
+
+ snprintf(tsbuf, sizeof(tsbuf), "%s:pointer:%d:%s", name, getpid(), type);
+
+ if (vp != NULL) {
+ snprintf(vsbuf, sizeof(vsbuf), "%p", vp);
+ vs = vsbuf;
+ }
+
+ return dcerpc_binding_set_string_option(b, tsbuf, vs);
+}
+
_PUBLIC_ uint32_t dcerpc_binding_get_flags(const struct dcerpc_binding *b)
{
return b->flags;
const char *type);
#define dcerpc_binding_get_pointer_option(b, name, type) \
talloc_get_type(_dcerpc_binding_get_pointer_option(b, name, #type), type)
+NTSTATUS _dcerpc_binding_set_pointer_option(struct dcerpc_binding *b,
+ const char *name,
+ const char *type,
+ const void *vp);
+#define dcerpc_binding_set_pointer_option(b, name, type, vp) \
+ _dcerpc_binding_set_pointer_option(b, name, #type, vp)
uint32_t dcerpc_binding_get_flags(const struct dcerpc_binding *b);
NTSTATUS dcerpc_binding_set_flags(struct dcerpc_binding *b,
uint32_t additional,