Use libiptc to clear current ruleset
[project/firewall3.git] / options.c
index 47cd727..3d30c57 100644 (file)
--- a/options.c
+++ b/options.c
@@ -203,6 +203,7 @@ fw3_parse_limit(void *ptr, const char *val, bool is_list)
 bool
 fw3_parse_device(void *ptr, const char *val, bool is_list)
 {
+       char *p;
        struct fw3_device dev = { };
 
        if (*val == '*')
@@ -219,6 +220,12 @@ fw3_parse_device(void *ptr, const char *val, bool is_list)
                while (isspace(*++val));
        }
 
+       if ((p = strchr(val, '@')) != NULL)
+       {
+               *p++ = 0;
+               snprintf(dev.network, sizeof(dev.network), "%s", p);
+       }
+
        if (*val)
                snprintf(dev.name, sizeof(dev.name), "%s", val);
        else
@@ -1050,10 +1057,7 @@ fw3_format_ipset(struct fw3_ipset *ipset, bool invert)
        if (!ipset)
                return;
 
-       if (ipset->external && *ipset->external)
-               name = ipset->external;
-       else
-               name = ipset->name;
+       name = ipset->external ? ipset->external : ipset->name;
 
        fw3_pr(" -m set %s--match-set %s", invert ? "! " : "", name);