bridge: Fix multicast_to_unicast feature by hairpin+isolate
[project/netifd.git] / device.h
index 753e1fa..77ebe84 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,7 @@ enum {
        DEV_ATTR_NEIGHREACHABLETIME,
        DEV_ATTR_RPS,
        DEV_ATTR_XPS,
+       DEV_ATTR_DADTRANSMITS,
        __DEV_ATTR_MAX,
 };
 
@@ -78,6 +80,10 @@ enum {
        DEV_OPT_IGMPVERSION             = (1 << 7),
        DEV_OPT_MLDVERSION              = (1 << 8),
        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),
 };
 
 /* events broadcasted to all users of a device */
@@ -121,6 +127,7 @@ struct device_user {
 struct device_settings {
        unsigned int flags;
        unsigned int mtu;
+       unsigned int mtu6;
        unsigned int txqueuelen;
        uint8_t macaddr[6];
        bool ipv6;
@@ -133,6 +140,7 @@ struct device_settings {
        unsigned int neigh6reachabletime;
        bool rps;
        bool xps;
+       unsigned int dadtransmits;
 };
 
 /*
@@ -152,8 +160,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;
@@ -165,6 +176,7 @@ struct device {
        bool iface_config;
        bool default_config;
        bool wireless;
+       bool wireless_isolate;
 
        struct interface *config_iface;
 
@@ -206,6 +218,7 @@ device_apply_config(struct device *dev, const struct device_type *type,
 
 void device_reset_config(void);
 void device_reset_old(void);
+void device_set_default_ps(bool state);
 
 void device_init_virtual(struct device *dev, const struct device_type *type, const char *name);
 int device_init(struct device *iface, const struct device_type *type, const char *ifname);