DEV_ATTR_DROP_UNSOLICITED_NA,
DEV_ATTR_ARP_ACCEPT,
DEV_ATTR_AUTH,
+ DEV_ATTR_AUTH_VLAN,
DEV_ATTR_SPEED,
DEV_ATTR_DUPLEX,
+ DEV_ATTR_VLAN,
+ DEV_ATTR_PAUSE,
+ DEV_ATTR_ASYM_PAUSE,
+ DEV_ATTR_RXPAUSE,
+ DEV_ATTR_TXPAUSE,
+ DEV_ATTR_AUTONEG,
__DEV_ATTR_MAX,
};
void (*dump_info)(struct device *, struct blob_buf *buf);
void (*dump_stats)(struct device *, struct blob_buf *buf);
int (*check_state)(struct device *);
+ void (*stp_init)(struct device *);
void (*free)(struct device *);
};
DEV_OPT_ARP_ACCEPT = (1ULL << 29),
DEV_OPT_SPEED = (1ULL << 30),
DEV_OPT_DUPLEX = (1ULL << 31),
+ DEV_OPT_PAUSE = (1ULL << 32),
+ DEV_OPT_ASYM_PAUSE = (1ULL << 33),
+ DEV_OPT_RXPAUSE = (1ULL << 34),
+ DEV_OPT_TXPAUSE = (1ULL << 35),
+ DEV_OPT_AUTONEG = (1ULL << 36),
};
/* events broadcasted to all users of a device */
bool auth;
unsigned int speed;
bool duplex;
+ bool pause;
+ bool asym_pause;
+ bool rxpause;
+ bool txpause;
+ bool autoneg;
+};
+
+struct device_vlan_range {
+ uint16_t start, end;
};
/*
struct vlist_tree vlans;
struct kvlist vlan_aliases;
+ struct blob_attr *config_auth_vlans;
+ struct blob_attr *auth_vlans;
- char ifname[IFNAMSIZ + 1];
+ char ifname[IFNAMSIZ];
int ifindex;
struct blob_attr *config;
bool default_config;
bool wireless;
bool wireless_ap;
+ bool wireless_proxyarp;
bool wireless_isolate;
+ bool bpdu_filter;
struct interface *config_iface;
+ struct device_vlan_range *extra_vlan;
+ int n_extra_vlan;
/* set interface up or down */
device_state_cb set_state;
extern struct device_type simple_device_type;
extern struct device_type tunnel_device_type;
-void device_lock(void);
-void device_unlock(void);
-
void device_vlan_update(bool done);
+void device_stp_init(void);
int device_type_add(struct device_type *devtype);
struct device_type *device_type_get(const char *tname);
int device_check_state(struct device *dev);
void device_dump_status(struct blob_buf *b, struct device *dev);
-void device_free_unused(struct device *dev);
+void device_free_unused(void);
struct device *get_vlan_device_chain(const char *ifname, int create);
void alias_notify_device(const char *name, struct device *dev);
struct device *device_alias_get(const char *name);
-void device_set_auth_status(struct device *dev, bool value);
+void device_set_auth_status(struct device *dev, bool value, struct blob_attr *vlans);
static inline void
device_set_deferred(struct device *dev, bool value)