configd

System Configuration Daemon

configd [-bdv] [-B bundleID] [-V bundleID] [-t bundle-path]

  1. Maintains data reflecting the desired and current state of the system,
  2. Provides notifications to applications when this data changes, and
  3. hosts configuration agents in the form of loadable bundles.
Each configuration agent is responsible for a well-defined aspect of configuration management. The agents look to one or more input sources (preferences, low-level kernel events, configd notifications, etc) and, through a set of policy modules, interacts with the system to establish the desired operational configuration.

Access to the data is via the SystemConfiguration.framework (scutil) SCDynamicStore APIs.

-b Don't load any bundles.
-B bundleID Don't bundleID.
-t bundle-path only Load the bundle-path
-d debug configd in the foreground without forking.
-v verbose
-V bundleID verbose for bundleID.

BUNDLES

configuration agents (or bundles) hosted by configd are used to establish and maintain the network configuration.
Including:
KernelEventMonitor conveys changes to the network state (e.g. link status) to other configuration agents and applications.
InterfaceNamer provides a name to network interfaces
queries the IOKit Registry for a list of network devices and gives them names such as en0.
IPConfiguration establishes and maintains IP addresses, may be have been manually specified in the network preferences or acquired using DHCP (or BOOTP).
IPMonitor establishes and maintains the
  • primary network service,
  • default route,
  • active DNS configuration, and
  • active network proxies
LinkConfiguration establishes and maintains the
  • media type,
  • media options, and
  • MTU for ethernet interfaces.
PreferencesMonitor conveys the network configuration preferences specified by the administrator to the configuration agents (IPv4, IPv6, …).
PPPController establishes and maintains PPP connections on the system.

FILES

Directory of configd bundles /System/Library/SystemConfiguration/
ApplicationFirewallStartup.bundle/
CaptiveNetworkSupport.bundle/
EAPOLController.bundle/
IPConfiguration.bundle/
IPMonitor.bundle/
InterfaceNamer.bundle/
InternetSharingPreference.bundle/
KernelEventMonitor.bundle/
LinkConfiguration.bundle/
PPPController.bundle/
PreferencesMonitor.bundle/
PrinterNotifications.bundle/
QoSMarking.bundle/
USBDeviceConfiguration.bundle/

Logger.bundle/ no longer present


Default directory
for system configuration persistent store files.
/Library/Preferences/SystemConfiguration/
System configuration …/preferences.plist
Network interface --> BSD interface mappings …/NetworkInterfaces.plist
Virtual network interface (VLAN) configuration …/VirtualNetworkInterfaces.plist

Info.plist Example

 com.apple.SystemConfiguration.USBDeviceConfig  
BuildMachineOSBuild            ='20A241133'
CFBundleDevelopmentRegion      ='English'
CFBundleExecutable             ='USBDeviceConfiguration'
CFBundleIdentifier             ='com.apple.configd.usbdeviceconfig'
CFBundleInfoDictionaryVersion  ='6.0'
CFBundleName                   ='USBDeviceConfiguration'
CFBundlePackageType            ='BNDL'
CFBundleShortVersionString     ='1.0.0'
CFBundleSignature              ='????'
CFBundleSupportedPlatforms      ='MacOSX' 
CFBundleVersion                ='1.0.0'
DTCompiler                     ='com.apple.compilers.llvm.clang.1_0'
DTPlatformBuild                ='21F5048a'
DTPlatformName                 ='macosx'
DTPlatformVersion              ='12.4'
DTSDKBuild                     ='21F5048a'
DTSDKName                      ='macosx12.4.internal'
DTXcode                        ='1330'
DTXcodeBuild                   ='13E6049a'
LSMinimumSystemVersion         ='12.4'
MachServices                    com.apple.SystemConfiguration.USBDeviceConfig  *lt;true/>

Errors

Messages are sent to the system log by syslog(3) using facility LOG_DAEMON
With -d (debugging) log messages with written to stdout (or stderr if the priority is greater than LOG_NOTICE).

SIGNALS

Runs without any intervention .
sigTERM initiates a "graceful" shutdown

See also

scutil(8), scselect(8)

As of 01/06/12 the bundles (in /System/Library/SystemConfiguration ) are: Apple80211Monitor, ApplicationFirewall, Bluetooth, EAPOLController, IPConfiguration, IPMonitor, InterfaceNamer, KernelEventMonitor, LinkConfiguration, NetworkIdentification, PPPController, PreferencesMonitor, PrinterNotifications, wwanConfig

As of 10/03/11 the bundles were: Apple80211Monitor, Bluetooth, EAPOLController, IPConfiguration, Logger, PrinterNotifications, PPPController, wwanConfig

Sample Info.plist

syslog (i.e. /var/log/06_info.log) contains many :

Jan  6 12:54:45 smackerPro configd[15]: hostname (prefs) = smackerPro
Jan  6 12:57:15 smackerPro configd[15]: hostname (prefs) = smackerPro

Note: Registers with launchd(8) such that the daemon will be restarted in the event of a crash, Unless started with -d . This registration is removed during "graceful" shutdowns of the daemon.

Mac OS X June 18, 2009