enum interface_event {
IFEV_DOWN,
IFEV_UP,
+ IFEV_UPDATE,
IFEV_FREE,
IFEV_RELOAD,
};
bool no_defaultroute;
bool no_dns;
- uint8_t assignment_length;
- int32_t assignment_hint;
-
struct vlist_tree addr;
struct vlist_tree route;
struct vlist_tree prefix;
struct blob_attr data[];
};
+struct interface_assignment_class {
+ struct list_head head;
+ char name[];
+};
+
/*
* interface configuration
*/
bool autostart;
bool config_autostart;
bool device_config;
+ bool dynamic;
time_t start_time;
enum interface_state state;
unsigned int ip4table;
unsigned int ip6table;
+ /* IPv6 assignment parameters */
+ uint8_t assignment_length;
+ int32_t assignment_hint;
+ struct list_head assignment_classes;
+
/* errors/warnings while trying to bring up the interface */
struct list_head errors;
extern struct vlist_tree interfaces;
-extern const struct config_param_list interface_attr_list;
+extern const struct uci_blob_param_list interface_attr_list;
void interface_init(struct interface *iface, const char *name,
- struct blob_attr *config);
+ struct blob_attr *config, bool dynamic);
void interface_add(struct interface *iface, struct blob_attr *config);
bool interface_add_alias(struct interface *iface, struct blob_attr *config);