Replace pipe names in pipes_struct by ndr_syntax_id
authorVolker Lendecke <vl@samba.org>
Sun, 1 Feb 2009 11:03:31 +0000 (12:03 +0100)
committerVolker Lendecke <vl@samba.org>
Sun, 1 Feb 2009 13:34:23 +0000 (14:34 +0100)
This was mainly used for debugging output

source3/include/ntdomain.h
source3/include/proto.h
source3/rpc_server/srv_lsa_hnd.c
source3/rpc_server/srv_pipe.c
source3/rpc_server/srv_pipe_hnd.c

index 3f501550da7543a37489c2dcc3e31005b0ac32d5..2d6a35839165fc07026763cf62ff194179869ee4 100644 (file)
@@ -214,8 +214,7 @@ typedef struct pipes_struct {
 
        struct auth_serversupplied_info *server_info;
 
-       fstring name;
-       fstring pipe_srv_name;
+       struct ndr_syntax_id syntax;
 
        /* linked list of rpc dispatch tables associated 
           with the open rpc contexts */
index 6a97d81a61094f8c6ff1dd122cd1b001153b040a..c97adaa1c0af0cbfe72d2fb16924de738fe28398 100644 (file)
@@ -6271,7 +6271,8 @@ NTSTATUS _eventlog_read_eventlog( pipes_struct * p,
 
 /* The following definitions come from rpc_server/srv_lsa_hnd.c  */
 
-bool init_pipe_handle_list(pipes_struct *p, const char *pipe_name);
+bool init_pipe_handle_list(pipes_struct *p,
+                          const struct ndr_syntax_id *syntax);
 bool create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void *data_ptr);
 bool find_policy_by_hnd(pipes_struct *p, POLICY_HND *hnd, void **data_p);
 bool close_policy_hnd(pipes_struct *p, POLICY_HND *hnd);
@@ -6294,7 +6295,7 @@ NTSTATUS rpc_srv_register(int version, const char *clnt,
                          const char *srv,
                          const struct ndr_interface_table *iface,
                          const struct api_struct *cmds, int size);
-bool is_known_pipename(const char *cli_filename);
+bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax);
 bool api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p);
 bool api_pipe_alter_context(pipes_struct *p, prs_struct *rpc_in_p);
 bool api_pipe_ntlmssp_auth_process(pipes_struct *p, prs_struct *rpc_in,
index 5f7c8d9f1a4eb6fd3f4388bb261e1d7a0300bb82..2779b8aa18b6a38735c2434ba05827a27424474f 100644 (file)
  pipe is open. JRA.
 ****************************************************************************/
 
-static bool is_samr_lsa_pipe(const char *pipe_name)
+static bool is_samr_lsa_pipe(const struct ndr_syntax_id *syntax)
 {
-       return (strstr(pipe_name, "samr") || strstr(pipe_name, "lsa"));
+       return (ndr_syntax_id_equal(syntax, &ndr_table_samr.syntax_id)
+               || ndr_syntax_id_equal(syntax, &ndr_table_lsarpc.syntax_id));
 }
 
 /****************************************************************************
@@ -44,7 +45,7 @@ static bool is_samr_lsa_pipe(const char *pipe_name)
  pipes of the same name.
 ****************************************************************************/
 
-bool init_pipe_handle_list(pipes_struct *p, const char *pipe_name)
+bool init_pipe_handle_list(pipes_struct *p, const struct ndr_syntax_id *syntax)
 {
        pipes_struct *plist;
        struct handle_list *hl;
@@ -52,11 +53,11 @@ bool init_pipe_handle_list(pipes_struct *p, const char *pipe_name)
        for (plist = get_first_internal_pipe();
             plist;
             plist = get_next_internal_pipe(plist)) {
-               if (strequal(plist->name, pipe_name)) {
+               if (ndr_syntax_id_equal(syntax, &plist->syntax)) {
                        break;
                }
-               if (is_samr_lsa_pipe(plist->name)
-                   && is_samr_lsa_pipe(pipe_name)) {
+               if (is_samr_lsa_pipe(&plist->syntax)
+                   && is_samr_lsa_pipe(syntax)) {
                        /*
                         * samr and lsa share a handle space (same process
                         * under Windows?)
@@ -80,7 +81,8 @@ bool init_pipe_handle_list(pipes_struct *p, const char *pipe_name)
                }
                ZERO_STRUCTP(hl);
 
-               DEBUG(10,("init_pipe_handles: created handle list for pipe %s\n", pipe_name ));
+               DEBUG(10,("init_pipe_handles: created handle list for "
+                         "pipe %s\n", get_pipe_name_from_iface(syntax)));
        }
 
        /*
@@ -96,7 +98,8 @@ bool init_pipe_handle_list(pipes_struct *p, const char *pipe_name)
        p->pipe_handles = hl;
 
        DEBUG(10,("init_pipe_handles: pipe_handles ref count = %lu for pipe %s\n",
-                 (unsigned long)p->pipe_handles->pipe_ref_count, pipe_name ));
+                 (unsigned long)p->pipe_handles->pipe_ref_count,
+                 get_pipe_name_from_iface(syntax)));
 
        return True;
 }
@@ -242,7 +245,8 @@ void close_policy_by_pipe(pipes_struct *p)
                p->pipe_handles->count = 0;
 
                SAFE_FREE(p->pipe_handles);
-               DEBUG(10,("close_policy_by_pipe: deleted handle list for pipe %s\n", p->name ));
+               DEBUG(10,("close_policy_by_pipe: deleted handle list for "
+                         "pipe %s\n", get_pipe_name_from_iface(&p->syntax)));
        }
 }
 
index 343342a06c175d0ce82a396757e9d221f4fd2eaa..cbe697817a2b856e5ee70815032b461478b55dd0 100644 (file)
@@ -610,7 +610,8 @@ static bool pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
        AUTH_NTLMSSP_STATE *a = p->auth.a_u.auth_ntlmssp_state;
        bool ret;
 
-       DEBUG(5,("pipe_ntlmssp_verify_final: pipe %s checking user details\n", p->name));
+       DEBUG(5,("pipe_ntlmssp_verify_final: pipe %s checking user details\n",
+                get_pipe_name_from_iface(&p->syntax)));
 
        ZERO_STRUCT(reply);
 
@@ -634,7 +635,7 @@ static bool pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
                if (!(a->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
                        DEBUG(0,("pipe_ntlmssp_verify_final: pipe %s : packet integrity requested "
                                "but client declined signing.\n",
-                                       p->name ));
+                               get_pipe_name_from_iface(&p->syntax)));
                        return False;
                }
        }
@@ -642,7 +643,7 @@ static bool pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
                if (!(a->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
                        DEBUG(0,("pipe_ntlmssp_verify_final: pipe %s : packet privacy requested "
                                "but client declined sealing.\n",
-                                       p->name ));
+                               get_pipe_name_from_iface(&p->syntax)));
                        return False;
                }
        }
@@ -962,14 +963,14 @@ bool check_bind_req(struct pipes_struct *p, RPC_IFACE* abstract,
        int i=0;
        struct pipe_rpc_fns *context_fns;
 
-       DEBUG(3,("check_bind_req for %s\n", p->name));
+       DEBUG(3,("check_bind_req for %s\n",
+                get_pipe_name_from_iface(&p->syntax)));
 
        /* we have to check all now since win2k introduced a new UUID on the lsaprpc pipe */
 
        for (i=0; i<rpc_lookup_size; i++) {
                DEBUGADD(10, ("checking %s\n", rpc_lookup[i].pipe.clnt));
-               if (strequal(rpc_lookup[i].pipe.clnt, p->name)
-                   && ndr_syntax_id_equal(
+               if (ndr_syntax_id_equal(
                            abstract, &rpc_lookup[i].rpc_interface)
                    && ndr_syntax_id_equal(
                            transfer, &ndr_transfer_syntax)) {
@@ -1056,7 +1057,7 @@ NTSTATUS rpc_srv_register(int version, const char *clnt, const char *srv,
  * @param[in] cli_filename     The pipe name requested by the client
  * @result                     Do we want to serve this?
  */
-bool is_known_pipename(const char *cli_filename)
+bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax)
 {
        const char *pipename = cli_filename;
        int i;
@@ -1076,6 +1077,7 @@ bool is_known_pipename(const char *cli_filename)
 
        for (i=0; i<rpc_lookup_size; i++) {
                if (strequal(pipename, rpc_lookup[i].pipe.clnt)) {
+                       *syntax = rpc_lookup[i].rpc_interface;
                        return true;
                }
        }
@@ -1530,7 +1532,8 @@ bool api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p)
 
        /* No rebinds on a bound pipe - use alter context. */
        if (p->pipe_bound) {
-               DEBUG(2,("api_pipe_bind_req: rejecting bind request on bound pipe %s.\n", p->pipe_srv_name));
+               DEBUG(2,("api_pipe_bind_req: rejecting bind request on bound "
+                        "pipe %s.\n", get_pipe_name_from_iface(&p->syntax)));
                return setup_bind_nak(p);
        }
 
@@ -1589,16 +1592,20 @@ bool api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p)
                                        &hdr_rb.rpc_context[0].abstract)) {
                        DEBUG(3, ("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
                                rpc_lookup[i].pipe.clnt, rpc_lookup[i].pipe.srv));
-                       fstrcpy(p->name, rpc_lookup[i].pipe.clnt);
-                       fstrcpy(p->pipe_srv_name, rpc_lookup[i].pipe.srv);
                        break;
                }
        }
 
        if (i == rpc_lookup_size) {
-               if (NT_STATUS_IS_ERR(smb_probe_module("rpc", p->name))) {
+               NTSTATUS status;
+
+               status = smb_probe_module(
+                       "rpc", get_pipe_name_from_iface(
+                               &hdr_rb.rpc_context[0].abstract));
+
+               if (NT_STATUS_IS_ERR(status)) {
                        DEBUG(3,("api_pipe_bind_req: Unknown pipe name %s in bind request.\n",
-                                p->name ));
+                                get_pipe_name_from_iface(&hdr_rb.rpc_context[0].abstract)));
                        prs_mem_free(&outgoing_rpc);
                        prs_mem_free(&out_hdr_ba);
                        prs_mem_free(&out_auth);
@@ -1607,23 +1614,26 @@ bool api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p)
                 }
 
                 for (i = 0; i < rpc_lookup_size; i++) {
-                       if (strequal(rpc_lookup[i].pipe.clnt, p->name)) {
+                       if (strequal(rpc_lookup[i].pipe.clnt,
+                                   get_pipe_name_from_iface(&p->syntax))) {
                                DEBUG(3, ("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
                                          rpc_lookup[i].pipe.clnt, rpc_lookup[i].pipe.srv));
-                               fstrcpy(p->pipe_srv_name, rpc_lookup[i].pipe.srv);
                                break;
                        }
                 }
 
                if (i == rpc_lookup_size) {
-                       DEBUG(0, ("module %s doesn't provide functions for pipe %s!\n", p->name, p->name));
+                       DEBUG(0, ("module %s doesn't provide functions for "
+                                 "pipe %s!\n",
+                                 get_pipe_name_from_iface(&p->syntax),
+                                 get_pipe_name_from_iface(&p->syntax)));
                        goto err_exit;
                }
        }
 
        /* name has to be \PIPE\xxxxx */
        fstrcpy(ack_pipe_name, "\\PIPE\\");
-       fstrcat(ack_pipe_name, p->pipe_srv_name);
+       fstrcat(ack_pipe_name, rpc_lookup[i].pipe.srv);
 
        DEBUG(5,("api_pipe_bind_req: make response. %d\n", __LINE__));
 
@@ -2233,7 +2243,7 @@ void free_pipe_rpc_context( PIPE_RPC_FNS *list )
        return; 
 }
 
-static bool api_rpcTNP(pipes_struct *p, const char *rpc_name, 
+static bool api_rpcTNP(pipes_struct *p,
                       const struct api_struct *api_rpc_cmds, int n_cmds);
 
 /****************************************************************************
@@ -2258,7 +2268,8 @@ bool api_pipe_request(pipes_struct *p)
                changed_user = True;
        }
 
-       DEBUG(5, ("Requested \\PIPE\\%s\n", p->name));
+       DEBUG(5, ("Requested \\PIPE\\%s\n",
+                 get_pipe_name_from_iface(&p->syntax)));
 
        /* get the set of RPC functions for this context */
 
@@ -2266,12 +2277,13 @@ bool api_pipe_request(pipes_struct *p)
 
        if ( pipe_fns ) {
                TALLOC_CTX *frame = talloc_stackframe();
-               ret = api_rpcTNP(p, p->name, pipe_fns->cmds, pipe_fns->n_cmds);
+               ret = api_rpcTNP(p, pipe_fns->cmds, pipe_fns->n_cmds);
                TALLOC_FREE(frame);
        }
        else {
                DEBUG(0,("api_pipe_request: No rpc function table associated with context [%d] on pipe [%s]\n",
-                       p->hdr_req.context_id, p->name));
+                       p->hdr_req.context_id,
+                       get_pipe_name_from_iface(&p->syntax)));
        }
 
        if (changed_user) {
@@ -2285,18 +2297,22 @@ bool api_pipe_request(pipes_struct *p)
  Calls the underlying RPC function for a named pipe.
  ********************************************************************/
 
-static bool api_rpcTNP(pipes_struct *p, const char *rpc_name, 
+static bool api_rpcTNP(pipes_struct *p,
                       const struct api_struct *api_rpc_cmds, int n_cmds)
 {
        int fn_num;
-       fstring name;
        uint32 offset1, offset2;
 
        /* interpret the command */
-       DEBUG(4,("api_rpcTNP: %s op 0x%x - ", rpc_name, p->hdr_req.opnum));
+       DEBUG(4,("api_rpcTNP: %s op 0x%x - ",
+                get_pipe_name_from_iface(&p->syntax), p->hdr_req.opnum));
 
-       slprintf(name, sizeof(name)-1, "in_%s", rpc_name);
-       prs_dump(name, p->hdr_req.opnum, &p->in_data.data);
+       if (DEBUGLEVEL >= 50) {
+               fstring name;
+               slprintf(name, sizeof(name)-1, "in_%s",
+                        get_pipe_name_from_iface(&p->syntax));
+               prs_dump(name, p->hdr_req.opnum, &p->in_data.data);
+       }
 
        for (fn_num = 0; fn_num < n_cmds; fn_num++) {
                if (api_rpc_cmds[fn_num].opnum == p->hdr_req.opnum && api_rpc_cmds[fn_num].fn != NULL) {
@@ -2322,7 +2338,9 @@ static bool api_rpcTNP(pipes_struct *p, const char *rpc_name,
                 fn_num, api_rpc_cmds[fn_num].fn));
        /* do the actual command */
        if(!api_rpc_cmds[fn_num].fn(p)) {
-               DEBUG(0,("api_rpcTNP: %s: %s failed.\n", rpc_name, api_rpc_cmds[fn_num].name));
+               DEBUG(0,("api_rpcTNP: %s: %s failed.\n",
+                        get_pipe_name_from_iface(&p->syntax),
+                        api_rpc_cmds[fn_num].name));
                prs_mem_free(&p->out_data.rdata);
                return False;
        }
@@ -2341,13 +2359,18 @@ static bool api_rpcTNP(pipes_struct *p, const char *rpc_name,
                return True;
        }
 
-       slprintf(name, sizeof(name)-1, "out_%s", rpc_name);
        offset2 = prs_offset(&p->out_data.rdata);
        prs_set_offset(&p->out_data.rdata, offset1);
-       prs_dump(name, p->hdr_req.opnum, &p->out_data.rdata);
+       if (DEBUGLEVEL >= 50) {
+               fstring name;
+               slprintf(name, sizeof(name)-1, "out_%s",
+                        get_pipe_name_from_iface(&p->syntax));
+               prs_dump(name, p->hdr_req.opnum, &p->out_data.rdata);
+       }
        prs_set_offset(&p->out_data.rdata, offset2);
 
-       DEBUG(5,("api_rpcTNP: called %s successfully\n", rpc_name));
+       DEBUG(5,("api_rpcTNP: called %s successfully\n",
+                get_pipe_name_from_iface(&p->syntax)));
 
        /* Check for buffer underflow in rpc parsing */
 
index 90fa49f4512134cf3c88033512f46d9111cfb1cf..a20a98564b7b3a153f08eb3ac768cd65660659b6 100644 (file)
@@ -90,13 +90,14 @@ static bool pipe_init_outgoing_data(pipes_struct *p)
 ****************************************************************************/
 
 static struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
-                                                    const char *pipe_name,
+                                                    const struct ndr_syntax_id *syntax,
                                                     const char *client_address,
                                                     struct auth_serversupplied_info *server_info)
 {
        pipes_struct *p;
 
-       DEBUG(4,("Create pipe requested %s\n", pipe_name));
+       DEBUG(4,("Create pipe requested %s\n",
+                get_pipe_name_from_iface(syntax)));
 
        p = TALLOC_ZERO_P(mem_ctx, struct pipes_struct);
 
@@ -105,13 +106,15 @@ static struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
                return NULL;
        }
 
-       if ((p->mem_ctx = talloc_init("pipe %s %p", pipe_name, p)) == NULL) {
+       if ((p->mem_ctx = talloc_init("pipe %s %p",
+                                     get_pipe_name_from_iface(syntax),
+                                     p)) == NULL) {
                DEBUG(0,("open_rpc_pipe_p: talloc_init failed.\n"));
                TALLOC_FREE(p);
                return NULL;
        }
 
-       if (!init_pipe_handle_list(p, pipe_name)) {
+       if (!init_pipe_handle_list(p, syntax)) {
                DEBUG(0,("open_rpc_pipe_p: init_pipe_handles failed.\n"));
                talloc_destroy(p->mem_ctx);
                TALLOC_FREE(p);
@@ -152,11 +155,11 @@ static struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
         * Initialize the outgoing RPC data buffer with no memory.
         */     
        prs_init_empty(&p->out_data.rdata, p->mem_ctx, MARSHALL);
-       
-       fstrcpy(p->name, pipe_name);
-       
+
+       p->syntax = *syntax;
+
        DEBUG(4,("Created internal pipe %s (pipes_open=%d)\n",
-                pipe_name, pipes_open));
+                get_pipe_name_from_iface(syntax), pipes_open));
 
        talloc_set_destructor(p, close_internal_rpc_pipe_hnd);
 
@@ -174,7 +177,7 @@ static void set_incoming_fault(pipes_struct *p)
        p->in_data.pdu_received_len = 0;
        p->fault_state = True;
        DEBUG(10, ("set_incoming_fault: Setting fault state on pipe %s\n",
-                  p->name));
+                  get_pipe_name_from_iface(&p->syntax)));
 }
 
 /****************************************************************************
@@ -324,7 +327,8 @@ static void free_pipe_context(pipes_struct *p)
                         "%lu\n", (unsigned long)talloc_total_size(p->mem_ctx) ));
                talloc_free_children(p->mem_ctx);
        } else {
-               p->mem_ctx = talloc_init("pipe %s %p", p->name, p);
+               p->mem_ctx = talloc_init(
+                       "pipe %s %p", get_pipe_name_from_iface(&p->syntax), p);
                if (p->mem_ctx == NULL) {
                        p->fault_state = True;
                }
@@ -492,7 +496,7 @@ static void process_complete_pdu(pipes_struct *p)
 
        if(p->fault_state) {
                DEBUG(10,("process_complete_pdu: pipe %s in fault state.\n",
-                       p->name ));
+                        get_pipe_name_from_iface(&p->syntax)));
                set_incoming_fault(p);
                setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR));
                return;
@@ -520,12 +524,13 @@ static void process_complete_pdu(pipes_struct *p)
 
                case RPC_PING: /* CL request - ignore... */
                        DEBUG(0,("process_complete_pdu: Error. Connectionless packet type %u received on pipe %s.\n",
-                               (unsigned int)p->hdr.pkt_type, p->name));
+                               (unsigned int)p->hdr.pkt_type,
+                               get_pipe_name_from_iface(&p->syntax)));
                        break;
 
                case RPC_RESPONSE: /* No responses here. */
                        DEBUG(0,("process_complete_pdu: Error. RPC_RESPONSE received from client on pipe %s.\n",
-                               p->name ));
+                               get_pipe_name_from_iface(&p->syntax)));
                        break;
 
                case RPC_FAULT:
