|
@@ -279,10 +279,10 @@ hash_ipportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
|
|
|
timeout = ip_set_timeout_uget(tb[IPSET_ATTR_TIMEOUT]);
|
|
|
}
|
|
|
|
|
|
- if (tb[IPSET_ATTR_CADT_FLAGS] && adt == IPSET_ADD) {
|
|
|
+ if (tb[IPSET_ATTR_CADT_FLAGS]) {
|
|
|
u32 cadt_flags = ip_set_get_h32(tb[IPSET_ATTR_CADT_FLAGS]);
|
|
|
if (cadt_flags & IPSET_FLAG_NOMATCH)
|
|
|
- flags |= (cadt_flags << 16);
|
|
|
+ flags |= (IPSET_FLAG_NOMATCH << 16);
|
|
|
}
|
|
|
|
|
|
with_ports = with_ports && tb[IPSET_ATTR_PORT_TO];
|
|
@@ -292,7 +292,8 @@ hash_ipportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
|
|
|
data.ip = htonl(ip);
|
|
|
data.ip2 = htonl(ip2_from & ip_set_hostmask(data.cidr + 1));
|
|
|
ret = adtfn(set, &data, timeout, flags);
|
|
|
- return ip_set_eexist(ret, flags) ? 0 : ret;
|
|
|
+ return ip_set_enomatch(ret, flags, adt) ? 1 :
|
|
|
+ ip_set_eexist(ret, flags) ? 0 : ret;
|
|
|
}
|
|
|
|
|
|
ip_to = ip;
|
|
@@ -610,15 +611,16 @@ hash_ipportnet6_uadt(struct ip_set *set, struct nlattr *tb[],
|
|
|
timeout = ip_set_timeout_uget(tb[IPSET_ATTR_TIMEOUT]);
|
|
|
}
|
|
|
|
|
|
- if (tb[IPSET_ATTR_CADT_FLAGS] && adt == IPSET_ADD) {
|
|
|
+ if (tb[IPSET_ATTR_CADT_FLAGS]) {
|
|
|
u32 cadt_flags = ip_set_get_h32(tb[IPSET_ATTR_CADT_FLAGS]);
|
|
|
if (cadt_flags & IPSET_FLAG_NOMATCH)
|
|
|
- flags |= (cadt_flags << 16);
|
|
|
+ flags |= (IPSET_FLAG_NOMATCH << 16);
|
|
|
}
|
|
|
|
|
|
if (adt == IPSET_TEST || !with_ports || !tb[IPSET_ATTR_PORT_TO]) {
|
|
|
ret = adtfn(set, &data, timeout, flags);
|
|
|
- return ip_set_eexist(ret, flags) ? 0 : ret;
|
|
|
+ return ip_set_enomatch(ret, flags, adt) ? 1 :
|
|
|
+ ip_set_eexist(ret, flags) ? 0 : ret;
|
|
|
}
|
|
|
|
|
|
port = ntohs(data.port);
|