device: preserve orig_settings flags for querying device status
[project/netifd.git] / device.h
index 4d84d80..a6c131a 100644 (file)
--- a/device.h
+++ b/device.h
@@ -41,6 +41,9 @@ enum {
        DEV_ATTR_NEIGHREACHABLETIME,
        DEV_ATTR_RPS,
        DEV_ATTR_XPS,
+       DEV_ATTR_DADTRANSMITS,
+       DEV_ATTR_MULTICAST_TO_UNICAST,
+       DEV_ATTR_MULTICAST_ROUTER,
        __DEV_ATTR_MAX,
 };
 
@@ -55,8 +58,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);
@@ -81,7 +82,10 @@ enum {
        DEV_OPT_NEIGHREACHABLETIME      = (1 << 9),
        DEV_OPT_RPS                     = (1 << 10),
        DEV_OPT_XPS                     = (1 << 11),
-       DEV_OPT_MTU6            = (1 << 12),
+       DEV_OPT_MTU6                    = (1 << 12),
+       DEV_OPT_DADTRANSMITS            = (1 << 13),
+       DEV_OPT_MULTICAST_TO_UNICAST    = (1 << 14),
+       DEV_OPT_MULTICAST_ROUTER        = (1 << 15),
 };
 
 /* events broadcasted to all users of a device */
@@ -124,6 +128,7 @@ struct device_user {
 
 struct device_settings {
        unsigned int flags;
+       unsigned int valid_flags;
        unsigned int mtu;
        unsigned int mtu6;
        unsigned int txqueuelen;
@@ -138,6 +143,9 @@ struct device_settings {
        unsigned int neigh6reachabletime;
        bool rps;
        bool xps;
+       unsigned int dadtransmits;
+       bool multicast_to_unicast;
+       unsigned int multicast_router;
 };
 
 /*
@@ -157,8 +165,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;
@@ -170,6 +181,8 @@ struct device {
        bool iface_config;
        bool default_config;
        bool wireless;
+       bool wireless_ap;
+       bool wireless_isolate;
 
        struct interface *config_iface;