IP configuration handling ************************* IP basics ========= The core IP handling is designed around network interfaces or more precisely what the Linux kernel handles as struct net_device. Via RTNL every interface is tracked and an IP device created for it. +--------+ +---- eth0 -----+ | | | | | RTNL +-----+---->| IP device | | | | | | +--------+ | +---------------+ | | +---- wlan0 ----+ | | | +---->| IP device | | | +---------------+ The IP device tracks link configuration, IP address setting and routing information for that interface. Every IP device also contains a configuration element. That element contains an operation table for callbacks based on different events. struct connman_ipconfig_ops { void (*up) (struct connman_ipconfig *); void (*down) (struct connman_ipconfig *); void (*lower_up) (struct connman_ipconfig *); void (*lower_down) (struct connman_ipconfig *); void (*ip_bound) (struct connman_ipconfig *); void (*ip_release) (struct connman_ipconfig *); }; All configuration objects created directly by RTNL are tightly bound to the IP device. They will trigger DHCP or other configuration helpers.