X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=ipsets.c;h=a987790e4b5bede54321743f7660f4063cb9c2da;hp=a720172652bda0404b4e5bf647ba84313ff01d3a;hb=c7fc65809ae5300f256a1228f7011a1dc1bc85ac;hpb=6a736bbffb88c44aa5b4780e5a94519a0b4e5523 diff --git a/ipsets.c b/ipsets.c index a720172..a987790 100644 --- a/ipsets.c +++ b/ipsets.c @@ -20,6 +20,8 @@ const struct fw3_option fw3_ipset_opts[] = { + FW3_OPT("enabled", bool, ipset, enabled), + FW3_OPT("name", string, ipset, name), FW3_OPT("family", family, ipset, family), @@ -371,20 +373,16 @@ fw3_create_ipsets(struct fw3_state *state) } void -fw3_destroy_ipsets(struct fw3_state *state) +fw3_destroy_ipsets(struct fw3_state *state, enum fw3_family family) { struct fw3_ipset *s, *tmp; - int mask = (1 << FW3_FAMILY_V4) | (1 << FW3_FAMILY_V6); list_for_each_entry_safe(s, tmp, &state->running_ipsets, running_list) { - if (!hasbit(state->defaults.flags, FW3_FAMILY_V4)) - delbit(s->flags, FW3_FAMILY_V4); - - if (!hasbit(state->defaults.flags, FW3_FAMILY_V6)) - delbit(s->flags, FW3_FAMILY_V6); + if (hasbit(s->running_flags, family)) + delbit(s->flags, family); - if (!(s->flags & mask)) + if (fw3_no_family(s)) { info("Deleting ipset %s", s->name);