netfilter: ipset: forbid family for hash:mac sets
[ Upstream commit cbdebe481a
]
Userspace `ipset` command forbids family option for hash:mac type:
ipset create test hash:mac family inet4
ipset v6.30: Unknown argument: `family'
However, this check is not done in kernel itself. When someone use
external netlink applications (pyroute2 python library for example), one
can create hash:mac with invalid family and inconsistant results from
userspace (`ipset` command cannot read set content anymore).
This patch enforce the logic in kernel, and forbids insertion of
hash:mac with a family set.
Since IP_SET_PROTO_UNDEF is defined only for hash:mac, this patch has no
impact on other hash:* sets
Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr>
Signed-off-by: Victorien Molle <victorien.molle@wifirst.fr>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
pull/10/head
parent
a47ece2b17
commit
52f072f580
|
@ -1241,7 +1241,10 @@ IPSET_TOKEN(HTYPE, _create)(struct net *net, struct ip_set *set,
|
||||||
pr_debug("Create set %s with family %s\n",
|
pr_debug("Create set %s with family %s\n",
|
||||||
set->name, set->family == NFPROTO_IPV4 ? "inet" : "inet6");
|
set->name, set->family == NFPROTO_IPV4 ? "inet" : "inet6");
|
||||||
|
|
||||||
#ifndef IP_SET_PROTO_UNDEF
|
#ifdef IP_SET_PROTO_UNDEF
|
||||||
|
if (set->family != NFPROTO_UNSPEC)
|
||||||
|
return -IPSET_ERR_INVALID_FAMILY;
|
||||||
|
#else
|
||||||
if (!(set->family == NFPROTO_IPV4 || set->family == NFPROTO_IPV6))
|
if (!(set->family == NFPROTO_IPV4 || set->family == NFPROTO_IPV6))
|
||||||
return -IPSET_ERR_INVALID_FAMILY;
|
return -IPSET_ERR_INVALID_FAMILY;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue