diff --git a/usr.sbin/ppp/iface.c b/usr.sbin/ppp/iface.c index a58fdac064b..5384340e812 100644 --- a/usr.sbin/ppp/iface.c +++ b/usr.sbin/ppp/iface.c @@ -303,7 +303,12 @@ iface_inAdd(struct iface *iface, struct in_addr ifa, struct in_addr mask, * the IP number as a destination. */ if (chg == slot && iface->in_addr[chg].mask.s_addr == mask.s_addr) { - nochange = 1; + if (brd.s_addr == iface->in_addr[slot].brd.s_addr) + nochange = 1; + /* + * If only the destination address has changed, the SIOCAIFADDR + * we do after the current loop will change it. + */ continue; } if (s == -1 && (s = ID0socket(AF_INET, SOCK_DGRAM, 0)) == -1) {