1*4b386d8dSChuck Lever // SPDX-License-Identifier: GPL-2.0 2*4b386d8dSChuck Lever // Generated by xdrgen. Manual edits will be lost. 3*4b386d8dSChuck Lever // XDR specification file: ../../Documentation/sunrpc/xdr/nlm3.x 4*4b386d8dSChuck Lever // XDR specification modification time: Thu Apr 23 10:56:34 2026 5*4b386d8dSChuck Lever 6*4b386d8dSChuck Lever #include <linux/sunrpc/svc.h> 7*4b386d8dSChuck Lever 8*4b386d8dSChuck Lever #include "nlm3xdr_gen.h" 9*4b386d8dSChuck Lever 10*4b386d8dSChuck Lever static bool __maybe_unused 11*4b386d8dSChuck Lever xdrgen_decode_netobj(struct xdr_stream *xdr, netobj *ptr) 12*4b386d8dSChuck Lever { 13*4b386d8dSChuck Lever return xdrgen_decode_opaque(xdr, ptr, MAXNETOBJ_SZ); 14*4b386d8dSChuck Lever } 15*4b386d8dSChuck Lever 16*4b386d8dSChuck Lever static bool __maybe_unused 17*4b386d8dSChuck Lever xdrgen_decode_nlm_stats(struct xdr_stream *xdr, nlm_stats *ptr) 18*4b386d8dSChuck Lever { 19*4b386d8dSChuck Lever __be32 raw; 20*4b386d8dSChuck Lever u32 val; 21*4b386d8dSChuck Lever 22*4b386d8dSChuck Lever if (xdr_stream_decode_be32(xdr, &raw) < 0) 23*4b386d8dSChuck Lever return false; 24*4b386d8dSChuck Lever val = be32_to_cpu(raw); 25*4b386d8dSChuck Lever /* Compiler may optimize to a range check for dense enums */ 26*4b386d8dSChuck Lever switch (val) { 27*4b386d8dSChuck Lever case LCK_GRANTED: 28*4b386d8dSChuck Lever case LCK_DENIED: 29*4b386d8dSChuck Lever case LCK_DENIED_NOLOCKS: 30*4b386d8dSChuck Lever case LCK_BLOCKED: 31*4b386d8dSChuck Lever case LCK_DENIED_GRACE_PERIOD: 32*4b386d8dSChuck Lever break; 33*4b386d8dSChuck Lever default: 34*4b386d8dSChuck Lever return false; 35*4b386d8dSChuck Lever } 36*4b386d8dSChuck Lever *ptr = raw; 37*4b386d8dSChuck Lever return true; 38*4b386d8dSChuck Lever } 39*4b386d8dSChuck Lever 40*4b386d8dSChuck Lever static bool __maybe_unused 41*4b386d8dSChuck Lever xdrgen_decode_nlm_stat(struct xdr_stream *xdr, struct nlm_stat *ptr) 42*4b386d8dSChuck Lever { 43*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_stats(xdr, &ptr->stat)) 44*4b386d8dSChuck Lever return false; 45*4b386d8dSChuck Lever return true; 46*4b386d8dSChuck Lever } 47*4b386d8dSChuck Lever 48*4b386d8dSChuck Lever static bool __maybe_unused 49*4b386d8dSChuck Lever xdrgen_decode_nlm_res(struct xdr_stream *xdr, struct nlm_res *ptr) 50*4b386d8dSChuck Lever { 51*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 52*4b386d8dSChuck Lever return false; 53*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_stat(xdr, &ptr->stat)) 54*4b386d8dSChuck Lever return false; 55*4b386d8dSChuck Lever return true; 56*4b386d8dSChuck Lever } 57*4b386d8dSChuck Lever 58*4b386d8dSChuck Lever static bool __maybe_unused 59*4b386d8dSChuck Lever xdrgen_decode_nlm_holder(struct xdr_stream *xdr, struct nlm_holder *ptr) 60*4b386d8dSChuck Lever { 61*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->exclusive)) 62*4b386d8dSChuck Lever return false; 63*4b386d8dSChuck Lever if (!xdrgen_decode_int(xdr, &ptr->uppid)) 64*4b386d8dSChuck Lever return false; 65*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->oh)) 66*4b386d8dSChuck Lever return false; 67*4b386d8dSChuck Lever if (!xdrgen_decode_unsigned_int(xdr, &ptr->l_offset)) 68*4b386d8dSChuck Lever return false; 69*4b386d8dSChuck Lever if (!xdrgen_decode_unsigned_int(xdr, &ptr->l_len)) 70*4b386d8dSChuck Lever return false; 71*4b386d8dSChuck Lever return true; 72*4b386d8dSChuck Lever } 73*4b386d8dSChuck Lever 74*4b386d8dSChuck Lever static bool __maybe_unused 75*4b386d8dSChuck Lever xdrgen_decode_nlm_testrply(struct xdr_stream *xdr, struct nlm_testrply *ptr) 76*4b386d8dSChuck Lever { 77*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_stats(xdr, &ptr->stat)) 78*4b386d8dSChuck Lever return false; 79*4b386d8dSChuck Lever switch (ptr->stat) { 80*4b386d8dSChuck Lever case __constant_cpu_to_be32(LCK_DENIED): 81*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_holder(xdr, &ptr->u.holder)) 82*4b386d8dSChuck Lever return false; 83*4b386d8dSChuck Lever break; 84*4b386d8dSChuck Lever default: 85*4b386d8dSChuck Lever break; 86*4b386d8dSChuck Lever } 87*4b386d8dSChuck Lever return true; 88*4b386d8dSChuck Lever } 89*4b386d8dSChuck Lever 90*4b386d8dSChuck Lever static bool __maybe_unused 91*4b386d8dSChuck Lever xdrgen_decode_nlm_testres(struct xdr_stream *xdr, struct nlm_testres *ptr) 92*4b386d8dSChuck Lever { 93*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 94*4b386d8dSChuck Lever return false; 95*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_testrply(xdr, &ptr->test_stat)) 96*4b386d8dSChuck Lever return false; 97*4b386d8dSChuck Lever return true; 98*4b386d8dSChuck Lever } 99*4b386d8dSChuck Lever 100*4b386d8dSChuck Lever static bool __maybe_unused 101*4b386d8dSChuck Lever xdrgen_decode_nlm_lock(struct xdr_stream *xdr, struct nlm_lock *ptr) 102*4b386d8dSChuck Lever { 103*4b386d8dSChuck Lever if (!xdrgen_decode_string(xdr, (string *)ptr, LM_MAXSTRLEN)) 104*4b386d8dSChuck Lever return false; 105*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->fh)) 106*4b386d8dSChuck Lever return false; 107*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->oh)) 108*4b386d8dSChuck Lever return false; 109*4b386d8dSChuck Lever if (!xdrgen_decode_int(xdr, &ptr->uppid)) 110*4b386d8dSChuck Lever return false; 111*4b386d8dSChuck Lever if (!xdrgen_decode_unsigned_int(xdr, &ptr->l_offset)) 112*4b386d8dSChuck Lever return false; 113*4b386d8dSChuck Lever if (!xdrgen_decode_unsigned_int(xdr, &ptr->l_len)) 114*4b386d8dSChuck Lever return false; 115*4b386d8dSChuck Lever return true; 116*4b386d8dSChuck Lever } 117*4b386d8dSChuck Lever 118*4b386d8dSChuck Lever static bool __maybe_unused 119*4b386d8dSChuck Lever xdrgen_decode_nlm_lockargs(struct xdr_stream *xdr, struct nlm_lockargs *ptr) 120*4b386d8dSChuck Lever { 121*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 122*4b386d8dSChuck Lever return false; 123*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->block)) 124*4b386d8dSChuck Lever return false; 125*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->exclusive)) 126*4b386d8dSChuck Lever return false; 127*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_lock(xdr, &ptr->alock)) 128*4b386d8dSChuck Lever return false; 129*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->reclaim)) 130*4b386d8dSChuck Lever return false; 131*4b386d8dSChuck Lever if (!xdrgen_decode_int(xdr, &ptr->state)) 132*4b386d8dSChuck Lever return false; 133*4b386d8dSChuck Lever return true; 134*4b386d8dSChuck Lever } 135*4b386d8dSChuck Lever 136*4b386d8dSChuck Lever static bool __maybe_unused 137*4b386d8dSChuck Lever xdrgen_decode_nlm_cancargs(struct xdr_stream *xdr, struct nlm_cancargs *ptr) 138*4b386d8dSChuck Lever { 139*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 140*4b386d8dSChuck Lever return false; 141*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->block)) 142*4b386d8dSChuck Lever return false; 143*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->exclusive)) 144*4b386d8dSChuck Lever return false; 145*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_lock(xdr, &ptr->alock)) 146*4b386d8dSChuck Lever return false; 147*4b386d8dSChuck Lever return true; 148*4b386d8dSChuck Lever } 149*4b386d8dSChuck Lever 150*4b386d8dSChuck Lever static bool __maybe_unused 151*4b386d8dSChuck Lever xdrgen_decode_nlm_testargs(struct xdr_stream *xdr, struct nlm_testargs *ptr) 152*4b386d8dSChuck Lever { 153*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 154*4b386d8dSChuck Lever return false; 155*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->exclusive)) 156*4b386d8dSChuck Lever return false; 157*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_lock(xdr, &ptr->alock)) 158*4b386d8dSChuck Lever return false; 159*4b386d8dSChuck Lever return true; 160*4b386d8dSChuck Lever } 161*4b386d8dSChuck Lever 162*4b386d8dSChuck Lever static bool __maybe_unused 163*4b386d8dSChuck Lever xdrgen_decode_nlm_unlockargs(struct xdr_stream *xdr, struct nlm_unlockargs *ptr) 164*4b386d8dSChuck Lever { 165*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 166*4b386d8dSChuck Lever return false; 167*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_lock(xdr, &ptr->alock)) 168*4b386d8dSChuck Lever return false; 169*4b386d8dSChuck Lever return true; 170*4b386d8dSChuck Lever } 171*4b386d8dSChuck Lever 172*4b386d8dSChuck Lever static bool __maybe_unused 173*4b386d8dSChuck Lever xdrgen_decode_fsh_mode(struct xdr_stream *xdr, fsh_mode *ptr) 174*4b386d8dSChuck Lever { 175*4b386d8dSChuck Lever u32 val; 176*4b386d8dSChuck Lever 177*4b386d8dSChuck Lever if (xdr_stream_decode_u32(xdr, &val) < 0) 178*4b386d8dSChuck Lever return false; 179*4b386d8dSChuck Lever /* Compiler may optimize to a range check for dense enums */ 180*4b386d8dSChuck Lever switch (val) { 181*4b386d8dSChuck Lever case fsm_DN: 182*4b386d8dSChuck Lever case fsm_DR: 183*4b386d8dSChuck Lever case fsm_DW: 184*4b386d8dSChuck Lever case fsm_DRW: 185*4b386d8dSChuck Lever break; 186*4b386d8dSChuck Lever default: 187*4b386d8dSChuck Lever return false; 188*4b386d8dSChuck Lever } 189*4b386d8dSChuck Lever *ptr = val; 190*4b386d8dSChuck Lever return true; 191*4b386d8dSChuck Lever } 192*4b386d8dSChuck Lever 193*4b386d8dSChuck Lever static bool __maybe_unused 194*4b386d8dSChuck Lever xdrgen_decode_fsh_access(struct xdr_stream *xdr, fsh_access *ptr) 195*4b386d8dSChuck Lever { 196*4b386d8dSChuck Lever u32 val; 197*4b386d8dSChuck Lever 198*4b386d8dSChuck Lever if (xdr_stream_decode_u32(xdr, &val) < 0) 199*4b386d8dSChuck Lever return false; 200*4b386d8dSChuck Lever /* Compiler may optimize to a range check for dense enums */ 201*4b386d8dSChuck Lever switch (val) { 202*4b386d8dSChuck Lever case fsa_NONE: 203*4b386d8dSChuck Lever case fsa_R: 204*4b386d8dSChuck Lever case fsa_W: 205*4b386d8dSChuck Lever case fsa_RW: 206*4b386d8dSChuck Lever break; 207*4b386d8dSChuck Lever default: 208*4b386d8dSChuck Lever return false; 209*4b386d8dSChuck Lever } 210*4b386d8dSChuck Lever *ptr = val; 211*4b386d8dSChuck Lever return true; 212*4b386d8dSChuck Lever } 213*4b386d8dSChuck Lever 214*4b386d8dSChuck Lever static bool __maybe_unused 215*4b386d8dSChuck Lever xdrgen_decode_nlm_share(struct xdr_stream *xdr, struct nlm_share *ptr) 216*4b386d8dSChuck Lever { 217*4b386d8dSChuck Lever if (!xdrgen_decode_string(xdr, (string *)ptr, LM_MAXSTRLEN)) 218*4b386d8dSChuck Lever return false; 219*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->fh)) 220*4b386d8dSChuck Lever return false; 221*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->oh)) 222*4b386d8dSChuck Lever return false; 223*4b386d8dSChuck Lever if (!xdrgen_decode_fsh_mode(xdr, &ptr->mode)) 224*4b386d8dSChuck Lever return false; 225*4b386d8dSChuck Lever if (!xdrgen_decode_fsh_access(xdr, &ptr->access)) 226*4b386d8dSChuck Lever return false; 227*4b386d8dSChuck Lever return true; 228*4b386d8dSChuck Lever } 229*4b386d8dSChuck Lever 230*4b386d8dSChuck Lever static bool __maybe_unused 231*4b386d8dSChuck Lever xdrgen_decode_nlm_shareargs(struct xdr_stream *xdr, struct nlm_shareargs *ptr) 232*4b386d8dSChuck Lever { 233*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 234*4b386d8dSChuck Lever return false; 235*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_share(xdr, &ptr->share)) 236*4b386d8dSChuck Lever return false; 237*4b386d8dSChuck Lever if (!xdrgen_decode_bool(xdr, &ptr->reclaim)) 238*4b386d8dSChuck Lever return false; 239*4b386d8dSChuck Lever return true; 240*4b386d8dSChuck Lever } 241*4b386d8dSChuck Lever 242*4b386d8dSChuck Lever static bool __maybe_unused 243*4b386d8dSChuck Lever xdrgen_decode_nlm_shareres(struct xdr_stream *xdr, struct nlm_shareres *ptr) 244*4b386d8dSChuck Lever { 245*4b386d8dSChuck Lever if (!xdrgen_decode_netobj(xdr, &ptr->cookie)) 246*4b386d8dSChuck Lever return false; 247*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_stats(xdr, &ptr->stat)) 248*4b386d8dSChuck Lever return false; 249*4b386d8dSChuck Lever if (!xdrgen_decode_int(xdr, &ptr->sequence)) 250*4b386d8dSChuck Lever return false; 251*4b386d8dSChuck Lever return true; 252*4b386d8dSChuck Lever } 253*4b386d8dSChuck Lever 254*4b386d8dSChuck Lever static bool __maybe_unused 255*4b386d8dSChuck Lever xdrgen_decode_nlm_notify(struct xdr_stream *xdr, struct nlm_notify *ptr) 256*4b386d8dSChuck Lever { 257*4b386d8dSChuck Lever if (!xdrgen_decode_string(xdr, (string *)ptr, LM_MAXNAMELEN)) 258*4b386d8dSChuck Lever return false; 259*4b386d8dSChuck Lever if (!xdrgen_decode_long(xdr, &ptr->state)) 260*4b386d8dSChuck Lever return false; 261*4b386d8dSChuck Lever return true; 262*4b386d8dSChuck Lever } 263*4b386d8dSChuck Lever 264*4b386d8dSChuck Lever static bool __maybe_unused 265*4b386d8dSChuck Lever xdrgen_decode_nlm_notifyargs(struct xdr_stream *xdr, struct nlm_notifyargs *ptr) 266*4b386d8dSChuck Lever { 267*4b386d8dSChuck Lever if (!xdrgen_decode_nlm_notify(xdr, &ptr->notify)) 268*4b386d8dSChuck Lever return false; 269*4b386d8dSChuck Lever if (xdr_stream_decode_opaque_fixed(xdr, ptr->private, SM_PRIV_SIZE) < 0) 270*4b386d8dSChuck Lever return false; 271*4b386d8dSChuck Lever return true; 272*4b386d8dSChuck Lever } 273*4b386d8dSChuck Lever 274*4b386d8dSChuck Lever /** 275*4b386d8dSChuck Lever * nlm_svc_decode_void - Decode a void argument 276*4b386d8dSChuck Lever * @rqstp: RPC transaction context 277*4b386d8dSChuck Lever * @xdr: source XDR data stream 278*4b386d8dSChuck Lever * 279*4b386d8dSChuck Lever * Return values: 280*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 281*4b386d8dSChuck Lever * %false: decode failed 282*4b386d8dSChuck Lever */ 283*4b386d8dSChuck Lever bool nlm_svc_decode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) 284*4b386d8dSChuck Lever { 285*4b386d8dSChuck Lever return xdrgen_decode_void(xdr); 286*4b386d8dSChuck Lever } 287*4b386d8dSChuck Lever 288*4b386d8dSChuck Lever /** 289*4b386d8dSChuck Lever * nlm_svc_decode_nlm_testargs - Decode a nlm_testargs argument 290*4b386d8dSChuck Lever * @rqstp: RPC transaction context 291*4b386d8dSChuck Lever * @xdr: source XDR data stream 292*4b386d8dSChuck Lever * 293*4b386d8dSChuck Lever * Return values: 294*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 295*4b386d8dSChuck Lever * %false: decode failed 296*4b386d8dSChuck Lever */ 297*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_testargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) 298*4b386d8dSChuck Lever { 299*4b386d8dSChuck Lever struct nlm_testargs *argp = rqstp->rq_argp; 300*4b386d8dSChuck Lever 301*4b386d8dSChuck Lever return xdrgen_decode_nlm_testargs(xdr, argp); 302*4b386d8dSChuck Lever } 303*4b386d8dSChuck Lever 304*4b386d8dSChuck Lever /** 305*4b386d8dSChuck Lever * nlm_svc_decode_nlm_lockargs - Decode a nlm_lockargs argument 306*4b386d8dSChuck Lever * @rqstp: RPC transaction context 307*4b386d8dSChuck Lever * @xdr: source XDR data stream 308*4b386d8dSChuck Lever * 309*4b386d8dSChuck Lever * Return values: 310*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 311*4b386d8dSChuck Lever * %false: decode failed 312*4b386d8dSChuck Lever */ 313*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_lockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) 314*4b386d8dSChuck Lever { 315*4b386d8dSChuck Lever struct nlm_lockargs *argp = rqstp->rq_argp; 316*4b386d8dSChuck Lever 317*4b386d8dSChuck Lever return xdrgen_decode_nlm_lockargs(xdr, argp); 318*4b386d8dSChuck Lever } 319*4b386d8dSChuck Lever 320*4b386d8dSChuck Lever /** 321*4b386d8dSChuck Lever * nlm_svc_decode_nlm_cancargs - Decode a nlm_cancargs argument 322*4b386d8dSChuck Lever * @rqstp: RPC transaction context 323*4b386d8dSChuck Lever * @xdr: source XDR data stream 324*4b386d8dSChuck Lever * 325*4b386d8dSChuck Lever * Return values: 326*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 327*4b386d8dSChuck Lever * %false: decode failed 328*4b386d8dSChuck Lever */ 329*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_cancargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) 330*4b386d8dSChuck Lever { 331*4b386d8dSChuck Lever struct nlm_cancargs *argp = rqstp->rq_argp; 332*4b386d8dSChuck Lever 333*4b386d8dSChuck Lever return xdrgen_decode_nlm_cancargs(xdr, argp); 334*4b386d8dSChuck Lever } 335*4b386d8dSChuck Lever 336*4b386d8dSChuck Lever /** 337*4b386d8dSChuck Lever * nlm_svc_decode_nlm_unlockargs - Decode a nlm_unlockargs argument 338*4b386d8dSChuck Lever * @rqstp: RPC transaction context 339*4b386d8dSChuck Lever * @xdr: source XDR data stream 340*4b386d8dSChuck Lever * 341*4b386d8dSChuck Lever * Return values: 342*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 343*4b386d8dSChuck Lever * %false: decode failed 344*4b386d8dSChuck Lever */ 345*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_unlockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) 346*4b386d8dSChuck Lever { 347*4b386d8dSChuck Lever struct nlm_unlockargs *argp = rqstp->rq_argp; 348*4b386d8dSChuck Lever 349*4b386d8dSChuck Lever return xdrgen_decode_nlm_unlockargs(xdr, argp); 350*4b386d8dSChuck Lever } 351*4b386d8dSChuck Lever 352*4b386d8dSChuck Lever /** 353*4b386d8dSChuck Lever * nlm_svc_decode_nlm_testres - Decode a nlm_testres argument 354*4b386d8dSChuck Lever * @rqstp: RPC transaction context 355*4b386d8dSChuck Lever * @xdr: source XDR data stream 356*4b386d8dSChuck Lever * 357*4b386d8dSChuck Lever * Return values: 358*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 359*4b386d8dSChuck Lever * %false: decode failed 360*4b386d8dSChuck Lever */ 361*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr) 362*4b386d8dSChuck Lever { 363*4b386d8dSChuck Lever struct nlm_testres *argp = rqstp->rq_argp; 364*4b386d8dSChuck Lever 365*4b386d8dSChuck Lever return xdrgen_decode_nlm_testres(xdr, argp); 366*4b386d8dSChuck Lever } 367*4b386d8dSChuck Lever 368*4b386d8dSChuck Lever /** 369*4b386d8dSChuck Lever * nlm_svc_decode_nlm_res - Decode a nlm_res argument 370*4b386d8dSChuck Lever * @rqstp: RPC transaction context 371*4b386d8dSChuck Lever * @xdr: source XDR data stream 372*4b386d8dSChuck Lever * 373*4b386d8dSChuck Lever * Return values: 374*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 375*4b386d8dSChuck Lever * %false: decode failed 376*4b386d8dSChuck Lever */ 377*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_res(struct svc_rqst *rqstp, struct xdr_stream *xdr) 378*4b386d8dSChuck Lever { 379*4b386d8dSChuck Lever struct nlm_res *argp = rqstp->rq_argp; 380*4b386d8dSChuck Lever 381*4b386d8dSChuck Lever return xdrgen_decode_nlm_res(xdr, argp); 382*4b386d8dSChuck Lever } 383*4b386d8dSChuck Lever 384*4b386d8dSChuck Lever /** 385*4b386d8dSChuck Lever * nlm_svc_decode_nlm_notifyargs - Decode a nlm_notifyargs argument 386*4b386d8dSChuck Lever * @rqstp: RPC transaction context 387*4b386d8dSChuck Lever * @xdr: source XDR data stream 388*4b386d8dSChuck Lever * 389*4b386d8dSChuck Lever * Return values: 390*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 391*4b386d8dSChuck Lever * %false: decode failed 392*4b386d8dSChuck Lever */ 393*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_notifyargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) 394*4b386d8dSChuck Lever { 395*4b386d8dSChuck Lever struct nlm_notifyargs *argp = rqstp->rq_argp; 396*4b386d8dSChuck Lever 397*4b386d8dSChuck Lever return xdrgen_decode_nlm_notifyargs(xdr, argp); 398*4b386d8dSChuck Lever } 399*4b386d8dSChuck Lever 400*4b386d8dSChuck Lever /** 401*4b386d8dSChuck Lever * nlm_svc_decode_nlm_shareargs - Decode a nlm_shareargs argument 402*4b386d8dSChuck Lever * @rqstp: RPC transaction context 403*4b386d8dSChuck Lever * @xdr: source XDR data stream 404*4b386d8dSChuck Lever * 405*4b386d8dSChuck Lever * Return values: 406*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 407*4b386d8dSChuck Lever * %false: decode failed 408*4b386d8dSChuck Lever */ 409*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_shareargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) 410*4b386d8dSChuck Lever { 411*4b386d8dSChuck Lever struct nlm_shareargs *argp = rqstp->rq_argp; 412*4b386d8dSChuck Lever 413*4b386d8dSChuck Lever return xdrgen_decode_nlm_shareargs(xdr, argp); 414*4b386d8dSChuck Lever } 415*4b386d8dSChuck Lever 416*4b386d8dSChuck Lever /** 417*4b386d8dSChuck Lever * nlm_svc_decode_nlm_notify - Decode a nlm_notify argument 418*4b386d8dSChuck Lever * @rqstp: RPC transaction context 419*4b386d8dSChuck Lever * @xdr: source XDR data stream 420*4b386d8dSChuck Lever * 421*4b386d8dSChuck Lever * Return values: 422*4b386d8dSChuck Lever * %true: procedure arguments decoded successfully 423*4b386d8dSChuck Lever * %false: decode failed 424*4b386d8dSChuck Lever */ 425*4b386d8dSChuck Lever bool nlm_svc_decode_nlm_notify(struct svc_rqst *rqstp, struct xdr_stream *xdr) 426*4b386d8dSChuck Lever { 427*4b386d8dSChuck Lever struct nlm_notify *argp = rqstp->rq_argp; 428*4b386d8dSChuck Lever 429*4b386d8dSChuck Lever return xdrgen_decode_nlm_notify(xdr, argp); 430*4b386d8dSChuck Lever } 431*4b386d8dSChuck Lever 432*4b386d8dSChuck Lever static bool __maybe_unused 433*4b386d8dSChuck Lever xdrgen_encode_netobj(struct xdr_stream *xdr, const netobj value) 434*4b386d8dSChuck Lever { 435*4b386d8dSChuck Lever return xdr_stream_encode_opaque(xdr, value.data, value.len) >= 0; 436*4b386d8dSChuck Lever } 437*4b386d8dSChuck Lever 438*4b386d8dSChuck Lever static bool __maybe_unused 439*4b386d8dSChuck Lever xdrgen_encode_nlm_stats(struct xdr_stream *xdr, nlm_stats value) 440*4b386d8dSChuck Lever { 441*4b386d8dSChuck Lever return xdr_stream_encode_be32(xdr, value) == XDR_UNIT; 442*4b386d8dSChuck Lever } 443*4b386d8dSChuck Lever 444*4b386d8dSChuck Lever static bool __maybe_unused 445*4b386d8dSChuck Lever xdrgen_encode_nlm_stat(struct xdr_stream *xdr, const struct nlm_stat *value) 446*4b386d8dSChuck Lever { 447*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_stats(xdr, value->stat)) 448*4b386d8dSChuck Lever return false; 449*4b386d8dSChuck Lever return true; 450*4b386d8dSChuck Lever } 451*4b386d8dSChuck Lever 452*4b386d8dSChuck Lever static bool __maybe_unused 453*4b386d8dSChuck Lever xdrgen_encode_nlm_res(struct xdr_stream *xdr, const struct nlm_res *value) 454*4b386d8dSChuck Lever { 455*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 456*4b386d8dSChuck Lever return false; 457*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_stat(xdr, &value->stat)) 458*4b386d8dSChuck Lever return false; 459*4b386d8dSChuck Lever return true; 460*4b386d8dSChuck Lever } 461*4b386d8dSChuck Lever 462*4b386d8dSChuck Lever static bool __maybe_unused 463*4b386d8dSChuck Lever xdrgen_encode_nlm_holder(struct xdr_stream *xdr, const struct nlm_holder *value) 464*4b386d8dSChuck Lever { 465*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->exclusive)) 466*4b386d8dSChuck Lever return false; 467*4b386d8dSChuck Lever if (!xdrgen_encode_int(xdr, value->uppid)) 468*4b386d8dSChuck Lever return false; 469*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->oh)) 470*4b386d8dSChuck Lever return false; 471*4b386d8dSChuck Lever if (!xdrgen_encode_unsigned_int(xdr, value->l_offset)) 472*4b386d8dSChuck Lever return false; 473*4b386d8dSChuck Lever if (!xdrgen_encode_unsigned_int(xdr, value->l_len)) 474*4b386d8dSChuck Lever return false; 475*4b386d8dSChuck Lever return true; 476*4b386d8dSChuck Lever } 477*4b386d8dSChuck Lever 478*4b386d8dSChuck Lever static bool __maybe_unused 479*4b386d8dSChuck Lever xdrgen_encode_nlm_testrply(struct xdr_stream *xdr, const struct nlm_testrply *ptr) 480*4b386d8dSChuck Lever { 481*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_stats(xdr, ptr->stat)) 482*4b386d8dSChuck Lever return false; 483*4b386d8dSChuck Lever switch (ptr->stat) { 484*4b386d8dSChuck Lever case __constant_cpu_to_be32(LCK_DENIED): 485*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_holder(xdr, &ptr->u.holder)) 486*4b386d8dSChuck Lever return false; 487*4b386d8dSChuck Lever break; 488*4b386d8dSChuck Lever default: 489*4b386d8dSChuck Lever break; 490*4b386d8dSChuck Lever } 491*4b386d8dSChuck Lever return true; 492*4b386d8dSChuck Lever } 493*4b386d8dSChuck Lever 494*4b386d8dSChuck Lever static bool __maybe_unused 495*4b386d8dSChuck Lever xdrgen_encode_nlm_testres(struct xdr_stream *xdr, const struct nlm_testres *value) 496*4b386d8dSChuck Lever { 497*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 498*4b386d8dSChuck Lever return false; 499*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_testrply(xdr, &value->test_stat)) 500*4b386d8dSChuck Lever return false; 501*4b386d8dSChuck Lever return true; 502*4b386d8dSChuck Lever } 503*4b386d8dSChuck Lever 504*4b386d8dSChuck Lever static bool __maybe_unused 505*4b386d8dSChuck Lever xdrgen_encode_nlm_lock(struct xdr_stream *xdr, const struct nlm_lock *value) 506*4b386d8dSChuck Lever { 507*4b386d8dSChuck Lever if (value->caller_name.len > LM_MAXSTRLEN) 508*4b386d8dSChuck Lever return false; 509*4b386d8dSChuck Lever if (xdr_stream_encode_opaque(xdr, value->caller_name.data, value->caller_name.len) < 0) 510*4b386d8dSChuck Lever return false; 511*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->fh)) 512*4b386d8dSChuck Lever return false; 513*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->oh)) 514*4b386d8dSChuck Lever return false; 515*4b386d8dSChuck Lever if (!xdrgen_encode_int(xdr, value->uppid)) 516*4b386d8dSChuck Lever return false; 517*4b386d8dSChuck Lever if (!xdrgen_encode_unsigned_int(xdr, value->l_offset)) 518*4b386d8dSChuck Lever return false; 519*4b386d8dSChuck Lever if (!xdrgen_encode_unsigned_int(xdr, value->l_len)) 520*4b386d8dSChuck Lever return false; 521*4b386d8dSChuck Lever return true; 522*4b386d8dSChuck Lever } 523*4b386d8dSChuck Lever 524*4b386d8dSChuck Lever static bool __maybe_unused 525*4b386d8dSChuck Lever xdrgen_encode_nlm_lockargs(struct xdr_stream *xdr, const struct nlm_lockargs *value) 526*4b386d8dSChuck Lever { 527*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 528*4b386d8dSChuck Lever return false; 529*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->block)) 530*4b386d8dSChuck Lever return false; 531*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->exclusive)) 532*4b386d8dSChuck Lever return false; 533*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_lock(xdr, &value->alock)) 534*4b386d8dSChuck Lever return false; 535*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->reclaim)) 536*4b386d8dSChuck Lever return false; 537*4b386d8dSChuck Lever if (!xdrgen_encode_int(xdr, value->state)) 538*4b386d8dSChuck Lever return false; 539*4b386d8dSChuck Lever return true; 540*4b386d8dSChuck Lever } 541*4b386d8dSChuck Lever 542*4b386d8dSChuck Lever static bool __maybe_unused 543*4b386d8dSChuck Lever xdrgen_encode_nlm_cancargs(struct xdr_stream *xdr, const struct nlm_cancargs *value) 544*4b386d8dSChuck Lever { 545*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 546*4b386d8dSChuck Lever return false; 547*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->block)) 548*4b386d8dSChuck Lever return false; 549*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->exclusive)) 550*4b386d8dSChuck Lever return false; 551*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_lock(xdr, &value->alock)) 552*4b386d8dSChuck Lever return false; 553*4b386d8dSChuck Lever return true; 554*4b386d8dSChuck Lever } 555*4b386d8dSChuck Lever 556*4b386d8dSChuck Lever static bool __maybe_unused 557*4b386d8dSChuck Lever xdrgen_encode_nlm_testargs(struct xdr_stream *xdr, const struct nlm_testargs *value) 558*4b386d8dSChuck Lever { 559*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 560*4b386d8dSChuck Lever return false; 561*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->exclusive)) 562*4b386d8dSChuck Lever return false; 563*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_lock(xdr, &value->alock)) 564*4b386d8dSChuck Lever return false; 565*4b386d8dSChuck Lever return true; 566*4b386d8dSChuck Lever } 567*4b386d8dSChuck Lever 568*4b386d8dSChuck Lever static bool __maybe_unused 569*4b386d8dSChuck Lever xdrgen_encode_nlm_unlockargs(struct xdr_stream *xdr, const struct nlm_unlockargs *value) 570*4b386d8dSChuck Lever { 571*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 572*4b386d8dSChuck Lever return false; 573*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_lock(xdr, &value->alock)) 574*4b386d8dSChuck Lever return false; 575*4b386d8dSChuck Lever return true; 576*4b386d8dSChuck Lever } 577*4b386d8dSChuck Lever 578*4b386d8dSChuck Lever static bool __maybe_unused 579*4b386d8dSChuck Lever xdrgen_encode_fsh_mode(struct xdr_stream *xdr, fsh_mode value) 580*4b386d8dSChuck Lever { 581*4b386d8dSChuck Lever return xdr_stream_encode_u32(xdr, value) == XDR_UNIT; 582*4b386d8dSChuck Lever } 583*4b386d8dSChuck Lever 584*4b386d8dSChuck Lever static bool __maybe_unused 585*4b386d8dSChuck Lever xdrgen_encode_fsh_access(struct xdr_stream *xdr, fsh_access value) 586*4b386d8dSChuck Lever { 587*4b386d8dSChuck Lever return xdr_stream_encode_u32(xdr, value) == XDR_UNIT; 588*4b386d8dSChuck Lever } 589*4b386d8dSChuck Lever 590*4b386d8dSChuck Lever static bool __maybe_unused 591*4b386d8dSChuck Lever xdrgen_encode_nlm_share(struct xdr_stream *xdr, const struct nlm_share *value) 592*4b386d8dSChuck Lever { 593*4b386d8dSChuck Lever if (value->caller_name.len > LM_MAXSTRLEN) 594*4b386d8dSChuck Lever return false; 595*4b386d8dSChuck Lever if (xdr_stream_encode_opaque(xdr, value->caller_name.data, value->caller_name.len) < 0) 596*4b386d8dSChuck Lever return false; 597*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->fh)) 598*4b386d8dSChuck Lever return false; 599*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->oh)) 600*4b386d8dSChuck Lever return false; 601*4b386d8dSChuck Lever if (!xdrgen_encode_fsh_mode(xdr, value->mode)) 602*4b386d8dSChuck Lever return false; 603*4b386d8dSChuck Lever if (!xdrgen_encode_fsh_access(xdr, value->access)) 604*4b386d8dSChuck Lever return false; 605*4b386d8dSChuck Lever return true; 606*4b386d8dSChuck Lever } 607*4b386d8dSChuck Lever 608*4b386d8dSChuck Lever static bool __maybe_unused 609*4b386d8dSChuck Lever xdrgen_encode_nlm_shareargs(struct xdr_stream *xdr, const struct nlm_shareargs *value) 610*4b386d8dSChuck Lever { 611*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 612*4b386d8dSChuck Lever return false; 613*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_share(xdr, &value->share)) 614*4b386d8dSChuck Lever return false; 615*4b386d8dSChuck Lever if (!xdrgen_encode_bool(xdr, value->reclaim)) 616*4b386d8dSChuck Lever return false; 617*4b386d8dSChuck Lever return true; 618*4b386d8dSChuck Lever } 619*4b386d8dSChuck Lever 620*4b386d8dSChuck Lever static bool __maybe_unused 621*4b386d8dSChuck Lever xdrgen_encode_nlm_shareres(struct xdr_stream *xdr, const struct nlm_shareres *value) 622*4b386d8dSChuck Lever { 623*4b386d8dSChuck Lever if (!xdrgen_encode_netobj(xdr, value->cookie)) 624*4b386d8dSChuck Lever return false; 625*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_stats(xdr, value->stat)) 626*4b386d8dSChuck Lever return false; 627*4b386d8dSChuck Lever if (!xdrgen_encode_int(xdr, value->sequence)) 628*4b386d8dSChuck Lever return false; 629*4b386d8dSChuck Lever return true; 630*4b386d8dSChuck Lever } 631*4b386d8dSChuck Lever 632*4b386d8dSChuck Lever static bool __maybe_unused 633*4b386d8dSChuck Lever xdrgen_encode_nlm_notify(struct xdr_stream *xdr, const struct nlm_notify *value) 634*4b386d8dSChuck Lever { 635*4b386d8dSChuck Lever if (value->name.len > LM_MAXNAMELEN) 636*4b386d8dSChuck Lever return false; 637*4b386d8dSChuck Lever if (xdr_stream_encode_opaque(xdr, value->name.data, value->name.len) < 0) 638*4b386d8dSChuck Lever return false; 639*4b386d8dSChuck Lever if (!xdrgen_encode_long(xdr, value->state)) 640*4b386d8dSChuck Lever return false; 641*4b386d8dSChuck Lever return true; 642*4b386d8dSChuck Lever } 643*4b386d8dSChuck Lever 644*4b386d8dSChuck Lever static bool __maybe_unused 645*4b386d8dSChuck Lever xdrgen_encode_nlm_notifyargs(struct xdr_stream *xdr, const struct nlm_notifyargs *value) 646*4b386d8dSChuck Lever { 647*4b386d8dSChuck Lever if (!xdrgen_encode_nlm_notify(xdr, &value->notify)) 648*4b386d8dSChuck Lever return false; 649*4b386d8dSChuck Lever if (xdr_stream_encode_opaque_fixed(xdr, value->private, SM_PRIV_SIZE) < 0) 650*4b386d8dSChuck Lever return false; 651*4b386d8dSChuck Lever return true; 652*4b386d8dSChuck Lever } 653*4b386d8dSChuck Lever 654*4b386d8dSChuck Lever /** 655*4b386d8dSChuck Lever * nlm_svc_encode_void - Encode a void result 656*4b386d8dSChuck Lever * @rqstp: RPC transaction context 657*4b386d8dSChuck Lever * @xdr: target XDR data stream 658*4b386d8dSChuck Lever * 659*4b386d8dSChuck Lever * Return values: 660*4b386d8dSChuck Lever * %true: procedure results encoded successfully 661*4b386d8dSChuck Lever * %false: encode failed 662*4b386d8dSChuck Lever */ 663*4b386d8dSChuck Lever bool nlm_svc_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) 664*4b386d8dSChuck Lever { 665*4b386d8dSChuck Lever return xdrgen_encode_void(xdr); 666*4b386d8dSChuck Lever } 667*4b386d8dSChuck Lever 668*4b386d8dSChuck Lever /** 669*4b386d8dSChuck Lever * nlm_svc_encode_nlm_testres - Encode a nlm_testres result 670*4b386d8dSChuck Lever * @rqstp: RPC transaction context 671*4b386d8dSChuck Lever * @xdr: target XDR data stream 672*4b386d8dSChuck Lever * 673*4b386d8dSChuck Lever * Return values: 674*4b386d8dSChuck Lever * %true: procedure results encoded successfully 675*4b386d8dSChuck Lever * %false: encode failed 676*4b386d8dSChuck Lever */ 677*4b386d8dSChuck Lever bool nlm_svc_encode_nlm_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr) 678*4b386d8dSChuck Lever { 679*4b386d8dSChuck Lever struct nlm_testres *resp = rqstp->rq_resp; 680*4b386d8dSChuck Lever 681*4b386d8dSChuck Lever return xdrgen_encode_nlm_testres(xdr, resp); 682*4b386d8dSChuck Lever } 683*4b386d8dSChuck Lever 684*4b386d8dSChuck Lever /** 685*4b386d8dSChuck Lever * nlm_svc_encode_nlm_res - Encode a nlm_res result 686*4b386d8dSChuck Lever * @rqstp: RPC transaction context 687*4b386d8dSChuck Lever * @xdr: target XDR data stream 688*4b386d8dSChuck Lever * 689*4b386d8dSChuck Lever * Return values: 690*4b386d8dSChuck Lever * %true: procedure results encoded successfully 691*4b386d8dSChuck Lever * %false: encode failed 692*4b386d8dSChuck Lever */ 693*4b386d8dSChuck Lever bool nlm_svc_encode_nlm_res(struct svc_rqst *rqstp, struct xdr_stream *xdr) 694*4b386d8dSChuck Lever { 695*4b386d8dSChuck Lever struct nlm_res *resp = rqstp->rq_resp; 696*4b386d8dSChuck Lever 697*4b386d8dSChuck Lever return xdrgen_encode_nlm_res(xdr, resp); 698*4b386d8dSChuck Lever } 699*4b386d8dSChuck Lever 700*4b386d8dSChuck Lever /** 701*4b386d8dSChuck Lever * nlm_svc_encode_nlm_shareres - Encode a nlm_shareres result 702*4b386d8dSChuck Lever * @rqstp: RPC transaction context 703*4b386d8dSChuck Lever * @xdr: target XDR data stream 704*4b386d8dSChuck Lever * 705*4b386d8dSChuck Lever * Return values: 706*4b386d8dSChuck Lever * %true: procedure results encoded successfully 707*4b386d8dSChuck Lever * %false: encode failed 708*4b386d8dSChuck Lever */ 709*4b386d8dSChuck Lever bool nlm_svc_encode_nlm_shareres(struct svc_rqst *rqstp, struct xdr_stream *xdr) 710*4b386d8dSChuck Lever { 711*4b386d8dSChuck Lever struct nlm_shareres *resp = rqstp->rq_resp; 712*4b386d8dSChuck Lever 713*4b386d8dSChuck Lever return xdrgen_encode_nlm_shareres(xdr, resp); 714*4b386d8dSChuck Lever } 715