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.