/* * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ /* * SUN NFSv3 Mounter. See RFC 1813 */ #include <u.h>#include <libc.h>#include <thread.h>#include <sunrpc.h>#include <nfs3.h> voidnfsMount3TNullPrint(Fmt *fmt, NfsMount3TNull *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3TNull");}uintnfsMount3TNullSize(NfsMount3TNull *x){ uint a; USED(x); a = 0; return a;}intnfsMount3TNullPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x){ USED(ea); USED(x); *pa = a; return 0;}intnfsMount3TNullUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x){ USED(ea); USED(x); *pa = a; return 0;}voidnfsMount3RNullPrint(Fmt *fmt, NfsMount3RNull *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3RNull");}uintnfsMount3RNullSize(NfsMount3RNull *x){ uint a; USED(x); a = 0; return a;}intnfsMount3RNullPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x){ USED(ea); USED(x); *pa = a; return 0;}intnfsMount3RNullUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x){ USED(ea); USED(x); *pa = a; return 0;}voidnfsMount3TMntPrint(Fmt *fmt, NfsMount3TMnt *x){ fmtprint(fmt, "%s\n", "NfsMount3TMnt"); fmtprint(fmt, "\t%s=", "path"); fmtprint(fmt, "\"%s\"", x->path); fmtprint(fmt, "\n");}uintnfsMount3TMntSize(NfsMount3TMnt *x){ uint a; USED(x); a = 0 + sunStringSize(x->path); return a;}intnfsMount3TMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x){ if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}intnfsMount3TMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x){ if(sunStringUnpack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}voidnfsMount3RMntPrint(Fmt *fmt, NfsMount3RMnt *x){ fmtprint(fmt, "%s\n", "NfsMount3RMnt"); fmtprint(fmt, "\t%s=", "status"); fmtprint(fmt, "%ud", x->status); fmtprint(fmt, "\n"); switch(x->status){ case 0: fmtprint(fmt, "\t%s=", "handle"); fmtprint(fmt, "%.*H", x->len, x->handle); fmtprint(fmt, "\n"); break; }}uintnfsMount3RMntSize(NfsMount3RMnt *x){ uint a; USED(x); a = 0 + 4; switch(x->status){ case 0: a = a + sunVarOpaqueSize(x->len); a = a + 4 + 4 * x->nauth; break; } a = a; return a;}uintnfsMount1RMntSize(NfsMount3RMnt *x){ uint a; USED(x); a = 0 + 4; switch(x->status){ case 0: a = a + NfsMount1HandleSize; break; } return a;} intnfsMount3RMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x){ int i; if(sunUint32Pack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: if(sunVarOpaquePack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err; if(sunUint32Pack(a, ea, &a, &x->nauth) < 0) goto Err; for(i=0; i<x->nauth; i++) if(sunUint32Pack(a, ea, &a, &x->auth[i]) < 0) goto Err; break; } *pa = a; return 0;Err: *pa = ea; return -1;}intnfsMount1RMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x){ if(sunUint32Pack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: if(x->len != NfsMount1HandleSize) goto Err; if(sunFixedOpaquePack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err; if(x->nauth != 0) goto Err; break; } *pa = a; return 0;Err: *pa = ea; return -1;}intnfsMount1RMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x){ if(sunUint32Unpack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: x->len = NfsMount1HandleSize; x->nauth = 0; x->auth = 0; if(sunFixedOpaqueUnpack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err; if(x->nauth != 0) goto Err; break; } *pa = a; return 0;Err: *pa = ea; return -1;} intnfsMount3RMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x){ int i; if(sunUint32Unpack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: if(sunVarOpaqueUnpack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err; if(sunUint32Unpack(a, ea, &a, &x->nauth) < 0) goto Err; x->auth = (u32int*)a; for(i=0; i<x->nauth; i++) if(sunUint32Unpack(a, ea, &a, &x->auth[i]) < 0) goto Err; break; } *pa = a; return 0;Err: *pa = ea; return -1;}voidnfsMount3TDumpPrint(Fmt *fmt, NfsMount3TDump *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3TDump");}uintnfsMount3TDumpSize(NfsMount3TDump *x){ uint a; USED(x); a = 0; return a;}intnfsMount3TDumpPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x){ USED(ea); USED(x); *pa = a; return 0;}intnfsMount3TDumpUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x){ USED(ea); USED(x); *pa = a; return 0;}voidnfsMount3EntryPrint(Fmt *fmt, NfsMount3Entry *x){ fmtprint(fmt, "%s\n", "NfsMount3Entry"); fmtprint(fmt, "\t%s=", "host"); fmtprint(fmt, "\"%s\"", x->host); fmtprint(fmt, "\n"); fmtprint(fmt, "\t%s=", "path"); fmtprint(fmt, "\"%s\"", x->path); fmtprint(fmt, "\n");}uintnfsMount3EntrySize(NfsMount3Entry *x){ uint a; USED(x); a = 0 + sunStringSize(x->host) + sunStringSize(x->path); return a;}intnfsMount3EntryPack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x){ u1int one; one = 1; if(sunUint1Pack(a, ea, &a, &one) < 0) goto Err; if(sunStringPack(a, ea, &a, &x->host, 255) < 0) goto Err; if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}intnfsMount3EntryUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x){ u1int one; if(sunUint1Unpack(a, ea, &a, &one) < 0 || one != 1) goto Err; if(sunStringUnpack(a, ea, &a, &x->host, NfsMount3MaxNameSize) < 0) goto Err; if(sunStringUnpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}voidnfsMount3RDumpPrint(Fmt *fmt, NfsMount3RDump *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3RDump");}uintnfsMount3RDumpSize(NfsMount3RDump *x){ uint a; USED(x); a = 0; a += x->count; a += 4; return a;}intnfsMount3RDumpPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x){ u1int zero; zero = 0; if(a+x->count > ea) goto Err; memmove(a, x->data, x->count); a += x->count; if(sunUint1Pack(a, ea, &a, &zero) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}intnfsMount3RDumpUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x){ int i; uchar *oa; u1int u1; u32int u32; oa = a; for(i=0;; i++){ if(sunUint1Unpack(a, ea, &a, &u1) < 0) goto Err; if(u1 == 0) break; if(sunUint32Unpack(a, ea, &a, &u32) < 0 || u32 > NfsMount3MaxNameSize || (a+=u32) >= ea || sunUint32Unpack(a, ea, &a, &u32) < 0 || u32 > NfsMount3MaxPathSize || (a+=u32) >= ea) goto Err; } x->count = (a-4) - oa; x->data = oa; *pa = a; return 0;Err: *pa = ea; return -1;}voidnfsMount3TUmntPrint(Fmt *fmt, NfsMount3TUmnt *x){ fmtprint(fmt, "%s\n", "NfsMount3TUmnt"); fmtprint(fmt, "\t%s=", "path"); fmtprint(fmt, "\"%s\"", x->path); fmtprint(fmt, "\n");}uintnfsMount3TUmntSize(NfsMount3TUmnt *x){ uint a; USED(x); a = 0 + sunStringSize(x->path); return a;}intnfsMount3TUmntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x){ if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}intnfsMount3TUmntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x){ if(sunStringUnpack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0;Err: *pa = ea; return -1;}voidnfsMount3RUmntPrint(Fmt *fmt, NfsMount3RUmnt *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3RUmnt");}uintnfsMount3RUmntSize(NfsMount3RUmnt *x){ uint a; USED(x); a = 0; return a;}intnfsMount3RUmntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x){ USED(ea); USED(x); *pa = a; return 0;}intnfsMount3RUmntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x){ USED(ea); USED(x); *pa = a; return 0;}voidnfsMount3TUmntallPrint(Fmt *fmt, NfsMount3TUmntall *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3TUmntall");}uintnfsMount3TUmntallSize(NfsMount3TUmntall *x){ uint a; USED(x); a = 0; return a;}intnfsMount3TUmntallPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x){ USED(ea); USED(x); *pa = a; return 0;}intnfsMount3TUmntallUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x){ USED(ea); USED(x); *pa = a; return 0;}voidnfsMount3RUmntallPrint(Fmt *fmt, NfsMount3RUmntall *x){ USED(x); fmtprint(fmt, "%s\n", "NfsMount3RUmntall");}uintnfsMount3RUmntallSize(NfsMount3RUmntall *x){ uint a; USED(x); a = 0; return a;}intnfsMount3RUmntallPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x){ USED(ea); USED(x); *pa = a; return 0;}intnfsMount3RUmntallUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)Lines 1–500 of 736. Load more
/* * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ /* * SUN NFSv3 Mounter. See RFC 1813 */ #include <u.h> #include <libc.h> #include <thread.h> #include <sunrpc.h> #include <nfs3.h> void nfsMount3TNullPrint(Fmt *fmt, NfsMount3TNull *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3TNull"); } uint nfsMount3TNullSize(NfsMount3TNull *x) { uint a; USED(x); a = 0; return a; } int nfsMount3TNullPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x) { USED(ea); USED(x); *pa = a; return 0; } int nfsMount3TNullUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x) { USED(ea); USED(x); *pa = a; return 0; } void nfsMount3RNullPrint(Fmt *fmt, NfsMount3RNull *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3RNull"); } uint nfsMount3RNullSize(NfsMount3RNull *x) { uint a; USED(x); a = 0; return a; } int nfsMount3RNullPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x) { USED(ea); USED(x); *pa = a; return 0; } int nfsMount3RNullUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x) { USED(ea); USED(x); *pa = a; return 0; } void nfsMount3TMntPrint(Fmt *fmt, NfsMount3TMnt *x) { fmtprint(fmt, "%s\n", "NfsMount3TMnt"); fmtprint(fmt, "\t%s=", "path"); fmtprint(fmt, "\"%s\"", x->path); fmtprint(fmt, "\n"); } uint nfsMount3TMntSize(NfsMount3TMnt *x) { uint a; USED(x); a = 0 + sunStringSize(x->path); return a; } int nfsMount3TMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x) { if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount3TMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x) { if(sunStringUnpack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } void nfsMount3RMntPrint(Fmt *fmt, NfsMount3RMnt *x) { fmtprint(fmt, "%s\n", "NfsMount3RMnt"); fmtprint(fmt, "\t%s=", "status"); fmtprint(fmt, "%ud", x->status); fmtprint(fmt, "\n"); switch(x->status){ case 0: fmtprint(fmt, "\t%s=", "handle"); fmtprint(fmt, "%.*H", x->len, x->handle); fmtprint(fmt, "\n"); break; } } uint nfsMount3RMntSize(NfsMount3RMnt *x) { uint a; USED(x); a = 0 + 4; switch(x->status){ case 0: a = a + sunVarOpaqueSize(x->len); a = a + 4 + 4 * x->nauth; break; } a = a; return a; } uint nfsMount1RMntSize(NfsMount3RMnt *x) { uint a; USED(x); a = 0 + 4; switch(x->status){ case 0: a = a + NfsMount1HandleSize; break; } return a; } int nfsMount3RMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x) { int i; if(sunUint32Pack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: if(sunVarOpaquePack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err; if(sunUint32Pack(a, ea, &a, &x->nauth) < 0) goto Err; for(i=0; i<x->nauth; i++) if(sunUint32Pack(a, ea, &a, &x->auth[i]) < 0) goto Err; break; } *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount1RMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x) { if(sunUint32Pack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: if(x->len != NfsMount1HandleSize) goto Err; if(sunFixedOpaquePack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err; if(x->nauth != 0) goto Err; break; } *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount1RMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x) { if(sunUint32Unpack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: x->len = NfsMount1HandleSize; x->nauth = 0; x->auth = 0; if(sunFixedOpaqueUnpack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err; if(x->nauth != 0) goto Err; break; } *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount3RMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x) { int i; if(sunUint32Unpack(a, ea, &a, &x->status) < 0) goto Err; switch(x->status){ case 0: if(sunVarOpaqueUnpack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err; if(sunUint32Unpack(a, ea, &a, &x->nauth) < 0) goto Err; x->auth = (u32int*)a; for(i=0; i<x->nauth; i++) if(sunUint32Unpack(a, ea, &a, &x->auth[i]) < 0) goto Err; break; } *pa = a; return 0; Err: *pa = ea; return -1; } void nfsMount3TDumpPrint(Fmt *fmt, NfsMount3TDump *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3TDump"); } uint nfsMount3TDumpSize(NfsMount3TDump *x) { uint a; USED(x); a = 0; return a; } int nfsMount3TDumpPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x) { USED(ea); USED(x); *pa = a; return 0; } int nfsMount3TDumpUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x) { USED(ea); USED(x); *pa = a; return 0; } void nfsMount3EntryPrint(Fmt *fmt, NfsMount3Entry *x) { fmtprint(fmt, "%s\n", "NfsMount3Entry"); fmtprint(fmt, "\t%s=", "host"); fmtprint(fmt, "\"%s\"", x->host); fmtprint(fmt, "\n"); fmtprint(fmt, "\t%s=", "path"); fmtprint(fmt, "\"%s\"", x->path); fmtprint(fmt, "\n"); } uint nfsMount3EntrySize(NfsMount3Entry *x) { uint a; USED(x); a = 0 + sunStringSize(x->host) + sunStringSize(x->path); return a; } int nfsMount3EntryPack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x) { u1int one; one = 1; if(sunUint1Pack(a, ea, &a, &one) < 0) goto Err; if(sunStringPack(a, ea, &a, &x->host, 255) < 0) goto Err; if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount3EntryUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x) { u1int one; if(sunUint1Unpack(a, ea, &a, &one) < 0 || one != 1) goto Err; if(sunStringUnpack(a, ea, &a, &x->host, NfsMount3MaxNameSize) < 0) goto Err; if(sunStringUnpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } void nfsMount3RDumpPrint(Fmt *fmt, NfsMount3RDump *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3RDump"); } uint nfsMount3RDumpSize(NfsMount3RDump *x) { uint a; USED(x); a = 0; a += x->count; a += 4; return a; } int nfsMount3RDumpPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x) { u1int zero; zero = 0; if(a+x->count > ea) goto Err; memmove(a, x->data, x->count); a += x->count; if(sunUint1Pack(a, ea, &a, &zero) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount3RDumpUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x) { int i; uchar *oa; u1int u1; u32int u32; oa = a; for(i=0;; i++){ if(sunUint1Unpack(a, ea, &a, &u1) < 0) goto Err; if(u1 == 0) break; if(sunUint32Unpack(a, ea, &a, &u32) < 0 || u32 > NfsMount3MaxNameSize || (a+=u32) >= ea || sunUint32Unpack(a, ea, &a, &u32) < 0 || u32 > NfsMount3MaxPathSize || (a+=u32) >= ea) goto Err; } x->count = (a-4) - oa; x->data = oa; *pa = a; return 0; Err: *pa = ea; return -1; } void nfsMount3TUmntPrint(Fmt *fmt, NfsMount3TUmnt *x) { fmtprint(fmt, "%s\n", "NfsMount3TUmnt"); fmtprint(fmt, "\t%s=", "path"); fmtprint(fmt, "\"%s\"", x->path); fmtprint(fmt, "\n"); } uint nfsMount3TUmntSize(NfsMount3TUmnt *x) { uint a; USED(x); a = 0 + sunStringSize(x->path); return a; } int nfsMount3TUmntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x) { if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } int nfsMount3TUmntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x) { if(sunStringUnpack(a, ea, &a, &x->path, 1024) < 0) goto Err; *pa = a; return 0; Err: *pa = ea; return -1; } void nfsMount3RUmntPrint(Fmt *fmt, NfsMount3RUmnt *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3RUmnt"); } uint nfsMount3RUmntSize(NfsMount3RUmnt *x) { uint a; USED(x); a = 0; return a; } int nfsMount3RUmntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x) { USED(ea); USED(x); *pa = a; return 0; } int nfsMount3RUmntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x) { USED(ea); USED(x); *pa = a; return 0; } void nfsMount3TUmntallPrint(Fmt *fmt, NfsMount3TUmntall *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3TUmntall"); } uint nfsMount3TUmntallSize(NfsMount3TUmntall *x) { uint a; USED(x); a = 0; return a; } int nfsMount3TUmntallPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x) { USED(ea); USED(x); *pa = a; return 0; } int nfsMount3TUmntallUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x) { USED(ea); USED(x); *pa = a; return 0; } void nfsMount3RUmntallPrint(Fmt *fmt, NfsMount3RUmntall *x) { USED(x); fmtprint(fmt, "%s\n", "NfsMount3RUmntall"); } uint nfsMount3RUmntallSize(NfsMount3RUmntall *x) { uint a; USED(x); a = 0; return a; } int nfsMount3RUmntallPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x) { USED(ea); USED(x); *pa = a; return 0; } int nfsMount3RUmntallUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)