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.