@@ -537,7 +542,8 @@ static void process_complete_pdu(pipes_struct *p)
                case RPC_FACK:
                case RPC_CANCEL_ACK:
                        DEBUG(0,("process_complete_pdu: Error. Connectionless packet type %u received on pipe %s.\n",
-                               (unsigned int)p->hdr.pkt_type, p->name));
+                               (unsigned int)p->hdr.pkt_type,
+                               get_pipe_name_from_iface(&p->syntax)));
                        break;
 
                case RPC_BIND:
@@ -552,7 +558,8 @@ static void process_complete_pdu(pipes_struct *p)
                case RPC_BINDACK:
                case RPC_BINDNACK:
                        DEBUG(0,("process_complete_pdu: Error. RPC_BINDACK/RPC_BINDNACK packet type %u received on pipe %s.\n",
-                               (unsigned int)p->hdr.pkt_type, p->name));
+                               (unsigned int)p->hdr.pkt_type,
+                               get_pipe_name_from_iface(&p->syntax)));
                        break;
 
 
@@ -567,7 +574,7 @@ static void process_complete_pdu(pipes_struct *p)
 
                case RPC_ALTCONTRESP:
                        DEBUG(0,("process_complete_pdu: Error. RPC_ALTCONTRESP on pipe %s: Should only be server -> client.\n",
-                               p->name));
+                               get_pipe_name_from_iface(&p->syntax)));
                        break;
 
                case RPC_AUTH3:
