ethernet_interface: Detect nicEnabled from systemd-networkd

Our current method of interface detection can race with
systemd-networkd. If systemd-networkd takes too long to transition from
the initialized state to bringing up the link, phosphor-networkd will
see the link as administratively down and treat it as if it should be
Unmanaged. This is incorrect and causes us to lose BMC network
information about 1% of boots with our current configuration. This has
the consequence of being persistent across powercycles and even across
firmware updates. Without using some method of intervention, this
prevents automated tooling from configuring the management interface.

systemd-networkd can actually inform us to the state of network
interfaces via DBus. We can monitor the AdministrativeState property to
determine whether or not our NIC should be enabled. We now wait until
systemd-networkd has progressed far enough to detect it.

Change-Id: Ic5cb7e6805791e040ab145517e3b1c9e8b146851
Signed-off-by: William A. Kennington III <wak@google.com>
5 files changed
tree: adcfe2b5165291f9b0c05c7ff3531b2b1701b373
  1. docs/
  2. gen/
  3. src/
  4. subprojects/
  5. test/
  6. yaml/
  7. .clang-format
  8. .gitignore
  9. .shellcheck
  10. LICENSE
  11. MAINTAINERS
  12. meson.build
  13. meson_options.txt
  14. README.md
  15. xyz.openbmc_project.Network.conf.in
  16. xyz.openbmc_project.Network.service.in
README.md

To Build

To build this package, do the following steps:

    1. meson build
    2. ninja -C build