lockd: Replace PROC() macro with open code
authorChuck Lever <chuck.lever@oracle.com>
Thu, 1 Oct 2020 22:59:02 +0000 (18:59 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 2 Oct 2020 13:37:41 +0000 (09:37 -0400)
Clean up: Follow-up on ten-year-old commit b9081d90f5b9 ("NFS: kill
off complicated macro 'PROC'") by performing the same conversion in
the lockd code. To reduce the chance of error, I copied the original
C preprocessor output and then made some minor edits.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/lockd/svc4proc.c
fs/lockd/svcproc.c

index e4d3f78..fa41dda 100644 (file)
@@ -486,65 +486,215 @@ nlm4svc_proc_granted_res(struct svc_rqst *rqstp)
         return rpc_success;
 }
 
+static __be32
+nlm4svc_proc_unused(struct svc_rqst *rqstp)
+{
+       return rpc_proc_unavail;
+}
+
 
 /*
  * NLM Server procedures.
  */
 
-#define nlm4svc_encode_norep   nlm4svc_encode_void
-#define nlm4svc_decode_norep   nlm4svc_decode_void
-#define nlm4svc_decode_testres nlm4svc_decode_void
-#define nlm4svc_decode_lockres nlm4svc_decode_void
-#define nlm4svc_decode_unlockres       nlm4svc_decode_void
-#define nlm4svc_decode_cancelres       nlm4svc_decode_void
-#define nlm4svc_decode_grantedres      nlm4svc_decode_void
-
-#define nlm4svc_proc_none      nlm4svc_proc_null
-#define nlm4svc_proc_test_res  nlm4svc_proc_null
-#define nlm4svc_proc_lock_res  nlm4svc_proc_null
-#define nlm4svc_proc_cancel_res        nlm4svc_proc_null
-#define nlm4svc_proc_unlock_res        nlm4svc_proc_null
-
 struct nlm_void                        { int dummy; };
 
-#define PROC(name, xargt, xrest, argt, rest, respsize) \
- { .pc_func    = nlm4svc_proc_##name,  \
-   .pc_decode  = nlm4svc_decode_##xargt,       \
-   .pc_encode  = nlm4svc_encode_##xrest,       \
-   .pc_release = NULL,                                 \
-   .pc_argsize = sizeof(struct nlm_##argt),            \
-   .pc_ressize = sizeof(struct nlm_##rest),            \
-   .pc_xdrressize = respsize,                          \
- }
 #define        Ck      (1+XDR_QUADLEN(NLM_MAXCOOKIELEN))       /* cookie */
 #define        No      (1+1024/4)                              /* netobj */
 #define        St      1                                       /* status */
 #define        Rg      4                                       /* range (offset + length) */
-const struct svc_procedure nlmsvc_procedures4[] = {
-  PROC(null,           void,           void,           void,   void, 1),
-  PROC(test,           testargs,       testres,        args,   res, Ck+St+2+No+Rg),
-  PROC(lock,           lockargs,       res,            args,   res, Ck+St),
-  PROC(cancel,         cancargs,       res,            args,   res, Ck+St),
-  PROC(unlock,         unlockargs,     res,            args,   res, Ck+St),
-  PROC(granted,                testargs,       res,            args,   res, Ck+St),
-  PROC(test_msg,       testargs,       norep,          args,   void, 1),
-  PROC(lock_msg,       lockargs,       norep,          args,   void, 1),
-  PROC(cancel_msg,     cancargs,       norep,          args,   void, 1),
-  PROC(unlock_msg,     unlockargs,     norep,          args,   void, 1),
-  PROC(granted_msg,    testargs,       norep,          args,   void, 1),
-  PROC(test_res,       testres,        norep,          res,    void, 1),
-  PROC(lock_res,       lockres,        norep,          res,    void, 1),
-  PROC(cancel_res,     cancelres,      norep,          res,    void, 1),
-  PROC(unlock_res,     unlockres,      norep,          res,    void, 1),
-  PROC(granted_res,    res,            norep,          res,    void, 1),
-  /* statd callback */
-  PROC(sm_notify,      reboot,         void,           reboot, void, 1),
-  PROC(none,           void,           void,           void,   void, 0),
-  PROC(none,           void,           void,           void,   void, 0),
-  PROC(none,           void,           void,           void,   void, 0),
-  PROC(share,          shareargs,      shareres,       args,   res, Ck+St+1),
-  PROC(unshare,                shareargs,      shareres,       args,   res, Ck+St+1),
-  PROC(nm_lock,                lockargs,       res,            args,   res, Ck+St),
-  PROC(free_all,       notify,         void,           args,   void, 1),
 
+const struct svc_procedure nlmsvc_procedures4[24] = {
+       [NLMPROC_NULL] = {
+               .pc_func = nlm4svc_proc_null,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_TEST] = {
+               .pc_func = nlm4svc_proc_test,
+               .pc_decode = nlm4svc_decode_testargs,
+               .pc_encode = nlm4svc_encode_testres,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St+2+No+Rg,
+       },
+       [NLMPROC_LOCK] = {
+               .pc_func = nlm4svc_proc_lock,
+               .pc_decode = nlm4svc_decode_lockargs,
+               .pc_encode = nlm4svc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_CANCEL] = {
+               .pc_func = nlm4svc_proc_cancel,
+               .pc_decode = nlm4svc_decode_cancargs,
+               .pc_encode = nlm4svc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_UNLOCK] = {
+               .pc_func = nlm4svc_proc_unlock,
+               .pc_decode = nlm4svc_decode_unlockargs,
+               .pc_encode = nlm4svc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_GRANTED] = {
+               .pc_func = nlm4svc_proc_granted,
+               .pc_decode = nlm4svc_decode_testargs,
+               .pc_encode = nlm4svc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_TEST_MSG] = {
+               .pc_func = nlm4svc_proc_test_msg,
+               .pc_decode = nlm4svc_decode_testargs,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_LOCK_MSG] = {
+               .pc_func = nlm4svc_proc_lock_msg,
+               .pc_decode = nlm4svc_decode_lockargs,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_CANCEL_MSG] = {
+               .pc_func = nlm4svc_proc_cancel_msg,
+               .pc_decode = nlm4svc_decode_cancargs,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_UNLOCK_MSG] = {
+               .pc_func = nlm4svc_proc_unlock_msg,
+               .pc_decode = nlm4svc_decode_unlockargs,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_GRANTED_MSG] = {
+               .pc_func = nlm4svc_proc_granted_msg,
+               .pc_decode = nlm4svc_decode_testargs,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_TEST_RES] = {
+               .pc_func = nlm4svc_proc_null,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_LOCK_RES] = {
+               .pc_func = nlm4svc_proc_null,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_CANCEL_RES] = {
+               .pc_func = nlm4svc_proc_null,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_UNLOCK_RES] = {
+               .pc_func = nlm4svc_proc_null,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_GRANTED_RES] = {
+               .pc_func = nlm4svc_proc_granted_res,
+               .pc_decode = nlm4svc_decode_res,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_NSM_NOTIFY] = {
+               .pc_func = nlm4svc_proc_sm_notify,
+               .pc_decode = nlm4svc_decode_reboot,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_reboot),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [17] = {
+               .pc_func = nlm4svc_proc_unused,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = 0,
+       },
+       [18] = {
+               .pc_func = nlm4svc_proc_unused,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = 0,
+       },
+       [19] = {
+               .pc_func = nlm4svc_proc_unused,
+               .pc_decode = nlm4svc_decode_void,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = 0,
+       },
+       [NLMPROC_SHARE] = {
+               .pc_func = nlm4svc_proc_share,
+               .pc_decode = nlm4svc_decode_shareargs,
+               .pc_encode = nlm4svc_encode_shareres,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St+1,
+       },
+       [NLMPROC_UNSHARE] = {
+               .pc_func = nlm4svc_proc_unshare,
+               .pc_decode = nlm4svc_decode_shareargs,
+               .pc_encode = nlm4svc_encode_shareres,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St+1,
+       },
+       [NLMPROC_NM_LOCK] = {
+               .pc_func = nlm4svc_proc_nm_lock,
+               .pc_decode = nlm4svc_decode_lockargs,
+               .pc_encode = nlm4svc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_FREE_ALL] = {
+               .pc_func = nlm4svc_proc_free_all,
+               .pc_decode = nlm4svc_decode_notify,
+               .pc_encode = nlm4svc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
 };
index d0bb7a6..50855f2 100644 (file)
@@ -529,66 +529,214 @@ nlmsvc_proc_granted_res(struct svc_rqst *rqstp)
        return rpc_success;
 }
 
+static __be32
+nlmsvc_proc_unused(struct svc_rqst *rqstp)
+{
+       return rpc_proc_unavail;
+}
+
 /*
  * NLM Server procedures.
  */
 
-#define nlmsvc_encode_norep    nlmsvc_encode_void
-#define nlmsvc_decode_norep    nlmsvc_decode_void
-#define nlmsvc_decode_testres  nlmsvc_decode_void
-#define nlmsvc_decode_lockres  nlmsvc_decode_void
-#define nlmsvc_decode_unlockres        nlmsvc_decode_void
-#define nlmsvc_decode_cancelres        nlmsvc_decode_void
-#define nlmsvc_decode_grantedres       nlmsvc_decode_void
-
-#define nlmsvc_proc_none       nlmsvc_proc_null
-#define nlmsvc_proc_test_res   nlmsvc_proc_null
-#define nlmsvc_proc_lock_res   nlmsvc_proc_null
-#define nlmsvc_proc_cancel_res nlmsvc_proc_null
-#define nlmsvc_proc_unlock_res nlmsvc_proc_null
-
 struct nlm_void                        { int dummy; };
 
-#define PROC(name, xargt, xrest, argt, rest, respsize) \
- { .pc_func    = nlmsvc_proc_##name,                   \
-   .pc_decode  = nlmsvc_decode_##xargt,                \
-   .pc_encode  = nlmsvc_encode_##xrest,                \
-   .pc_release = NULL,                                 \
-   .pc_argsize = sizeof(struct nlm_##argt),            \
-   .pc_ressize = sizeof(struct nlm_##rest),            \
-   .pc_xdrressize = respsize,                          \
- }
-
 #define        Ck      (1+XDR_QUADLEN(NLM_MAXCOOKIELEN))       /* cookie */
 #define        St      1                               /* status */
 #define        No      (1+1024/4)                      /* Net Obj */
 #define        Rg      2                               /* range - offset + size */
 
-const struct svc_procedure nlmsvc_procedures[] = {
-  PROC(null,           void,           void,           void,   void, 1),
-  PROC(test,           testargs,       testres,        args,   res, Ck+St+2+No+Rg),
-  PROC(lock,           lockargs,       res,            args,   res, Ck+St),
-  PROC(cancel,         cancargs,       res,            args,   res, Ck+St),
-  PROC(unlock,         unlockargs,     res,            args,   res, Ck+St),
-  PROC(granted,                testargs,       res,            args,   res, Ck+St),
-  PROC(test_msg,       testargs,       norep,          args,   void, 1),
-  PROC(lock_msg,       lockargs,       norep,          args,   void, 1),
-  PROC(cancel_msg,     cancargs,       norep,          args,   void, 1),
-  PROC(unlock_msg,     unlockargs,     norep,          args,   void, 1),
-  PROC(granted_msg,    testargs,       norep,          args,   void, 1),
-  PROC(test_res,       testres,        norep,          res,    void, 1),
-  PROC(lock_res,       lockres,        norep,          res,    void, 1),
-  PROC(cancel_res,     cancelres,      norep,          res,    void, 1),
-  PROC(unlock_res,     unlockres,      norep,          res,    void, 1),
-  PROC(granted_res,    res,            norep,          res,    void, 1),
-  /* statd callback */
-  PROC(sm_notify,      reboot,         void,           reboot, void, 1),
-  PROC(none,           void,           void,           void,   void, 1),
-  PROC(none,           void,           void,           void,   void, 1),
-  PROC(none,           void,           void,           void,   void, 1),
-  PROC(share,          shareargs,      shareres,       args,   res, Ck+St+1),
-  PROC(unshare,                shareargs,      shareres,       args,   res, Ck+St+1),
-  PROC(nm_lock,                lockargs,       res,            args,   res, Ck+St),
-  PROC(free_all,       notify,         void,           args,   void, 0),
-
+const struct svc_procedure nlmsvc_procedures[24] = {
+       [NLMPROC_NULL] = {
+               .pc_func = nlmsvc_proc_null,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_TEST] = {
+               .pc_func = nlmsvc_proc_test,
+               .pc_decode = nlmsvc_decode_testargs,
+               .pc_encode = nlmsvc_encode_testres,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St+2+No+Rg,
+       },
+       [NLMPROC_LOCK] = {
+               .pc_func = nlmsvc_proc_lock,
+               .pc_decode = nlmsvc_decode_lockargs,
+               .pc_encode = nlmsvc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_CANCEL] = {
+               .pc_func = nlmsvc_proc_cancel,
+               .pc_decode = nlmsvc_decode_cancargs,
+               .pc_encode = nlmsvc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_UNLOCK] = {
+               .pc_func = nlmsvc_proc_unlock,
+               .pc_decode = nlmsvc_decode_unlockargs,
+               .pc_encode = nlmsvc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_GRANTED] = {
+               .pc_func = nlmsvc_proc_granted,
+               .pc_decode = nlmsvc_decode_testargs,
+               .pc_encode = nlmsvc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_TEST_MSG] = {
+               .pc_func = nlmsvc_proc_test_msg,
+               .pc_decode = nlmsvc_decode_testargs,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_LOCK_MSG] = {
+               .pc_func = nlmsvc_proc_lock_msg,
+               .pc_decode = nlmsvc_decode_lockargs,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_CANCEL_MSG] = {
+               .pc_func = nlmsvc_proc_cancel_msg,
+               .pc_decode = nlmsvc_decode_cancargs,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_UNLOCK_MSG] = {
+               .pc_func = nlmsvc_proc_unlock_msg,
+               .pc_decode = nlmsvc_decode_unlockargs,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_GRANTED_MSG] = {
+               .pc_func = nlmsvc_proc_granted_msg,
+               .pc_decode = nlmsvc_decode_testargs,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_TEST_RES] = {
+               .pc_func = nlmsvc_proc_null,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_LOCK_RES] = {
+               .pc_func = nlmsvc_proc_null,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_CANCEL_RES] = {
+               .pc_func = nlmsvc_proc_null,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_UNLOCK_RES] = {
+               .pc_func = nlmsvc_proc_null,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_GRANTED_RES] = {
+               .pc_func = nlmsvc_proc_granted_res,
+               .pc_decode = nlmsvc_decode_res,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_res),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_NSM_NOTIFY] = {
+               .pc_func = nlmsvc_proc_sm_notify,
+               .pc_decode = nlmsvc_decode_reboot,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_reboot),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [17] = {
+               .pc_func = nlmsvc_proc_unused,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [18] = {
+               .pc_func = nlmsvc_proc_unused,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [19] = {
+               .pc_func = nlmsvc_proc_unused,
+               .pc_decode = nlmsvc_decode_void,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_void),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = St,
+       },
+       [NLMPROC_SHARE] = {
+               .pc_func = nlmsvc_proc_share,
+               .pc_decode = nlmsvc_decode_shareargs,
+               .pc_encode = nlmsvc_encode_shareres,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St+1,
+       },
+       [NLMPROC_UNSHARE] = {
+               .pc_func = nlmsvc_proc_unshare,
+               .pc_decode = nlmsvc_decode_shareargs,
+               .pc_encode = nlmsvc_encode_shareres,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St+1,
+       },
+       [NLMPROC_NM_LOCK] = {
+               .pc_func = nlmsvc_proc_nm_lock,
+               .pc_decode = nlmsvc_decode_lockargs,
+               .pc_encode = nlmsvc_encode_res,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_res),
+               .pc_xdrressize = Ck+St,
+       },
+       [NLMPROC_FREE_ALL] = {
+               .pc_func = nlmsvc_proc_free_all,
+               .pc_decode = nlmsvc_decode_notify,
+               .pc_encode = nlmsvc_encode_void,
+               .pc_argsize = sizeof(struct nlm_args),
+               .pc_ressize = sizeof(struct nlm_void),
+               .pc_xdrressize = 0,
+       },
 };