From: | "Pavel Zhukov" <pzhukov@redhat.com> |
Subject: | [Patch] get hardware addresses for all interfaces. |
Date: | Wed, 21 Mar 2018 10:55:52 +0100 |
To: | dhcp-bugs@isc.org |
Hello,
Seed generation in dhclient.c:832 (at the moment of writing) assumes
hardware addresses for all interfaces are properly discovered and filled
in into interfaces static variables. But if dhclient is used for IPv6 PD
it's not the case because only interfaces used for PD itself is
discovered. hw_addr field of others ones are zero'ed (which is the bug by
itself). This becomes problem once ppp0 is used for ipv6 prefix
delegation
(with patch like
https://src.fedoraproject.org/rpms/dhcp/blob/master/f/dhcp-PPP.patch) as
the result duid of the system changes between restart which leads to
network outage because ISP doesn't recognize the client properly.
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=832712
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1163379
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1329210
This patch is probably related to [ISC-Bugs #38144]) and [ISC-Bugs #24249])
diff --git a/common/discover.c b/common/discover.c
index 26a78ca..ed01e45 100644
--- a/common/discover.c
+++ b/common/discover.c
@@ -635,6 +635,8 @@ discover_interfaces(int state) {
interface_dereference(&tmp, MDL);
tmp = interfaces; /* XXX */
}
+ if (tmp != NULL)
+ get_hw_addr(tmp);
if (dhcp_interface_discovery_hook) {
(*dhcp_interface_discovery_hook)(tmp);
--
PAVEL ZHUKOV
SOFTWARE ENGINEER, RHCE, RHCVA
Red Hat