Stop setting the default route to the IP of the interface itself when the
bootp/dhcp server doesn't provide a router option. Doing so prevents setting defaultrouter=<ip> in rc.conf (it fails because there's already a bogus default route installed by bootpc_init). When an admin wants to use this style of proxy arp on an interface, the proper mechanism is to set the "use-lease-addr-for-default-route" flag in the dhcp server config. That causes the lease address to be delivered in the routers option, and the normal handling of the routers option will then install the self-ip as the default route. PR: 187094
This commit is contained in:
parent
d32d350eeb
commit
25101b0b1c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=297325
@ -1072,7 +1072,7 @@ bootpc_adjust_interface(struct bootpc_ifcontext *ifctx,
|
|||||||
|
|
||||||
/* Add new default route */
|
/* Add new default route */
|
||||||
|
|
||||||
if (ifctx->gotgw != 0 || gctx->gotgw == 0) {
|
if (ifctx->gw.sin_addr.s_addr != htonl(INADDR_ANY))
|
||||||
clear_sinaddr(&defdst);
|
clear_sinaddr(&defdst);
|
||||||
clear_sinaddr(&defmask);
|
clear_sinaddr(&defmask);
|
||||||
/* XXX MRT just table 0 */
|
/* XXX MRT just table 0 */
|
||||||
@ -1552,10 +1552,6 @@ bootpc_decode_reply(struct nfsv3_diskless *nd, struct bootpc_ifcontext *ifctx,
|
|||||||
else
|
else
|
||||||
ifctx->netmask.sin_addr.s_addr = htonl(IN_CLASSC_NET);
|
ifctx->netmask.sin_addr.s_addr = htonl(IN_CLASSC_NET);
|
||||||
}
|
}
|
||||||
if (ifctx->gotgw == 0) {
|
|
||||||
/* Use proxyarp */
|
|
||||||
ifctx->gw.sin_addr.s_addr = ifctx->myaddr.sin_addr.s_addr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user