aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2023-03-04 15:18:26 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2023-03-06 15:08:09 +0000
commite2dc8d789f68a9a2267c7f1006aba36c7840b177 (patch)
tree0e05166051291381ec182a263668202327b1bf31
parent055776c84a41bb88c6ccd67615ea172864f6804c (diff)
downloadsrc-e2dc8d789f68a9a2267c7f1006aba36c7840b177.tar.gz
src-e2dc8d789f68a9a2267c7f1006aba36c7840b177.zip
dhclient: do not add 0.0.0.0 interface alias.
Subscribers: imp Differential Revision: https://reviews.freebsd.org/D38908
-rwxr-xr-xsbin/dhclient/dhclient-script3
-rw-r--r--sbin/dhclient/dispatch.c27
2 files changed, 9 insertions, 21 deletions
diff --git a/sbin/dhclient/dhclient-script b/sbin/dhclient/dhclient-script
index c5649e1a1d2a..bcc9050407d4 100755
--- a/sbin/dhclient/dhclient-script
+++ b/sbin/dhclient/dhclient-script
@@ -318,13 +318,12 @@ fi
case $reason in
MEDIUM)
eval "$IFCONFIG $interface $medium"
- eval "$IFCONFIG $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1
sleep 1
;;
PREINIT)
delete_old_alias
- $IFCONFIG $interface inet alias 0.0.0.0 netmask 255.0.0.0 broadcast 255.255.255.255 up
+ eval "$IFCONFIG $interface up"
;;
ARPCHECK|ARPSEND)
diff --git a/sbin/dhclient/dispatch.c b/sbin/dhclient/dispatch.c
index 91f1694ec902..29ae73103913 100644
--- a/sbin/dhclient/dispatch.c
+++ b/sbin/dhclient/dispatch.c
@@ -78,6 +78,7 @@ discover_interfaces(struct interface_info *iface)
{
struct ifaddrs *ifap, *ifa;
struct ifreq *tif;
+ int len = IFNAMSIZ + sizeof(struct sockaddr_storage);
if (getifaddrs(&ifap) != 0)
error("getifaddrs failed");
@@ -118,26 +119,14 @@ discover_interfaces(struct interface_info *iface)
iface->hw_address.htype = HTYPE_ETHER; /* XXX */
memcpy(iface->hw_address.haddr,
LLADDR(foo), foo->sdl_alen);
- } else if (ifa->ifa_addr->sa_family == AF_INET) {
- struct sockaddr_in foo;
- struct iaddr addr;
-
- memcpy(&foo, ifa->ifa_addr, sizeof(foo));
- if (foo.sin_addr.s_addr == htonl(INADDR_LOOPBACK))
- continue;
- if (!iface->ifp) {
- if ((tif = calloc(1, sizeof(struct ifreq)))
- == NULL)
- error("no space to remember ifp");
- strlcpy(tif->ifr_name, ifa->ifa_name, IFNAMSIZ);
- memcpy(&tif->ifr_addr, ifa->ifa_addr,
- ifa->ifa_addr->sa_len);
- iface->ifp = tif;
- iface->primary_address = foo.sin_addr;
- }
- addr.len = 4;
- memcpy(addr.iabuf, &foo.sin_addr.s_addr, addr.len);
}
+ if (!iface->ifp) {
+ if ((tif = calloc(1, len)) == NULL)
+ error("no space to remember ifp");
+ strlcpy(tif->ifr_name, ifa->ifa_name, IFNAMSIZ);
+ iface->ifp = tif;
+ }
+
}
if (!iface->ifp)