I am encountering an issue while using the SystemConfiguration framework to detect IPv4 address changes and active interfaces on macOS. Specifically, I'm facing difficulties when the interface switches from one network to another.
When connected to a network with a Captive Portal enabled, I'm unable to retrieve the active interface using the stored key State:/Network/Global/IPv4. The output I receive is:
No such key
However, when I attempt to retrieve interface information using scutil --nwi, the output is as follows:
IPv4 network interface information
No IPv4 states found
REACH : flags 0x00000000 (Not Reachable)
IPv6 network interface information
No IPv6 states found
REACH : flags 0x00000000 (Not Reachable)
Network interfaces: en0
Despite this output, the interface en0 is active and has a valid IPv4 address: when checking through ifconfig:
en0:flags=8b63<UP,BROADCAST,SMART,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
options=6460<TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
ether bc:d0:74:07:2a:33
inet6 fe80::412:ec:40df:4211%en0 prefixlen 64 secured scopeid 0x12
inet 10.42.0.5 netmask 0xffffff00 broadcast 10.42.0.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
It's evident that the interface is active and has a valid IPv4 address, but the retrieval methods using SystemConfiguration framework are not providing the expected output. I'm seeking assistance in resolving this discrepancy and accurately detecting active interfaces on macOS. Any insights or suggestions would be greatly appreciated. Thank you.