netifd: Add option to configure gc_stale_time for each device
[project/netifd.git] / device.h
index 3001f1045a7313b7990210f89f588d8fb778506f..77a2fefc09cee84b5225dc7b06936f4bf7a87b82 100644 (file)
--- a/device.h
+++ b/device.h
@@ -28,6 +28,7 @@ typedef int (*device_state_cb)(struct device *, bool up);
 enum {
        DEV_ATTR_TYPE,
        DEV_ATTR_MTU,
+       DEV_ATTR_MTU6,
        DEV_ATTR_MACADDR,
        DEV_ATTR_TXQUEUELEN,
        DEV_ATTR_ENABLED,
@@ -40,6 +41,13 @@ enum {
        DEV_ATTR_NEIGHREACHABLETIME,
        DEV_ATTR_RPS,
        DEV_ATTR_XPS,
+       DEV_ATTR_DADTRANSMITS,
+       DEV_ATTR_MULTICAST_TO_UNICAST,
+       DEV_ATTR_MULTICAST_ROUTER,
+       DEV_ATTR_MULTICAST,
+       DEV_ATTR_LEARNING,
+       DEV_ATTR_UNICAST_FLOOD,
+       DEV_ATTR_NEIGHGCSTALETIME,
        __DEV_ATTR_MAX,
 };
 
@@ -54,8 +62,6 @@ struct device_type {
        struct list_head list;
        const char *name;
 
-       bool keep_link_status;
-
        const struct uci_blob_param_list *config_params;
 
        struct device *(*create)(const char *name, struct blob_attr *attr);
@@ -80,6 +86,14 @@ enum {
        DEV_OPT_NEIGHREACHABLETIME      = (1 << 9),
        DEV_OPT_RPS                     = (1 << 10),
        DEV_OPT_XPS                     = (1 << 11),
+       DEV_OPT_MTU6                    = (1 << 12),
+       DEV_OPT_DADTRANSMITS            = (1 << 13),
+       DEV_OPT_MULTICAST_TO_UNICAST    = (1 << 14),
+       DEV_OPT_MULTICAST_ROUTER        = (1 << 15),
+       DEV_OPT_MULTICAST               = (1 << 16),
+       DEV_OPT_LEARNING                = (1 << 17),
+       DEV_OPT_UNICAST_FLOOD           = (1 << 18),
+       DEV_OPT_NEIGHGCSTALETIME        = (1 << 19),
 };
 
 /* events broadcasted to all users of a device */
@@ -122,7 +136,9 @@ struct device_user {
 
 struct device_settings {
        unsigned int flags;
+       unsigned int valid_flags;
        unsigned int mtu;
+       unsigned int mtu6;
        unsigned int txqueuelen;
        uint8_t macaddr[6];
        bool ipv6;
@@ -133,8 +149,16 @@ struct device_settings {
        unsigned int mldversion;
        unsigned int neigh4reachabletime;
        unsigned int neigh6reachabletime;
+       unsigned int neigh4gcstaletime;
+       unsigned int neigh6gcstaletime;
        bool rps;
        bool xps;
+       unsigned int dadtransmits;
+       bool multicast_to_unicast;
+       unsigned int multicast_router;
+       bool multicast;
+       bool learning;
+       bool unicast_flood;
 };
 
 /*
@@ -154,8 +178,11 @@ struct device {
        struct blob_attr *config;
        bool config_pending;
        bool sys_present;
+       /* DEV_EVENT_ADD */
        bool present;
+       /* DEV_EVENT_UP */
        int active;
+       /* DEV_EVENT_LINK_UP */
        bool link_active;
 
        bool external;
@@ -167,6 +194,8 @@ struct device {
        bool iface_config;
        bool default_config;
        bool wireless;
+       bool wireless_ap;
+       bool wireless_isolate;
 
        struct interface *config_iface;