Home | History | Annotate | Download | only in server

Lines Matching defs:clp

95 static void nfsrv_dumpaclient(struct nfsclient *clp,
108 static int nfsrv_getstate(struct nfsclient *clp, nfsv4stateid_t *stateidp,
123 static int nfsrv_checkgrace(struct nfsrv_descript *nd, struct nfsclient *clp,
125 static int nfsrv_docallback(struct nfsclient *clp, int procnum,
128 static int nfsrv_cbcallargs(struct nfsrv_descript *nd, struct nfsclient *clp,
131 static u_int32_t nfsrv_nextstateindex(struct nfsclient *clp);
132 static void nfsrv_markstable(struct nfsclient *clp);
133 static int nfsrv_checkstable(struct nfsclient *clp);
134 static int nfsrv_clientconflict(struct nfsclient *clp, int *haslockp, struct
139 struct nfsclient *clp, int *haslockp, NFSPROC_T *p);
141 struct nfsclient *clp);
162 static int nfsv4_setcbsequence(struct nfsrv_descript *nd, struct nfsclient *clp,
164 static int nfsv4_getcbsession(struct nfsclient *clp, struct nfsdsession **sepp);
169 * If returning a non-error, the clp structure must either be linked into
176 struct nfsclient *clp = NULL, *new_clp = *new_clpp;
222 LIST_FOREACH(clp, &nfsclienthash[i], lc_hash) {
223 if (new_clp->lc_idlen == clp->lc_idlen &&
224 !NFSBCMP(new_clp->lc_id, clp->lc_id, clp->lc_idlen)) {
233 (clp->lc_flags & (LCL_NEEDSCONFIRM | LCL_ADMINREVOKED))) {
250 LIST_REMOVE(clp, lc_hash);
251 nfsrv_cleanclient(clp, p);
252 nfsrv_freedeleglist(&clp->lc_deleg);
253 nfsrv_freedeleglist(&clp->lc_olddeleg);
289 nfsrv_zapclient(clp, p);
297 if (nfsrv_notsamecredname(nd, clp)) {
301 if (clp->lc_expiry < NFSD_MONOSEC &&
302 (!LIST_EMPTY(&clp->lc_open) || !LIST_EMPTY(&clp->lc_deleg))) {
303 nfsrv_cleanclient(clp, p);
304 nfsrv_freedeleglist(&clp->lc_deleg);
311 if (!LIST_EMPTY(&clp->lc_deleg)) {
313 } else if (LIST_EMPTY(&clp->lc_open)) {
318 LIST_FOREACH(stp, &clp->lc_open, ls_list) {
331 rad = NFSSOCKADDR(clp->lc_req.nr_nam, struct sockaddr_in *);
342 if (NFSBCMP(new_clp->lc_verf, clp->lc_verf, NFSX_VERF)) {
348 LIST_REMOVE(clp, lc_hash);
368 LIST_NEWHEAD(&new_clp->lc_open, &clp->lc_open, ls_list);
371 LIST_NEWHEAD(&new_clp->lc_deleg, &clp->lc_deleg, ls_list);
374 LIST_NEWHEAD(&new_clp->lc_olddeleg, &clp->lc_olddeleg,
380 &clp->lc_stateid[i], ls_hash);
394 * Must wait until any outstanding callback on the old clp
398 while (clp->lc_cbref) {
399 clp->lc_flags |= LCL_WAKEUPWANTED;
400 (void)mtx_sleep(clp, NFSSTATEMUTEXPTR, PZERO - 1,
401 "nfsd clp", 10 * hz);
404 nfsrv_zapclient(clp, p);
411 clientidp->lval[0] = clp->lc_clientid.lval[0];
412 clientidp->lval[1] = clp->lc_clientid.lval[1];
421 LIST_REMOVE(clp, lc_hash);
426 clp->lc_clientid.lval[0];
428 clp->lc_clientid.lval[1];
429 new_clp->lc_delegtime = clp->lc_delegtime;
430 new_clp->lc_stateindex = clp->lc_stateindex;
431 new_clp->lc_statemaxindex = clp->lc_statemaxindex;
433 LIST_NEWHEAD(&new_clp->lc_open, &clp->lc_open, ls_list);
436 LIST_NEWHEAD(&new_clp->lc_deleg, &clp->lc_deleg, ls_list);
439 LIST_NEWHEAD(&new_clp->lc_olddeleg, &clp->lc_olddeleg, ls_list);
444 clp->lc_stateid[i], ls_hash);
460 * Must wait until any outstanding callback on the old clp
464 while (clp->lc_cbref) {
465 clp->lc_flags |= LCL_WAKEUPWANTED;
466 (void)mtx_sleep(clp, NFSSTATEMUTEXPTR, PZERO - 1,
470 nfsrv_zapclient(clp, p);
487 struct nfsclient *clp;
530 /* For NFSv4.1, the clp is acquired from the associated session. */
533 clp = NULL;
539 clp = sep->sess_clp;
544 LIST_FOREACH(clp, hp, lc_hash) {
545 if (clp->lc_clientid.lval[1] == clientid.lval[1])
549 if (clp == NULL) {
554 } else if (clp->lc_flags & LCL_ADMINREVOKED) {
576 clp->lc_confirm.lval[0] != confirm.lval[0]) ||
578 clp->lc_confirm.qval != confirm.qval))
580 else if (nfsrv_notsamecredname(nd, clp))
584 if ((clp->lc_flags & (LCL_NEEDSCONFIRM | LCL_DONTCLEAN)) ==
591 nfsrv_cleanclient(clp, p);
592 nfsrv_freedeleglist(&clp->lc_olddeleg);
593 if (nfsrv_checkgrace(nd, clp, 0)) {
595 nfsrv_freedeleglist(&clp->lc_deleg);
597 LIST_FOREACH(stp, &clp->lc_deleg, ls_list)
599 clp->lc_delegtime = NFSD_MONOSEC +
601 LIST_NEWHEAD(&clp->lc_olddeleg, &clp->lc_deleg,
605 clp->lc_program = cbprogram;
607 clp->lc_flags &= ~(LCL_NEEDSCONFIRM | LCL_DONTCLEAN);
608 if (clp->lc_program)
609 clp->lc_flags |= LCL_NEEDSCBNULL;
614 != 0 && clp->lc_req.nr_client == NULL) {
615 clp->lc_req.nr_client = (struct __rpc_client *)
618 if (clp->lc_req.nr_client != NULL) {
621 clp->lc_req.nr_client->cl_private;
636 LIST_INSERT_HEAD(&clp->lc_session, nsep, sess_list);
637 nsep->sess_clp = clp;
642 } else if (clp->lc_flags & LCL_NEEDSCONFIRM) {
650 if (nfsrv_notsamecredname(nd, clp)) {
653 LIST_FOREACH(stp, &clp->lc_stateid[i], ls_hash) {
664 if (!error && (clp->lc_flags & LCL_CBDOWN))
669 clp->lc_expiry = nfsrv_leaseexpiry();
679 *clpp = clp;
692 struct nfsclient *clp;
711 LIST_FOREACH(clp, hp, lc_hash) {
712 if (clp->lc_clientid.lval[1] == clientid.lval[1])
715 if (clp == NULL) {
725 if (!LIST_EMPTY(&clp->lc_stateid[i])) {
732 if (!LIST_EMPTY(&clp->lc_session) || !LIST_EMPTY(&clp->lc_deleg)) {
741 nfsrv_cleanclient(clp, p);
742 nfsrv_freedeleglist(&clp->lc_deleg);
743 nfsrv_freedeleglist(&clp->lc_olddeleg);
744 LIST_REMOVE(clp, lc_hash);
748 nfsrv_zapclient(clp, p);
761 struct nfsclient *clp = NULL;
782 LIST_FOREACH(clp, &nfsclienthash[i], lc_hash) {
783 if (revokep->nclid_idlen == clp->lc_idlen &&
784 !NFSBCMP(revokep->nclid_id, clp->lc_id, clp->lc_idlen)) {
802 nfsrv_writestable(clp->lc_id, clp->lc_idlen, NFSNST_REVOKE, p);
808 clp->lc_flags &= ~LCL_CALLBACKSON;
809 clp->lc_flags |= LCL_ADMINREVOKED;
810 nfsrv_cleanclient(clp, p);
811 nfsrv_freedeleglist(&clp->lc_deleg);
812 nfsrv_freedeleglist(&clp->lc_olddeleg);
829 struct nfsclient *clp;
844 clp = LIST_FIRST(&nfsclienthash[i]);
845 while (clp != NULL && cnt < maxcnt) {
846 nfsrv_dumpaclient(clp, &dumpp[cnt]);
848 clp = LIST_NEXT(clp, lc_hash);
864 nfsrv_dumpaclient(struct nfsclient *clp, struct nfsd_dumpclients *dumpp)
875 dumpp->ndcl_flags = clp->lc_flags;
876 dumpp->ndcl_clid.nclid_idlen = clp->lc_idlen;
877 NFSBCOPY(clp->lc_id, dumpp->ndcl_clid.nclid_id, clp->lc_idlen);
878 sad = NFSSOCKADDR(clp->lc_req.nr_nam, struct sockaddr *);
891 LIST_FOREACH(stp, &clp->lc_open, ls_list) {
907 LIST_FOREACH(stp, &clp->lc_deleg, ls_list) {
910 LIST_FOREACH(stp, &clp->lc_olddeleg, ls_list) {
1066 struct nfsclient *clp, *nclp;
1112 clp = LIST_FIRST(&nfsclienthash[i]);
1113 while (clp != NULL) {
1114 nclp = LIST_NEXT(clp, lc_hash);
1115 if (!(clp->lc_flags & LCL_EXPIREIT)) {
1116 if (((clp->lc_expiry + NFSRV_STALELEASE) < NFSD_MONOSEC
1117 && ((LIST_EMPTY(&clp->lc_deleg)
1118 && LIST_EMPTY(&clp->lc_open)) ||
1120 (clp->lc_expiry + NFSRV_MOULDYLEASE) < NFSD_MONOSEC ||
1121 (clp->lc_expiry < NFSD_MONOSEC &&
1143 clp->lc_flags |= LCL_EXPIREIT;
1154 stp = LIST_FIRST(&clp->lc_open);
1171 clp = nclp;
1189 nfsrv_cleanclient(struct nfsclient *clp, NFSPROC_T *p)
1194 LIST_FOREACH_SAFE(stp, &clp->lc_open, ls_list, nstp)
1196 if ((clp->lc_flags & LCL_ADMINREVOKED) == 0)
1197 LIST_FOREACH_SAFE(sep, &clp->lc_session, sess_list, nsep)
1208 nfsrv_zapclient(struct nfsclient *clp, NFSPROC_T *p)
1212 if ((clp->lc_flags & (LCL_GSS | LCL_CALLBACKSON)) ==
1214 (clp->lc_hand.nfsh_flag & NFSG_COMPLETE) &&
1215 clp->lc_handlelen > 0) {
1216 clp->lc_hand.nfsh_flag &= ~NFSG_COMPLETE;
1217 clp->lc_hand.nfsh_flag |= NFSG_DESTROYED;
1218 (void) nfsrv_docallback(clp, NFSV4PROC_CBNULL,
1222 newnfs_disconnect(&clp->lc_req);
1223 NFSSOCKADDRFREE(clp->lc_req.nr_nam);
1224 NFSFREEMUTEX(&clp->lc_req.nr_mtx);
1225 free(clp->lc_stateid, M_NFSDCLIENT);
1226 free(clp, M_NFSDCLIENT);
1461 nfsrv_getstate(struct nfsclient *clp, nfsv4stateid_t *stateidp, __unused u_int32_t flags,
1469 hp = NFSSTATEHASH(clp, *stateidp);
1535 struct nfsclient *clp = NULL;
1647 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
1660 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
1666 error = nfsrv_getstate(clp, &new_stp->ls_stateid,
1771 error = nfsrv_checkgrace(nd, clp, new_stp->ls_flags);
1773 nfsrv_checkstable(clp))
1779 nfsrv_markstable(clp);
1944 ret = nfsrv_cleandeleg(vp, lfp, clp, &haslock, p);
1988 clp != tstp->ls_clp &&
1992 (clp != tstp->ls_clp ||
2079 (clp != lop->lo_stp->ls_clp ||
2193 clp->lc_clientid.lval[0];
2195 clp->lc_clientid.lval[1];
2197 nfsrv_nextstateindex(clp);
2198 new_stp->ls_clp = clp;
2204 LIST_INSERT_HEAD(NFSSTATEHASH(clp, new_stp->ls_stateid),
2248 struct nfsclient *clp;
2285 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
2293 nfsrv_getowner(&clp->lc_open, new_stp, &ownerstp);
2312 error = nfsrv_checkgrace(nd, clp, new_stp->ls_flags);
2314 nfsrv_checkstable(clp))
2459 if ((readonly && stp->ls_clp != clp &&
2461 (!readonly && (stp->ls_clp != clp ||
2503 struct nfsclient *clp;
2548 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
2550 if (!error && (clp->lc_flags & LCL_NEEDSCBNULL) &&
2551 clp->lc_program) {
2558 * Although nfsrv_docallback() will sleep, clp won't
2561 * fields in clp can change, but having multiple
2565 cbret = nfsrv_docallback(clp, NFSV4PROC_CBNULL,
2568 clp->lc_flags &= ~LCL_NEEDSCBNULL;
2570 clp->lc_flags |= LCL_CALLBACKSON;
2578 nfsrv_getowner(&clp->lc_open, new_stp, &ownerstp);
2597 nfsrv_markstable(clp);
2684 if (clp != stp->ls_clp) {
2749 if (stp->ls_clp != clp && (stp->ls_flags & NFSLCK_DELEGREAD))
2753 if ((readonly && stp->ls_clp != clp &&
2755 (!readonly && (stp->ls_clp != clp ||
2796 LIST_FOREACH(stp, &clp->lc_olddeleg, ls_list) {
2799 if (stp->ls_clp != clp)
2800 panic("olddeleg clp");
2806 clp->lc_clientid.lval[0];
2808 clp->lc_clientid.lval[1];
2810 nfsrv_nextstateindex(clp);
2812 LIST_INSERT_HEAD(&clp->lc_deleg, stp, ls_list);
2813 LIST_INSERT_HEAD(NFSSTATEHASH(clp,
2819 clp->lc_delegtime = NFSD_MONOSEC +
2826 new_open->ls_stateid.other[0] = clp->lc_clientid.lval[0];
2827 new_open->ls_stateid.other[1] = clp->lc_clientid.lval[1];
2828 new_open->ls_stateid.other[2] = nfsrv_nextstateindex(clp);
2838 new_open->ls_clp = clp;
2841 LIST_INSERT_HEAD(NFSSTATEHASH(clp, new_open->ls_stateid),
2856 LIST_INSERT_HEAD(&clp->lc_open, new_stp, ls_list);
2878 if (stp->ls_clp == clp)
2892 clp->lc_clientid.lval[0];
2894 clp->lc_clientid.lval[1];
2896 nfsrv_nextstateindex(clp);
2908 new_deleg->ls_clp = clp;
2912 LIST_INSERT_HEAD(NFSSTATEHASH(clp,
2914 LIST_INSERT_HEAD(&clp->lc_deleg, new_deleg, ls_list);
2917 (clp->lc_flags & (LCL_CALLBACKSON | LCL_CBDOWN)) !=
2930 new_open->ls_stateid.other[0] = clp->lc_clientid.lval[0];
2931 new_open->ls_stateid.other[1] = clp->lc_clientid.lval[1];
2932 new_open->ls_stateid.other[2] = nfsrv_nextstateindex(clp);
2942 new_open->ls_clp = clp;
2945 LIST_INSERT_HEAD(NFSSTATEHASH(clp, new_open->ls_stateid),
2960 LIST_INSERT_HEAD(&clp->lc_open, new_stp, ls_list);
3007 (clp->lc_flags & (LCL_CALLBACKSON | LCL_CBDOWN)) !=
3018 = clp->lc_clientid.lval[0];
3020 = clp->lc_clientid.lval[1];
3022 = nfsrv_nextstateindex(clp);
3028 new_deleg->ls_clp = clp;
3032 LIST_INSERT_HEAD(NFSSTATEHASH(clp,
3034 LIST_INSERT_HEAD(&clp->lc_deleg, new_deleg, ls_list);
3042 new_open->ls_stateid.other[0] = clp->lc_clientid.lval[0];
3043 new_open->ls_stateid.other[1] = clp->lc_clientid.lval[1];
3044 new_open->ls_stateid.other[2] = nfsrv_nextstateindex(clp);
3050 new_open->ls_clp = clp;
3054 LIST_INSERT_HEAD(NFSSTATEHASH(clp, new_open->ls_stateid),
3066 (clp->lc_flags & (LCL_CALLBACKSON | LCL_CBDOWN)) !=
3077 = clp->lc_clientid.lval[0];
3079 = clp->lc_clientid.lval[1];
3081 = nfsrv_nextstateindex(clp);
3095 new_deleg->ls_clp = clp;
3099 LIST_INSERT_HEAD(NFSSTATEHASH(clp,
3101 LIST_INSERT_HEAD(&clp->lc_deleg, new_deleg, ls_list);
3115 new_open->ls_stateid.other[0] = clp->lc_clientid.lval[0];
3116 new_open->ls_stateid.other[1] = clp->lc_clientid.lval[1];
3117 new_open->ls_stateid.other[2] = nfsrv_nextstateindex(clp);
3124 new_open->ls_clp = clp;
3137 (clp->lc_flags & (LCL_CALLBACKSON | LCL_CBDOWN)) ==
3147 = clp->lc_clientid.lval[0];
3150 = clp->lc_clientid.lval[1];
3153 = nfsrv_nextstateindex(clp);
3172 new_deleg->ls_clp = clp;
3177 LIST_INSERT_HEAD(NFSSTATEHASH(clp,
3179 LIST_INSERT_HEAD(&clp->lc_deleg, new_deleg,
3194 LIST_INSERT_HEAD(&clp->lc_open, new_stp, ls_list);
3195 LIST_INSERT_HEAD(NFSSTATEHASH(clp, new_open->ls_stateid),
3235 struct nfsclient *clp;
3253 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
3256 error = nfsrv_getstate(clp, &new_stp->ls_stateid,
3324 if (!(clp->lc_flags & LCL_STAMPEDSTABLE)) {
3325 clp->lc_flags |= LCL_STAMPEDSTABLE;
3326 len = clp->lc_idlen;
3327 NFSBCOPY(clp->lc_id, client, len);
3392 struct nfsclient *clp;
3419 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
3428 error = nfsrv_getstate(clp, stateidp, NFSLCK_DELEGRETURN, &stp);
3456 nfsrv_freedeleglist(&clp->lc_olddeleg);
3474 struct nfsclient *clp;
3489 error = nfsrv_getclient(clientid, CLOPS_RENEW, &clp, NULL,
3495 LIST_FOREACH(ownstp, &clp->lc_open, ls_list) {
3856 nfsrv_getclientipaddr(struct nfsrv_descript *nd, struct nfsclient *clp)
3873 rad = NFSSOCKADDR(clp->lc_req.nr_nam, struct sockaddr_in *);
3878 clp->lc_req.nr_client = NULL;
3879 clp->lc_req.nr_lock = 0;
3887 clp->lc_flags |= LCL_TCPCALLBACK;
3888 clp->lc_req.nr_sotype = SOCK_STREAM;
3889 clp->lc_req.nr_soproto = IPPROTO_TCP;
3891 clp->lc_req.nr_sotype = SOCK_DGRAM;
3892 clp->lc_req.nr_soproto = IPPROTO_UDP;
3965 clp->lc_program = 0;
4040 nfsrv_checkgrace(struct nfsrv_descript *nd, struct nfsclient *clp,
4055 if (nd != NULL && clp != NULL &&
4057 (clp->lc_flags & LCL_RECLAIMCOMPLETE) != 0) {
4081 nfsrv_docallback(struct nfsclient *clp, int procnum,
4095 if (clp->lc_flags & LCL_NEEDSCONFIRM) {
4099 clp->lc_cbref++;
4105 clp->lc_req.nr_prog = clp->lc_program;
4107 if ((clp->lc_flags & LCL_NFSV41) != 0)
4108 clp->lc_req.nr_vers = NFSV41_CBVERS;
4111 clp->lc_req.nr_vers = NFSV4_CBVERS;
4117 if (clp->lc_flags & LCL_GSS)
4119 if ((clp->lc_flags & LCL_NFSV41) != 0)
4122 cred->cr_uid = clp->lc_uid;
4123 cred->cr_gid = clp->lc_gid;
4124 callback = clp->lc_callback;
4141 error = nfsrv_cbcallargs(nd, clp, callback, NFSV4OP_CBGETATTR,
4151 error = nfsrv_cbcallargs(nd, clp, callback, NFSV4OP_CBRECALL,
4169 if ((clp->lc_flags & LCL_NFSV41) != 0) {
4170 error = nfsv4_getcbsession(clp, &sep);
4185 (void) newnfs_sndlock(&clp->lc_req.nr_lock);
4186 if (clp->lc_req.nr_client == NULL) {
4187 if ((clp->lc_flags & LCL_NFSV41) != 0)
4190 error = newnfs_connect(NULL, &clp->lc_req, cred,
4193 error = newnfs_connect(NULL, &clp->lc_req, cred,
4196 newnfs_sndunlock(&clp->lc_req.nr_lock);
4201 error = newnfs_request(nd, NULL, clp,
4202 &clp->lc_req, NULL, NULL, cred,
4203 clp->lc_program, clp->lc_req.nr_vers, NULL,
4219 error = newnfs_request(nd, NULL, clp, &clp->lc_req,
4220 NULL, NULL, cred, clp->lc_program,
4221 clp->lc_req.nr_vers, NULL, 1, NULL, NULL);
4238 clp->lc_flags |= LCL_CBDOWN;
4248 if (clp->lc_flags & LCL_CBDOWN)
4249 clp->lc_flags &= ~(LCL_CBDOWN | LCL_CALLBACKSON);
4260 clp->lc_cbref--;
4261 if ((clp->lc_flags & LCL_WAKEUPWANTED) && clp->lc_cbref == 0) {
4262 clp->lc_flags &= ~LCL_WAKEUPWANTED;
4263 wakeup(clp);
4275 nfsrv_cbcallargs(struct nfsrv_descript *nd, struct nfsclient *clp,
4289 error = nfsv4_setcbsequence(nd, clp, 1, sepp);
4331 nfsrv_nextstateindex(struct nfsclient *clp)
4337 if (!(clp->lc_flags & LCL_INDEXNOTOK)) {
4338 clp->lc_stateindex++;
4339 if (clp->lc_stateindex != clp->lc_statemaxindex)
4340 return (clp->lc_stateindex);
4350 LIST_FOREACH(stp, &clp->lc_stateid[i], ls_hash) {
4374 LIST_FOREACH(stp, &clp->lc_stateid[i], ls_hash) {
4381 clp->lc_flags |= LCL_INDEXNOTOK;
4388 clp->lc_stateindex = min_index + 1;
4389 clp->lc_statemaxindex = max_index;
4390 clp->lc_flags &= ~LCL_INDEXNOTOK;
4391 return (clp->lc_stateindex);
4678 nfsrv_markstable(struct nfsclient *clp)
4686 if (sp->nst_len == clp->lc_idlen &&
4687 !NFSBCMP(sp->nst_client, clp->lc_id, sp->nst_len))
4697 sp->nst_clp = clp;
4705 nfsrv_checkstable(struct nfsclient *clp)
4713 if (sp->nst_len == clp->lc_idlen &&
4714 !NFSBCMP(sp->nst_client, clp->lc_id, sp->nst_len))
4743 nfsrv_clientconflict(struct nfsclient *clp, int *haslockp, vnode_t vp,
4751 if (clp->lc_expiry >= NFSD_MONOSEC ||
4780 nfsrv_writestable(clp->lc_id, clp->lc_idlen, NFSNST_REVOKE, p);
4782 nfsrv_cleanclient(clp, p);
4783 nfsrv_freedeleglist(&clp->lc_deleg);
4784 nfsrv_freedeleglist(&clp->lc_olddeleg);
4785 LIST_REMOVE(clp, lc_hash);
4786 nfsrv_zapclient(clp, p);
4813 struct nfsclient *clp = stp->ls_clp;
4825 if (clp->lc_delegtime < NFSD_MONOSEC) {
4896 error = nfsrv_docallback(clp, NFSV4OP_CBRECALL,
4905 if (clp->lc_expiry >= NFSD_MONOSEC &&
4966 nfsrv_writestable(clp->lc_id, clp->lc_idlen, NFSNST_REVOKE, p);
4968 if (clp->lc_expiry < NFSD_MONOSEC) {
4969 nfsrv_cleanclient(clp, p);
4970 nfsrv_freedeleglist(&clp->lc_deleg);
4971 nfsrv_freedeleglist(&clp->lc_olddeleg);
4972 LIST_REMOVE(clp, lc_hash);
4979 nfsrv_zapclient(clp, p);
5079 struct nfsclient *clp, int *haslockp, NFSPROC_T *p)
5087 if (stp->ls_clp != clp) {
5260 struct nfsclient *clp;
5297 clp = stp->ls_clp;
5312 clp->lc_clientid.qval == nd->nd_clientid.qval) ||
5313 nfsaddr2_match(clp->lc_req.nr_nam, nd->nd_nam)) {
5327 if (clp->lc_expiry >= NFSD_MONOSEC) {
5331 error = nfsrv_docallback(clp, NFSV4OP_CBGETATTR, NULL,
5361 struct nfsclient *clp, *nclp;
5371 LIST_FOREACH_SAFE(clp, &nfsclienthash[i], lc_hash, nclp) {
5372 LIST_FOREACH_SAFE(stp, &clp->lc_open, ls_list, nstp) {
5389 nfsrv_notsamecredname(struct nfsrv_descript *nd, struct nfsclient *clp)
5393 if (!(clp->lc_flags & LCL_GSS))
5395 if (clp->lc_flags & LCL_NAME) {
5396 if (nd->nd_princlen != clp->lc_namelen ||
5397 NFSBCMP(nd->nd_principal, clp->lc_name,
5398 clp->lc_namelen))
5403 if (nd->nd_cred->cr_uid == clp->lc_uid)
5407 } else if (clp->lc_flags & LCL_GSS)
5414 if (nd->nd_cred->cr_uid == clp->lc_uid || nd->nd_cred->cr_uid == 0)
5740 struct nfsclient *clp, *nclp;
5748 LIST_FOREACH_SAFE(clp, &nfsclienthash[i], lc_hash, nclp) {
5749 nfsrv_cleanclient(clp, p);
5750 nfsrv_freedeleglist(&clp->lc_deleg);
5751 nfsrv_freedeleglist(&clp->lc_olddeleg);
5752 free(clp->lc_stateid, M_NFSDCLIENT);
5753 free(clp, M_NFSDCLIENT);
5974 struct nfsclient *clp;
5982 error = nfsrv_getclient((nfsquad_t)((u_quad_t)0), CLOPS_RENEW, &clp,
5986 LIST_FOREACH(stp, &clp->lc_deleg, ls_list) {
5999 error = nfsrv_getstate(clp, stateidp, 0, &stp);
6016 nfsv4_setcbsequence(struct nfsrv_descript *nd, struct nfsclient *clp,
6025 error = nfsv4_getcbsession(clp, sepp);
6054 nfsv4_getcbsession(struct nfsclient *clp, struct nfsdsession **sepp)
6059 LIST_FOREACH(sep, &clp->lc_session, sess_list) {
6083 struct nfsclient *clp;
6088 LIST_FOREACH(clp, &nfsclienthash[i], lc_hash) {
6089 LIST_FOREACH(sep, &clp->lc_session, sess_list) {