linux/fs/nfs/callback_xdr.c
<<
>>
Prefs
   1/*
   2 * linux/fs/nfs/callback_xdr.c
   3 *
   4 * Copyright (C) 2004 Trond Myklebust
   5 *
   6 * NFSv4 callback encode/decode procedures
   7 */
   8#include <linux/kernel.h>
   9#include <linux/sunrpc/svc.h>
  10#include <linux/nfs4.h>
  11#include <linux/nfs_fs.h>
  12#include <linux/ratelimit.h>
  13#include <linux/printk.h>
  14#include <linux/slab.h>
  15#include <linux/sunrpc/bc_xprt.h>
  16#include "nfs4_fs.h"
  17#include "callback.h"
  18#include "internal.h"
  19
  20#define CB_OP_TAGLEN_MAXSZ      (512)
  21#define CB_OP_HDR_RES_MAXSZ     (2 + CB_OP_TAGLEN_MAXSZ)
  22#define CB_OP_GETATTR_BITMAP_MAXSZ      (4)
  23#define CB_OP_GETATTR_RES_MAXSZ (CB_OP_HDR_RES_MAXSZ + \
  24                                CB_OP_GETATTR_BITMAP_MAXSZ + \
  25                                2 + 2 + 3 + 3)
  26#define CB_OP_RECALL_RES_MAXSZ  (CB_OP_HDR_RES_MAXSZ)
  27
  28#if defined(CONFIG_NFS_V4_1)
  29#define CB_OP_LAYOUTRECALL_RES_MAXSZ    (CB_OP_HDR_RES_MAXSZ)
  30#define CB_OP_DEVICENOTIFY_RES_MAXSZ    (CB_OP_HDR_RES_MAXSZ)
  31#define CB_OP_SEQUENCE_RES_MAXSZ        (CB_OP_HDR_RES_MAXSZ + \
  32                                        4 + 1 + 3)
  33#define CB_OP_RECALLANY_RES_MAXSZ       (CB_OP_HDR_RES_MAXSZ)
  34#define CB_OP_RECALLSLOT_RES_MAXSZ      (CB_OP_HDR_RES_MAXSZ)
  35#endif /* CONFIG_NFS_V4_1 */
  36
  37#define NFSDBG_FACILITY NFSDBG_CALLBACK
  38
  39/* Internal error code */
  40#define NFS4ERR_RESOURCE_HDR    11050
  41
  42typedef __be32 (*callback_process_op_t)(void *, void *,
  43                                        struct cb_process_state *);
  44typedef __be32 (*callback_decode_arg_t)(struct svc_rqst *, struct xdr_stream *, void *);
  45typedef __be32 (*callback_encode_res_t)(struct svc_rqst *, struct xdr_stream *, void *);
  46
  47
  48struct callback_op {
  49        callback_process_op_t process_op;
  50        callback_decode_arg_t decode_args;
  51        callback_encode_res_t encode_res;
  52        long res_maxsize;
  53};
  54
  55static struct callback_op callback_ops[];
  56
  57static __be32 nfs4_callback_null(struct svc_rqst *rqstp, void *argp, void *resp)
  58{
  59        return htonl(NFS4_OK);
  60}
  61
  62static int nfs4_decode_void(struct svc_rqst *rqstp, __be32 *p, void *dummy)
  63{
  64        return xdr_argsize_check(rqstp, p);
  65}
  66
  67static int nfs4_encode_void(struct svc_rqst *rqstp, __be32 *p, void *dummy)
  68{
  69        return xdr_ressize_check(rqstp, p);
  70}
  71
  72static __be32 *read_buf(struct xdr_stream *xdr, int nbytes)
  73{
  74        __be32 *p;
  75
  76        p = xdr_inline_decode(xdr, nbytes);
  77        if (unlikely(p == NULL))
  78                printk(KERN_WARNING "NFS: NFSv4 callback reply buffer overflowed!\n");
  79        return p;
  80}
  81
  82static __be32 decode_string(struct xdr_stream *xdr, unsigned int *len, const char **str)
  83{
  84        __be32 *p;
  85
  86        p = read_buf(xdr, 4);
  87        if (unlikely(p == NULL))
  88                return htonl(NFS4ERR_RESOURCE);
  89        *len = ntohl(*p);
  90
  91        if (*len != 0) {
  92                p = read_buf(xdr, *len);
  93                if (unlikely(p == NULL))
  94                        return htonl(NFS4ERR_RESOURCE);
  95                *str = (const char *)p;
  96        } else
  97                *str = NULL;
  98
  99        return 0;
 100}
 101
 102static __be32 decode_fh(struct xdr_stream *xdr, struct nfs_fh *fh)
 103{
 104        __be32 *p;
 105
 106        p = read_buf(xdr, 4);
 107        if (unlikely(p == NULL))
 108                return htonl(NFS4ERR_RESOURCE);
 109        fh->size = ntohl(*p);
 110        if (fh->size > NFS4_FHSIZE)
 111                return htonl(NFS4ERR_BADHANDLE);
 112        p = read_buf(xdr, fh->size);
 113        if (unlikely(p == NULL))
 114                return htonl(NFS4ERR_RESOURCE);
 115        memcpy(&fh->data[0], p, fh->size);
 116        memset(&fh->data[fh->size], 0, sizeof(fh->data) - fh->size);
 117        return 0;
 118}
 119
 120static __be32 decode_bitmap(struct xdr_stream *xdr, uint32_t *bitmap)
 121{
 122        __be32 *p;
 123        unsigned int attrlen;
 124
 125        p = read_buf(xdr, 4);
 126        if (unlikely(p == NULL))
 127                return htonl(NFS4ERR_RESOURCE);
 128        attrlen = ntohl(*p);
 129        p = read_buf(xdr, attrlen << 2);
 130        if (unlikely(p == NULL))
 131                return htonl(NFS4ERR_RESOURCE);
 132        if (likely(attrlen > 0))
 133                bitmap[0] = ntohl(*p++);
 134        if (attrlen > 1)
 135                bitmap[1] = ntohl(*p);
 136        return 0;
 137}
 138
 139static __be32 decode_stateid(struct xdr_stream *xdr, nfs4_stateid *stateid)
 140{
 141        __be32 *p;
 142
 143        p = read_buf(xdr, NFS4_STATEID_SIZE);
 144        if (unlikely(p == NULL))
 145                return htonl(NFS4ERR_RESOURCE);
 146        memcpy(stateid, p, NFS4_STATEID_SIZE);
 147        return 0;
 148}
 149
 150static __be32 decode_compound_hdr_arg(struct xdr_stream *xdr, struct cb_compound_hdr_arg *hdr)
 151{
 152        __be32 *p;
 153        __be32 status;
 154
 155        status = decode_string(xdr, &hdr->taglen, &hdr->tag);
 156        if (unlikely(status != 0))
 157                return status;
 158        /* We do not like overly long tags! */
 159        if (hdr->taglen > CB_OP_TAGLEN_MAXSZ - 12) {
 160                printk("NFS: NFSv4 CALLBACK %s: client sent tag of length %u\n",
 161                                __func__, hdr->taglen);
 162                return htonl(NFS4ERR_RESOURCE);
 163        }
 164        p = read_buf(xdr, 12);
 165        if (unlikely(p == NULL))
 166                return htonl(NFS4ERR_RESOURCE);
 167        hdr->minorversion = ntohl(*p++);
 168        /* Check minor version is zero or one. */
 169        if (hdr->minorversion <= 1) {
 170                hdr->cb_ident = ntohl(*p++); /* ignored by v4.1 */
 171        } else {
 172                pr_warn_ratelimited("NFS: %s: NFSv4 server callback with "
 173                        "illegal minor version %u!\n",
 174                        __func__, hdr->minorversion);
 175                return htonl(NFS4ERR_MINOR_VERS_MISMATCH);
 176        }
 177        hdr->nops = ntohl(*p);
 178        dprintk("%s: minorversion %d nops %d\n", __func__,
 179                hdr->minorversion, hdr->nops);
 180        return 0;
 181}
 182
 183static __be32 decode_op_hdr(struct xdr_stream *xdr, unsigned int *op)
 184{
 185        __be32 *p;
 186        p = read_buf(xdr, 4);
 187        if (unlikely(p == NULL))
 188                return htonl(NFS4ERR_RESOURCE_HDR);
 189        *op = ntohl(*p);
 190        return 0;
 191}
 192
 193static __be32 decode_getattr_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, struct cb_getattrargs *args)
 194{
 195        __be32 status;
 196
 197        status = decode_fh(xdr, &args->fh);
 198        if (unlikely(status != 0))
 199                goto out;
 200        args->addr = svc_addr(rqstp);
 201        status = decode_bitmap(xdr, args->bitmap);
 202out:
 203        dprintk("%s: exit with status = %d\n", __func__, ntohl(status));
 204        return status;
 205}
 206
 207static __be32 decode_recall_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, struct cb_recallargs *args)
 208{
 209        __be32 *p;
 210        __be32 status;
 211
 212        args->addr = svc_addr(rqstp);
 213        status = decode_stateid(xdr, &args->stateid);
 214        if (unlikely(status != 0))
 215                goto out;
 216        p = read_buf(xdr, 4);
 217        if (unlikely(p == NULL)) {
 218                status = htonl(NFS4ERR_RESOURCE);
 219                goto out;
 220        }
 221        args->truncate = ntohl(*p);
 222        status = decode_fh(xdr, &args->fh);
 223out:
 224        dprintk("%s: exit with status = %d\n", __func__, ntohl(status));
 225        return status;
 226}
 227
 228#if defined(CONFIG_NFS_V4_1)
 229
 230static __be32 decode_layoutrecall_args(struct svc_rqst *rqstp,
 231                                       struct xdr_stream *xdr,
 232                                       struct cb_layoutrecallargs *args)
 233{
 234        __be32 *p;
 235        __be32 status = 0;
 236        uint32_t iomode;
 237
 238        args->cbl_addr = svc_addr(rqstp);
 239        p = read_buf(xdr, 4 * sizeof(uint32_t));
 240        if (unlikely(p == NULL)) {
 241                status = htonl(NFS4ERR_BADXDR);
 242                goto out;
 243        }
 244
 245        args->cbl_layout_type = ntohl(*p++);
 246        /* Depite the spec's xdr, iomode really belongs in the FILE switch,
 247         * as it is unusable and ignored with the other types.
 248         */
 249        iomode = ntohl(*p++);
 250        args->cbl_layoutchanged = ntohl(*p++);
 251        args->cbl_recall_type = ntohl(*p++);
 252
 253        if (args->cbl_recall_type == RETURN_FILE) {
 254                args->cbl_range.iomode = iomode;
 255                status = decode_fh(xdr, &args->cbl_fh);
 256                if (unlikely(status != 0))
 257                        goto out;
 258
 259                p = read_buf(xdr, 2 * sizeof(uint64_t));
 260                if (unlikely(p == NULL)) {
 261                        status = htonl(NFS4ERR_BADXDR);
 262                        goto out;
 263                }
 264                p = xdr_decode_hyper(p, &args->cbl_range.offset);
 265                p = xdr_decode_hyper(p, &args->cbl_range.length);
 266                status = decode_stateid(xdr, &args->cbl_stateid);
 267                if (unlikely(status != 0))
 268                        goto out;
 269        } else if (args->cbl_recall_type == RETURN_FSID) {
 270                p = read_buf(xdr, 2 * sizeof(uint64_t));
 271                if (unlikely(p == NULL)) {
 272                        status = htonl(NFS4ERR_BADXDR);
 273                        goto out;
 274                }
 275                p = xdr_decode_hyper(p, &args->cbl_fsid.major);
 276                p = xdr_decode_hyper(p, &args->cbl_fsid.minor);
 277        } else if (args->cbl_recall_type != RETURN_ALL) {
 278                status = htonl(NFS4ERR_BADXDR);
 279                goto out;
 280        }
 281        dprintk("%s: ltype 0x%x iomode %d changed %d recall_type %d\n",
 282                __func__,
 283                args->cbl_layout_type, iomode,
 284                args->cbl_layoutchanged, args->cbl_recall_type);
 285out:
 286        dprintk("%s: exit with status = %d\n", __func__, ntohl(status));
 287        return status;
 288}
 289
 290static
 291__be32 decode_devicenotify_args(struct svc_rqst *rqstp,
 292                                struct xdr_stream *xdr,
 293                                struct cb_devicenotifyargs *args)
 294{
 295        __be32 *p;
 296        __be32 status = 0;
 297        u32 tmp;
 298        int n, i;
 299        args->ndevs = 0;
 300
 301        /* Num of device notifications */
 302        p = read_buf(xdr, sizeof(uint32_t));
 303        if (unlikely(p == NULL)) {
 304                status = htonl(NFS4ERR_BADXDR);
 305                goto out;
 306        }
 307        n = ntohl(*p++);
 308        if (n <= 0)
 309                goto out;
 310        if (n > ULONG_MAX / sizeof(*args->devs)) {
 311                status = htonl(NFS4ERR_BADXDR);
 312                goto out;
 313        }
 314
 315        args->devs = kmalloc(n * sizeof(*args->devs), GFP_KERNEL);
 316        if (!args->devs) {
 317                status = htonl(NFS4ERR_DELAY);
 318                goto out;
 319        }
 320
 321        /* Decode each dev notification */
 322        for (i = 0; i < n; i++) {
 323                struct cb_devicenotifyitem *dev = &args->devs[i];
 324
 325                p = read_buf(xdr, (4 * sizeof(uint32_t)) + NFS4_DEVICEID4_SIZE);
 326                if (unlikely(p == NULL)) {
 327                        status = htonl(NFS4ERR_BADXDR);
 328                        goto err;
 329                }
 330
 331                tmp = ntohl(*p++);      /* bitmap size */
 332                if (tmp != 1) {
 333                        status = htonl(NFS4ERR_INVAL);
 334                        goto err;
 335                }
 336                dev->cbd_notify_type = ntohl(*p++);
 337                if (dev->cbd_notify_type != NOTIFY_DEVICEID4_CHANGE &&
 338                    dev->cbd_notify_type != NOTIFY_DEVICEID4_DELETE) {
 339                        status = htonl(NFS4ERR_INVAL);
 340                        goto err;
 341                }
 342
 343                tmp = ntohl(*p++);      /* opaque size */
 344                if (((dev->cbd_notify_type == NOTIFY_DEVICEID4_CHANGE) &&
 345                     (tmp != NFS4_DEVICEID4_SIZE + 8)) ||
 346                    ((dev->cbd_notify_type == NOTIFY_DEVICEID4_DELETE) &&
 347                     (tmp != NFS4_DEVICEID4_SIZE + 4))) {
 348                        status = htonl(NFS4ERR_INVAL);
 349                        goto err;
 350                }
 351                dev->cbd_layout_type = ntohl(*p++);
 352                memcpy(dev->cbd_dev_id.data, p, NFS4_DEVICEID4_SIZE);
 353                p += XDR_QUADLEN(NFS4_DEVICEID4_SIZE);
 354
 355                if (dev->cbd_layout_type == NOTIFY_DEVICEID4_CHANGE) {
 356                        p = read_buf(xdr, sizeof(uint32_t));
 357                        if (unlikely(p == NULL)) {
 358                                status = htonl(NFS4ERR_BADXDR);
 359                                goto err;
 360                        }
 361                        dev->cbd_immediate = ntohl(*p++);
 362                } else {
 363                        dev->cbd_immediate = 0;
 364                }
 365
 366                args->ndevs++;
 367
 368                dprintk("%s: type %d layout 0x%x immediate %d\n",
 369                        __func__, dev->cbd_notify_type, dev->cbd_layout_type,
 370                        dev->cbd_immediate);
 371        }
 372out:
 373        dprintk("%s: status %d ndevs %d\n",
 374                __func__, ntohl(status), args->ndevs);
 375        return status;
 364        /callback_xdr.c#L277" id="L277" c3ass="37ne" name="L307"> 307    kfre"+code=cbd_immedkfre" class="sref">ntohlargs->status;
out;
 371        }
 330
 230static __be32 xdr_stream *xdr,
 282<<<<<<<<<<<<<<<<<<                   strrxdr_streamn <= 0)
 233{
 230static __be32 *p;
 298        lelt; cbd_immediatep;
p;
 307        p = read_buf(        lelt; status;
 308        if (unlikely(p == status;
 369<5"> 375        ret> = htonl(status;
 330
 281        memcpyargs-&a>.data, pstatus;
 375bd_immediate = 0;
 371        }
 354
 230static __be32 xdr_stream *xdr,
 356     <<<<<<<                   str      a>(_classli href="+code=svc_      a>(_classli hs="sref">xdr_streamstatus;
 233{
 238    tic __be32 *p;
 298        a>, i;
 250        __be32 i;
i;
 302        status = read_buf(dev = &rc_li href="+code=svc_rc_li h claass="sref">args-rcl hession"+code=decode_starcl hession"+srefas="sref">status;
 303        /a>(status;
 304                goto out;
 365
 296        status = htonl(status;
 307        p = read_buf(xdr, sizeof(uint32_t));
 308        if (unlikely(p == status;
 309                goto out;
 330
 281    rc_li href="+code=svc_rc_li h claass="sref">args-rcl n">aa>
aa>
p = ntohl(*p++);
 308        rc_li href="+code=svc_rc_li h claass="sref">args-rcl n">aa>
aa>
NULL)) {
 353                p = read_buf(NULL)) {
 334     ="L281"> 281    rc_li href="+code=svc_rc_li h claass="sref">args-rcl n">aa>
aa>
xdr, 2 * sizeof(uint32_t));
 355                if (unlikely(p == status;
 356     /a>                goto out;
 317            rc_li href="+code=svc_rc_li h claass="sref">args-rcl ">aa>
aa>
p = kmallocargs-rcl n">aa>
aa>
out;
 318<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<n * sizerc_li href="+code=svc_rc_li h claass="sref">args-rcl ">aa>
aa>
NULL)) {
 359             ame="L317"> 317            >), GFP_KERNEL);
 260                if (unlikelyargs-rcl ">aa>
aa>
p == status;
 361     /a>                goto out;
 282<2"> 322        for (i = 0; i &rc_li href="+code=svc_rc_li h claass="sref">args-rcl n">aa>
aa>
n; i++) {
 323<7"> 317            rc_li href="+code=svc_rc_li h claass="sref">args-rcl ">aa>
aa>
devs[cbd_dev_idp = ntohl(*p++);
 334     /a>            rc_li href="+code=svc_rc_li h claass="sref">args-rcl ">aa>
aa>
devs[cbd_dev_idp = ntohl(*p++);
 325<1"> 371        }
 306        }
 307    /a> status = 0;
status = 0;
 364      4s/callbac4_xdr.c#L330" id="L330" c4ass="43ne" name="L265"> 375        return status;
 306        }
 342
 230static __be32 svc_rqst *rqstp,
 334                                        struct xdr_stream *xdr,
 335                                        strcb_sequencrode=cb_devicenotifyargsequencrode=s="sref">xdr_stream *args)
i++) {
 307    tic __be32 *p;
 298        a>, i;
 250        __be32 i;
 330
 281        status = read_buf(dev = &a>, args-&sa hession"+code=decode_sta&sa hession"+s="sref">GFP_KERNEL);
 308        /a>(status;
 343                goto out;
 354
 296        status = htonl(status;
 296        p = read_buf(xdr, 2 * sizeof(uint32_t));
unlikely(p == status;
 348                goto out;
 289
 250    a>, args-&sa ada>(p(unlikely *uint32_t));
 281    a>, args-&sa hequencref="+code=cbl_sta&sa hequencrefe=p" class="sref">p = ntohl(*p++);
 302    a>, args-&sa hlotef="+code=cbl_sta&sa hlotefe=p" class="sref">p = ntohl(*p++);
 302    a>, args-&sa highesthlotef="+code=cbl_sta&sa highesthlotefe=p" class="sref">p = ntohl(*p++);
 230staa>, args-&sa cachethi=cb_devicenotifyasa cachethi=e=p" class="sref">p = ntohl(*p++);
 296    a>, args-&sa nrcli h=cb_devicenotifyasa nrcli h=e=p" class="sref">p = ntohl(*p++);
 296    a>, args-&sa rcli h=cb_devicenotifyasa rcli h=e=p" class="sref">pp++);
args-&sa nrcli h=cb_devicenotifyasa nrcli h=e=p"lass="sref">i++) {
 358<6"> 296    a>, args-&sa rcli h=cb_devicenotifyasa rcli h=e=p" class="sref">punlikely, args-&sa nrcli h=cb_devicenotifyasa nrcli h=e=p"lass="sref">xdr,
 359                               ass="sref">n * sizeof(*args-&sa rcli h=cb_devicenotifyasa rcli h=e=p")l"sref">NULL)) {
 360                               sref">args->), GFP_KERNEL);
 361                if (unlikely, args-&sa rcli h=cb_devicenotifyasa rcli h=e=p" class="sref">p == status;
 362<<<<<<<<                goto out;
out;
 364<2"> 322        for (i = 0; i &a>, args-&sa nrcli h=cb_devicenotifyasa nrcli h=e=p" class="sref">n; i++) {
 335     1"> 281        status = read_buf(dev = &a>, args-&sa rcli h=cb_devicenotifyasa rcli h=e=p"ass="sref">devs[GFP_KERNEL);
 366<1"> 361                /a>(status;
 357     <<<<<<<                goto_fre"+code=cbd_immedoto_fre"t" class="sref">out;
 368<6"> 306        }
 306        }
 250    /a> status = 0;
i;
 302        dprintk(i;
 343<"sref">dprintk(,
 374                 335<                 udev = &a>, args-&sa hession"+code=decode_sta&sa hession"+s="sr[0]"7;d\n",
 366<                 udev = &a>, args-&sa hession"+code=decode_sta&sa hession"+s="sr[1]"7;d\n",
 357<                 udev = &a>, args-&sa hession"+code=decode_sta&sa hession"+s="sr[2]"7;d\n",
 368<                 udev = &a>, args-&sa hession"+code=decode_sta&sa hession"+s="sr[3]"7;d\n",
 359<1"> 281    a>, args-&sa hequencref="+code=cbl_sta&sa hequencrefe=p"="sref">status), args-&sa hlotef="+code=cbl_sta&sa hlotefe=p""7;d\n",
 360<2"> 302    a>, args-&sa highesthlotef="+code=cbl_sta&sa highesthlotefe=p"="sref">status), args-&sa cachethi=cb_devicenotifyasa cachethi=e=p""7;d\n",
 351            a>, args-&sa nrcli h=cb_devicenotifyasa nrcli h=e=p"lref">status = 0;
 372out:
 373        dprintk(&q=status %d ndevs                 __func__, ntohl(status = 0;
 375        return status;
 365
out:
 322        for (i = 0; i &a>, args-&sa nrcli h=cb_devicenotifyasa nrcli h=e=p" class="sref">n; out:
 358<6"> 296    kfre"+code=cbd_immedkfre" class="sref">ntohlargs-&sa rcli h=cb_devicenotifyasa rcli h=e=p"ass="sref">devs[cbd_dev_idaa>
aa>
status;
 250    kfre"+code=cbd_immedkfre" class="sref">ntohlargs-&sa rcli h=cb_devicenotifyasa rcli h=e=p")s="sref">status;
out;
 306        }
 342
 230static __be32 

svc_rqst *rqstp,
 334                                      struct xdr_stream *xdr,
 335                                      strcb_rea>

xdr_stream *args)
i++) {
 307    eof( 307    bitmaout;
 238    tic __be32 *__func__status;
 289
 250    f (!args-&raa ada>(status(unlikely *uint32_t));
 281        p = read_buf(uint32_t));
 308        if (unlikely(p == status;
 343<5"> 375        ret> = htonl(NFS4ERR_BADXDR);
 230staa>, args-&raa objs_to_kee/a>(p = ntohl(*p++);
 296        statusread_buf( 307    bitmap++);
 308        if (unlikely(p++);
 357<5"> 375        return status;
 238    a>, args-&raa ="sr_mas href="+code=dpr&raa ="sr_mas class="sref">statusout;
 289
 375sref">status = 0;
 306        }
 342
 230static __be32 

svc_rqst *rqstp,
 334     ="L28                              struct xdr_stream *xdr,
 355     ="L28                              strargrea>

xdr_stream *args)
i++) {
 307    tic __be32 *p;
status = 0;
 250    a>, args-&rsa ada>(status(unlikely *uint32_t));
 250        p = read_buf(uint32_t));
 308        if (unlikely(p == status;
 282<5"> 375        ret> = htonl(NFS4ERR_BADXDR);
 373    a>, args-&rsa todeet_max hlot=cb_devicenotifyarsa todeet_max hlot=e=p" class="sref">p = ntohl(*p++);
 375sref">status = 0;
 306        }
p;
"sref">dprintcomment">/* CONFIG_DXD_V4_1 */devs &#class="sref">i;
status = 0;
 230static __be32(( clas                   struct xdr_stream * 298        lelt; xdr_stream(args)
i++) {
 281    tic __be32 *p;
 342
 373        pread_buf(        lelt; p++);
 308        if (unlikely(p == status;
 335<5"> 375        ret> = htonl(status;
 296    reamengs" copaqu"+code=cbd_immedreamengs" copaqu"ass="sref">unlikely(__func__(pstatus;
 375sref">status = 0;
 306        }
 289
punlikelyunlikelyargs)
punlikelyunlikelyargs)
 230static __be32xdr_stream *        iof(xdr_stream              c xdr_stream(args)
 233{
 230static xdr_streamout;
 296    tic __be32 *p;
p;
 307    bef="+code=xdr_stbss="sa0]s="sref">status = htonlpstatus;
 238    bef="+code=xdr_stbss="sa1]s="sref">status = htonlpstatus;
 308        bef="+code=xdr_stbss="sa1]s!= 0lass="sref">i++) {
 373        pread_buf(status;
 361                if (unlikely(p == status;
 282<5"> 335<5"> 375        ret> = htonl(status;
 343ntohl(*status = status;
 334ntohl(*statusstatus;
 335ntohl(*statusstatus;
 308        bef="+code=xdr_stbss="sa0]s!= 0lass="sref">i++) {
 317                pread_buf(status;
 358                if (unlikely(p == status;
 359     5"> 375        ret> = htonl(status;
 360ntohl(*status = status;
 361ntohl(*statusstatus;
i++) {
 353                pread_buf(status;
 364                if (unlikely(p == status;
 335     5"> 375        ret> = htonl(status;
 366ntohl(*status = status;
 306        }
xdr_stream(status *p;
 375sref">status = 0;
 306        }
i;
 230static __be32xdr_stream *        iof(xdr_stream            32_t64 href="+code=uint32_t64 hclass="sref">__be32status;
 233{
 230static __be32 *p;
 365
 !ss="sref">htonlpstatus;
 357<5"> 375sref">status = 0;
 238        pread_buf(status;
 308        if ( 238        status;
 360<5"> 375        ret> = htonl(status;
 281        p(ass="sref">unlikely(            chang"+code=cbd_immedchang" class="sref">status;
 375sref">status = 0;
 306        }
 354
 230static __be32xdr_stream *        iof(xdr_stream            32_t64 href="+code=uint32_t64 hclass="sref">__be32status;
i++) {
 307    tic __be32 *p;
status = 0;
 !ss="sref">htonlpstatus;
 360<5"> 375sref">status = 0;
 281        pread_buf(status;
 308        if ( 238        status;
 343<5"> 375        ret> = htonl(status;
 230sta    p(ass="sref">unlikely(            ass=+code=cbd_immedass= class="sref">status;
 375sref">status = 0;
 306        }
 306        }
 230static __be32xdr_stream *xdr_streamstatus;
i++) {
 250    tic __be32 *p;
i;
 281        pread_buf(status;
 308        if ( 238        status;
 364<5"> 375        ret> = htonl(status;
 296        p(ass="sref">unlikely(            tim=+code=cbd_immedtim= claass="sref">args-tv_sec*status;
__be32 *status = htonlargs-tv_nsec*status;
 375sref">status = 0;
 306        }
 289
 230static __be32xdr_stream *        iof(xdr_streamxdr_streamstatus;
i++) {
 !ss="sref">htonlpstatus;
 343<5"> 375sref">status = 0;
 375        retengs" cattrctim=+code=cbd_immedengs" cattrctim= clasf">xdr_stream *xdr_streamstatus = 0;
 306        }
p;
 230static __be32xdr_stream *        iof(xdr_streamxdr_streamstatus;
i++) {
 !ss="sref">htonlpstatus;
 360<5"> 375sref">status = 0;
 375        retengs" cattrctim=+code=cbd_immedengs" cattrctim= clasf">xdr_stream *xdr_streamstatus = 0;
 306        }
out;
 230static __be32xdr_stream *xdr_stream *args)
i++) {
 296    tic __be32status;
 306        }
 238    h> *args-    statusread_buf(uint32_t));
 308        if ( 238    h> *args-    p == status;
 360<5"> 375        ret> = htonl(status;
 281        status(( classref">read_buf( 238    h> *args-taglelt;  238    h> *args-tagt; status;
 308        if (unlikely<    status;
 343<5"> 375        return status;
 230stah> *args-nopa href="+code=stnopaclass="sref">statusread_buf(uint32_t));
 308        if ( 238    h> *args-nopa href="+code=stnopaclass=lass="sref">p == status;
 366<5"> 375        ret> = htonl(status;
 375sref">status = 0;
 306        }
 289
 230static __be32 *  clas                   struct xdr_stream *        iof(        o              c             res+code=cbd_immedress="ss="sref">status;
i++) {
 281    tic __be32 *p;
p;
 230sta    pread_buf(status;
 308        if ( 238    /a>(p == status;
 366<5"> 375        ret> = htonl(status;
ntohl(*status =         ostatus;
xdr_streamp s+code=cbd_immedress="ss="sref">status;
 375sref">status = 0;
 306        }
i;
 230static __be32svc_rqst *xdr_stream *svc_rqststatus;
 233{
 230static __be32(statusstatus = 0;
 296    tic __be32p s+code=cbd_immedress="sass="sref">args-    status = 0;
status = 0;
 308        if (unlikely<    status;
 358                goto out;
 250        statusxdr_stream *        > s+code=cbd_immedress="sass="sref">args-bitma__be32(status;
 308        if (unlikely<    status;
 361                goto out;
 281        statusxdr_stream *        > s+code=cbd_immedress="sass="sref">args-bitma        > s+code=cbd_immedress="sass="sref">args-chang"cattr+code=cbd_immedahang"cattr" clas="sref">status;
 308        if (unlikely<    status;
 364                goto out;
 296        statusxdr_stream *        > s+code=cbd_immedress="sass="sref">args-bitma        > s+code=cbd_immedress="sass="sref">args-ass=+code=cbd_immedass= class="sref">status;
 308        if (unlikely(status;
 357                goto out;
 238        statusxdr_stream *        > s+code=cbd_immedress="sass="sref">args-bitma__be32 s+code=cbd_immedress="sass="sref">args-ctim=+code=cbd_immedctim= clasref">status = 0;
 308        if ( 238    /a>(status;
 360                goto out;
 281        statusxdr_stream *        > s+code=cbd_immedress="sass="sref">args-bitma__be32 s+code=cbd_immedress="sass="sref">args-mtim=+code=cbd_immedmtim= clasref">status = 0;
__be32(status = )((charre)f">xdr_stream *args-     238    /ave/a>(status = 0;
status = 0;
 230stadpr8">k k clasfsref">dprintk(<>"%s: exit with atus" s="%d\n"devs               func__ href="+code=__befunc__r" cl 308        > =  281        status = 0;
 375sref">args-    status = 0;
 306        }
 306        }
"0"> 230stadef idd  281    CONFIG_DXD_V4_1 status;
 289
 230static __be32xdr_stream * 289
 361<<<<<<<<<<<<<<<<<__be32status;
 233{
 373    tic __be32 *p;
 298        lelt; statusp;
 365
 296        pread_buf(        lelt; status = 0;
 308        if (unlikely(p == status;
 358<5"> 375        ret> = htonl(status;
 289
args-memcphref="+code=unlimemcphass="sref">unlikely(            asd status = 0;
 375sref">status = 0;
 306        }
out;
 230static __be32svc_rqst *out;
xdr_stream * 289
 366<> 361<<<<<<<<<<<<<<<<<svc_rqststatus;
 233{
 238    tic __be32 *p;
 250    tic __be32p s+code=cbd_immedress="sass="sref">args-csam" n p;
p;
 308        if ( 238    /a>(status;
out;
out;
 230staengs" csessionid read_buf(__be32 s+code=cbd_immedress="sass="sref">args-csam"essionid status = 0;
 365
 296        pread_buf(        iof(status = 0;
 308        if (unlikely(p == status;
 358<5"> 375        ret> = htonl(status;
 289
ntohl(*status =         > s+code=cbd_immedress="sass="sref">args-csam"equengeid status;
ntohl(*status =         > s+code=cbd_immedress="sass="sref">args-csam"lotid status;
__be32(*status =         > s+code=cbd_immedress="sass="sref">args-csamhighest"lotid status;
__be32(*status =         > s+code=cbd_immedress="sass="sref">args-csamtargetmhighest"lotid status;
status = 0;
 296    dpr8">k k clasfsref">dprintk(<>"%s: exit with atus" s="%d\n"devs               func__ href="+code=__befunc__r" cl 308        > =  281        status = 0;
 375sref">args-    status = 0;
 306        }
status = 0;
 230static status = 0;
__be32 298        no0308        o<_n>(__be32status = 0;
i++) {
 308        o<_n>(pOP_CB_SEQUENC=NFS4_DEVICEID4_OP_CB_SEQUENC=e=p"a9ss="sref">i++) {
 343<8"> 308        noi++) {
 364<8"> 358<5"> 375        ret> = htonl(status;
i++) {
 366<8"> 308        noi++) {
 357<8"> 358<5"> 375        ret> = htonl(status;
 306        }
 289
e=p"a9ss="sref">i++) {
pOP_CB_GETATTRNFS4_DEVICEID4_OP_CB_GETATTRt" c:ef">status = 0;
pOP_CB_RECA= status = 0;
pOP_CB_SEQUENC=NFS4_DEVICEID4_OP_CB_SEQUENC=e=p":ef">status = 0;
pOP_CB_RECA= _ANYNFS4_DEVICEID4_OP_CB_RECA= _ANYe=p":ef">status = 0;
pOP_CB_RECA= _SLOTNFS4_DEVICEID4_OP_CB_RECA= _SLOTe=p":ef">status = 0;
pOP_CB_LAYOUTRECA= status = 0;
pOP_CB_NOTIFY_DEVICEIDstatus = 0;
 358<="sref">__be32__be32        o<_n>(status;
 358status;
p;
pOP_CB_NOTIFYstatus = 0;
pOP_CB_PUSH_DELEGstatus = 0;
pOP_CB_RECA= ABLE_OBJ_AVAI status = 0;
pOP_CB_WANTS_CANC=LLEDstatus = 0;
pOP_CB_NOTIFY_LOCKstatus = 0;
 366<5"> 375        ret> = htonl(status;
 306        }
status = 0;
 358<5"> 375        ret> = htonl(status;
 306        }
i;
 375        ret> = htonl_OKstatus;
 306        }
 354
args- essiona href="+code=rsessionclasls="sref">i++) {
i++) {
args-tb__be32args-bccslot_tabl"+code=cbd_immedbccslot_tabl"clasref">status = 0;
status = 0;
 250     pin_lock __be32args-alot_tbl_lock status;
dprintcomment">/*devs &#="sref">status;
dprintcomment">58"> 358<= Let the atuse manager know >;
status;
dprintcomment">58"> 358<= A single alot, so highest used "lotid is either 0 or -1devs &#="sref">status;
dprintcomment">58"> 358<=/devs &#="sref">status;
 230statbargs-highest_usedm"lotid htonl(hNO_SLOTNFS4_DEVICEID4_/a>(hNO_SLOTclasref">status = 0;
 296    n9<4cahehredrain_bcccomplet"+code=cbd_immed89<4cahehredrain_bcccomplet" clas1"> 281     essiona href="+code=rsessionclaslref">status = 0;
 296     pin_unlock __be32args-alot_tbl_lock status;
 306        }
status = 0;
args-cstatus;
i++) {
 308        cargs-alotsd htonl(hNO_SLOTNFS4_DEVICEID4_/a>(hNO_SLOTclass="sref">status;
        cargs-clargs-clcsessiona href="+code=rclcsessionsrefas="sref">status;
 306        }
 354
dprintcomment">/* CONFIG_DXD_V4_1<=/devs &#="sref">status;
p;
 230static p;
__be32 298        no0308        o<_n>(__be32status = 0;
i++) {
 375        ret> = htonl(status;
 306        }
p;
args-cstatus;
i++) {
 306        }
"sref">dprintcomment">/* CONFIG_DXD_V4_1<=/devs &#="sref">status;
 306        }
 230static p;
__be320308        o<_n>(__be32status = 0;
i++) {
e=p"a9ss="sref">i++) {
pOP_CB_GETATTRNFS4_DEVICEID4_OP_CB_GETATTRt" c:ef">status = 0;
pOP_CB_RECA= status = 0;
 364<="sref">__be32__be32        o<_n>(status;
status;
status = 0;
 357<5"> 375        ret> = htonl(status;
 306        }
 289
 375        ret> = htonl_OKstatus;
 306        }
p;
 230static  296     rocess_ohtonl        minorversiona href="+code=rminorversione=p"3<8"> 298        nop;
 364<                   struct svc_rqst *out;
xdr_stream _ina href="+code=ra> _ine=p"3xdr_streamout;
 366<                   struct xdr_stream _oto xdr_streamout;
 357<                   strabeprocess_atuse href="+code=stcbeprocess_atuseclass=sref">args-cstatus;
i++) {
__be32__be32status;
0308        o<_n>(status;
 281    tic __be32status;
status;
 281    tic __be32<> s+code=cbd_immedress="ss="sref">status;
 354
 296    dpr8">k k clasfsref">dprintk(<>"%s: aturt\n"devs               func__ href="+code=__befunc__r" cas="sref">status;
 296     rn pp *htonl _ina href="+code=ra> _ine=p"3<&="sr"sref">__be32(status;
 308        if (unlikely<    status;
 358<5"> 375        return status;
 289
args-dpr8">k k clasfsref">dprintk(<>"%s: minorversion=%d no<=%d o<_n>=%u\n"devs ame="L289"> 289
 361              func__ href="+code=__befunc__r" c3            minorversiona href="+code=rminorversione=p"3<298        no__be32(status;
p;
 281     rn p 296     reprocess_89<41_o__be32(__be32status = 0;
 364<8"> 358 281    areprocess_89<4_o__be32(__be32status;
 308         rn status =         /a>(status;
 366<"sref">__be32(pstatus;
 308            status;
 358                gengs" ch> * class="sref">status;
 289
 308        cargs-drcm" n i++) {
 361             rn pargs-drcm" n status;
 * class="sref">status;
 306        }
 354
 296    maxlelt; pargs-end pargs-a> *p;
 308        maxlelt;  296    maxlelt;  296    PAGE_SIZEt; i++) {
 357             rn pargs-de>ppxdr_streamstatus;
 358<8"> 308         ( 238    /a>(status;
 358<7"> 357             rn pargs- rocess_ohtonl__be32<> spstatus;
status;
 361             rn p = htonl(status;
p;
 * clas:ef">status = 0;
 230sta> s+code=cbd_immedress="ss="sref">status *  class="sref">htonl _oto __be32(            status;
 308        if (unlikelystatus;
 366<5"> 375        ret> s+code=cbd_immedress="ss="sref">status;
 308        oargs-engs" cres+code=cbd_immedengs" cress="ss!="s="sref">htonl 296    e=unlily" class="8"> 238    /a>(status;/callbac8_xdr.c#L348" id="L348" c8ass="84ne" name="L358"> 358             rn pargs-engs" cres+code=cbd_immedengs" cress="ss308        a> *p__be32 sstatus;
 250    dpr8">k k clasfsref">dprintk(<>"%s: done, atus" s="%d\n"devs               func__ href="+code=__befunc__r" cl 308        > =  281        status = 0;
 375        return status;
 306        }
p;
dprintcomment">/*devs &#="sref">status;
dprintcomment">5* De>pstatus;
dprintcomment">5*/devs &#="sref">status;
 230static  296    n9<4ca>
svc_rqst *xdr_streamxdr_streamstatuss/callbac8_xdr.c#L357" id="L357" c8ass="85ne" name="L233"> 233{
 cargclas96"> 296    h> carg href="+code=sth> cargclas9= { 0 }s="sref">status;
 296    h> cres+code=cbd_immedh> cresclas9= { s="sref">htonlstatus;
pxdr_streamstatus;
 281    tic xdr_stream(            arn status;
pstatus;
 343<.sref">args-drcm" n  289
 364<.sref">args-clhtonl 289
args-alotsd htonl(hNO_SLOTNFS4_DEVICEID4_/a>(hNO_SLOTclas3ame="L289"> 289
 366<.sref">args-neta href="+code=rnete=p"s="s="sref">htonl        a> * 289
status;
0308        nostatus = 0;
 289
args-dpr8">k k clasfsref">dprintk(<>"%s: aturt\n"devs               func__ href="+code=__befunc__r" cas="sref">status;
i;
pp__be32 _ina href="+code=ra> _ine=p"3<&="sr"sref">__be32 *args-rqcarg href="+code=strqcarge=p"3<"sref">__be32> *args-rqcarg href="+code=strqcarge=p".sref">args-head args-iov_bas/a href="+code=riov_bas/r" cas="sref">status;
out;
 230sta            tic __be32> *args-rqc> s+code=cbd_immedrqcresclas.sref">args-head args-iov_bas/a href="+code=riov_bas/r" c +<"sref">__be32> *args-rqc> s+code=cbd_immedrqcresclas.sref">args-head args-iov_lelt; status;
 296    a> _init_engs" a href="+code=ra> _init_engs"  clas&="sr"sref">__be32 _oto __be32 *args-rqc> s+code=cbd_immedrqcresclas3<"sref">__be32status;
p;
 296     rn pp carg href="+code=stde>p carg clas&="sr"sref">__be32 _ina href="+code=ra> _ine=p"3<&="sr"sref">__be32 carg href="+code=sth> cargclasas="sref">status;
 308         rn status = htonl(statuss/callbac8_xdr.c#L279" id="L279" c8ass="879e" name="L358"> 358<5"> 375        retrpc_garbag/carga href="+code=strpc_garbag/cargaclass="sref">status;
p;
 308        h> carg href="+code=sth> cargclas.sref">args-minorversiona href="+code=rminorversione=p" /a>(< {="sref">status;
args-clhtonlhtonl        a> * 296    h> carg href="+code=sth> cargclas.sref">args-cb_ident"status;
 343<8"> !            strcargs-cl
args-cl__be32> *statuss/callbac8_xdr.c#L284" id="L284" c8ass="88ne" name="L364"> 364<8"> 358<5"> 375        retrpc_dropcrep href="+code=unlirpc_dropcrep hclass="sref">status;
status;
p;
 296    h> cres+code=cbd_immedh> cresclas.sref">args-taglelt; htonl carg href="+code=sth> cargclas.sref">args-taglelt; status;
 296    h> cres+code=cbd_immedh> cresclas.sref">args-tagt; htonl carg href="+code=sth> cargclas.sref">args-tagt; status;
 308        engs" ccompound_h> cres+code=cbd_immedengs" ccompound_h> cres clas&="sr"sref">__be32 _oto __be32 cres+code=cbd_immedh> cresclas)s!= 0ls="sref">i++) {
 364<5"> 375        retrpc_system_er>(status;
i;
 296    nohtonl carg href="+code=sth> cargclas.sref">args-nostatus;
 343<6"> 296     rn phtonl carg href="+code=sth> cargclas.sref">args-minorversiona href="+code=rminorversione=p"3<298        no__be32> * 289
 364<<<<<<<<<<<<<<<<<<<<<&="sr"sref">__be32 _ina href="+code=ra> _ine=p"3<"sref">__be32__be32 _oto __be32 s__be32status;
status;
status;
 306        }
dprintcomment">/* Buffer overflow in de>p  or engs" cops_h> . R"> 37devs &#="sref">status;
dprintcomment">58"> 358*<5"source er>or in argcompound atus" swithoto<5"> 37ing op5*/devs &#="sref">status;
 308        if (unlikely<    status =         /a>((status;
 361             rn p = htonl(status;
status;
 306        }
 354
xdr_stream cres+code=cbd_immedh> cresclas.sref">args- rn pstatus;
xdr_stream cres+code=cbd_immedh> cresclas.sref">args-nop = htonlstatus;
 296    n9<4cabefreem"lota href="+code=rn9<4cabefreem"lot clas&="sr"sref">__be32status;
 296    s        cargs-clstatus;
 250    dpr8">k k clasfsref">dprintk(<>"%s: done, atus" s="%u\n"devs               func__ href="+code=__befunc__r" cl 308        > =  281        status = 0;
 375        retrpc_success(status;
 306        }
p;
dprintcomment">/*devs &#="sref">status;
dprintcomment">5* Def id SIZE >;
status;
dprintcomment">5*/devs &#="sref">status;
status;
status;
 358<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
status;
 361<.sref">args- rocess_o
 296    n9<4ca>
( 289
args-de>p
p 296    de>pcarga href="+code=stde>pcarga cla3ame="L289"> 289
 343<.sref">args-engs" cres+code=cbd_immedengs" cress="sscls308        a>
 296    engs" cgeme=t>cres+code=cbd_immedengs" cgeme=t>cres cla3ame="L289"> 289
 364<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
status;
 357<.sref">args- rocess_o
 296    n9<4ca>

<( 289
 358<.sref">args-de>p
p 296    de>p
 289
 358<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
""> 296    def idd  281    CONFIG_DXD_V4_1a href="+code=rCONFIG_DXD_V4_1clas)ame="L289"> 289
status;
 343<.sref">args- rocess_o
 296    n9<4ca>

<( 289
 364<.sref">args-de>p 289

p 296    de>p
 289
 366<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
status;
 358<.sref">args- rocess_o
 296    n9<4ca>
 289
 364<.sref">args-de>p 289
 361<33333333s308        a>
p 296    de>p 289
args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
status;
args- rocess_o
 296    n9<4ca>
 289
 366<.sref">args-de>p
p 296    de>p 289
 357<.sref">args-engs" cres+code=cbd_immedengs" cress="sscls308        a>
 296    engs" ccbesequenc cres+code=cbd_immedengs" ccbesequenc cres cla3ame="L289"> 289
 358<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
status;
 361<.sref">args- rocess_o
 296    n9<4ca>



 289
args-de>p
p 296    de>p
 289
 343<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
status;
 366<.sref">args- rocess_o
 296    n9<4ca>

<"lota href="+code=rn9<4ca>

<"lot cla3ame="L289"> 289
 357<.sref">args-de>p
p 296    de>p
<"lotcarga href="+code=stde>p
<"lotcarga cla3ame="L289"> 289
 358<.sref">args-res_maxsiz a href="+code=rres_maxsiz s="s9= ass="sref">p 289
 289
"sref">dprintcomment">/* CONFIG_DXD_V4_15*/devs &#="sref">status;
status;
p;
dprintcomment">/*devs &#="sref">status;
dprintcomment">5* Def id SIZE >;
status;
dprintcomment">5*/devs &#="sref">status;

status;
status;
 358<.sref">args-pcefunca href="+code=racefuncs="s9= ass="sref">p
 289
 358<.sref">args- c_de>p 296    n9<4cde>p 289
 364<.sref">args- c_engs" a href="+code=r c_engs"  cla cls308        kf="proc href="+code=uintkf="proc hclas)6"> 296    n9<4cengs" cvoid( 289
 361<.sref">args- cef="ressiz a href="+code=r cef="ressiz  cla cl13ame="L289"> 289
 289
status;
 364<.sref">args-pcefunca href="+code=racefuncs="s9= ass="sref">p
 289
args- c_engs" a href="+code=r c_engs"  cla cls308        kf="proc href="+code=uintkf="proc hclas)6"> 296    n9<4cengs" cvoid( 289
 366<.sref">args- ccargaiz a href="+code=r ceargaiz  cla cl2563ame="L289"> 289
 357<.sref">args- c_ressiz a href="+code=r ceressiz  cla cl2563ame="L289"> 289
 358<.sref">args-pcef="ressiz a href="+code=r cef="ressiz  cla clsref">args-/a>(hCA= BACK_BUFSIZEt;  289
 306        }
status;
i;

status;
args-vseversa href="+code=rvsevers cla cl13ame="L289"> 289
args-vsenproca href="+code=rvsenproc cla clsref">args-ARRAY_SIZEt; htonl
 289
args-vseproca href="+code=rvseproc cla clsref">args-n9<4ca>
 289
args-vsef="siz a href="+code=rvsef="siz  cla clsref">args-/a>(hCA= BACK_XDRSIZEt;  289
args-vsedispatcha href="+code=rvsedispatch cla clsref">args-/                  strcbcse3ame="L289"> 289
args-vsehiddelt;  289
status;
p;

status;
args-vseversa href="+code=rvsevers cla cl43ame="L289"> 289
args-vsenproca href="+code=rvsenproc cla clsref">args-ARRAY_SIZEt; htonl
 289
args-vseproca href="+code=rvseproc cla clsref">args-n9<4ca>
 289
args-vsef="siz a href="+code=rvsef="siz  cla clsref">args-/a>(hCA= BACK_XDRSIZEt;  289
args-vsedispatcha href="+code=rvsedispatch cla clsref">args-/                  strcbcse3ame="L289"> 289
args-vsehiddelt;  289
status;



f/div>


The original LXR software by the "sref">sthttp://sourceforge.net/projects/lxr">LXR communith cla3 this experimental version by "sref">stmailto:lxr@" iux.no">lxr@" iux.no cla.
f/div>

lxr." iux.no kindly hosted by "sref">sthttp://www.redpill-" ipro.no">Redpill L ipro AS cla3 provider of L iux conaulting and operations services since 199n.
f/div>