cln
mount_enoent_error(struct cln *cln, char *path, char *rpath, int *flavor_list)
flavor_count = getclientsflavors_new(sh, cln,
flavor_count = getclientsflavors_old(sh, cln,
static int getclientsflavors_old(share_t *, struct cln *, int *);
static int getclientsflavors_new(share_t *, struct cln *, int *);
static int check_client_old(share_t *, struct cln *, int, uid_t, gid_t, uint_t,
static int check_client_new(share_t *, struct cln *, int, uid_t, gid_t, uint_t,
cln_init_common(struct cln *cln, SVCXPRT *transp, char *netid,
if ((cln->transp = transp) != NULL) {
cln->netid = transp->xp_netid;
cln->nbuf = svc_getrpccaller(transp);
cln->netid = netid;
cln->nbuf = nbuf;
cln->nconf = NULL;
cln->clnames = NULL;
cln->host = NULL;
cln->flags = 0;
cln_init(struct cln *cln, SVCXPRT *transp)
cln_init_common(cln, transp, NULL, NULL);
cln_init_lazy(struct cln *cln, char *netid, struct netbuf *nbuf)
cln_init_common(cln, NULL, netid, nbuf);
cln_fini(struct cln *cln)
if (cln->nconf != NULL)
freenetconfigent(cln->nconf);
if (cln->clnames != NULL)
netdir_free(cln->clnames, ND_HOSTSERVLIST);
free(cln->host);
cln_getnbuf(struct cln *cln)
return (cln->nbuf);
cln_getclientsnames(struct cln *cln)
if ((cln->flags & CLN_CLNAMES) == 0) {
if (cln->netid != NULL && cln->nbuf != NULL) {
cln->nconf = getnetconfigent(cln->netid);
if (cln->nconf == NULL)
cln->netid);
if (cln->nconf != NULL && cln->nbuf != NULL)
(void) __netdir_getbyaddr_nosrv(cln->nconf,
&cln->clnames, cln->nbuf);
cln->flags |= CLN_CLNAMES;
return (cln->clnames);
cln_havehost(struct cln *cln)
return ((cln->flags & (CLN_CLNAMES | CLN_HOST)) != 0);
cln_gethost(struct cln *cln)
if (cln_getclientsnames(cln) != NULL)
return (cln->clnames->h_hostservs[0].h_host);
if ((cln->flags & CLN_HOST) == 0) {
if (cln->nconf == NULL || cln->nbuf == NULL) {
cln->host = strdup("(anon)");
if (strcmp(cln->nconf->nc_protofmly, NC_INET) == 0) {
sa = (struct sockaddr_in *)(cln->nbuf->buf);
cln->host = strdup(host);
} else if (strcmp(cln->nconf->nc_protofmly,
sa = (struct sockaddr_in6 *)(cln->nbuf->buf);
cln->host = strdup(host);
cln->host = strdup("(anon)");
cln->flags |= CLN_HOST;
return (cln->host);
struct cln cln;
cln_init(&cln, transp);
if ((host = cln_gethost(&cln)) == NULL) {
error = mount_enoent_error(&cln, path, rpath,
flavor_count = getclientsflavors_new(sh, &cln, flavor_list);
flavor_count = getclientsflavors_old(sh, &cln, flavor_list);
log_cant_reply_cln(&cln);
log_cant_reply_cln(&cln);
if (cln_havehost(&cln))
host = cln_gethost(&cln);
host = cln_gethost(&cln);
cln_fini(&cln);
in_access_list(struct cln *cln,
if ((pnb = cln_getnbuf(cln)) == NULL)
if ((clnames = cln_getclientsnames(cln)) == NULL)
getclientsflavors_old(share_t *sh, struct cln *cln, int *flavors)
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, val) > 0)
getclientsflavors_new(share_t *sh, struct cln *cln, int *flavors)
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, val) > 0)
check_client(share_t *sh, struct cln *cln, int flavor, uid_t clnt_uid,
return (check_client_new(sh, cln, flavor, clnt_uid, clnt_gid,
return (check_client_old(sh, cln, flavor, clnt_uid, clnt_gid,
check_client_old(share_t *sh, struct cln *cln, int flavor, uid_t clnt_uid,
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, val) > 0) {
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, al) > 0) {
if (in_access_list(cln, al) > 0) {
is_wrongsec(share_t *sh, struct cln *cln, int flavor)
flavor_count = getclientsflavors_new(sh, cln, flavor_list);
check_client_new(share_t *sh, struct cln *cln, int flavor, uid_t clnt_uid,
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, val) > 0) {
if (in_access_list(cln, val) > 0)
if (in_access_list(cln, al) > 0) {
if (in_access_list(cln, al) > 0) {
struct cln cln;
if (is_wrongsec(sh, cln, flavor))
cln_init_lazy(&cln, lq->ld_netid, lq->ld_nb);
host = cln_gethost(&cln);
cln_fini(&cln);
struct cln cln;
cln_init(&cln, transp);
log_cant_reply_cln(&cln);
host = cln_gethost(&cln);
cln_fini(&cln);
struct cln cln;
cln_init(&cln, transp);
host = cln_gethost(&cln);
cln_fini(&cln);
log_cant_reply_cln(struct cln *cln)
host = cln_gethost(cln);
struct cln cln;
cln_init(&cln, transp);
log_cant_reply_cln(&cln);
cln_fini(&cln);
struct cln;
extern void log_cant_reply_cln(struct cln *);
extern int check_client(struct share *, struct cln *, int, uid_t, gid_t, uint_t,
extern int in_access_list(struct cln *, char *);
extern void cln_init(struct cln *, SVCXPRT *);
extern void cln_init_lazy(struct cln *, char *, struct netbuf *);
extern void cln_fini(struct cln *);
extern struct netbuf *cln_getnbuf(struct cln *);
extern struct nd_hostservlist *cln_getclientsnames(struct cln *);
extern boolean_t cln_havehost(struct cln *);
extern char *cln_gethost(struct cln *);
struct cln cln;
cln_init_lazy(&cln, netid, nbuf);
if (in_access_list(&cln, val) > 0) {
cln_fini(&cln);
struct cln cln;
cln_init_lazy(&cln, argp->req_netid, &nbuf);
result->auth_perm = check_client(sh, &cln, argp->req_flavor,
char *host = cln_gethost(&cln);
cln_fini(&cln);
pc_setstartcluster(struct pcfs *fsp, struct pcdir *ep, pc_cluster32_t cln)
hi16 = (cln >> 16) & 0xFFFF;
lo16 = cln & 0xFFFF;
cln16 = (pc_cluster16_t)cln;