X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=zones.c;h=fc6d11efdd1cfd06faa2b0bca176daabb60ec4a2;hp=9f1a68d077c2e0d8652abac04734e1863e201152;hb=9d900a9f86ef74a33a531e31c7373ab7b9906d88;hpb=182abe47ae4686944482580b42a972827a0e4b51;ds=sidebyside diff --git a/zones.c b/zones.c index 9f1a68d..fc6d11e 100644 --- a/zones.c +++ b/zones.c @@ -595,7 +595,13 @@ fw3_flush_zones(struct fw3_ipt_handle *handle, struct fw3_state *state, continue; snprintf(chain, sizeof(chain), c->format, z->name); - fw3_ipt_delete_rules(handle, chain); + fw3_ipt_flush_chain(handle, chain); + + /* keep certain basic chains that do not depend on any settings to + avoid purging unrelated user rules pointing to them */ + if (reload && !c->flag) + continue; + fw3_ipt_delete_chain(handle, chain); }