linux/fs/lockd/xdr4.c
<<
> 14./spae=" 14./form=" 14.a > 14 href="../linux+v3> 1/fs/lockd/xdr4.c">> 14.img src="../.static/gfx/right.png" alt=">>">> ./spae="> .spae class="lxr_search">> > 14.input typv3.hidden" namv3.navtarget" > v3.">> 14.input typv3.text" namv3.search" id3.search">> 14.butt typv3.submit">Search .spae class="lxr_prefs"=" 14.a href="+prefs?return=fs/lockd/xdr4.c"> 14 onclick="return ajax_prefs();">> 14Prefs" 14./a>> ./spae=" 14 4./div=" 14 4.form acalue="ajax+*" method="post" onsubmit="return false;">> .input typv3.hidden" namv3.ajax_lookup" id3.ajax_lookup" > v3.">> 14 4./form="> 14 4.div class="headingbott m">" .div id3.file_contents"=
4 41./a>.spae class="comment">/*./spae="4 42./a>.spae class="comment"> * linux/fs/lockd/xdr4.c./spae="4 43./a>.spae class="comment"> *./spae="4 44./a>.spae class="comment"> * XDR support for lockd and the lock client../spae="4 45./a>.spae class="comment"> *./spae="4 46./a>.spae class="comment"> * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>./spae="4 47./a>.spae class="comment"> * Copyright (C) 1999, Trond Myklebust <trond.myklebust@fys.uio.no>./spae="4 48./a>.spae class="comment"> */./spae="4 49./a>>4 tiona>#include <linux/typvs.hona>>>4 11ona>#include <linux/sched.hona>>>4 12ona>#include <linux/nfs.hona>>>4 13./a>>4 14ona>#include <linux/sunrpc/xdr.hona>>>4 15ona>#include <linux/sunrpc/clnt.hona>>>4 16ona>#include <linux/sunrpc/svc.hona>>>4 17ona>#include <linux/sunrpc/stats.hona>>>4 18ona>#include <linux/lockd/lockd.hona>>>4 19./a>>4 2iona>#define4.a href="+code=NLMDBG_FACILITY" class="sref">NLMDBG_FACILITYona>         .a href="+code=NLMDBG_XDR" class="sref">NLMDBG_XDR./a>>4 21./a>>4 22ona>static .a href="+code=inline" class="sref">inlineona> .a href="+code=loff_t" class="sref">loff_t./a>>4 23./a>.a href="+code=s64_to_loff_t" class="sref">s64_to_loff_t./a>(.a href="+code=__s64" class="sref">__s64ona> .a href="+code=offset" class="sref">offsetona>)>4 24ona>{>4 25ona>        return (.a href="+code=loff_t" class="sref">loff_t./a>).a href="+code=offset" class="sref">offsetona>;>4 26ona>}>4 27./a>>4 28./a>>4 29ona>static .a href="+code=inline" class="sref">inlineona> .a href="+code=s64" class="sref">s64ona>"4 30./a>.a href="+code=loff_t_to_s64" class="sref">loff_t_to_s64./a>(.a href="+code=loff_t" class="sref">loff_t./a> .a href="+code=offset" class="sref">offsetona>)>4 31ona>{>4 32ona>        .a href="+code=s64" class="sref">s64ona> .a href="+code=res" class="sref">resona>;>4 33ona>        if (.a href="+code=offset" class="sref">offsetona> > .a href="+code=NLM4_OFFSET_MAX" class="sref">NLM4_OFFSET_MAXona>)>4 34ona>                .a href="+code=res" class="sref">resona> = .a href="+code=NLM4_OFFSET_MAX" class="sref">NLM4_OFFSET_MAXona>;>4 35ona>        else if (.a href="+code=offset" class="sref">offsetona> < -.a href="+code=NLM4_OFFSET_MAX" class="sref">NLM4_OFFSET_MAXona>)>4 36ona>                .a href="+code=res" class="sref">resona> = -.a href="+code=NLM4_OFFSET_MAX" class="sref">NLM4_OFFSET_MAXona>;>4 37ona>        else>4 38ona>                .a href="+code=res" class="sref">resona> = .a href="+code=offset" class="sref">offsetona>;>4 39ona>        return .a href="+code=res" class="sref">resona>;>4 40ona>}>4 41./a>>4 42./a>.spae class="comment">/*./spae="4 43./a>.spae class="comment"> * XDR funcalues for basic NLM typvs./spae="4 44./a>.spae class="comment"> */./spae="4 45ona>static .a href="+code=__be32" class="sref">__be32ona> *"4 46./a>.a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_cookie" class="sref">nlm_cookie./a> *.a href="+code=c" class="sref">cona>)>4 47ona>{>4 48ona>        unsigned int    .a href="+code=len" class="sref">lenona>;>4 49./a>>4 50ona>        .a href="+code=len" class="sref">lenona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4 51ona>        >4 52ona>        if(.a href="+code=len" class="sref">lenona>==0)>4 53ona>        {>4 54ona>                .a href="+code=c" class="sref">cona>->.a href="+code=len" class="sref">lenona>=4;>4 55ona>                .a href="+code=memset" class="sref">memset./a>(.a href="+code=c" class="sref">cona>->.a href="+code=data" class="sref">dataona>, 0, 4);  .spae class="comment">/* hockeypux brain damage */./spae="4 56ona>        }>4 57ona>        else if(.a href="+code=len" class="sref">lenona><=.a href="+code=NLM_MAXCOOKIELEN" class="sref">NLM_MAXCOOKIELENona>)>4 58ona>        {>4 59ona>                .a href="+code=c" class="sref">cona>->.a href="+code=len" class="sref">lenona>=.a href="+code=len" class="sref">lenona>;>4 60ona>                .a href="+code=memcpy" class="sref">memcpy./a>(.a href="+code=c" class="sref">cona>->.a href="+code=data" class="sref">dataona>, .a href="+code=p" class="sref">pona>, .a href="+code=len" class="sref">lenona>);>4 61ona>                .a href="+code=p" class="sref">pona>+=.a href="+code=XDR_QUADLEN" class="sref">XDR_QUADLEN./a>(.a href="+code=len" class="sref">lenona>);>4 62ona>        }>4 63ona>        else >4 64ona>        {>4 65ona>                .a href="+code=dprintk" class="sref">dprintk./a>(.spae class="string">"lockd: bad cookie size %d (only cookies under "./spae="4 66ona>                        .spae class="string">"%d bytes are supported.)\n"./spae=,"4 67ona>                                .a href="+code=len" class="sref">lenona>, .a href="+code=NLM_MAXCOOKIELEN" class="sref">NLM_MAXCOOKIELENona>);>4 68ona>                return .a href="+code=NULL" class="sref">NULLona>;>4 69ona>        }>4 70ona>        return .a href="+code=p" class="sref">pona>;>4 71ona>}>4 72./a>>4 73ona>static .a href="+code=__be32" class="sref">__be32ona> *"4 74./a>.a href="+code=nlm4_encode_cookie" class="sref">nlm4_encode_cookie./a>(.a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_cookie" class="sref">nlm_cookie./a> *.a href="+code=c" class="sref">cona>)>4 75ona>{>4 76ona>        *.a href="+code=p" class="sref">pona>++ = .a href="+code=htonl" class="sref">htonl./a>(.a href="+code=c" class="sref">cona>->.a href="+code=len" class="sref">lenona>);>4 77ona>        .a href="+code=memcpy" class="sref">memcpy./a>(.a href="+code=p" class="sref">pona>, .a href="+code=c" class="sref">cona>->.a href="+code=data" class="sref">dataona>, .a href="+code=c" class="sref">cona>->.a href="+code=len" class="sref">lenona>);>4 78ona>        .a href="+code=p" class="sref">pona>+=.a href="+code=XDR_QUADLEN" class="sref">XDR_QUADLEN./a>(.a href="+code=c" class="sref">cona>->.a href="+code=len" class="sref">lenona>);>4 79ona>        return .a href="+code=p" class="sref">pona>;>4 80ona>}>4 81./a>>4 82ona>static .a href="+code=__be32" class="sref">__be32ona> *"4 83./a>.a href="+code=nlm4_decode_fh" class="sref">nlm4_decode_fh./a>(.a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nfs_fh" class="sref">nfs_fhona> *.a href="+code=f" class="sref">fona>)>4 84ona>{>4 85ona>        .a href="+code=memset" class="sref">memset./a>(.a href="+code=f" class="sref">fona>->.a href="+code=data" class="sref">dataona>, 0, sizeof(.a href="+code=f" class="sref">fona>->.a href="+code=data" class="sref">dataona>));>4 86ona>        .a href="+code=f" class="sref">fona>->.a href="+code=size" class="sref">sizeona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4 87ona>        if (.a href="+code=f" class="sref">fona>->.a href="+code=size" class="sref">sizeona> > .a href="+code=NFS_MAXFHSIZE" class="sref">NFS_MAXFHSIZEona>) {>4 88ona>                .a href="+code=dprintk" class="sref">dprintk./a>(.spae class="string">"lockd: bad fhandle size %d (should be <=%d)\n"./spae=,"4 89ona>                        .a href="+code=f" class="sref">fona>->.a href="+code=size" class="sref">sizeona>, .a href="+code=NFS_MAXFHSIZE" class="sref">NFS_MAXFHSIZEona>);>4 90ona>                return .a href="+code=NULL" class="sref">NULLona>;>4 91ona>        }>4 92ona>        .a href="+code=memcpy" class="sref">memcpy./a>(.a href="+code=f" class="sref">fona>->.a href="+code=data" class="sref">dataona>, .a href="+code=p" class="sref">pona>, .a href="+code=f" class="sref">fona>->.a href="+code=size" class="sref">sizeona>);>4 93ona>        return .a href="+code=p" class="sref">pona> + .a href="+code=XDR_QUADLEN" class="sref">XDR_QUADLEN./a>(.a href="+code=f" class="sref">fona>->.a href="+code=size" class="sref">sizeona>);>4 94ona>}>4 95./a>>4 96./a>.spae class="comment">/*./spae="4 97./a>.spae class="comment"> * Encode and decode owner handle./spae="4 98./a>.spae class="comment"> */./spae="4 99ona>static .a href="+code=__be32" class="sref">__be32ona> *"4100./a>.a href="+code=nlm4_decode_oh" class="sref">nlm4_decode_oh./a>(.a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=xdr_netobj" class="sref">xdr_netobjona> *.a href="+code=oh" class="sref">oh./a>)>4101ona>{>4102ona>        return .a href="+code=xdr_decode_netobj" class="sref">xdr_decode_netobj./a>(.a href="+code=p" class="sref">pona>, .a href="+code=oh" class="sref">oh./a>);>4103ona>}>4104ona>"4105ona>static .a href="+code=__be32" class="sref">__be32ona> *"4106./a>.a href="+code=nlm4_decode_lock" class="sref">nlm4_decode_lock./a>(.a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_lock" class="sref">nlm_lock./a> *.a href="+code=lock" class="sref">lock./a>)>4107ona>{>4108ona>        struct .a href="+code=file_lock" class="sref">file_lockona>        *.a href="+code=fl" class="sref">flona> = &.a href="+code=lock" class="sref">lock./a>->.a href="+code=fl" class="sref">flona>;>4109ona>        .a href="+code=__u64" class="sref">__u64ona>                   .a href="+code=len" class="sref">lenona>, .a href="+code=start" class="sref">startona>;>4110ona>        .a href="+code=__s64" class="sref">__s64ona>                   .a href="+code=end" class="sref">endona>;>4111./a>>4112ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=xdr_decode_string_inplace" class="sref">xdr_decode_string_inplace./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=caller" class="sref">callerona>,>4113ona>                                            &.a href="+code=lock" class="sref">lock./a>->.a href="+code=len" class="sref">lenona>, .a href="+code=NLM_MAXSTRLEN" class="sref">NLM_MAXSTRLENona>))>4114ona>         || !(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_fh" class="sref">nlm4_decode_fh./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=fh" class="sref">fh./a>))>4115ona>         || !(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_oh" class="sref">nlm4_decode_oh./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=oh" class="sref">oh./a>)))>4116ona>                return .a href="+code=NULL" class="sref">NULLona>;>4117ona>        .a href="+code=lock" class="sref">lock./a>->.a href="+code=svid" class="sref">svidona>  = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4118./a>>4119ona>        .a href="+code=locks_init_lock" class="sref">locks_init_lock./a>(.a href="+code=fl" class="sref">flona>);>4120ona>        .a href="+code=fl" class="sref">flona>->.a href="+code=fl_owner" class="sref">fl_ownerona> = .a href="+code=current" class="sref">currentona>->.a href="+code=files" class="sref">filesona>;>4121ona>        .a href="+code=fl" class="sref">flona>->.a href="+code=fl_pid" class="sref">fl_pidona>   = (.a href="+code=pid_t" class="sref">pid_tona>).a href="+code=lock" class="sref">lock./a>->.a href="+code=svid" class="sref">svidona>;>4122ona>        .a href="+code=fl" class="sref">flona>->.a href="+code=fl_flags" class="sref">fl_flagsona> = .a href="+code=FL_POSIX" class="sref">FL_POSIXona>;>4123ona>        .a href="+code=fl" class="sref">flona>->.a href="+code=fl_typv" class="sref">fl_typvona>  = .a href="+code=F_RDLCK" class="sref">F_RDLCKona>;         .spae class="comment">/* as good as anything else */./spae="4124ona>        .a href="+code=p" class="sref">pona> = .a href="+code=xdr_decode_hypvr" class="sref">xdr_decode_hypvr./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=start" class="sref">startona>);>4125ona>        .a href="+code=p" class="sref">pona> = .a href="+code=xdr_decode_hypvr" class="sref">xdr_decode_hypvr./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=len" class="sref">lenona>);>4126ona>        .a href="+code=end" class="sref">endona> = .a href="+code=start" class="sref">startona> + .a href="+code=len" class="sref">lenona> - 1;>4127./a>>4128ona>        .a href="+code=fl" class="sref">flona>->.a href="+code=fl_start" class="sref">fl_startona> = .a href="+code=s64_to_loff_t" class="sref">s64_to_loff_t./a>(.a href="+code=start" class="sref">startona>);>4129./a>>4130ona>        if (.a href="+code=len" class="sref">lenona> == 0 || .a href="+code=end" class="sref">endona> < 0)>4131ona>                .a href="+code=fl" class="sref">flona>->.a href="+code=fl_end" class="sref">fl_endona> = .a href="+code=OFFSET_MAX" class="sref">OFFSET_MAXona>;>4132ona>        else>4133ona>                .a href="+code=fl" class="sref">flona>->.a href="+code=fl_end" class="sref">fl_endona> = .a href="+code=s64_to_loff_t" class="sref">s64_to_loff_t./a>(.a href="+code=end" class="sref">endona>);>4134ona>        return .a href="+code=p" class="sref">pona>;>4135ona>}>4136ona>>4137./a>.spae class="comment">/*./spae="4138./a>.spae class="comment"> * Encode result of a TEST/TEST_MSG call./spae="4139ona>.spae class="comment"> */./spae="4140ona>static .a href="+code=__be32" class="sref">__be32ona> *"4141./a>.a href="+code=nlm4_encode_testres" class="sref">nlm4_encode_testres./a>(.a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_res" class="sref">nlm_resona> *.a href="+code=resp" class="sref">resp./a>)>4142./a>{>4143ona>        .a href="+code=s64" class="sref">s64ona>             .a href="+code=start" class="sref">startona>, .a href="+code=len" class="sref">lenona>;>4144ona>"4145ona>        .a href="+code=dprintk" class="sref">dprintk./a>(.spae class="string">"xdr: before encode_testres (p %p resp %p)\n"./spae=, .a href="+code=p" class="sref">pona>, .a href="+code=resp" class="sref">resp./a>);>4146ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_encode_cookie" class="sref">nlm4_encode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=resp" class="sref">resp./a>->.a href="+code=cookie" class="sref">cookie./a>)))>4147ona>                return .a href="+code=NULL" class="sref">NULLona>;>4148ona>        *.a href="+code=p" class="sref">pona>++ = .a href="+code=resp" class="sref">resp./a>->.a href="+code=status" class="sref">statusona>;>4149./a>>4150ona>        if (.a href="+code=resp" class="sref">resp./a>->.a href="+code=status" class="sref">statusona> == .a href="+code=nlm_lck_denied" class="sref">nlm_lck_denied./a>) {>4151ona>                struct .a href="+code=file_lock" class="sref">file_lockona>        *.a href="+code=fl" class="sref">flona> = &.a href="+code=resp" class="sref">resp./a>->.a href="+code=lock" class="sref">lock./a>..a href="+code=fl" class="sref">flona>;>4152./a>>4153ona>                *.a href="+code=p" class="sref">pona>++ = (.a href="+code=fl" class="sref">flona>->.a href="+code=fl_typv" class="sref">fl_typvona> == .a href="+code=F_RDLCK" class="sref">F_RDLCKona>)? .a href="+code=xdr_zero" class="sref">xdr_zeroona> : .a href="+code=xdr_one" class="sref">xdr_oneona>;>4154ona>                *.a href="+code=p" class="sref">pona>++ = .a href="+code=htonl" class="sref">htonl./a>(.a href="+code=resp" class="sref">resp./a>->.a href="+code=lock" class="sref">lock./a>..a href="+code=svid" class="sref">svidona>);>4155./a>>4156ona>                .spae class="comment">/* Encode owner handle. */./spae="4157ona>                if (!(.a href="+code=p" class="sref">pona> = .a href="+code=xdr_encode_netobj" class="sref">xdr_encode_netobj./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=resp" class="sref">resp./a>->.a href="+code=lock" class="sref">lock./a>..a href="+code=oh" class="sref">oh./a>)))>4158ona>                        return .a href="+code=NULL" class="sref">NULLona>;>4159./a>>4160ona>                .a href="+code=start" class="sref">startona> = .a href="+code=loff_t_to_s64" class="sref">loff_t_to_s64./a>(.a href="+code=fl" class="sref">flona>->.a href="+code=fl_start" class="sref">fl_startona>);>4161ona>                if (.a href="+code=fl" class="sref">flona>->.a href="+code=fl_end" class="sref">fl_endona> == .a href="+code=OFFSET_MAX" class="sref">OFFSET_MAXona>)>4162ona>                        .a href="+code=len" class="sref">lenona> = 0;>4163ona>                else>4164ona>                        .a href="+code=len" class="sref">lenona> = .a href="+code=loff_t_to_s64" class="sref">loff_t_to_s64./a>(.a href="+code=fl" class="sref">flona>->.a href="+code=fl_end" class="sref">fl_endona> - .a href="+code=fl" class="sref">flona>->.a href="+code=fl_start" class="sref">fl_startona> + 1);>4165ona>                >4166ona>                .a href="+code=p" class="sref">pona> = .a href="+code=xdr_encode_hypvr" class="sref">xdr_encode_hypvr./a>(.a href="+code=p" class="sref">pona>, .a href="+code=start" class="sref">startona>);>4167ona>                .a href="+code=p" class="sref">pona> = .a href="+code=xdr_encode_hypvr" class="sref">xdr_encode_hypvr./a>(.a href="+code=p" class="sref">pona>, .a href="+code=len" class="sref">lenona>);>4168ona>                .a href="+code=dprintk" class="sref">dprintk./a>(.spae class="string">"xdr: encode_testres (status %u pid %d typv %d start %Ld end %Ld)\n"./spae=,"4169ona>                        .a href="+code=resp" class="sref">resp./a>->.a href="+code=status" class="sref">statusona>, (int).a href="+code=resp" class="sref">resp./a>->.a href="+code=lock" class="sref">lock./a>..a href="+code=svid" class="sref">svidona>, .a href="+code=fl" class="sref">flona>->.a href="+code=fl_typv" class="sref">fl_typvona>,"4170ona>                        (long long).a href="+code=fl" class="sref">flona>->.a href="+code=fl_start" class="sref">fl_startona>,  (long long).a href="+code=fl" class="sref">flona>->.a href="+code=fl_end" class="sref">fl_endona>);>4171ona>        }>4172./a>>4173ona>        .a href="+code=dprintk" class="sref">dprintk./a>(.spae class="string">"xdr: after encode_testres (p %p resp %p)\n"./spae=, .a href="+code=p" class="sref">pona>, .a href="+code=resp" class="sref">resp./a>);>4174ona>        return .a href="+code=p" class="sref">pona>;>4175ona>}>4176ona>>4177./a>>4178./a>.spae class="comment">/*./spae="4179ona>.spae class="comment"> * First, the server side XDR funcalues./spae="4180ona>.spae class="comment"> */./spae="4181./a>int"4182ona>.a href="+code=nlm4svc_decode_testargs" class="sref">nlm4svc_decode_testargs./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, .a href="+code=nlm_args" class="sref">nlm_args./a> *.a href="+code=argp" class="sref">argpona>)>4183./a>{>4184ona>        .a href="+code=u32" class="sref">u32ona>     .a href="+code=exclusivv" class="sref">exclusivvona>;>4185./a>>4186ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=cookie" class="sref">cookie./a>)))>4187ona>                return 0;>4188./a>>4189ona>        .a href="+code=exclusivv" class="sref">exclusivvona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4190ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_lock" class="sref">nlm4_decode_lock./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>)))>4191ona>                return 0;>4192ona>        if (.a href="+code=exclusivv" class="sref">exclusivvona>)>4193ona>                .a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>..a href="+code=fl" class="sref">flona>..a href="+code=fl_typv" class="sref">fl_typvona> = .a href="+code=F_WRLCK" class="sref">F_WRLCKona>;>4194ona>"4195ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4196ona>}>4197./a>>4198./a>int"4199ona>.a href="+code=nlm4svc_encode_testres" class="sref">nlm4svc_encode_testres./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_res" class="sref">nlm_resona> *.a href="+code=resp" class="sref">resp./a>)>4200./a>{>4201ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_encode_testres" class="sref">nlm4_encode_testres./a>(.a href="+code=p" class="sref">pona>, .a href="+code=resp" class="sref">resp./a>)))>4202ona>                return 0;>4203ona>        return .a href="+code=xdr_ressize_check" class="sref">xdr_ressize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4204ona>}>4205./a>>4206./a>int"4207ona>.a href="+code=nlm4svc_decode_lockargs" class="sref">nlm4svc_decode_lockargs./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, .a href="+code=nlm_args" class="sref">nlm_args./a> *.a href="+code=argp" class="sref">argpona>)>4208ona>{>4209ona>        .a href="+code=u32" class="sref">u32ona>     .a href="+code=exclusivv" class="sref">exclusivvona>;>4210ona>>4211ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=cookie" class="sref">cookie./a>)))>4212ona>                return 0;>4213ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=block" class="sref">blockona>  = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4214ona>        .a href="+code=exclusivv" class="sref">exclusivvona>    = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4215ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_lock" class="sref">nlm4_decode_lock./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>)))>4216ona>                return 0;>4217ona>        if (.a href="+code=exclusivv" class="sref">exclusivvona>)>4218ona>                .a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>..a href="+code=fl" class="sref">flona>..a href="+code=fl_typv" class="sref">fl_typvona> = .a href="+code=F_WRLCK" class="sref">F_WRLCKona>;>4219ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=reclaim" class="sref">reclaimona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4220ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=statv" class="sref">statvona>   = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4221ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=monitor" class="sref">monitorona> = 1;              .spae class="comment">/* monitor client by default */./spae="4222./a>>4223ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4224ona>}>4225./a>>4226./a>int"4227ona>.a href="+code=nlm4svc_decode_cancargs" class="sref">nlm4svc_decode_cancargs./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, .a href="+code=nlm_args" class="sref">nlm_args./a> *.a href="+code=argp" class="sref">argpona>)>4228ona>{>4229ona>        .a href="+code=u32" class="sref">u32ona>     .a href="+code=exclusivv" class="sref">exclusivvona>;>4230ona>>4231ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=cookie" class="sref">cookie./a>)))>4232ona>                return 0;>4233ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=block" class="sref">blockona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4234ona>        .a href="+code=exclusivv" class="sref">exclusivvona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4235ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_lock" class="sref">nlm4_decode_lock./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>)))>4236ona>                return 0;>4237ona>        if (.a href="+code=exclusivv" class="sref">exclusivvona>)>4238ona>                .a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>..a href="+code=fl" class="sref">flona>..a href="+code=fl_typv" class="sref">fl_typvona> = .a href="+code=F_WRLCK" class="sref">F_WRLCKona>;>4239ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4240ona>}>4241./a>>4242./a>int"4243./a>.a href="+code=nlm4svc_decode_unlockargs" class="sref">nlm4svc_decode_unlockargs./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, .a href="+code=nlm_args" class="sref">nlm_args./a> *.a href="+code=argp" class="sref">argpona>)>4244ona>{>4245ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=cookie" class="sref">cookie./a>))>4246ona>         || !(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_lock" class="sref">nlm4_decode_lock./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>)))>4247ona>                return 0;>4248ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>..a href="+code=fl" class="sref">flona>..a href="+code=fl_typv" class="sref">fl_typvona> = .a href="+code=F_UNLCK" class="sref">F_UNLCKona>;>4249ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4250ona>}>4251./a>>4252./a>int"4253./a>.a href="+code=nlm4svc_decode_shareargs" class="sref">nlm4svc_decode_shareargs./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, .a href="+code=nlm_args" class="sref">nlm_args./a> *.a href="+code=argp" class="sref">argpona>)>4254ona>{>4255ona>        struct .a href="+code=nlm_lock" class="sref">nlm_lock./a> *.a href="+code=lock" class="sref">lock./a> = &.a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>;>4256ona>>4257ona>        .a href="+code=memset" class="sref">memset./a>(.a href="+code=lock" class="sref">lock./a>, 0, sizeof(*.a href="+code=lock" class="sref">lock./a>));>4258ona>        .a href="+code=locks_init_lock" class="sref">locks_init_lock./a>(&.a href="+code=lock" class="sref">lock./a>->.a href="+code=fl" class="sref">flona>);>4259ona>        .a href="+code=lock" class="sref">lock./a>->.a href="+code=svid" class="sref">svidona> = ~(.a href="+code=u32" class="sref">u32ona>) 0;>4260ona>        .a href="+code=lock" class="sref">lock./a>->.a href="+code=fl" class="sref">flona>..a href="+code=fl_pid" class="sref">fl_pidona> = (.a href="+code=pid_t" class="sref">pid_tona>).a href="+code=lock" class="sref">lock./a>->.a href="+code=svid" class="sref">svidona>;>4261./a>>4262ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=cookie" class="sref">cookie./a>))>4263ona>         || !(.a href="+code=p" class="sref">pona> = .a href="+code=xdr_decode_string_inplace" class="sref">xdr_decode_string_inplace./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=caller" class="sref">callerona>,>4264ona>                                            &.a href="+code=lock" class="sref">lock./a>->.a href="+code=len" class="sref">lenona>, .a href="+code=NLM_MAXSTRLEN" class="sref">NLM_MAXSTRLENona>))>4265ona>         || !(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_fh" class="sref">nlm4_decode_fh./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=fh" class="sref">fh./a>))>4266ona>         || !(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_oh" class="sref">nlm4_decode_oh./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=oh" class="sref">oh./a>)))>4267ona>                return 0;>4268ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=fsm_mode" class="sref">fsm_modeona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4269ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=fsm_access" class="sref">fsm_accessona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4270ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4271ona>}>4272./a>>4273ona>int"4274ona>.a href="+code=nlm4svc_encode_shareres" class="sref">nlm4svc_encode_shareres./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_res" class="sref">nlm_resona> *.a href="+code=resp" class="sref">resp./a>)>4275ona>{>4276ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_encode_cookie" class="sref">nlm4_encode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=resp" class="sref">resp./a>->.a href="+code=cookie" class="sref">cookie./a>)))>4277ona>                return 0;>4278ona>        *.a href="+code=p" class="sref">pona>++ = .a href="+code=resp" class="sref">resp./a>->.a href="+code=status" class="sref">statusona>;>4279ona>        *.a href="+code=p" class="sref">pona>++ = .a href="+code=xdr_zero" class="sref">xdr_zeroona>;                .spae class="comment">/* sequence argument */./spae="4280ona>        return .a href="+code=xdr_ressize_check" class="sref">xdr_ressize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4281ona>}>4282./a>>4283ona>int"4284ona>.a href="+code=nlm4svc_encode_res" class="sref">nlm4svc_encode_res./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_res" class="sref">nlm_resona> *.a href="+code=resp" class="sref">resp./a>)>4285ona>{>4286ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_encode_cookie" class="sref">nlm4_encode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=resp" class="sref">resp./a>->.a href="+code=cookie" class="sref">cookie./a>)))>4287ona>                return 0;>4288ona>        *.a href="+code=p" class="sref">pona>++ = .a href="+code=resp" class="sref">resp./a>->.a href="+code=status" class="sref">statusona>;>4289ona>        return .a href="+code=xdr_ressize_check" class="sref">xdr_ressize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4290ona>}>4291./a>>4292./a>int"4293./a>.a href="+code=nlm4svc_decode_notify" class="sref">nlm4svc_decode_notify./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_args" class="sref">nlm_args./a> *.a href="+code=argp" class="sref">argpona>)>4294ona>{>4295ona>        struct .a href="+code=nlm_lock" class="sref">nlm_lock./a> *.a href="+code=lock" class="sref">lock./a> = &.a href="+code=argp" class="sref">argpona>->.a href="+code=lock" class="sref">lock./a>;>4296ona>>4297ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=xdr_decode_string_inplace" class="sref">xdr_decode_string_inplace./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=lock" class="sref">lock./a>->.a href="+code=caller" class="sref">callerona>,>4298ona>                                            &.a href="+code=lock" class="sref">lock./a>->.a href="+code=len" class="sref">lenona>, .a href="+code=NLM_MAXSTRLEN" class="sref">NLM_MAXSTRLENona>)))>4299ona>                return 0;>4300ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=statv" class="sref">statvona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4301ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4302ona>}>4303ona>>4304ona>int"4305./a>.a href="+code=nlm4svc_decode_reboot" class="sref">nlm4svc_decode_reboot./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_reboot" class="sref">nlm_reboot./a> *.a href="+code=argp" class="sref">argpona>)>4306./a>{>4307ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=xdr_decode_string_inplace" class="sref">xdr_decode_string_inplace./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=mon" class="sref">monona>, &.a href="+code=argp" class="sref">argpona>->.a href="+code=len" class="sref">lenona>, .a href="+code=SM_MAXSTRLEN" class="sref">SM_MAXSTRLENona>)))>4308ona>                return 0;>4309ona>        .a href="+code=argp" class="sref">argpona>->.a href="+code=statv" class="sref">statvona> = .a href="+code=ntohl" class="sref">ntohl./a>(*.a href="+code=p" class="sref">pona>++);>4310ona>        .a href="+code=memcpy" class="sref">memcpy./a>(&.a href="+code=argp" class="sref">argpona>->.a href="+code=priv" class="sref">privona>..a href="+code=data" class="sref">dataona>, .a href="+code=p" class="sref">pona>, sizeof(.a href="+code=argp" class="sref">argpona>->.a href="+code=priv" class="sref">privona>..a href="+code=data" class="sref">dataona>));>4311ona>        .a href="+code=p" class="sref">pona> += .a href="+code=XDR_QUADLEN" class="sref">XDR_QUADLEN./a>(.a href="+code=SM_PRIV_SIZE" class="sref">SM_PRIV_SIZEona>);>4312ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4313ona>}>4314ona>"4315ona>int"4316ona>.a href="+code=nlm4svc_decode_res" class="sref">nlm4svc_decode_res./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, struct .a href="+code=nlm_res" class="sref">nlm_resona> *.a href="+code=resp" class="sref">resp./a>)>4317ona>{>4318ona>        if (!(.a href="+code=p" class="sref">pona> = .a href="+code=nlm4_decode_cookie" class="sref">nlm4_decode_cookie./a>(.a href="+code=p" class="sref">pona>, &.a href="+code=resp" class="sref">resp./a>->.a href="+code=cookie" class="sref">cookie./a>)))>4319ona>                return 0;>4320ona>        .a href="+code=resp" class="sref">resp./a>->.a href="+code=status" class="sref">statusona> = *.a href="+code=p" class="sref">pona>++;>4321ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4322ona>}>4323ona>>4324ona>int"4325./a>.a href="+code=nlm4svc_decode_void" class="sref">nlm4svc_decode_void./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, void *.a href="+code=dummy" class="sref">dummy./a>)>4326./a>{>4327ona>        return .a href="+code=xdr_argsize_check" class="sref">xdr_argsize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4328ona>}>4329ona>>4330ona>int"4331ona>.a href="+code=nlm4svc_encode_void" class="sref">nlm4svc_encode_void./a>(struct .a href="+code=svc_rqst" class="sref">svc_rqstona> *.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=__be32" class="sref">__be32ona> *.a href="+code=p" class="sref">pona>, void *.a href="+code=dummy" class="sref">dummy./a>)>4332ona>{>4333ona>        return .a href="+code=xdr_ressize_check" class="sref">xdr_ressize_check./a>(.a href="+code=rqstp" class="sref">rqstpona>, .a href="+code=p" class="sref">pona>);>4334ona>}>4335ona>
lxr.linux.no kindly hosted by Redpill Linpro ASona>, provider of Linux consulting and operaalues services since 1995.