s3: Do not reference ndr_table when calling rpc_srv_register
[samba.git] / librpc / gen_ndr / srv_srvsvc.c
index 465d9ca31d6ff3ef3643a41807969883ed6c6218..6cf72707aff8a17d240899d9f1596eb727aa2347 100644 (file)
@@ -15,7 +15,7 @@ static bool api_srvsvc_NetCharDevEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevEnum);
        if (r == NULL) {
@@ -97,7 +97,7 @@ static bool api_srvsvc_NetCharDevGetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevGetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVGETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVGETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevGetInfo);
        if (r == NULL) {
@@ -177,7 +177,7 @@ static bool api_srvsvc_NetCharDevControl(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevControl *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVCONTROL];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVCONTROL];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevControl);
        if (r == NULL) {
@@ -250,7 +250,7 @@ static bool api_srvsvc_NetCharDevQEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevQEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVQENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVQENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevQEnum);
        if (r == NULL) {
@@ -332,7 +332,7 @@ static bool api_srvsvc_NetCharDevQGetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevQGetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVQGETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVQGETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevQGetInfo);
        if (r == NULL) {
@@ -412,7 +412,7 @@ static bool api_srvsvc_NetCharDevQSetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevQSetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVQSETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVQSETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevQSetInfo);
        if (r == NULL) {
@@ -487,7 +487,7 @@ static bool api_srvsvc_NetCharDevQPurge(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevQPurge *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVQPURGE];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVQPURGE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevQPurge);
        if (r == NULL) {
@@ -560,7 +560,7 @@ static bool api_srvsvc_NetCharDevQPurgeSelf(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetCharDevQPurgeSelf *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCHARDEVQPURGESELF];
+       call = &p->interface->calls[NDR_SRVSVC_NETCHARDEVQPURGESELF];
 
        r = talloc(talloc_tos(), struct srvsvc_NetCharDevQPurgeSelf);
        if (r == NULL) {
@@ -633,7 +633,7 @@ static bool api_srvsvc_NetConnEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetConnEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETCONNENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETCONNENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetConnEnum);
        if (r == NULL) {
@@ -715,7 +715,7 @@ static bool api_srvsvc_NetFileEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetFileEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETFILEENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETFILEENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetFileEnum);
        if (r == NULL) {
@@ -797,7 +797,7 @@ static bool api_srvsvc_NetFileGetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetFileGetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETFILEGETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETFILEGETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetFileGetInfo);
        if (r == NULL) {
@@ -877,7 +877,7 @@ static bool api_srvsvc_NetFileClose(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetFileClose *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETFILECLOSE];
+       call = &p->interface->calls[NDR_SRVSVC_NETFILECLOSE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetFileClose);
        if (r == NULL) {
@@ -950,7 +950,7 @@ static bool api_srvsvc_NetSessEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetSessEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSESSENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETSESSENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetSessEnum);
        if (r == NULL) {
@@ -1032,7 +1032,7 @@ static bool api_srvsvc_NetSessDel(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetSessDel *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSESSDEL];
+       call = &p->interface->calls[NDR_SRVSVC_NETSESSDEL];
 
        r = talloc(talloc_tos(), struct srvsvc_NetSessDel);
        if (r == NULL) {
@@ -1105,7 +1105,7 @@ static bool api_srvsvc_NetShareAdd(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareAdd *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREADD];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREADD];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareAdd);
        if (r == NULL) {
@@ -1180,7 +1180,7 @@ static bool api_srvsvc_NetShareEnumAll(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareEnumAll *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREENUMALL];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREENUMALL];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareEnumAll);
        if (r == NULL) {
@@ -1262,7 +1262,7 @@ static bool api_srvsvc_NetShareGetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareGetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREGETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREGETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareGetInfo);
        if (r == NULL) {
@@ -1342,7 +1342,7 @@ static bool api_srvsvc_NetShareSetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareSetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHARESETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHARESETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareSetInfo);
        if (r == NULL) {
@@ -1417,7 +1417,7 @@ static bool api_srvsvc_NetShareDel(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareDel *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREDEL];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREDEL];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareDel);
        if (r == NULL) {
@@ -1490,7 +1490,7 @@ static bool api_srvsvc_NetShareDelSticky(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareDelSticky *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREDELSTICKY];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREDELSTICKY];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareDelSticky);
        if (r == NULL) {
@@ -1563,7 +1563,7 @@ static bool api_srvsvc_NetShareCheck(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareCheck *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHARECHECK];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHARECHECK];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareCheck);
        if (r == NULL) {
@@ -1643,7 +1643,7 @@ static bool api_srvsvc_NetSrvGetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetSrvGetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSRVGETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETSRVGETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetSrvGetInfo);
        if (r == NULL) {
@@ -1723,7 +1723,7 @@ static bool api_srvsvc_NetSrvSetInfo(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetSrvSetInfo *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSRVSETINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETSRVSETINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NetSrvSetInfo);
        if (r == NULL) {
@@ -1798,7 +1798,7 @@ static bool api_srvsvc_NetDiskEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetDiskEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETDISKENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETDISKENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetDiskEnum);
        if (r == NULL) {
@@ -1880,7 +1880,7 @@ static bool api_srvsvc_NetServerStatisticsGet(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetServerStatisticsGet *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSERVERSTATISTICSGET];
+       call = &p->interface->calls[NDR_SRVSVC_NETSERVERSTATISTICSGET];
 
        r = talloc(talloc_tos(), struct srvsvc_NetServerStatisticsGet);
        if (r == NULL) {
@@ -1960,7 +1960,7 @@ static bool api_srvsvc_NetTransportAdd(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetTransportAdd *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETTRANSPORTADD];
+       call = &p->interface->calls[NDR_SRVSVC_NETTRANSPORTADD];
 
        r = talloc(talloc_tos(), struct srvsvc_NetTransportAdd);
        if (r == NULL) {
@@ -2033,7 +2033,7 @@ static bool api_srvsvc_NetTransportEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetTransportEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETTRANSPORTENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETTRANSPORTENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetTransportEnum);
        if (r == NULL) {
@@ -2115,7 +2115,7 @@ static bool api_srvsvc_NetTransportDel(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetTransportDel *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETTRANSPORTDEL];
+       call = &p->interface->calls[NDR_SRVSVC_NETTRANSPORTDEL];
 
        r = talloc(talloc_tos(), struct srvsvc_NetTransportDel);
        if (r == NULL) {
@@ -2188,7 +2188,7 @@ static bool api_srvsvc_NetRemoteTOD(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetRemoteTOD *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETREMOTETOD];
+       call = &p->interface->calls[NDR_SRVSVC_NETREMOTETOD];
 
        r = talloc(talloc_tos(), struct srvsvc_NetRemoteTOD);
        if (r == NULL) {
@@ -2268,7 +2268,7 @@ static bool api_srvsvc_NetSetServiceBits(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetSetServiceBits *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSETSERVICEBITS];
+       call = &p->interface->calls[NDR_SRVSVC_NETSETSERVICEBITS];
 
        r = talloc(talloc_tos(), struct srvsvc_NetSetServiceBits);
        if (r == NULL) {
@@ -2341,7 +2341,7 @@ static bool api_srvsvc_NetPathType(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetPathType *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETPATHTYPE];
+       call = &p->interface->calls[NDR_SRVSVC_NETPATHTYPE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetPathType);
        if (r == NULL) {
@@ -2421,7 +2421,7 @@ static bool api_srvsvc_NetPathCanonicalize(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetPathCanonicalize *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETPATHCANONICALIZE];
+       call = &p->interface->calls[NDR_SRVSVC_NETPATHCANONICALIZE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetPathCanonicalize);
        if (r == NULL) {
@@ -2502,7 +2502,7 @@ static bool api_srvsvc_NetPathCompare(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetPathCompare *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETPATHCOMPARE];
+       call = &p->interface->calls[NDR_SRVSVC_NETPATHCOMPARE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetPathCompare);
        if (r == NULL) {
@@ -2575,7 +2575,7 @@ static bool api_srvsvc_NetNameValidate(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetNameValidate *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETNAMEVALIDATE];
+       call = &p->interface->calls[NDR_SRVSVC_NETNAMEVALIDATE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetNameValidate);
        if (r == NULL) {
@@ -2648,7 +2648,7 @@ static bool api_srvsvc_NETRPRNAMECANONICALIZE(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRPRNAMECANONICALIZE *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRPRNAMECANONICALIZE];
+       call = &p->interface->calls[NDR_SRVSVC_NETRPRNAMECANONICALIZE];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRPRNAMECANONICALIZE);
        if (r == NULL) {
@@ -2721,7 +2721,7 @@ static bool api_srvsvc_NetPRNameCompare(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetPRNameCompare *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETPRNAMECOMPARE];
+       call = &p->interface->calls[NDR_SRVSVC_NETPRNAMECOMPARE];
 
        r = talloc(talloc_tos(), struct srvsvc_NetPRNameCompare);
        if (r == NULL) {
@@ -2794,7 +2794,7 @@ static bool api_srvsvc_NetShareEnum(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareEnum *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREENUM];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREENUM];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareEnum);
        if (r == NULL) {
@@ -2876,7 +2876,7 @@ static bool api_srvsvc_NetShareDelStart(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareDelStart *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREDELSTART];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREDELSTART];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareDelStart);
        if (r == NULL) {
@@ -2956,7 +2956,7 @@ static bool api_srvsvc_NetShareDelCommit(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetShareDelCommit *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSHAREDELCOMMIT];
+       call = &p->interface->calls[NDR_SRVSVC_NETSHAREDELCOMMIT];
 
        r = talloc(talloc_tos(), struct srvsvc_NetShareDelCommit);
        if (r == NULL) {
@@ -3031,7 +3031,7 @@ static bool api_srvsvc_NetGetFileSecurity(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetGetFileSecurity *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETGETFILESECURITY];
+       call = &p->interface->calls[NDR_SRVSVC_NETGETFILESECURITY];
 
        r = talloc(talloc_tos(), struct srvsvc_NetGetFileSecurity);
        if (r == NULL) {
@@ -3111,7 +3111,7 @@ static bool api_srvsvc_NetSetFileSecurity(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetSetFileSecurity *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSETFILESECURITY];
+       call = &p->interface->calls[NDR_SRVSVC_NETSETFILESECURITY];
 
        r = talloc(talloc_tos(), struct srvsvc_NetSetFileSecurity);
        if (r == NULL) {
@@ -3184,7 +3184,7 @@ static bool api_srvsvc_NetServerTransportAddEx(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetServerTransportAddEx *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSERVERTRANSPORTADDEX];
+       call = &p->interface->calls[NDR_SRVSVC_NETSERVERTRANSPORTADDEX];
 
        r = talloc(talloc_tos(), struct srvsvc_NetServerTransportAddEx);
        if (r == NULL) {
@@ -3257,7 +3257,7 @@ static bool api_srvsvc_NetServerSetServiceBitsEx(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NetServerSetServiceBitsEx *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETSERVERSETSERVICEBITSEX];
+       call = &p->interface->calls[NDR_SRVSVC_NETSERVERSETSERVICEBITSEX];
 
        r = talloc(talloc_tos(), struct srvsvc_NetServerSetServiceBitsEx);
        if (r == NULL) {
@@ -3330,7 +3330,7 @@ static bool api_srvsvc_NETRDFSGETVERSION(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSGETVERSION *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSGETVERSION];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSGETVERSION];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSGETVERSION);
        if (r == NULL) {
@@ -3403,7 +3403,7 @@ static bool api_srvsvc_NETRDFSCREATELOCALPARTITION(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSCREATELOCALPARTITION *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSCREATELOCALPARTITION];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSCREATELOCALPARTITION];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSCREATELOCALPARTITION);
        if (r == NULL) {
@@ -3476,7 +3476,7 @@ static bool api_srvsvc_NETRDFSDELETELOCALPARTITION(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSDELETELOCALPARTITION *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSDELETELOCALPARTITION];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSDELETELOCALPARTITION];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSDELETELOCALPARTITION);
        if (r == NULL) {
@@ -3549,7 +3549,7 @@ static bool api_srvsvc_NETRDFSSETLOCALVOLUMESTATE(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSSETLOCALVOLUMESTATE);
        if (r == NULL) {
@@ -3622,7 +3622,7 @@ static bool api_srvsvc_NETRDFSSETSERVERINFO(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSSETSERVERINFO *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSSETSERVERINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSSETSERVERINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSSETSERVERINFO);
        if (r == NULL) {
@@ -3695,7 +3695,7 @@ static bool api_srvsvc_NETRDFSCREATEEXITPOINT(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSCREATEEXITPOINT *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSCREATEEXITPOINT];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSCREATEEXITPOINT];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSCREATEEXITPOINT);
        if (r == NULL) {
@@ -3768,7 +3768,7 @@ static bool api_srvsvc_NETRDFSDELETEEXITPOINT(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSDELETEEXITPOINT *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSDELETEEXITPOINT];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSDELETEEXITPOINT];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSDELETEEXITPOINT);
        if (r == NULL) {
@@ -3841,7 +3841,7 @@ static bool api_srvsvc_NETRDFSMODIFYPREFIX(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSMODIFYPREFIX *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSMODIFYPREFIX];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSMODIFYPREFIX];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSMODIFYPREFIX);
        if (r == NULL) {
@@ -3914,7 +3914,7 @@ static bool api_srvsvc_NETRDFSFIXLOCALVOLUME(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSFIXLOCALVOLUME *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSFIXLOCALVOLUME];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSFIXLOCALVOLUME];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSFIXLOCALVOLUME);
        if (r == NULL) {
@@ -3987,7 +3987,7 @@ static bool api_srvsvc_NETRDFSMANAGERREPORTSITEINFO(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRDFSMANAGERREPORTSITEINFO];
+       call = &p->interface->calls[NDR_SRVSVC_NETRDFSMANAGERREPORTSITEINFO];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRDFSMANAGERREPORTSITEINFO);
        if (r == NULL) {
@@ -4060,7 +4060,7 @@ static bool api_srvsvc_NETRSERVERTRANSPORTDELEX(pipes_struct *p)
        DATA_BLOB blob;
        struct srvsvc_NETRSERVERTRANSPORTDELEX *r;
 
-       call = &ndr_table_srvsvc.calls[NDR_SRVSVC_NETRSERVERTRANSPORTDELEX];
+       call = &p->interface->calls[NDR_SRVSVC_NETRSERVERTRANSPORTDELEX];
 
        r = talloc(talloc_tos(), struct srvsvc_NETRSERVERTRANSPORTDELEX);
        if (r == NULL) {
@@ -4190,7 +4190,499 @@ void srvsvc_get_pipe_fns(struct api_struct **fns, int *n_fns)
        *n_fns = sizeof(api_srvsvc_cmds) / sizeof(struct api_struct);
 }
 
+NTSTATUS rpc_srvsvc_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *interface, uint32_t interface_version, uint32_t opnum, void *_r)
+{
+       if (cli->pipes_struct == NULL) {
+               return NT_STATUS_INVALID_PARAMETER;
+       }
+
+       switch (opnum)
+       {
+               case NDR_SRVSVC_NETCHARDEVENUM: {
+                       struct srvsvc_NetCharDevEnum *r = (struct srvsvc_NetCharDevEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetCharDevEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVGETINFO: {
+                       struct srvsvc_NetCharDevGetInfo *r = (struct srvsvc_NetCharDevGetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union srvsvc_NetCharDevInfo);
+                       if (r->out.info == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetCharDevGetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVCONTROL: {
+                       struct srvsvc_NetCharDevControl *r = (struct srvsvc_NetCharDevControl *)_r;
+                       r->out.result = _srvsvc_NetCharDevControl(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVQENUM: {
+                       struct srvsvc_NetCharDevQEnum *r = (struct srvsvc_NetCharDevQEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetCharDevQEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVQGETINFO: {
+                       struct srvsvc_NetCharDevQGetInfo *r = (struct srvsvc_NetCharDevQGetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union srvsvc_NetCharDevQInfo);
+                       if (r->out.info == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetCharDevQGetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVQSETINFO: {
+                       struct srvsvc_NetCharDevQSetInfo *r = (struct srvsvc_NetCharDevQSetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.parm_error = r->in.parm_error;
+                       r->out.result = _srvsvc_NetCharDevQSetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVQPURGE: {
+                       struct srvsvc_NetCharDevQPurge *r = (struct srvsvc_NetCharDevQPurge *)_r;
+                       r->out.result = _srvsvc_NetCharDevQPurge(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCHARDEVQPURGESELF: {
+                       struct srvsvc_NetCharDevQPurgeSelf *r = (struct srvsvc_NetCharDevQPurgeSelf *)_r;
+                       r->out.result = _srvsvc_NetCharDevQPurgeSelf(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETCONNENUM: {
+                       struct srvsvc_NetConnEnum *r = (struct srvsvc_NetConnEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetConnEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETFILEENUM: {
+                       struct srvsvc_NetFileEnum *r = (struct srvsvc_NetFileEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetFileEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETFILEGETINFO: {
+                       struct srvsvc_NetFileGetInfo *r = (struct srvsvc_NetFileGetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union srvsvc_NetFileInfo);
+                       if (r->out.info == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetFileGetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETFILECLOSE: {
+                       struct srvsvc_NetFileClose *r = (struct srvsvc_NetFileClose *)_r;
+                       r->out.result = _srvsvc_NetFileClose(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSESSENUM: {
+                       struct srvsvc_NetSessEnum *r = (struct srvsvc_NetSessEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetSessEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSESSDEL: {
+                       struct srvsvc_NetSessDel *r = (struct srvsvc_NetSessDel *)_r;
+                       r->out.result = _srvsvc_NetSessDel(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREADD: {
+                       struct srvsvc_NetShareAdd *r = (struct srvsvc_NetShareAdd *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.parm_error = r->in.parm_error;
+                       r->out.result = _srvsvc_NetShareAdd(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREENUMALL: {
+                       struct srvsvc_NetShareEnumAll *r = (struct srvsvc_NetShareEnumAll *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetShareEnumAll(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREGETINFO: {
+                       struct srvsvc_NetShareGetInfo *r = (struct srvsvc_NetShareGetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union srvsvc_NetShareInfo);
+                       if (r->out.info == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetShareGetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHARESETINFO: {
+                       struct srvsvc_NetShareSetInfo *r = (struct srvsvc_NetShareSetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.parm_error = r->in.parm_error;
+                       r->out.result = _srvsvc_NetShareSetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREDEL: {
+                       struct srvsvc_NetShareDel *r = (struct srvsvc_NetShareDel *)_r;
+                       r->out.result = _srvsvc_NetShareDel(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREDELSTICKY: {
+                       struct srvsvc_NetShareDelSticky *r = (struct srvsvc_NetShareDelSticky *)_r;
+                       r->out.result = _srvsvc_NetShareDelSticky(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHARECHECK: {
+                       struct srvsvc_NetShareCheck *r = (struct srvsvc_NetShareCheck *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.type = talloc_zero(mem_ctx, enum srvsvc_ShareType);
+                       if (r->out.type == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetShareCheck(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSRVGETINFO: {
+                       struct srvsvc_NetSrvGetInfo *r = (struct srvsvc_NetSrvGetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union srvsvc_NetSrvInfo);
+                       if (r->out.info == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetSrvGetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSRVSETINFO: {
+                       struct srvsvc_NetSrvSetInfo *r = (struct srvsvc_NetSrvSetInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.parm_error = r->in.parm_error;
+                       r->out.result = _srvsvc_NetSrvSetInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETDISKENUM: {
+                       struct srvsvc_NetDiskEnum *r = (struct srvsvc_NetDiskEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = r->in.info;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetDiskEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSERVERSTATISTICSGET: {
+                       struct srvsvc_NetServerStatisticsGet *r = (struct srvsvc_NetServerStatisticsGet *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.stats = talloc_zero(mem_ctx, struct srvsvc_Statistics *);
+                       if (r->out.stats == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetServerStatisticsGet(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETTRANSPORTADD: {
+                       struct srvsvc_NetTransportAdd *r = (struct srvsvc_NetTransportAdd *)_r;
+                       r->out.result = _srvsvc_NetTransportAdd(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETTRANSPORTENUM: {
+                       struct srvsvc_NetTransportEnum *r = (struct srvsvc_NetTransportEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.transports = r->in.transports;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetTransportEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETTRANSPORTDEL: {
+                       struct srvsvc_NetTransportDel *r = (struct srvsvc_NetTransportDel *)_r;
+                       r->out.result = _srvsvc_NetTransportDel(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETREMOTETOD: {
+                       struct srvsvc_NetRemoteTOD *r = (struct srvsvc_NetRemoteTOD *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, struct srvsvc_NetRemoteTODInfo *);
+                       if (r->out.info == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetRemoteTOD(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSETSERVICEBITS: {
+                       struct srvsvc_NetSetServiceBits *r = (struct srvsvc_NetSetServiceBits *)_r;
+                       r->out.result = _srvsvc_NetSetServiceBits(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETPATHTYPE: {
+                       struct srvsvc_NetPathType *r = (struct srvsvc_NetPathType *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.pathtype = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.pathtype == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetPathType(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETPATHCANONICALIZE: {
+                       struct srvsvc_NetPathCanonicalize *r = (struct srvsvc_NetPathCanonicalize *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.pathtype = r->in.pathtype;
+                       r->out.can_path = talloc_zero_array(mem_ctx, uint8_t, r->in.maxbuf);
+                       if (r->out.can_path == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetPathCanonicalize(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETPATHCOMPARE: {
+                       struct srvsvc_NetPathCompare *r = (struct srvsvc_NetPathCompare *)_r;
+                       r->out.result = _srvsvc_NetPathCompare(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETNAMEVALIDATE: {
+                       struct srvsvc_NetNameValidate *r = (struct srvsvc_NetNameValidate *)_r;
+                       r->out.result = _srvsvc_NetNameValidate(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRPRNAMECANONICALIZE: {
+                       struct srvsvc_NETRPRNAMECANONICALIZE *r = (struct srvsvc_NETRPRNAMECANONICALIZE *)_r;
+                       r->out.result = _srvsvc_NETRPRNAMECANONICALIZE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETPRNAMECOMPARE: {
+                       struct srvsvc_NetPRNameCompare *r = (struct srvsvc_NetPRNameCompare *)_r;
+                       r->out.result = _srvsvc_NetPRNameCompare(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREENUM: {
+                       struct srvsvc_NetShareEnum *r = (struct srvsvc_NetShareEnum *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info_ctr = r->in.info_ctr;
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.totalentries = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.totalentries == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetShareEnum(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREDELSTART: {
+                       struct srvsvc_NetShareDelStart *r = (struct srvsvc_NetShareDelStart *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.hnd = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.hnd == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetShareDelStart(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSHAREDELCOMMIT: {
+                       struct srvsvc_NetShareDelCommit *r = (struct srvsvc_NetShareDelCommit *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.hnd = r->in.hnd;
+                       r->out.result = _srvsvc_NetShareDelCommit(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETGETFILESECURITY: {
+                       struct srvsvc_NetGetFileSecurity *r = (struct srvsvc_NetGetFileSecurity *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sd_buf = talloc_zero(mem_ctx, struct sec_desc_buf *);
+                       if (r->out.sd_buf == NULL) {
+                       return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _srvsvc_NetGetFileSecurity(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSETFILESECURITY: {
+                       struct srvsvc_NetSetFileSecurity *r = (struct srvsvc_NetSetFileSecurity *)_r;
+                       r->out.result = _srvsvc_NetSetFileSecurity(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSERVERTRANSPORTADDEX: {
+                       struct srvsvc_NetServerTransportAddEx *r = (struct srvsvc_NetServerTransportAddEx *)_r;
+                       r->out.result = _srvsvc_NetServerTransportAddEx(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETSERVERSETSERVICEBITSEX: {
+                       struct srvsvc_NetServerSetServiceBitsEx *r = (struct srvsvc_NetServerSetServiceBitsEx *)_r;
+                       r->out.result = _srvsvc_NetServerSetServiceBitsEx(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSGETVERSION: {
+                       struct srvsvc_NETRDFSGETVERSION *r = (struct srvsvc_NETRDFSGETVERSION *)_r;
+                       r->out.result = _srvsvc_NETRDFSGETVERSION(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSCREATELOCALPARTITION: {
+                       struct srvsvc_NETRDFSCREATELOCALPARTITION *r = (struct srvsvc_NETRDFSCREATELOCALPARTITION *)_r;
+                       r->out.result = _srvsvc_NETRDFSCREATELOCALPARTITION(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSDELETELOCALPARTITION: {
+                       struct srvsvc_NETRDFSDELETELOCALPARTITION *r = (struct srvsvc_NETRDFSDELETELOCALPARTITION *)_r;
+                       r->out.result = _srvsvc_NETRDFSDELETELOCALPARTITION(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE: {
+                       struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r = (struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *)_r;
+                       r->out.result = _srvsvc_NETRDFSSETLOCALVOLUMESTATE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSSETSERVERINFO: {
+                       struct srvsvc_NETRDFSSETSERVERINFO *r = (struct srvsvc_NETRDFSSETSERVERINFO *)_r;
+                       r->out.result = _srvsvc_NETRDFSSETSERVERINFO(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSCREATEEXITPOINT: {
+                       struct srvsvc_NETRDFSCREATEEXITPOINT *r = (struct srvsvc_NETRDFSCREATEEXITPOINT *)_r;
+                       r->out.result = _srvsvc_NETRDFSCREATEEXITPOINT(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSDELETEEXITPOINT: {
+                       struct srvsvc_NETRDFSDELETEEXITPOINT *r = (struct srvsvc_NETRDFSDELETEEXITPOINT *)_r;
+                       r->out.result = _srvsvc_NETRDFSDELETEEXITPOINT(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSMODIFYPREFIX: {
+                       struct srvsvc_NETRDFSMODIFYPREFIX *r = (struct srvsvc_NETRDFSMODIFYPREFIX *)_r;
+                       r->out.result = _srvsvc_NETRDFSMODIFYPREFIX(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSFIXLOCALVOLUME: {
+                       struct srvsvc_NETRDFSFIXLOCALVOLUME *r = (struct srvsvc_NETRDFSFIXLOCALVOLUME *)_r;
+                       r->out.result = _srvsvc_NETRDFSFIXLOCALVOLUME(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRDFSMANAGERREPORTSITEINFO: {
+                       struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r = (struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *)_r;
+                       r->out.result = _srvsvc_NETRDFSMANAGERREPORTSITEINFO(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_SRVSVC_NETRSERVERTRANSPORTDELEX: {
+                       struct srvsvc_NETRSERVERTRANSPORTDELEX *r = (struct srvsvc_NETRSERVERTRANSPORTDELEX *)_r;
+                       r->out.result = _srvsvc_NETRSERVERTRANSPORTDELEX(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               default:
+                       return NT_STATUS_NOT_IMPLEMENTED;
+       }
+}
+
 NTSTATUS rpc_srvsvc_init(void)
 {
-       return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "srvsvc", "srvsvc", &ndr_table_srvsvc.syntax_id, api_srvsvc_cmds, sizeof(api_srvsvc_cmds) / sizeof(struct api_struct));
+       return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "srvsvc", "srvsvc", NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, api_srvsvc_cmds, sizeof(api_srvsvc_cmds) / sizeof(struct api_struct));
 }