]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
rpc_parse: Use UUIDs from librpc/gen_ndr/ when possible to reduce
authorJelmer Vernooij <jelmer@samba.org>
Thu, 17 Apr 2008 15:44:40 +0000 (17:44 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Thu, 17 Apr 2008 15:54:32 +0000 (17:54 +0200)
duplication.

source/include/rpc_dce.h
source/rpc_client/cli_pipe.c
source/rpc_parse/parse_rpc.c
source/rpc_server/srv_pipe.c

index 2793421734cd7fecfc9c71850a1d808bc8f2df51..9b2044fa20289a5b7cf1a2cfce0190964cc8fca8 100644 (file)
@@ -165,10 +165,10 @@ struct pipe_id_info {
        /* the names appear not to matter: the syntaxes _do_ matter */
 
        const char *client_pipe;
-       RPC_IFACE abstr_syntax; /* this one is the abstract syntax id */
+       const RPC_IFACE *abstr_syntax; /* this one is the abstract syntax id */
 
        const char *server_pipe;  /* this one is the secondary syntax name */
-       RPC_IFACE trans_syntax; /* this one is the primary syntax id */
+       const RPC_IFACE *trans_syntax; /* this one is the primary syntax id */
 };
 
 /* RPC_HDR - dce rpc header */
index ba59a41793b971c3d6bcac69ef61f216970b3691..2a2b547b5e5ca44ba99ecb316799bc41c781f608 100644 (file)
@@ -1656,8 +1656,8 @@ static bool valid_pipe_name(const int pipe_idx, RPC_IFACE *abstract, RPC_IFACE *
 
        /* copy the required syntaxes out so we can do the right bind */
        
-       *transfer = pipe_names[pipe_idx].trans_syntax;
-       *abstract = pipe_names[pipe_idx].abstr_syntax;
+       *transfer = *pipe_names[pipe_idx].trans_syntax;
+       *abstract = *pipe_names[pipe_idx].abstr_syntax;
 
        return True;
 }
index 7de6998c9db45fdcdee5ed689b37695e58ae1df8..6b6e1424e0affb2d6be8f1756b7b828832bb5ddb 100644 (file)
 interface/version dce/rpc pipe identification
 ********************************************************************/
 
-#define TRANS_SYNT_V2                       \
-{                                           \
-       {                                   \
-               0x8a885d04, 0x1ceb, 0x11c9, \
-               { 0x9f, 0xe8 },             \
-               { 0x08, 0x00,               \
-                         0x2b, 0x10, 0x48, 0x60 }  \
-       }, 0x02                             \
-}
-
-#define SYNT_NETLOGON_V2                    \
-{                                           \
-       {                                   \
-               0x8a885d04, 0x1ceb, 0x11c9, \
-               { 0x9f, 0xe8 },             \
-               { 0x08, 0x00,               \
-                 0x2b, 0x10, 0x48, 0x60 }  \
-       }, 0x02                             \
-}
-
-#define SYNT_WKSSVC_V1                      \
-{                                           \
-       {                                   \
-               0x6bffd098, 0xa112, 0x3610, \
-               { 0x98, 0x33 },             \
-               { 0x46, 0xc3,               \
-                 0xf8, 0x7e, 0x34, 0x5a }  \
-       }, 0x01                             \
-}
-
-#define SYNT_SRVSVC_V3                      \
-{                                           \
-       {                                   \
-               0x4b324fc8, 0x1670, 0x01d3, \
-               { 0x12, 0x78 },             \
-               { 0x5a, 0x47,               \
-                 0xbf, 0x6e, 0xe1, 0x88 }  \
-       }, 0x03                             \
-}
-
-#define SYNT_LSARPC_V0                      \
-{                                           \
-       {                                   \
-               0x12345778, 0x1234, 0xabcd, \
-               { 0xef, 0x00 },             \
-               { 0x01, 0x23,               \
-                 0x45, 0x67, 0x89, 0xab }  \
-       }, 0x00                             \
-}
-
-#define SYNT_LSARPC_V0_DS                \
-{                                           \
-       {                                   \
-               0x3919286a, 0xb10c, 0x11d0, \
-               { 0x9b, 0xa8 },             \
-               { 0x00, 0xc0,               \
-                 0x4f, 0xd9, 0x2e, 0xf5 }  \
-       }, 0x00                             \
-}
-
-#define SYNT_SAMR_V1                        \
-{                                           \
-       {                                   \
-               0x12345778, 0x1234, 0xabcd, \
-               { 0xef, 0x00 },             \
-               { 0x01, 0x23,               \
-                 0x45, 0x67, 0x89, 0xac }  \
-       }, 0x01                             \
-}
-
-#define SYNT_NETLOGON_V1                    \
-{                                           \
-       {                                   \
-               0x12345678, 0x1234, 0xabcd, \
-               { 0xef, 0x00 },             \
-               { 0x01, 0x23,               \
-                 0x45, 0x67, 0xcf, 0xfb }  \
-       }, 0x01                             \
-}
-
-#define SYNT_WINREG_V1                      \
-{                                           \
-       {                                   \
-               0x338cd001, 0x2244, 0x31f1, \
-               { 0xaa, 0xaa },             \
-               { 0x90, 0x00,               \
-                 0x38, 0x00, 0x10, 0x03 }  \
-       }, 0x01                             \
-}
-
-#define SYNT_SPOOLSS_V1                     \
-{                                           \
-       {                                   \
-               0x12345678, 0x1234, 0xabcd, \
-               { 0xef, 0x00 },             \
-               { 0x01, 0x23,               \
-                 0x45, 0x67, 0x89, 0xab }  \
-       }, 0x01                             \
-}
-
-#define SYNT_NONE_V0                        \
-{                                           \
-       {                                   \
-               0x0, 0x0, 0x0,              \
-               { 0x00, 0x00 },             \
-               { 0x00, 0x00,               \
-                 0x00, 0x00, 0x00, 0x00 }  \
-       }, 0x00                             \
-}
-
-#define SYNT_NETDFS_V3                      \
-{                                           \
-        {                                   \
-                0x4fc742e0, 0x4a10, 0x11cf, \
-                { 0x82, 0x73 },             \
-               { 0x00, 0xaa,               \
-                  0x00, 0x4a, 0xe6, 0x73 }  \
-        }, 0x03                             \
-}
-
-#define SYNT_ECHO_V1                        \
-{                                           \
-        {                                   \
-                0x60a15ec5, 0x4de8, 0x11d7, \
-                { 0xa6, 0x37 },             \
-               { 0x00, 0x50,               \
-                  0x56, 0xa2, 0x01, 0x82 }  \
-        }, 0x01                             \
-}
-
-#define SYNT_SHUTDOWN_V1                    \
-{                                           \
-        {                                   \
-                0x894de0c0, 0x0d55, 0x11d3, \
-                { 0xa3, 0x22 },             \
-               { 0x00, 0xc0,               \
-                  0x4f, 0xa3, 0x21, 0xa1 }  \
-        }, 0x01                             \
-}
-
-#define SYNT_SVCCTL_V2                      \
-{                                           \
-       {                                   \
-               0x367abb81, 0x9844, 0x35f1, \
-                { 0xad, 0x32 },             \
-                { 0x98, 0xf0,               \
-                  0x38, 0x00, 0x10, 0x03 }  \
-       }, 0x02                             \
-}
-
-
-#define SYNT_EVENTLOG_V0                   \
-{                                          \
-       {                                   \
-               0x82273fdc, 0xe32a, 0x18c3, \
-               { 0x3f, 0x78 },             \
-               { 0x82, 0x79,               \
-                 0x29, 0xdc, 0x23, 0xea }  \
-       }, 0x00                             \
-}
-
-#define SYNT_NTSVCS_V1                      \
-{                                           \
-       {                                   \
-               0x8d9f4e40, 0xa03d, 0x11ce, \
-               { 0x8f, 0x69},              \
-                { 0x08, 0x00,               \
-                  0x3e, 0x30, 0x05, 0x1b }  \
-       }, 0x01                             \
-}
+const struct ndr_syntax_id syntax_spoolss = {
+       {
+               0x12345678, 0x1234, 0xabcd,
+               { 0xef, 0x00 },
+               { 0x01, 0x23,
+                 0x45, 0x67, 0x89, 0xab }
+       }, 0x01
+};
 
 /*
  * IMPORTANT!!  If you update this structure, make sure to
@@ -207,22 +45,21 @@ interface/version dce/rpc pipe identification
 
 const struct pipe_id_info pipe_names [] =
 {
-       /* client pipe , abstract syntax       , server pipe   , transfer syntax */
-       { PIPE_LSARPC  , SYNT_LSARPC_V0        , PIPE_LSASS    , TRANS_SYNT_V2 },
-       { PIPE_LSARPC  , SYNT_LSARPC_V0_DS     , PIPE_LSASS    , TRANS_SYNT_V2 },
-       { PIPE_SAMR    , SYNT_SAMR_V1          , PIPE_LSASS    , TRANS_SYNT_V2 },
-       { PIPE_NETLOGON, SYNT_NETLOGON_V1      , PIPE_LSASS    , TRANS_SYNT_V2 },
-       { PIPE_SRVSVC  , SYNT_SRVSVC_V3        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
-       { PIPE_WKSSVC  , SYNT_WKSSVC_V1        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
-       { PIPE_WINREG  , SYNT_WINREG_V1        , PIPE_WINREG   , TRANS_SYNT_V2 },
-       { PIPE_SPOOLSS , SYNT_SPOOLSS_V1       , PIPE_SPOOLSS  , TRANS_SYNT_V2 },
-       { PIPE_NETDFS  , SYNT_NETDFS_V3        , PIPE_NETDFS   , TRANS_SYNT_V2 },
-       { PIPE_ECHO    , SYNT_ECHO_V1          , PIPE_ECHO     , TRANS_SYNT_V2 },
-       { PIPE_SHUTDOWN, SYNT_SHUTDOWN_V1      , PIPE_SHUTDOWN , TRANS_SYNT_V2 },
-       { PIPE_SVCCTL  , SYNT_SVCCTL_V2        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
-       { PIPE_EVENTLOG, SYNT_EVENTLOG_V0      , PIPE_EVENTLOG , TRANS_SYNT_V2 },
-       { PIPE_NTSVCS  , SYNT_NTSVCS_V1        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
-       { NULL         , SYNT_NONE_V0          , NULL          , SYNT_NONE_V0  }
+       { PIPE_LSARPC  , &ndr_table_lsarpc.syntax_id, PIPE_LSASS    , &ndr_transfer_syntax },
+       { PIPE_LSARPC  , &ndr_table_dssetup.syntax_id, PIPE_LSASS    , &ndr_transfer_syntax },
+       { PIPE_SAMR    , &ndr_table_samr.syntax_id, PIPE_LSASS    , &ndr_transfer_syntax },
+       { PIPE_NETLOGON, &ndr_table_netlogon.syntax_id, PIPE_LSASS    , &ndr_transfer_syntax },
+       { PIPE_SRVSVC  , &ndr_table_srvsvc.syntax_id, PIPE_NTSVCS   , &ndr_transfer_syntax },
+       { PIPE_WKSSVC  , &ndr_table_wkssvc.syntax_id, PIPE_NTSVCS   , &ndr_transfer_syntax },
+       { PIPE_WINREG  , &ndr_table_winreg.syntax_id, PIPE_WINREG   , &ndr_transfer_syntax },
+       { PIPE_SPOOLSS , &syntax_spoolss        , PIPE_SPOOLSS  , &ndr_transfer_syntax },
+       { PIPE_NETDFS  , &ndr_table_netdfs.syntax_id, PIPE_NETDFS   , &ndr_transfer_syntax },
+       { PIPE_ECHO    , &ndr_table_rpcecho.syntax_id, PIPE_ECHO     , &ndr_transfer_syntax },
+       { PIPE_SHUTDOWN, &ndr_table_initshutdown.syntax_id, PIPE_SHUTDOWN , &ndr_transfer_syntax },
+       { PIPE_SVCCTL  , &ndr_table_svcctl.syntax_id, PIPE_NTSVCS   , &ndr_transfer_syntax },
+       { PIPE_EVENTLOG, &ndr_table_eventlog.syntax_id, PIPE_EVENTLOG , &ndr_transfer_syntax },
+       { PIPE_NTSVCS  , &ndr_table_ntsvcs.syntax_id, PIPE_NTSVCS   , &ndr_transfer_syntax },
+       { NULL         , NULL                  , NULL          , NULL }
 };
 
 /****************************************************************************
@@ -241,8 +78,8 @@ int cli_get_pipe_idx(const RPC_IFACE *syntax)
 {
        int i;
        for (i = 0; pipe_names[i].client_pipe; i++) {
-               if (GUID_equal(&pipe_names[i].abstr_syntax.uuid, &syntax->uuid) &&
-                   pipe_names[i].abstr_syntax.if_version == syntax->if_version)
+               if (GUID_equal(&pipe_names[i].abstr_syntax->uuid, &syntax->uuid) &&
+                   pipe_names[i].abstr_syntax->if_version == syntax->if_version)
                        return i;
        }
 
index 3fe9c7f2ec27a8cc57185d123c63d358bfbdcf13..52e4fdfd5ba6c871eccf8be6e67ea326ec050fd0 100644 (file)
@@ -986,10 +986,10 @@ bool check_bind_req(struct pipes_struct *p, RPC_IFACE* abstract,
        for ( i=0; pipe_names[i].client_pipe; i++ ) {
                DEBUGADD(10,("checking %s\n", pipe_names[i].client_pipe));
                if ( strequal(pipe_names[i].client_pipe, pname)
-                       && (abstract->if_version == pipe_names[i].abstr_syntax.if_version) 
-                       && (memcmp(&abstract->uuid, &pipe_names[i].abstr_syntax.uuid, sizeof(struct GUID)) == 0)
-                       && (transfer->if_version == pipe_names[i].trans_syntax.if_version)
-                       && (memcmp(&transfer->uuid, &pipe_names[i].trans_syntax.uuid, sizeof(struct GUID)) == 0) ) {
+                       && (abstract->if_version == pipe_names[i].abstr_syntax->if_version) 
+                       && (memcmp(&abstract->uuid, &pipe_names[i].abstr_syntax->uuid, sizeof(struct GUID)) == 0)
+                       && (transfer->if_version == pipe_names[i].trans_syntax->if_version)
+                       && (memcmp(&transfer->uuid, &pipe_names[i].trans_syntax->uuid, sizeof(struct GUID)) == 0) ) {
                        struct api_struct       *fns = NULL;
                        int                     n_fns = 0;
                        PIPE_RPC_FNS            *context_fns;