X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=iprule.c;h=81bb77a60c0743b7c76eb84c60b9941145c334bc;hp=c3fdcfce6e046d42ca75e989f01faebb170d4eb6;hb=7e3b89a4d4c0b55a9b2376b88cbe72a1edc5cd82;hpb=800e5e5f50b62af1b7054f41331a4cc0d7802f65 diff --git a/iprule.c b/iprule.c index c3fdcfc..81bb77a 100644 --- a/iprule.c +++ b/iprule.c @@ -15,7 +15,6 @@ #include #include #include -#include #include @@ -60,7 +59,7 @@ static const struct blobmsg_policy rule_attr[__RULE_MAX] = { [RULE_GOTO] = { .name = "goto", .type = BLOBMSG_TYPE_INT32 }, }; -const struct config_param_list rule_attr_list = { +const struct uci_blob_param_list rule_attr_list = { .n_params = __RULE_MAX, .params = rule_attr, }; @@ -199,13 +198,6 @@ iprule_add(struct blob_attr *attr, bool v6) rule->flags |= IPRULE_GOTO; } - /* trigger flush of existing rules when adding first uci rule the first time */ - if (!iprules_flushed) - { - system_flush_iprules(); - iprules_flushed = true; - } - vlist_add(&iprules, &rule->node, &rule->flags); return; @@ -216,6 +208,11 @@ error: void iprule_update_start(void) { + if (!iprules_flushed) { + system_flush_iprules(); + iprules_flushed = true; + } + iprules_counter[0] = 1; iprules_counter[1] = 1; vlist_update(&iprules); @@ -236,7 +233,7 @@ rule_cmp(const void *k1, const void *k2, void *ptr) static void iprule_update_rule(struct vlist_tree *tree, - struct vlist_node *node_new, struct vlist_node *node_old) + struct vlist_node *node_new, struct vlist_node *node_old) { struct iprule *rule_old, *rule_new;