X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=ipsets.c;h=ca0bd299912577c1ec5819877a691e30f63316d2;hp=3d659e2c03039bdb7dc591536e102433ea082626;hb=c4b9c253df7cb1347dc5cf63846fb52d641e8ca6;hpb=8fee8f9c520c58d07772cc6bd8f65d9eb1776a56;ds=sidebyside diff --git a/ipsets.c b/ipsets.c index 3d659e2..ca0bd29 100644 --- a/ipsets.c +++ b/ipsets.c @@ -353,25 +353,37 @@ fw3_create_ipsets(struct fw3_state *state) void fw3_destroy_ipsets(struct fw3_state *state) { - struct fw3_ipset *ipset; + FILE *sf; - if (state->disable_ipsets) + char *p; + char line[128]; + + sf = fopen(FW3_STATEFILE, "r"); + + if (!sf) return; info("Destroying ipsets ..."); - list_for_each_entry(ipset, &state->ipsets, list) + while (fgets(line, sizeof(line), sf)) { - if (ipset->external && *ipset->external) + if (strncmp(line, "ipset ", 6)) continue; - info(" * %s", ipset->name); + p = strtok(line+6, " \t\n"); - fw3_pr("flush %s\n", ipset->name); - fw3_pr("destroy %s\n", ipset->name); + if (!p || !strlen(p)) + continue; + + info(" * %s", p); + + fw3_pr("flush %s\n", p); + fw3_pr("destroy %s\n", p); } fw3_pr("quit\n"); + + fclose(sf); } void