The bootp code installs an interface address and the nfs client
module tries to install the same address again. This extra code is removed, which was discovered by the removal of a call to in_ifscrub() in r196714. This call to in_ifscrub is put back here because the SIOCAIFADDR command can be used to change the prefix length of an existing alias. Reviewed by: kmacy
This commit is contained in:
parent
5a73cc12bc
commit
96ed1732bb
@ -536,6 +536,16 @@ in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp,
|
||||
hostIsNew = 0;
|
||||
}
|
||||
if (ifra->ifra_mask.sin_len) {
|
||||
/*
|
||||
* QL: XXX
|
||||
* Need to scrub the prefix here in case
|
||||
* the issued command is SIOCAIFADDR with
|
||||
* the same address, but with a different
|
||||
* prefix length. And if the prefix length
|
||||
* is the same as before, then the call is
|
||||
* un-necessarily executed here.
|
||||
*/
|
||||
in_ifscrub(ifp, ia);
|
||||
ia->ia_sockmask = ifra->ifra_mask;
|
||||
ia->ia_sockmask.sin_family = AF_INET;
|
||||
ia->ia_subnetmask =
|
||||
@ -544,6 +554,7 @@ in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp,
|
||||
}
|
||||
if ((ifp->if_flags & IFF_POINTOPOINT) &&
|
||||
(ifra->ifra_dstaddr.sin_family == AF_INET)) {
|
||||
in_ifscrub(ifp, ia);
|
||||
ia->ia_dstaddr = ifra->ifra_dstaddr;
|
||||
maskIsNew = 1; /* We lie; but the effect's the same */
|
||||
}
|
||||
|
@ -463,9 +463,13 @@ nfs_mountroot(struct mount *mp)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0 /* QL: XXX */
|
||||
error = ifioctl(so, SIOCAIFADDR, (caddr_t)&nd->myif, td);
|
||||
if (error)
|
||||
panic("nfs_mountroot: SIOCAIFADDR: %d", error);
|
||||
#endif
|
||||
|
||||
if ((cp = getenv("boot.netif.mtu")) != NULL) {
|
||||
ir.ifr_mtu = strtol(cp, NULL, 10);
|
||||
bcopy(nd->myif.ifra_name, ir.ifr_name, IFNAMSIZ);
|
||||
|
Loading…
x
Reference in New Issue
Block a user