[IFACE_ATTR_IP6CLASS] = { .name = "ip6class", .type = BLOBMSG_TYPE_ARRAY },
};
-static const union config_param_info iface_attr_info[IFACE_ATTR_MAX] = {
+static const struct uci_blob_param_info iface_attr_info[IFACE_ATTR_MAX] = {
[IFACE_ATTR_DNS] = { .type = BLOBMSG_TYPE_STRING },
[IFACE_ATTR_IP6CLASS] = { .type = BLOBMSG_TYPE_STRING },
};
-const struct config_param_list interface_attr_list = {
+const struct uci_blob_param_list interface_attr_list = {
.n_params = IFACE_ATTR_MAX,
.params = iface_attrs,
.info = iface_attr_info,
}
// Set a default exteranl routing table for IPv6 to do source-based-filtering
+ struct interface *iface_old = vlist_find(&interfaces, name, iface_old, node);
+ if (iface_old && iface_old->ip6table > 1000 && iface_old->ip6table < 2000)
+ iface->ip6table = iface_old->ip6table;
+ else
+ iface->ip6table = 1000 + ++interface_serial;
- iface->ip6table = 1000 + ++interface_serial;
if ((cur = tb[IFACE_ATTR_IP6TABLE])) {
if (!system_resolve_rt_table(blobmsg_data(cur), &iface->ip6table))
DPRINTF("Failed to resolve routing table: %s\n", (char *) blobmsg_data(cur));
interface_set_l3_dev(iface, dev);
device_add_user(&iface->main_dev, dev);
+ if (!dev)
+ return;
+
if (claimed)
device_claim(&iface->l3_dev);
if (!if_old->proto_handler->config_params)
D(INTERFACE, "No config parameters for interface '%s'\n",
if_old->name);
- else if (!config_check_equal(if_old->config, if_new->config,
- if_old->proto_handler->config_params))
+ else if (!uci_blob_check_equal(if_old->config, if_new->config,
+ if_old->proto_handler->config_params))
reload = true;
#define UPDATE(field, __var) ({ \
UPDATE(metric, reload_ip);
UPDATE(proto_ip.no_defaultroute, reload_ip);
+ UPDATE(ip4table, reload_ip);
+ UPDATE(ip6table, reload_ip);
interface_merge_assignment_data(if_old, if_new);
#undef UPDATE
if (reload_ip) {
interface_ip_set_enabled(&if_old->config_ip, false);
- interface_ip_set_enabled(&if_old->config_ip, if_new->config_ip.enabled);
interface_ip_set_enabled(&if_old->proto_ip, false);
interface_ip_set_enabled(&if_old->proto_ip, if_new->proto_ip.enabled);
+ interface_ip_set_enabled(&if_old->config_ip, if_new->config_ip.enabled);
}
interface_write_resolv_conf();