if (ipset_types[i].method == ipset->method &&
ipset_types[i].types == typelist)
{
- if (!ipset->external || !*ipset->external)
+ if (!ipset->external)
{
if ((ipset_types[i].required & OPT_IPRANGE) &&
!ipset->iprange.set)
}
if (!(ipset_types[i].optional & OPT_FAMILY) &&
- ipset->family != FW3_FAMILY_ANY)
+ ipset->family != FW3_FAMILY_V4)
{
warn_elem(e, "family ignored");
- ipset->family = FW3_FAMILY_ANY;
+ ipset->family = FW3_FAMILY_V4;
}
}
INIT_LIST_HEAD(&ipset->datatypes);
ipset->enabled = true;
+ ipset->family = FW3_FAMILY_V4;
return ipset;
}
fw3_parse_options(ipset, fw3_ipset_opts, s);
+ if (ipset->external)
+ {
+ if (!*ipset->external)
+ ipset->external = NULL;
+ else if (!ipset->name)
+ ipset->name = ipset->external;
+ }
+
if (!ipset->name || !*ipset->name)
{
warn_elem(e, "must have a name assigned");
//{
// warn_elem(e, "has duplicated set name '%s'", ipset->name);
//}
+ else if (ipset->family == FW3_FAMILY_ANY)
+ {
+ warn_elem(e, "must not have family 'any'");
+ }
else if (list_empty(&ipset->datatypes))
{
warn_elem(e, "has no datatypes assigned");
struct fw3_ipset_datatype *type;
- if (ipset->external && *ipset->external)
+ if (ipset->external)
return;
info(" * Creating ipset %s", ipset->name);
ipset->portrange.port_min, ipset->portrange.port_max);
}
- if (ipset->family != FW3_FAMILY_ANY)
- fw3_pr(" family inet%s", (ipset->family == FW3_FAMILY_V4) ? "" : "6");
+ fw3_pr(" family inet%s", (ipset->family == FW3_FAMILY_V4) ? "" : "6");
if (ipset->timeout > 0)
fw3_pr(" timeout %u", ipset->timeout);
req_name.op = IP_SET_OP_GET_BYNAME;
req_name.version = req_ver.version;
snprintf(req_name.set.name, IPSET_MAXNAMELEN - 1, "%s",
- (set->external && *set->external) ? set->external : set->name);
+ set->external ? set->external : set->name);
if (getsockopt(s, SOL_IP, SO_IP_SET, &req_name, &sz))
goto out;