Add tracking of system IP address settings
[platform/upstream/connman.git] / include / ipconfig.h
index e40981f..608e727 100644 (file)
@@ -29,9 +29,22 @@ extern "C" {
 /**
  * SECTION:ipconfig
  * @title: IP configuration premitives
- * @short_description: Functions for registering IP configuration modules
+ * @short_description: Functions for IP configuration handling
  */
 
+struct connman_ipaddress {
+       unsigned char prefixlen;
+       char *local;
+       char *peer;
+       char *broadcast;
+};
+
+struct connman_ipaddress *connman_ipaddress_alloc(void);
+void connman_ipaddress_free(struct connman_ipaddress *ipaddress);
+void connman_ipaddress_clear(struct connman_ipaddress *ipaddress);
+void connman_ipaddress_copy(struct connman_ipaddress *ipaddress,
+                                       struct connman_ipaddress *source);
+
 enum connman_ipconfig_type {
        CONNMAN_IPCONFIG_TYPE_UNKNOWN = 0,
        CONNMAN_IPCONFIG_TYPE_IPV4    = 1,
@@ -40,16 +53,41 @@ enum connman_ipconfig_type {
 
 enum connman_ipconfig_method {
        CONNMAN_IPCONFIG_METHOD_UNKNOWN = 0,
-       CONNMAN_IPCONFIG_METHOD_OFF     = 1,
+       CONNMAN_IPCONFIG_METHOD_IGNORE  = 1,
        CONNMAN_IPCONFIG_METHOD_STATIC  = 2,
        CONNMAN_IPCONFIG_METHOD_DHCP    = 3,
 };
 
 struct connman_ipconfig;
 
-extern struct connman_ipconfig *connman_ipconfig_create(void);
-extern struct connman_ipconfig *connman_ipconfig_ref(struct connman_ipconfig *ipconfig);
-extern void connman_ipconfig_unref(struct connman_ipconfig *ipconfig);
+struct connman_ipconfig_ops {
+       void (*up) (struct connman_ipconfig *ipconfig);
+       void (*down) (struct connman_ipconfig *ipconfig);
+       void (*lower_up) (struct connman_ipconfig *ipconfig);
+       void (*lower_down) (struct connman_ipconfig *ipconfig);
+       void (*ip_bound) (struct connman_ipconfig *ipconfig);
+       void (*ip_release) (struct connman_ipconfig *ipconfig);
+};
+
+struct connman_ipconfig *connman_ipconfig_create(int index);
+struct connman_ipconfig *connman_ipconfig_clone(struct connman_ipconfig *ipconfig);
+struct connman_ipconfig *connman_ipconfig_ref(struct connman_ipconfig *ipconfig);
+void connman_ipconfig_unref(struct connman_ipconfig *ipconfig);
+
+void *connman_ipconfig_get_data(struct connman_ipconfig *ipconfig);
+void connman_ipconfig_set_data(struct connman_ipconfig *ipconfig, void *data);
+
+int connman_ipconfig_get_index(struct connman_ipconfig *ipconfig);
+const char *connman_ipconfig_get_ifname(struct connman_ipconfig *ipconfig);
+
+void connman_ipconfig_set_ops(struct connman_ipconfig *ipconfig,
+                               const struct connman_ipconfig_ops *ops);
+
+int connman_ipconfig_set_method(struct connman_ipconfig *ipconfig,
+                                       enum connman_ipconfig_method method);
+
+void connman_ipconfig_bind(struct connman_ipconfig *ipconfig,
+                                       struct connman_ipaddress *ipaddress);
 
 #define CONNMAN_IPCONFIG_PRIORITY_LOW      -100
 #define CONNMAN_IPCONFIG_PRIORITY_DEFAULT     0
@@ -59,13 +97,13 @@ struct connman_ipconfig_driver {
        const char *name;
        enum connman_ipconfig_type type;
        int priority;
-       int (*request) (const char *interface);
-       int (*release) (const char *interface);
-       int (*renew) (const char *interface);
+       int (*request) (struct connman_ipconfig *ipconfig);
+       int (*release) (struct connman_ipconfig *ipconfig);
+       int (*renew) (struct connman_ipconfig *ipconfig);
 };
 
-extern int connman_ipconfig_driver_register(struct connman_ipconfig_driver *driver);
-extern void connman_ipconfig_driver_unregister(struct connman_ipconfig_driver *driver);
+int connman_ipconfig_driver_register(struct connman_ipconfig_driver *driver);
+void connman_ipconfig_driver_unregister(struct connman_ipconfig_driver *driver);
 
 #ifdef __cplusplus
 }