summaryrefslogtreecommitdiffstats
path: root/sys/nfs/nfs_nqlease.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/nfs/nfs_nqlease.c')
-rw-r--r--sys/nfs/nfs_nqlease.c51
1 files changed, 27 insertions, 24 deletions
diff --git a/sys/nfs/nfs_nqlease.c b/sys/nfs/nfs_nqlease.c
index 173ea6d..d7a1bdf 100644
--- a/sys/nfs/nfs_nqlease.c
+++ b/sys/nfs/nfs_nqlease.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_nqlease.c 8.9 (Berkeley) 5/20/95
- * $Id: nfs_nqlease.c,v 1.25 1997/06/03 17:22:46 dfr Exp $
+ * $Id: nfs_nqlease.c,v 1.26 1997/07/16 09:06:27 dfr Exp $
*/
@@ -83,17 +83,18 @@ static int nqsrv_maxnumlease = NQ_MAXNUMLEASE;
struct vop_lease_args;
-static int nqsrv_cmpnam __P((struct nfssvc_sock *,struct mbuf *,
+static int nqsrv_cmpnam __P((struct nfssvc_sock *, struct sockaddr *,
struct nqhost *));
extern void nqnfs_lease_updatetime __P((int deltat));
static int nqnfs_vacated __P((struct vnode *vp, struct ucred *cred));
static void nqsrv_addhost __P((struct nqhost *lph, struct nfssvc_sock *slp,
- struct mbuf *nam));
+ struct sockaddr *nam));
static void nqsrv_instimeq __P((struct nqlease *lp, u_long duration));
static void nqsrv_locklease __P((struct nqlease *lp));
static void nqsrv_send_eviction __P((struct vnode *vp, struct nqlease *lp,
struct nfssvc_sock *slp,
- struct mbuf *nam, struct ucred *cred));
+ struct sockaddr *nam,
+ struct ucred *cred));
static void nqsrv_unlocklease __P((struct nqlease *lp));
static void nqsrv_waitfor_expiry __P((struct nqlease *lp));
@@ -170,7 +171,7 @@ nqsrv_getlease(vp, duration, flags, slp, procp, nam, cachablep, frev, cred)
int flags;
struct nfssvc_sock *slp;
struct proc *procp;
- struct mbuf *nam;
+ struct sockaddr *nam;
int *cachablep;
u_quad_t *frev;
struct ucred *cred;
@@ -343,7 +344,7 @@ nqnfs_lease_check(vp, p, cred, flag)
u_quad_t frev;
(void) nqsrv_getlease(vp, &duration, ND_CHECK | flag, NQLOCALSLP,
- p, (struct mbuf *)0, &cache, &frev, cred);
+ p, (struct sockaddr *)0, &cache, &frev, cred);
}
int
@@ -360,7 +361,8 @@ nqnfs_vop_lease_check(ap)
u_quad_t frev;
(void) nqsrv_getlease(ap->a_vp, &duration, ND_CHECK | ap->a_flag,
- NQLOCALSLP, ap->a_p, (struct mbuf *)0, &cache, &frev, ap->a_cred);
+ NQLOCALSLP, ap->a_p, (struct sockaddr *)0,
+ &cache, &frev, ap->a_cred);
return (0);
}
@@ -373,19 +375,19 @@ static void
nqsrv_addhost(lph, slp, nam)
register struct nqhost *lph;
struct nfssvc_sock *slp;
- struct mbuf *nam;
+ struct sockaddr *nam;
{
register struct sockaddr_in *saddr;
if (slp == NQLOCALSLP)
lph->lph_flag |= (LC_VALID | LC_LOCAL);
else if (slp == nfs_udpsock) {
- saddr = mtod(nam, struct sockaddr_in *);
+ saddr = (struct sockaddr_in *)nam;
lph->lph_flag |= (LC_VALID | LC_UDP);
lph->lph_inetaddr = saddr->sin_addr.s_addr;
lph->lph_port = saddr->sin_port;
} else if (slp == nfs_cltpsock) {
- lph->lph_nam = m_copym(nam, 0, M_COPYALL, M_WAIT);
+ lph->lph_nam = dup_sockaddr(nam, 1);
lph->lph_flag |= (LC_VALID | LC_CLTP);
} else {
lph->lph_flag |= (LC_VALID | LC_SREF);
@@ -439,11 +441,11 @@ nqsrv_instimeq(lp, duration)
static int
nqsrv_cmpnam(slp, nam, lph)
register struct nfssvc_sock *slp;
- struct mbuf *nam;
+ struct sockaddr *nam;
register struct nqhost *lph;
{
register struct sockaddr_in *saddr;
- struct mbuf *addr;
+ struct sockaddr *addr;
union nethostaddr lhaddr;
int ret;
@@ -464,7 +466,7 @@ nqsrv_cmpnam(slp, nam, lph)
else {
if ((lph->lph_slp->ns_flag & SLP_VALID) == 0)
return (0);
- saddr = mtod(lph->lph_slp->ns_nam, struct sockaddr_in *);
+ saddr = (struct sockaddr_in *)lph->lph_slp->ns_nam;
if (saddr->sin_family == AF_INET)
lhaddr.had_inetaddr = saddr->sin_addr.s_addr;
else
@@ -482,15 +484,16 @@ nqsrv_send_eviction(vp, lp, slp, nam, cred)
struct vnode *vp;
register struct nqlease *lp;
struct nfssvc_sock *slp;
- struct mbuf *nam;
+ struct sockaddr *nam;
struct ucred *cred;
{
register struct nqhost *lph = &lp->lc_host;
register struct mbuf *m;
register int siz;
struct nqm *lphnext = lp->lc_morehosts;
- struct mbuf *mreq, *mb, *mb2, *nam2, *mheadend;
+ struct mbuf *mreq, *mb, *mb2, *mheadend;
struct socket *so;
+ struct sockaddr *nam2;
struct sockaddr_in *saddr;
nfsfh_t nfh;
fhandle_t *fhp;
@@ -504,10 +507,10 @@ nqsrv_send_eviction(vp, lp, slp, nam, cred)
lph->lph_flag |= LC_VACATED;
else if ((lph->lph_flag & (LC_LOCAL | LC_VACATED)) == 0) {
if (lph->lph_flag & LC_UDP) {
- MGET(nam2, M_WAIT, MT_SONAME);
- saddr = mtod(nam2, struct sockaddr_in *);
- nam2->m_len = saddr->sin_len =
- sizeof (struct sockaddr_in);
+ MALLOC(nam2, struct sockaddr *,
+ sizeof *nam2, M_SONAME, M_WAITOK);
+ saddr = (struct sockaddr_in *)nam2;
+ saddr->sin_len = sizeof *saddr;
saddr->sin_family = AF_INET;
saddr->sin_addr.s_addr = lph->lph_inetaddr;
saddr->sin_port = lph->lph_port;
@@ -516,7 +519,7 @@ nqsrv_send_eviction(vp, lp, slp, nam, cred)
nam2 = lph->lph_nam;
so = nfs_cltpsock->ns_so;
} else if (lph->lph_slp->ns_flag & SLP_VALID) {
- nam2 = (struct mbuf *)0;
+ nam2 = (struct sockaddr *)0;
so = lph->lph_slp->ns_so;
} else
goto nextone;
@@ -568,7 +571,7 @@ nqsrv_send_eviction(vp, lp, slp, nam, cred)
nfs_sndunlock(solockp);
}
if (lph->lph_flag & LC_UDP)
- MFREE(nam2, m);
+ FREE(nam2, M_SONAME);
}
nextone:
if (++i == len) {
@@ -686,7 +689,7 @@ nqnfs_serverd()
ok = 1;
while (ok && (lph->lph_flag & LC_VALID)) {
if (lph->lph_flag & LC_CLTP)
- MFREE(lph->lph_nam, n);
+ FREE(lph->lph_nam, M_SONAME);
if (lph->lph_flag & LC_SREF)
nfsrv_slpderef(lph->lph_slp);
if (++i == len) {
@@ -727,7 +730,7 @@ nqnfsrv_getlease(nfsd, slp, procp, mrq)
struct mbuf **mrq;
{
struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md;
- struct mbuf *nam = nfsd->nd_nam;
+ struct sockaddr *nam = nfsd->nd_nam;
caddr_t dpos = nfsd->nd_dpos;
struct ucred *cred = &nfsd->nd_cr;
register struct nfs_fattr *fp;
@@ -785,7 +788,7 @@ nqnfsrv_vacated(nfsd, slp, procp, mrq)
struct mbuf **mrq;
{
struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md;
- struct mbuf *nam = nfsd->nd_nam;
+ struct sockaddr *nam = nfsd->nd_nam;
caddr_t dpos = nfsd->nd_dpos;
register struct nqlease *lp;
register struct nqhost *lph;
OpenPOWER on IntegriCloud