Distinguish DOWN and NO_CARRIER in NetworkMonitor for macOS
The macOS specialization for
NetworkMonitor does not support the NO_CARRIER state, while the implementation for netlink (Linux) does. The current implementation on macOS can therefore not distinguish between interfaces that are administratively up, but disconnected from those that are administratively down.
Per #3817-18, this will likely require that the macOS NetworkMonitor specialization be rewritten to use the lower-level PF_SYSTEM/SYSPROTO_EVENT socket API instead of
SCDynamicStore API, since the latter does not notify when interface flags (where this information comes from) change.