Internet Connectivity daemon version 2
The Internet Connectivity daemon, ICd2, is responsible for network connectivity in the device. It is started at system boot time from the init script /etc/init.d/icd2, and stopped with the same script at system shutdown.
Applications requesting network connections do not interact directly with ICd2, but instead use the shared libconic library API. The libconic library is the stable maintained API for network connectivity, which uses internal D-Bus APIs com.nokia.icd and com.nokia.icd2 APIs to communicate with ICd2. These D-Bus APIs are internal and may change without further notice.
ICd2 contains the following functionality:
osso-ic D-Bus API
com.nokia.icd and ICd2 D-Bus API
com.nokia.icd2. These are internal to the connectivity subsystem and used by both libconic and the connectivity UIs.
In response to network connectivity D-Bus API requests, ICd2 creates real-world networks, i.e. Internet Access Points or IAPs, and selects the right network modules associated with the IAP. For statistics, state and IP address D-Bus API calls, ICd2 returns values associated with the IAPs.
Internet Access Points, IAPs, are tried one by one in order to establish a successful network connection. Configured network modules are run, and if they all return successfully any possible service module is run. If the service module returns sucessfully, the network connection is established successfully.
Network modules are defined by the Network module API definitions. A network module consists of three layers, the link layer, the post-link or authentication layer and the IP layer. Any module can choose to implement functions in one or more layer. A link layer module will also need to implement network search functionality, which reports to ICd2 what networks are available. More than one network module can be used by a particular network connection, the order in which to run the network modules depend on the configuration of the network type.
Service modules are defined by the Service Provider API and are run after successfully connected network modules if requested. Service modules provide an identification function, which receives network module search results and returns service module information if the service module is able to use the network. Service modules are meant to provide service-specific functionalities taking place after IP address has been acquired, e.g. service authentication for WLAN hotspot logins.
Debian-style network script directories
/etc/network/if-*.d are supported and run before and after a network connection is connected and disconnected.