Simplify cleanup logic
[framework/connectivity/connman.git] / doc / ipconfig-api.txt
1 IP configuration handling
2 *************************
3
4
5 IP basics
6 =========
7
8 The core IP handling is designed around network interfaces or more precise
9 what the Linux kernel handles as struct net_device. Via RTNL every interface
10 is tracked and an IP device created for it.
11
12         +--------+           +---- eth0 -----+
13         |        |           |               |
14         |  RTNL  +-----+---->|   IP device   |
15         |        |     |     |               |
16         +--------+     |     +---------------+
17                        |
18                        |     +---- wlan0 ----+
19                        |     |               |
20                        +---->|   IP device   |
21                              |               |
22                              +---------------+
23
24 The IP device tracks link configuration, IP address setting and routing
25 information for that interface. Every IP device also contains a configuration
26 element. That element contains an operation table for callbacks based on
27 different events.
28
29         struct connman_ipconfig_ops {
30                 void (*up)         (struct connman_ipconfig *);
31                 void (*down)       (struct connman_ipconfig *);
32                 void (*lower_up)   (struct connman_ipconfig *);
33                 void (*lower_down) (struct connman_ipconfig *);
34                 void (*ip_bound)   (struct connman_ipconfig *);
35                 void (*ip_release) (struct connman_ipconfig *);
36         };
37
38 All configuration objects created directly by RTNL are tightly bound to the
39 IP device. They will trigger DHCP or other configuration helpers.
40
41