[CRIU] [PATCH 09/10] inet: raw -- Skip IP_FREEBIND for ipv6 SOCK_RAW sockets
Cyrill Gorcunov
gorcunov at gmail.com
Thu Mar 22 12:13:48 MSK 2018
From: Kirill Tkhai <ktkhai at virtuozzo.com>
IP_FREEBIND is not supported for SOCK_RAW ipv6 sockets.
See kernel rawv6_setsockopt() for the details.
For the rest of sockets, where they begin to support it:
the actual magic happens in do_ipv6_setsockopt(), and
IPV6_ADDRFORM optname changes sk->sk_prot to refer
to tcp_prot, udp_prot and udplite_prot, which contains
link to ip_setsockopt().
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
Signed-off-by: Cyrill Gorcunov <gorcunov at gmail.com>
---
criu/sk-inet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/criu/sk-inet.c b/criu/sk-inet.c
index d2c4413d0343..7b5ed7e490fc 100644
--- a/criu/sk-inet.c
+++ b/criu/sk-inet.c
@@ -858,7 +858,7 @@ int inet_bind(int sk, struct inet_sk_info *ii)
* sockets could not be bound to them in this moment
* without setting IP_FREEBIND.
*/
- if (ii->ie->family == AF_INET6) {
+ if (ii->ie->family == AF_INET6 && ii->ie->type != SOCK_RAW) {
int yes = 1;
if (restore_opt(sk, SOL_IP, IP_FREEBIND, &yes))
--
2.14.3
More information about the CRIU
mailing list