struct device;
struct device_user;
struct device_hotplug_ops;
+struct interface;
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,
DEV_ATTR_NEIGHREACHABLETIME,
DEV_ATTR_RPS,
DEV_ATTR_XPS,
+ DEV_ATTR_DADTRANSMITS,
+ DEV_ATTR_MULTICAST_TO_UNICAST,
+ DEV_ATTR_MULTICAST_ROUTER,
__DEV_ATTR_MAX,
};
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);
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),
+ DEV_OPT_MULTICAST_TO_UNICAST = (1 << 14),
+ DEV_OPT_MULTICAST_ROUTER = (1 << 15),
};
/* events broadcasted to all users of a device */
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;
unsigned int neigh6reachabletime;
bool rps;
bool xps;
+ unsigned int dadtransmits;
+ bool multicast_to_unicast;
+ unsigned int multicast_router;
};
/*
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;
bool iface_config;
bool default_config;
bool wireless;
+ bool wireless_ap;
+ bool wireless_isolate;
+
+ struct interface *config_iface;
/* set interface up or down */
device_state_cb set_state;
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);