X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=utils.c;h=5ba5d9e3c9c51edf321325b836f8d842048a3674;hp=409ae43d2674d3012956610f77add3836d22b423;hb=78e134ba7cdc473e7cdf0422b863579ac700ac13;hpb=9d6200d6e3c41dce0fbbbb1a212c027a96f7be14 diff --git a/utils.c b/utils.c index 409ae43..5ba5d9e 100644 --- a/utils.c +++ b/utils.c @@ -470,7 +470,10 @@ write_zone_uci(struct uci_context *ctx, struct fw3_zone *z, if (dev->invert) p += sprintf(p, "!"); - p += sprintf(p, "%s", dev->name); + if (*dev->network) + p += sprintf(p, "%s@%s", dev->name, dev->network); + else + p += sprintf(p, "%s", dev->name); ptr.value = buf; uci_add_list(ctx, &ptr); @@ -511,7 +514,7 @@ write_ipset_uci(struct uci_context *ctx, struct fw3_ipset *s, struct uci_ptr ptr = { .p = dest }; - if (!s->enabled || (s->external && *s->external)) + if (!s->enabled || s->external) return; uci_add_section(ctx, dest, "ipset", &ptr.s); @@ -670,7 +673,7 @@ fw3_hotplug(bool add, void *zone, void *device) struct fw3_zone *z = zone; struct fw3_device *d = device; - if (!d->network) + if (!*d->network) return false; switch (fork()) @@ -694,7 +697,7 @@ fw3_hotplug(bool add, void *zone, void *device) clearenv(); setenv("ACTION", add ? "add" : "remove", 1); setenv("ZONE", z->name, 1); - setenv("INTERFACE", d->network->name, 1); + setenv("INTERFACE", d->network, 1); setenv("DEVICE", d->name, 1); execl(FW3_HOTPLUG, FW3_HOTPLUG, "firewall", NULL);