EXTRA_DIST = $(DOC_MAIN_SGML_FILE) connman-introduction.xml
endif
-EXTRA_DIST += overview-api.txt behavior-api.txt plugin-api.txt \
- manager-api.txt profile-api.txt service-api.txt \
- device-lowlevel-api.txt network-lowlevel-api.txt \
- connection-lowlevel-api.txt agent-api.txt
+EXTRA_DIST += overview-api.txt behavior-api.txt \
+ ipconfig-api.txt plugin-api.txt \
+ manager-api.txt agent-api.txt \
+ profile-api.txt service-api.txt \
+ device-lowlevel-api.txt \
+ network-lowlevel-api.txt \
+ connection-lowlevel-api.txt
--- /dev/null
+IP configuration handling
+*************************
+
+
+IP basics
+=========
+
+The core IP handling is designed around network interfaces or more precise
+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.
+
+