util: NetworkMonitor: macOS version of fine-grained signals on interface state changes

Change-Id: I6da12356baa0038d08ff256d0d3ff726023d804b
Refs: #3817
diff --git a/.waf-tools/osx-frameworks.py b/.waf-tools/osx-frameworks.py
index 881d3e1..31c2bad 100644
--- a/.waf-tools/osx-frameworks.py
+++ b/.waf-tools/osx-frameworks.py
@@ -13,6 +13,12 @@
 int main() {}
 '''
 
+OSX_SYSTEMCONFIGURATION_CODE = '''
+#include <CoreFoundation/CoreFoundation.h>
+#include <SystemConfiguration/SystemConfiguration.h>
+int main() {}
+'''
+
 @conf
 def check_osx_frameworks(conf, *k, **kw):
     if Utils.unversioned_sys_platform() == "darwin":
@@ -24,10 +30,13 @@
             conf.check_cxx(framework_name='Security', uselib_store='OSX_SECURITY',
                            use='OSX_COREFOUNDATION', fragment=OSX_SECURITY_CODE,
                            mandatory=True)
+            conf.check_cxx(framework_name='SystemConfiguration', uselib_store='OSX_SYSTEMCONFIGURATION',
+                           use='OSX_COREFOUNDATION', fragment=OSX_SYSTEMCONFIGURATION_CODE,
+                           mandatory=True)
 
             conf.define('HAVE_OSX_FRAMEWORKS', 1)
             conf.env['HAVE_OSX_FRAMEWORKS'] = True
         except:
-            Logs.warn("Compiling on OSX, but CoreFoundation, CoreServices, or Security " +
+            Logs.warn("Compiling on OSX, but CoreFoundation, CoreServices, Security, or SystemConfiguration " +
                       "framework is not functional.")
             Logs.warn("The frameworks are known to work only with the Apple clang compiler")