projects
/
project
/
firewall3.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use libiptc to clear current ruleset
[project/firewall3.git]
/
options.c
diff --git
a/options.c
b/options.c
index
724a215
..
3d30c57
100644
(file)
--- a/
options.c
+++ b/
options.c
@@
-91,13
+91,15
@@
static const char *limit_units[] = {
"day",
};
"day",
};
-static const char *ipset_methods[] = {
+const char *fw3_ipset_method_names[__FW3_IPSET_METHOD_MAX] = {
+ "(bug)",
"bitmap",
"hash",
"list",
};
"bitmap",
"hash",
"list",
};
-static const char *ipset_types[] = {
+const char *fw3_ipset_type_names[__FW3_IPSET_TYPE_MAX] = {
+ "(bug)",
"ip",
"port",
"mac",
"ip",
"port",
"mac",
@@
-201,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)
{
bool
fw3_parse_device(void *ptr, const char *val, bool is_list)
{
+ char *p;
struct fw3_device dev = { };
if (*val == '*')
struct fw3_device dev = { };
if (*val == '*')
@@
-217,6
+220,12
@@
fw3_parse_device(void *ptr, const char *val, bool is_list)
while (isspace(*++val));
}
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
if (*val)
snprintf(dev.name, sizeof(dev.name), "%s", val);
else
@@
-558,7
+567,7
@@
fw3_parse_protocol(void *ptr, const char *val, bool is_list)
bool
fw3_parse_ipset_method(void *ptr, const char *val, bool is_list)
{
bool
fw3_parse_ipset_method(void *ptr, const char *val, bool is_list)
{
- return parse_enum(ptr, val,
ipset_methods
,
+ return parse_enum(ptr, val,
&fw3_ipset_method_names[FW3_IPSET_METHOD_BITMAP]
,
FW3_IPSET_METHOD_BITMAP, FW3_IPSET_METHOD_LIST);
}
FW3_IPSET_METHOD_BITMAP, FW3_IPSET_METHOD_LIST);
}
@@
-583,7
+592,7
@@
fw3_parse_ipset_datatype(void *ptr, const char *val, bool is_list)
type.dest = false;
}
type.dest = false;
}
- if (parse_enum(&type.type, val,
ipset_types
,
+ if (parse_enum(&type.type, val,
&fw3_ipset_type_names[FW3_IPSET_TYPE_IP]
,
FW3_IPSET_TYPE_IP, FW3_IPSET_TYPE_SET))
{
put_value(ptr, &type, sizeof(type), is_list);
FW3_IPSET_TYPE_IP, FW3_IPSET_TYPE_SET))
{
put_value(ptr, &type, sizeof(type), is_list);
@@
-1048,10
+1057,7
@@
fw3_format_ipset(struct fw3_ipset *ipset, bool invert)
if (!ipset)
return;
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);
fw3_pr(" -m set %s--match-set %s", invert ? "! " : "", name);