aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ipv6_sockglue.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ipv6_sockglue.c')
-rw-r--r--net/ipv6/ipv6_sockglue.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index edb58aff4ae7..0c289982796d 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -235,7 +235,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
235 if (optlen < sizeof(int) || 235 if (optlen < sizeof(int) ||
236 inet_sk(sk)->inet_num) 236 inet_sk(sk)->inet_num)
237 goto e_inval; 237 goto e_inval;
238 np->ipv6only = valbool; 238 sk->sk_ipv6only = valbool;
239 retv = 0; 239 retv = 0;
240 break; 240 break;
241 241
@@ -834,6 +834,10 @@ pref_skip_coa:
834 np->dontfrag = valbool; 834 np->dontfrag = valbool;
835 retv = 0; 835 retv = 0;
836 break; 836 break;
837 case IPV6_AUTOFLOWLABEL:
838 np->autoflowlabel = valbool;
839 retv = 0;
840 break;
837 } 841 }
838 842
839 release_sock(sk); 843 release_sock(sk);
@@ -1058,7 +1062,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
1058 } 1062 }
1059 1063
1060 case IPV6_V6ONLY: 1064 case IPV6_V6ONLY:
1061 val = np->ipv6only; 1065 val = sk->sk_ipv6only;
1062 break; 1066 break;
1063 1067
1064 case IPV6_RECVPKTINFO: 1068 case IPV6_RECVPKTINFO:
@@ -1158,7 +1162,6 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
1158 return -EFAULT; 1162 return -EFAULT;
1159 1163
1160 return 0; 1164 return 0;
1161 break;
1162 } 1165 }
1163 1166
1164 case IPV6_TRANSPARENT: 1167 case IPV6_TRANSPARENT:
@@ -1273,6 +1276,10 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
1273 val = np->dontfrag; 1276 val = np->dontfrag;
1274 break; 1277 break;
1275 1278
1279 case IPV6_AUTOFLOWLABEL:
1280 val = np->autoflowlabel;
1281 break;
1282
1276 default: 1283 default:
1277 return -ENOPROTOOPT; 1284 return -ENOPROTOOPT;
1278 } 1285 }