<div dir="ltr"><div>Hi all,</div><div><br></div><div>   Recently, I was working on a project that led me to become frustrated with the current state of `systemd` and `ifupdown` (e.g. /etc/network/interfaces or /e/n/i) in Xenial. I remembered that `netplan`[1] was under development, so I added the PPA for Xenial and gave it a try. Unfortunately, it didn't solve the issue for me[2]... but I also realized there was a blocking issue in the way of my adoption of it.</div><div><br></div><div>   Let me explain my use case: when an interface goes up or down, I want to be able to do event-driven things with the network configuration, such as add or remove routes, run a DHCP client, etc. My first attempt to make this happen was to add `post-up` and `pre-down` scripts to do this. However, this had a fatal flaw for my application: `ifupdown` doesn't separate the concept of operational status from the concept of administrative status. (That is, in `ifupdown`, an interface is "up" if the admin says it is up. Link up or link down does not seem to matter; it's strictly an /administrative/ status[3].)</div><div><br></div><div>   Long story short: in order to get the behavior I wanted, I wrote a custom script that monitors *operational status* (aka physical link up/down status), and I launch it using /e/n/i's `post-up`, and bring it down using /e/n/i's `pre-down` scripts.</div><div><br></div><div>   Looking at the `netplan` spec[4], I don't see a way to achieve that functionality. I know that many people are using the script-callout functionality in /e/n/i to achieve what they need to achieve, so it seems to me that having this in `netplan` is critical to achieving parity with what we have in Xenial with `ifupdown`.</div><div><br></div><div>   In an ideal world, I think `netplan` would be able to model my use case out-of-the-box.[5] But since we can't expect to model everyone's use case, it seems like custom scripting functionality is a hard requirement, though perhaps one that could have tricky cross-platform implications.</div><div><br></div><div>   Thoughts?</div><div><br></div><div>Regards,</div><div>Mike</div><div><br></div><div>[1]: <a href="https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039464.html">https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039464.html</a><br></div><div><br></div><div>[2]: The behavior was exactly the same, which is actually good for consistency.<br></div><div><br></div><div>[3]: Well, it is after an annoying 5 minute timeout, in some cases.</div><div><br></div>[4]: <a href="https://git.launchpad.net/netplan/tree/doc/netplan.md">https://git.launchpad.net/netplan/tree/doc/netplan.md</a><div><br><div>[5]: As an aside, this brings up an interesting subtle difference between rendering a networking configuration with (networkd, ifupdown) vs NetworkManager. In NetworkManager, there *IS* a concept of operational status, and I would have been able to get closer to the behavior I wanted, if I was willing to pull in all those dependencies. We should be mindful that rendering the same configuration on NetworkManager, even for simple things like a static IP address and a DHCP interface, could produce drastically different behavior than with networkd or ifupdown.</div></div></div>