<div dir="ltr"><span style="font-family:courier new,monospace"><br>Hi,<br><br>Suppose we have a Debian Wheezy machine with a bunch of network</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">interfaces, some of them VLANs. Some of the interfaces are<div class="gmail_default" style="font-family:courier new,monospace;display:inline">​ ​</div>DHCP-based. For various reasons there is a requirement that</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">DHCPDISCOVER should not be sent out when certain conditions are not</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">fulfilled[*]. The conditions are always known locally, we can assume</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">that there is a program, call it chk4dhcp, that returns 0 or 1, and</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">the DHCP interfaces should only be started when the status is</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">0. Static interfaces should always be configured and started.<br><br>This mechanism should work on boot, on restarting network, on "ifup</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace"><iface>", "ifconfig <iface> up", etc.<br><br>Question: how does one intervene in the DHCP client</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">operation? I found out that /etc/dhcp-enter-hooks.d/* is irrelevant<div class="gmail_default" style="font-family:courier new,monospace;display:inline">​​</div>(if a hook fails the failure is ignored). So is /sbin/dhclient-script</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">(I thought I'd create a "chk4dhcp && dhclient-script" script and<br>specify it as "script" in dhclient.conf - does not help). I also</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">failed to write "up" or "pre-up" stanzas in /etc/network/interfaces</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">that would prevent DHCPDISCOVER from being sent.<br><br>For reasons that should be obvious I am very reluctant to rename</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">/sbin/dhclient binary and place something else in its stead.<br><br>The existing configuration <div class="gmail_default" style="font-family:courier new,monospace;display:inline">​seems to be Debian default) ​</div>does *not* have dhcpcd, and I am also</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">reluctant to change<div class="gmail_default" style="font-family:courier new,monospace;display:inline">​ (and re-test)​</div> the whole framework, even if dhcpcd proves more</span><div class="gmail_default" style="display:inline"><span style="font-family:courier new,monospace">​ ​</span></div><span style="font-family:courier new,monospace">malleable.<br><br>Any ideas?<br><br>[*] <div class="gmail_default" style="font-family:courier new,monospace;display:inline">​<a href="mailto:pub@goldshmidt.org" target="_blank"></a></div><div class="gmail_default" style="font-family:courier new,monospace;display:inline">​Without​</div> <div class="gmail_default" style="font-family:courier new,monospace;display:inline">​discussing the actual requirements, consider ​</div>a trivial <div class="gmail_default" style="font-family:courier new,monospace;display:inline">​example. Suppose you have several DHCP VLANs configured on eth1, and suppose that for various operational reasons the eth1 link may occasionally be down. What happens in such a case is that dhclient keeps trying, for all VLANs and for a long time, before giving up. You don't want this to keep a machine from booting, to keep other interfaces from starting, etc. One would want to detect this early (e.g., using ethtool or similar) and not even attempt to bring up DHCP interfaces. [In my mind, this is a bug in dhclient, but this is beside the point...]<br><br><span style="font-family:courier new,monospace">-- <br>Oleg Goldshmidt | <a href="mailto:pub@goldshmidt.org" target="_blank">pub@goldshmidt.org</a></span><br></div></span></div>