@@ -581,7 +588,7 @@ static void process_complete_pdu(pipes_struct *p)
 
                case RPC_SHUTDOWN:
                        DEBUG(0,("process_complete_pdu: Error. RPC_SHUTDOWN on pipe %s: Should only be server -> client.\n",
-                               p->name));
+                               get_pipe_name_from_iface(&p->syntax)));
                        break;
 
                case RPC_CO_CANCEL:
@@ -619,7 +626,8 @@ static void process_complete_pdu(pipes_struct *p)
        prs_set_endian_data( &p->in_data.data, RPC_LITTLE_ENDIAN);
 
        if (!reply) {
-               DEBUG(3,("process_complete_pdu: DCE/RPC fault sent on pipe %s\n", p->pipe_srv_name));
+               DEBUG(3,("process_complete_pdu: DCE/RPC fault sent on "
+                        "pipe %s\n", get_pipe_name_from_iface(&p->syntax)));
                set_incoming_fault(p);
                setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR));
                prs_mem_free(&rpc_in);
@@ -773,7 +781,8 @@ static ssize_t read_from_internal_pipe(struct pipes_struct *p, char *data, size_
                return -1;              
        }
 
-       DEBUG(6,(" name: %s len: %u\n", p->name, (unsigned int)n));
+       DEBUG(6,(" name: %s len: %u\n", get_pipe_name_from_iface(&p->syntax),
+                (unsigned int)n));
 
        /*
         * We cannot return more than one PDU length per
@@ -787,8 +796,10 @@ static ssize_t read_from_internal_pipe(struct pipes_struct *p, char *data, size_
         */
 
        if(n > RPC_MAX_PDU_FRAG_LEN) {
-                DEBUG(5,("read_from_pipe: too large read (%u) requested on \
-pipe %s. We can only service %d sized reads.\n", (unsigned int)n, p->name, RPC_MAX_PDU_FRAG_LEN ));
+                DEBUG(5,("read_from_pipe: too large read (%u) requested on "
+                        "pipe %s. We can only service %d sized reads.\n",
+                        (unsigned int)n, get_pipe_name_from_iface(&p->syntax),
+                        RPC_MAX_PDU_FRAG_LEN ));
                n = RPC_MAX_PDU_FRAG_LEN;
        }
 
