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:
Ian Lepore 2016-03-27 22:58:56 +00:00
parent d32d350eeb
commit 25101b0b1c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=297325

View File

@ -1072,7 +1072,7 @@ bootpc_adjust_interface(struct bootpc_ifcontext *ifctx,
/* 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(&defmask);
/* XXX MRT just table 0 */
@ -1552,10 +1552,6 @@ bootpc_decode_reply(struct nfsv3_diskless *nd, struct bootpc_ifcontext *ifctx,
else
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