net: error on unsupported IP setsockopts in IPv6
Subsystems (3)
PATCH 1/1 net: error on unsupported IP setsockopts in IPv6
The IP_TTL and IP_TOS sockopts are unsupported for IPv6 sockets, this bug was reported previously to the kernel bugzilla [1]. Make the IP_TTL and IP_TOS sockopts return an error for AF_INET6 sockets.
[1] https://bugzilla.kernel.org/show_bug.cgi?id=212585
--- net/ipv6/ipv6_sockglue.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
net/ipv6/ipv6_sockglue.c +10 -2
@@ -1012,8 +1012,16 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval, {int err; -if (level ==SOL_IP && sk->sk_type !=SOCK_RAW ) -return udp_prot.setsockopt (sk, level, optname, optval, optlen); +if (level ==SOL_IP && sk->sk_type !=SOCK_RAW ) { +switch (optname) { +/* Some IP opts are not supported for IPv6 sockets */ +case IP_TTL : +case IP_TOS : +return -ENOPROTOOPT ; +default : +return udp_prot.setsockopt (sk, level, optname, optval, optlen); + } + }if (level !=SOL_IPV6 )return -ENOPROTOOPT ;
Signature · 1 line
2.36.1
Jakub Kicinski
maintainerQuoted 5 lines · On Thu, 9 Jun 2022 17:26:10 +0200 Richard Gobert wrote:
The
IP_TTLandIP_TOSsockopts are unsupported for IPv6 sockets, this bug was reported previously to the kernel bugzilla [1]. Make theIP_TTLandIP_TOSsockopts return an error forAF_INET6sockets.
This is a little risky because applications may set both v4 and v6 options and expect the correct one to "stick". Obviously it's not the way we would have written this code today, but is there any harm? Also why just those two options?
David Ahern
maintainerQuoted 11 lines · Jakub Kicinski
Quoted 5 lines · On Thu, 9 Jun 2022 17:26:10 +0200 Richard Gobert wrote:
The
IP_TTLandIP_TOSsockopts are unsupported for IPv6 sockets, this bug was reported previously to the kernel bugzilla [1]. Make theIP_TTLandIP_TOSsockopts return an error forAF_INET6sockets.This is a little risky because applications may set both v4 and v6 options and expect the correct one to "stick". Obviously it's not the way we would have written this code today, but is there any harm? Also why just those two options?
agreed, I do not believe this can be changed. The values will not be used for ipv6 packets, so the exposure should just be a matter of allowing the setting on a socket.