@@ -803,9 +814,12 @@ pipe %s. We can only service %d sized reads.\n", (unsigned int)n, p->name, RPC_M
        if((pdu_remaining = p->out_data.current_pdu_len - p->out_data.current_pdu_sent) > 0) {
                data_returned = (ssize_t)MIN(n, pdu_remaining);
 
-               DEBUG(10,("read_from_pipe: %s: current_pdu_len = %u, current_pdu_sent = %u \
-returning %d bytes.\n", p->name, (unsigned int)p->out_data.current_pdu_len, 
-                       (unsigned int)p->out_data.current_pdu_sent, (int)data_returned));
+               DEBUG(10,("read_from_pipe: %s: current_pdu_len = %u, "
+                         "current_pdu_sent = %u returning %d bytes.\n",
+                         get_pipe_name_from_iface(&p->syntax),
+                         (unsigned int)p->out_data.current_pdu_len,
+                         (unsigned int)p->out_data.current_pdu_sent,
+                         (int)data_returned));
 
                memcpy( data, &p->out_data.current_pdu[p->out_data.current_pdu_sent], (size_t)data_returned);
                p->out_data.current_pdu_sent += (uint32)data_returned;
@@ -817,9 +831,11 @@ returning %d bytes.\n", p->name, (unsigned int)p->out_data.current_pdu_len,
         * may of course be zero if this is the first return fragment.
         */
 
-       DEBUG(10,("read_from_pipe: %s: fault_state = %d : data_sent_length \
-= %u, prs_offset(&p->out_data.rdata) = %u.\n",
-               p->name, (int)p->fault_state, (unsigned int)p->out_data.data_sent_length, (unsigned int)prs_offset(&p->out_data.rdata) ));
+       DEBUG(10,("read_from_pipe: %s: fault_state = %d : data_sent_length "
+                 "= %u, prs_offset(&p->out_data.rdata) = %u.\n",
+                 get_pipe_name_from_iface(&p->syntax), (int)p->fault_state,
+                 (unsigned int)p->out_data.data_sent_length,
+                 (unsigned int)prs_offset(&p->out_data.rdata) ));
 
        if(p->out_data.data_sent_length >= prs_offset(&p->out_data.rdata)) {
                /*
@@ -837,7 +853,8 @@ returning %d bytes.\n", p->name, (unsigned int)p->out_data.current_pdu_len,
         */
 
        if(!create_next_pdu(p)) {
-               DEBUG(0,("read_from_pipe: %s: create_next_pdu failed.\n", p->name));
+               DEBUG(0,("read_from_pipe: %s: create_next_pdu failed.\n",
+                        get_pipe_name_from_iface(&p->syntax)));
                return -1;
        }
 
@@ -1086,13 +1103,14 @@ NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name,
                handle->private_data = p;
        } else {
                struct pipes_struct *p;
+               struct ndr_syntax_id syntax;
 
-               if (!is_known_pipename(name)) {
+               if (!is_known_pipename(name, &syntax)) {
                        TALLOC_FREE(handle);
                        return NT_STATUS_OBJECT_NAME_NOT_FOUND;
                }
 
-               p = make_internal_rpc_pipe_p(handle, name, client_address,
+               p = make_internal_rpc_pipe_p(handle, &syntax, client_address,
                                             server_info);
 
                handle->type = FAKE_FILE_TYPE_NAMED_PIPE;