|
@@ -465,7 +465,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
|
|
|
(1<<IP_MTU_DISCOVER) | (1<<IP_RECVERR) |
|
|
|
(1<<IP_ROUTER_ALERT) | (1<<IP_FREEBIND) |
|
|
|
(1<<IP_PASSSEC) | (1<<IP_TRANSPARENT) |
|
|
|
- (1<<IP_MINTTL))) ||
|
|
|
+ (1<<IP_MINTTL) | (1<<IP_NODEFRAG))) ||
|
|
|
optname == IP_MULTICAST_TTL ||
|
|
|
optname == IP_MULTICAST_ALL ||
|
|
|
optname == IP_MULTICAST_LOOP ||
|
|
@@ -588,6 +588,13 @@ static int do_ip_setsockopt(struct sock *sk, int level,
|
|
|
}
|
|
|
inet->hdrincl = val ? 1 : 0;
|
|
|
break;
|
|
|
+ case IP_NODEFRAG:
|
|
|
+ if (sk->sk_type != SOCK_RAW) {
|
|
|
+ err = -ENOPROTOOPT;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ inet->nodefrag = val ? 1 : 0;
|
|
|
+ break;
|
|
|
case IP_MTU_DISCOVER:
|
|
|
if (val < IP_PMTUDISC_DONT || val > IP_PMTUDISC_PROBE)
|
|
|
goto e_inval;
|