417 struct mbuf *ns_frag; 418 int ns_flag; 419 int ns_solock; 420 int ns_cc; 421 int ns_reclen; 422 int ns_numuids; 423 u_long ns_sref; 424 LIST_HEAD(, nfsrv_descript) ns_tq; /* Write gather lists */ 425 LIST_HEAD(, nfsuid) ns_uidhashtbl[NFS_UIDHASHSIZ]; 426 LIST_HEAD(nfsrvw_delayhash, nfsrv_descript) ns_wdelayhashtbl[NFS_WDELAYHASHSIZ]; 427}; 428 429/* Bits for "ns_flag" */ 430#define SLP_VALID 0x01 431#define SLP_DOREC 0x02 432#define SLP_NEEDQ 0x04 433#define SLP_DISCONN 0x08 434#define SLP_GETSTREAM 0x10 435#define SLP_LASTFRAG 0x20 436#define SLP_ALLFLAGS 0xff 437 438extern TAILQ_HEAD(nfssvc_sockhead, nfssvc_sock) nfssvc_sockhead; 439extern int nfssvc_sockhead_flag; 440#define SLP_INIT 0x01 441#define SLP_WANTINIT 0x02 442 443/* 444 * One of these structures is allocated for each nfsd. 445 */ 446struct nfsd { 447 TAILQ_ENTRY(nfsd) nfsd_chain; /* List of all nfsd's */ 448 int nfsd_flag; /* NFSD_ flags */ 449 struct nfssvc_sock *nfsd_slp; /* Current socket */ 450 int nfsd_authlen; /* Authenticator len */ 451 u_char nfsd_authstr[RPCAUTH_MAXSIZ]; /* Authenticator data */ 452 int nfsd_verflen; /* and the Verifier */ 453 u_char nfsd_verfstr[RPCVERF_MAXSIZ]; 454 struct proc *nfsd_procp; /* Proc ptr */ 455 struct nfsrv_descript *nfsd_nd; /* Associated nfsrv_descript */ 456}; 457 458/* Bits for "nfsd_flag" */ 459#define NFSD_WAITING 0x01 460#define NFSD_REQINPROG 0x02 461#define NFSD_NEEDAUTH 0x04 462#define NFSD_AUTHFAIL 0x08 463 464/* 465 * This structure is used by the server for describing each request. 466 * Some fields are used only when write request gathering is performed. 467 */ 468struct nfsrv_descript { 469 u_quad_t nd_time; /* Write deadline (usec) */ 470 off_t nd_off; /* Start byte offset */ 471 off_t nd_eoff; /* and end byte offset */ 472 LIST_ENTRY(nfsrv_descript) nd_hash; /* Hash list */ 473 LIST_ENTRY(nfsrv_descript) nd_tq; /* and timer list */ 474 LIST_HEAD(,nfsrv_descript) nd_coalesce; /* coalesced writes */ 475 struct mbuf *nd_mrep; /* Request mbuf list */ 476 struct mbuf *nd_md; /* Current dissect mbuf */ 477 struct mbuf *nd_mreq; /* Reply mbuf list */ 478 struct mbuf *nd_nam; /* and socket addr */ 479 struct mbuf *nd_nam2; /* return socket addr */ 480 caddr_t nd_dpos; /* Current dissect pos */ 481 int nd_procnum; /* RPC # */ 482 int nd_stable; /* storage type */ 483 int nd_flag; /* nd_flag */ 484 int nd_len; /* Length of this write */ 485 int nd_repstat; /* Reply status */ 486 u_long nd_retxid; /* Reply xid */ 487 u_long nd_duration; /* Lease duration */ 488 struct timeval nd_starttime; /* Time RPC initiated */ 489 fhandle_t nd_fh; /* File handle */ 490 struct ucred nd_cr; /* Credentials */ 491}; 492 493/* Bits for "nd_flag" */ 494#define ND_READ LEASE_READ 495#define ND_WRITE LEASE_WRITE 496#define ND_CHECK 0x04 497#define ND_LEASE (ND_READ | ND_WRITE | ND_CHECK) 498#define ND_NFSV3 0x08 499#define ND_NQNFS 0x10 500#define ND_KERBNICK 0x20 501#define ND_KERBFULL 0x40 502#define ND_KERBAUTH (ND_KERBNICK | ND_KERBFULL) 503 504extern TAILQ_HEAD(nfsd_head, nfsd) nfsd_head; 505extern int nfsd_head_flag; 506#define NFSD_CHECKSLP 0x01 507 508/* 509 * These macros compare nfsrv_descript structures. 510 */ 511#define NFSW_CONTIG(o, n) \ 512 ((o)->nd_eoff >= (n)->nd_off && \ 513 !bcmp((caddr_t)&(o)->nd_fh, (caddr_t)&(n)->nd_fh, NFSX_V3FH)) 514 515#define NFSW_SAMECRED(o, n) \ 516 (((o)->nd_flag & ND_KERBAUTH) == ((n)->nd_flag & ND_KERBAUTH) && \ 517 !bcmp((caddr_t)&(o)->nd_cr, (caddr_t)&(n)->nd_cr, \ 518 sizeof (struct ucred))) 519 520#ifdef NFS_DEBUG 521 522extern int nfs_debug; 523#define NFS_DEBUG_ASYNCIO 1 /* asynchronous i/o */ 524#define NFS_DEBUG_WG 2 /* server write gathering */ 525#define NFS_DEBUG_RC 4 /* server request caching */ 526 527#define NFS_DPF(cat, args) \ 528 do { \ 529 if (nfs_debug & NFS_DEBUG_##cat) printf args; \ 530 } while (0) 531 532#else 533 534#define NFS_DPF(cat, args) 535 536#endif 537 538int nfs_init __P((struct vfsconf *vfsp)); 539int nfs_reply __P((struct nfsreq *)); 540int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int)); 541int nfs_send __P((struct socket *,struct mbuf *,struct mbuf *,struct nfsreq *)); 542int nfs_rephead __P((int,struct nfsrv_descript *,struct nfssvc_sock *,int,int,u_quad_t *,struct mbuf **,struct mbuf **,caddr_t *)); 543int nfs_sndlock __P((int *,struct nfsreq *)); 544void nfs_sndunlock __P((int *flagp)); 545int nfs_disct __P((struct mbuf **,caddr_t *,int,int,caddr_t *)); 546int nfs_vinvalbuf __P((struct vnode *,int,struct ucred *,struct proc *,int)); 547int nfs_readrpc __P((struct vnode *,struct uio *,struct ucred *)); 548int nfs_writerpc __P((struct vnode *,struct uio *,struct ucred *,int *,int *)); 549int nfs_readdirrpc __P((register struct vnode *,struct uio *,struct ucred *)); 550int nfs_asyncio __P((struct buf *,struct ucred *)); 551int nfs_doio __P((struct buf *,struct ucred *,struct proc *)); 552int nfs_readlinkrpc __P((struct vnode *,struct uio *,struct ucred *)); 553int nfs_sigintr __P((struct nfsmount *,struct nfsreq *r,struct proc *)); 554int nfs_readdirplusrpc __P((struct vnode *,register struct uio *,struct ucred *)); 555int nfsm_disct __P((struct mbuf **,caddr_t *,int,int,caddr_t *)); 556void nfsm_srvfattr __P((struct nfsrv_descript *,struct vattr *,struct nfs_fattr *)); 557void nfsm_srvwcc __P((struct nfsrv_descript *,int,struct vattr *,int,struct vattr *,struct mbuf **,char **)); 558void nfsm_srvpostopattr __P((struct nfsrv_descript *,int,struct vattr *,struct mbuf **,char **)); 559int netaddr_match __P((int,union nethostaddr *,struct mbuf *)); 560int nfs_request __P((struct vnode *,struct mbuf *,int,struct proc *,struct ucred *,struct mbuf **,struct mbuf **,caddr_t *)); 561int nfs_loadattrcache __P((struct vnode **,struct mbuf **,caddr_t *,struct vattr *)); 562int nfs_namei __P((struct nameidata *,fhandle_t *,int,struct nfssvc_sock *,struct mbuf *,struct mbuf **,caddr_t *,struct vnode **,struct proc *,int)); 563void nfsm_adj __P((struct mbuf *,int,int)); 564int nfsm_mbuftouio __P((struct mbuf **,struct uio *,int,caddr_t *)); 565void nfsrv_initcache __P((void)); 566int nfs_getauth __P((struct nfsmount *,struct nfsreq *,struct ucred *,char **,int *,char *,int *,NFSKERBKEY_T)); 567int nfs_getnickauth __P((struct nfsmount *,struct ucred *,char **,int *,char *,int)); 568int nfs_savenickauth __P((struct nfsmount *,struct ucred *,int,NFSKERBKEY_T,struct mbuf **,char **,struct mbuf *)); 569int nfs_adv __P((struct mbuf **,caddr_t *,int,int)); 570void nfs_nhinit __P((void)); 571void nfs_timer __P((void*)); 572u_long nfs_hash __P((nfsfh_t *,int)); 573int nfsrv_dorec __P((struct nfssvc_sock *,struct nfsd *,struct nfsrv_descript **)); 574int nfsrv_getcache __P((struct nfsrv_descript *,struct nfssvc_sock *,struct mbuf **)); 575void nfsrv_updatecache __P((struct nfsrv_descript *,int,struct mbuf *)); 576void nfsrv_cleancache __P((void)); 577int nfs_connect __P((struct nfsmount *,struct nfsreq *)); 578void nfs_disconnect __P((struct nfsmount *)); 579int nfs_getattrcache __P((struct vnode *,struct vattr *)); 580int nfsm_strtmbuf __P((struct mbuf **,char **,char *,long)); 581int nfs_bioread __P((struct vnode *,struct uio *,int,struct ucred *)); 582int nfsm_uiotombuf __P((struct uio *,struct mbuf **,int,caddr_t *)); 583void nfsrv_init __P((int)); 584void nfs_clearcommit __P((struct mount *)); 585int nfsrv_errmap __P((struct nfsrv_descript *, int)); 586void nfsrvw_sort __P((gid_t [],int)); 587void nfsrv_setcred __P((struct ucred *,struct ucred *)); 588int nfs_writebp __P((struct buf *,int)); 589int nfsrv_object_create __P(( struct vnode * )); 590void nfsrv_wakenfsd __P((struct nfssvc_sock *slp)); 591int nfsrv_writegather __P((struct nfsrv_descript **, struct nfssvc_sock *, 592 struct proc *, struct mbuf **)); 593int nfs_fsinfo __P((struct nfsmount *, struct vnode *, struct ucred *, 594 struct proc *p)); 595 596int nfsrv3_access __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 597 struct proc *procp, struct mbuf **mrq)); 598int nfsrv_commit __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 599 struct proc *procp, struct mbuf **mrq)); 600int nfsrv_create __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 601 struct proc *procp, struct mbuf **mrq)); 602int nfsrv_fhtovp __P((fhandle_t *,int,struct vnode **, 603 struct ucred *,struct nfssvc_sock *,struct mbuf *, 604 int *,int)); 605int nfsrv_fsinfo __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 606 struct proc *procp, struct mbuf **mrq)); 607int nfsrv_getattr __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 608 struct proc *procp, struct mbuf **mrq)); 609int nfsrv_link __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 610 struct proc *procp, struct mbuf **mrq)); 611int nfsrv_lookup __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 612 struct proc *procp, struct mbuf **mrq)); 613int nfsrv_mkdir __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 614 struct proc *procp, struct mbuf **mrq)); 615int nfsrv_mknod __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 616 struct proc *procp, struct mbuf **mrq)); 617int nfsrv_noop __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 618 struct proc *procp, struct mbuf **mrq)); 619int nfsrv_null __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 620 struct proc *procp, struct mbuf **mrq)); 621int nfsrv_pathconf __P((struct nfsrv_descript *nfsd, 622 struct nfssvc_sock *slp, struct proc *procp, 623 struct mbuf **mrq)); 624int nfsrv_read __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 625 struct proc *procp, struct mbuf **mrq)); 626int nfsrv_readdir __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 627 struct proc *procp, struct mbuf **mrq)); 628int nfsrv_readdirplus __P((struct nfsrv_descript *nfsd, 629 struct nfssvc_sock *slp, struct proc *procp, 630 struct mbuf **mrq)); 631int nfsrv_readlink __P((struct nfsrv_descript *nfsd, 632 struct nfssvc_sock *slp, struct proc *procp, 633 struct mbuf **mrq)); 634int nfsrv_remove __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 635 struct proc *procp, struct mbuf **mrq)); 636int nfsrv_rename __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 637 struct proc *procp, struct mbuf **mrq)); 638int nfsrv_rmdir __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 639 struct proc *procp, struct mbuf **mrq)); 640int nfsrv_setattr __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 641 struct proc *procp, struct mbuf **mrq)); 642int nfsrv_statfs __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 643 struct proc *procp, struct mbuf **mrq)); 644int nfsrv_symlink __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 645 struct proc *procp, struct mbuf **mrq)); 646int nfsrv_write __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 647 struct proc *procp, struct mbuf **mrq)); 648void nfsrv_rcv __P((struct socket *so, caddr_t arg, int waitflag)); 649void nfsrv_slpderef __P((struct nfssvc_sock *slp)); 650#endif /* KERNEL */ 651 652#endif
| 422 struct mbuf *ns_frag; 423 int ns_flag; 424 int ns_solock; 425 int ns_cc; 426 int ns_reclen; 427 int ns_numuids; 428 u_long ns_sref; 429 LIST_HEAD(, nfsrv_descript) ns_tq; /* Write gather lists */ 430 LIST_HEAD(, nfsuid) ns_uidhashtbl[NFS_UIDHASHSIZ]; 431 LIST_HEAD(nfsrvw_delayhash, nfsrv_descript) ns_wdelayhashtbl[NFS_WDELAYHASHSIZ]; 432}; 433 434/* Bits for "ns_flag" */ 435#define SLP_VALID 0x01 436#define SLP_DOREC 0x02 437#define SLP_NEEDQ 0x04 438#define SLP_DISCONN 0x08 439#define SLP_GETSTREAM 0x10 440#define SLP_LASTFRAG 0x20 441#define SLP_ALLFLAGS 0xff 442 443extern TAILQ_HEAD(nfssvc_sockhead, nfssvc_sock) nfssvc_sockhead; 444extern int nfssvc_sockhead_flag; 445#define SLP_INIT 0x01 446#define SLP_WANTINIT 0x02 447 448/* 449 * One of these structures is allocated for each nfsd. 450 */ 451struct nfsd { 452 TAILQ_ENTRY(nfsd) nfsd_chain; /* List of all nfsd's */ 453 int nfsd_flag; /* NFSD_ flags */ 454 struct nfssvc_sock *nfsd_slp; /* Current socket */ 455 int nfsd_authlen; /* Authenticator len */ 456 u_char nfsd_authstr[RPCAUTH_MAXSIZ]; /* Authenticator data */ 457 int nfsd_verflen; /* and the Verifier */ 458 u_char nfsd_verfstr[RPCVERF_MAXSIZ]; 459 struct proc *nfsd_procp; /* Proc ptr */ 460 struct nfsrv_descript *nfsd_nd; /* Associated nfsrv_descript */ 461}; 462 463/* Bits for "nfsd_flag" */ 464#define NFSD_WAITING 0x01 465#define NFSD_REQINPROG 0x02 466#define NFSD_NEEDAUTH 0x04 467#define NFSD_AUTHFAIL 0x08 468 469/* 470 * This structure is used by the server for describing each request. 471 * Some fields are used only when write request gathering is performed. 472 */ 473struct nfsrv_descript { 474 u_quad_t nd_time; /* Write deadline (usec) */ 475 off_t nd_off; /* Start byte offset */ 476 off_t nd_eoff; /* and end byte offset */ 477 LIST_ENTRY(nfsrv_descript) nd_hash; /* Hash list */ 478 LIST_ENTRY(nfsrv_descript) nd_tq; /* and timer list */ 479 LIST_HEAD(,nfsrv_descript) nd_coalesce; /* coalesced writes */ 480 struct mbuf *nd_mrep; /* Request mbuf list */ 481 struct mbuf *nd_md; /* Current dissect mbuf */ 482 struct mbuf *nd_mreq; /* Reply mbuf list */ 483 struct mbuf *nd_nam; /* and socket addr */ 484 struct mbuf *nd_nam2; /* return socket addr */ 485 caddr_t nd_dpos; /* Current dissect pos */ 486 int nd_procnum; /* RPC # */ 487 int nd_stable; /* storage type */ 488 int nd_flag; /* nd_flag */ 489 int nd_len; /* Length of this write */ 490 int nd_repstat; /* Reply status */ 491 u_long nd_retxid; /* Reply xid */ 492 u_long nd_duration; /* Lease duration */ 493 struct timeval nd_starttime; /* Time RPC initiated */ 494 fhandle_t nd_fh; /* File handle */ 495 struct ucred nd_cr; /* Credentials */ 496}; 497 498/* Bits for "nd_flag" */ 499#define ND_READ LEASE_READ 500#define ND_WRITE LEASE_WRITE 501#define ND_CHECK 0x04 502#define ND_LEASE (ND_READ | ND_WRITE | ND_CHECK) 503#define ND_NFSV3 0x08 504#define ND_NQNFS 0x10 505#define ND_KERBNICK 0x20 506#define ND_KERBFULL 0x40 507#define ND_KERBAUTH (ND_KERBNICK | ND_KERBFULL) 508 509extern TAILQ_HEAD(nfsd_head, nfsd) nfsd_head; 510extern int nfsd_head_flag; 511#define NFSD_CHECKSLP 0x01 512 513/* 514 * These macros compare nfsrv_descript structures. 515 */ 516#define NFSW_CONTIG(o, n) \ 517 ((o)->nd_eoff >= (n)->nd_off && \ 518 !bcmp((caddr_t)&(o)->nd_fh, (caddr_t)&(n)->nd_fh, NFSX_V3FH)) 519 520#define NFSW_SAMECRED(o, n) \ 521 (((o)->nd_flag & ND_KERBAUTH) == ((n)->nd_flag & ND_KERBAUTH) && \ 522 !bcmp((caddr_t)&(o)->nd_cr, (caddr_t)&(n)->nd_cr, \ 523 sizeof (struct ucred))) 524 525#ifdef NFS_DEBUG 526 527extern int nfs_debug; 528#define NFS_DEBUG_ASYNCIO 1 /* asynchronous i/o */ 529#define NFS_DEBUG_WG 2 /* server write gathering */ 530#define NFS_DEBUG_RC 4 /* server request caching */ 531 532#define NFS_DPF(cat, args) \ 533 do { \ 534 if (nfs_debug & NFS_DEBUG_##cat) printf args; \ 535 } while (0) 536 537#else 538 539#define NFS_DPF(cat, args) 540 541#endif 542 543int nfs_init __P((struct vfsconf *vfsp)); 544int nfs_reply __P((struct nfsreq *)); 545int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int)); 546int nfs_send __P((struct socket *,struct mbuf *,struct mbuf *,struct nfsreq *)); 547int nfs_rephead __P((int,struct nfsrv_descript *,struct nfssvc_sock *,int,int,u_quad_t *,struct mbuf **,struct mbuf **,caddr_t *)); 548int nfs_sndlock __P((int *,struct nfsreq *)); 549void nfs_sndunlock __P((int *flagp)); 550int nfs_disct __P((struct mbuf **,caddr_t *,int,int,caddr_t *)); 551int nfs_vinvalbuf __P((struct vnode *,int,struct ucred *,struct proc *,int)); 552int nfs_readrpc __P((struct vnode *,struct uio *,struct ucred *)); 553int nfs_writerpc __P((struct vnode *,struct uio *,struct ucred *,int *,int *)); 554int nfs_readdirrpc __P((register struct vnode *,struct uio *,struct ucred *)); 555int nfs_asyncio __P((struct buf *,struct ucred *)); 556int nfs_doio __P((struct buf *,struct ucred *,struct proc *)); 557int nfs_readlinkrpc __P((struct vnode *,struct uio *,struct ucred *)); 558int nfs_sigintr __P((struct nfsmount *,struct nfsreq *r,struct proc *)); 559int nfs_readdirplusrpc __P((struct vnode *,register struct uio *,struct ucred *)); 560int nfsm_disct __P((struct mbuf **,caddr_t *,int,int,caddr_t *)); 561void nfsm_srvfattr __P((struct nfsrv_descript *,struct vattr *,struct nfs_fattr *)); 562void nfsm_srvwcc __P((struct nfsrv_descript *,int,struct vattr *,int,struct vattr *,struct mbuf **,char **)); 563void nfsm_srvpostopattr __P((struct nfsrv_descript *,int,struct vattr *,struct mbuf **,char **)); 564int netaddr_match __P((int,union nethostaddr *,struct mbuf *)); 565int nfs_request __P((struct vnode *,struct mbuf *,int,struct proc *,struct ucred *,struct mbuf **,struct mbuf **,caddr_t *)); 566int nfs_loadattrcache __P((struct vnode **,struct mbuf **,caddr_t *,struct vattr *)); 567int nfs_namei __P((struct nameidata *,fhandle_t *,int,struct nfssvc_sock *,struct mbuf *,struct mbuf **,caddr_t *,struct vnode **,struct proc *,int)); 568void nfsm_adj __P((struct mbuf *,int,int)); 569int nfsm_mbuftouio __P((struct mbuf **,struct uio *,int,caddr_t *)); 570void nfsrv_initcache __P((void)); 571int nfs_getauth __P((struct nfsmount *,struct nfsreq *,struct ucred *,char **,int *,char *,int *,NFSKERBKEY_T)); 572int nfs_getnickauth __P((struct nfsmount *,struct ucred *,char **,int *,char *,int)); 573int nfs_savenickauth __P((struct nfsmount *,struct ucred *,int,NFSKERBKEY_T,struct mbuf **,char **,struct mbuf *)); 574int nfs_adv __P((struct mbuf **,caddr_t *,int,int)); 575void nfs_nhinit __P((void)); 576void nfs_timer __P((void*)); 577u_long nfs_hash __P((nfsfh_t *,int)); 578int nfsrv_dorec __P((struct nfssvc_sock *,struct nfsd *,struct nfsrv_descript **)); 579int nfsrv_getcache __P((struct nfsrv_descript *,struct nfssvc_sock *,struct mbuf **)); 580void nfsrv_updatecache __P((struct nfsrv_descript *,int,struct mbuf *)); 581void nfsrv_cleancache __P((void)); 582int nfs_connect __P((struct nfsmount *,struct nfsreq *)); 583void nfs_disconnect __P((struct nfsmount *)); 584int nfs_getattrcache __P((struct vnode *,struct vattr *)); 585int nfsm_strtmbuf __P((struct mbuf **,char **,char *,long)); 586int nfs_bioread __P((struct vnode *,struct uio *,int,struct ucred *)); 587int nfsm_uiotombuf __P((struct uio *,struct mbuf **,int,caddr_t *)); 588void nfsrv_init __P((int)); 589void nfs_clearcommit __P((struct mount *)); 590int nfsrv_errmap __P((struct nfsrv_descript *, int)); 591void nfsrvw_sort __P((gid_t [],int)); 592void nfsrv_setcred __P((struct ucred *,struct ucred *)); 593int nfs_writebp __P((struct buf *,int)); 594int nfsrv_object_create __P(( struct vnode * )); 595void nfsrv_wakenfsd __P((struct nfssvc_sock *slp)); 596int nfsrv_writegather __P((struct nfsrv_descript **, struct nfssvc_sock *, 597 struct proc *, struct mbuf **)); 598int nfs_fsinfo __P((struct nfsmount *, struct vnode *, struct ucred *, 599 struct proc *p)); 600 601int nfsrv3_access __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 602 struct proc *procp, struct mbuf **mrq)); 603int nfsrv_commit __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 604 struct proc *procp, struct mbuf **mrq)); 605int nfsrv_create __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 606 struct proc *procp, struct mbuf **mrq)); 607int nfsrv_fhtovp __P((fhandle_t *,int,struct vnode **, 608 struct ucred *,struct nfssvc_sock *,struct mbuf *, 609 int *,int)); 610int nfsrv_fsinfo __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 611 struct proc *procp, struct mbuf **mrq)); 612int nfsrv_getattr __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 613 struct proc *procp, struct mbuf **mrq)); 614int nfsrv_link __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 615 struct proc *procp, struct mbuf **mrq)); 616int nfsrv_lookup __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 617 struct proc *procp, struct mbuf **mrq)); 618int nfsrv_mkdir __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 619 struct proc *procp, struct mbuf **mrq)); 620int nfsrv_mknod __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 621 struct proc *procp, struct mbuf **mrq)); 622int nfsrv_noop __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 623 struct proc *procp, struct mbuf **mrq)); 624int nfsrv_null __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 625 struct proc *procp, struct mbuf **mrq)); 626int nfsrv_pathconf __P((struct nfsrv_descript *nfsd, 627 struct nfssvc_sock *slp, struct proc *procp, 628 struct mbuf **mrq)); 629int nfsrv_read __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 630 struct proc *procp, struct mbuf **mrq)); 631int nfsrv_readdir __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 632 struct proc *procp, struct mbuf **mrq)); 633int nfsrv_readdirplus __P((struct nfsrv_descript *nfsd, 634 struct nfssvc_sock *slp, struct proc *procp, 635 struct mbuf **mrq)); 636int nfsrv_readlink __P((struct nfsrv_descript *nfsd, 637 struct nfssvc_sock *slp, struct proc *procp, 638 struct mbuf **mrq)); 639int nfsrv_remove __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 640 struct proc *procp, struct mbuf **mrq)); 641int nfsrv_rename __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 642 struct proc *procp, struct mbuf **mrq)); 643int nfsrv_rmdir __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 644 struct proc *procp, struct mbuf **mrq)); 645int nfsrv_setattr __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 646 struct proc *procp, struct mbuf **mrq)); 647int nfsrv_statfs __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 648 struct proc *procp, struct mbuf **mrq)); 649int nfsrv_symlink __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 650 struct proc *procp, struct mbuf **mrq)); 651int nfsrv_write __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, 652 struct proc *procp, struct mbuf **mrq)); 653void nfsrv_rcv __P((struct socket *so, caddr_t arg, int waitflag)); 654void nfsrv_slpderef __P((struct nfssvc_sock *slp)); 655#endif /* KERNEL */ 656 657#endif
|