diff options
author | Jiri Olsa <jolsa@redhat.com> | 2010-06-14 21:07:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-23 16:16:38 -0400 |
commit | 7b2ff18ee7b0ec4bc3162f821e221781aaca48bd (patch) | |
tree | eed7535663f6333a1dc68861d8cd7b98d8050d4d /net/ipv4/ip_sockglue.c | |
parent | 01fc3e86c6379cc4c78c529a1bad1b8179b726aa (diff) |
net - IP_NODEFRAG option for IPv4 socket
this patch is implementing IP_NODEFRAG option for IPv4 socket.
The reason is, there's no other way to send out the packet with user
customized header of the reassembly part.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_sockglue.c')
-rw-r--r-- | net/ipv4/ip_sockglue.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index 47fff528ff39..6c40a8c46e79 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c | |||
@@ -465,7 +465,7 @@ static int do_ip_setsockopt(struct sock *sk, int level, | |||
465 | (1<<IP_MTU_DISCOVER) | (1<<IP_RECVERR) | | 465 | (1<<IP_MTU_DISCOVER) | (1<<IP_RECVERR) | |
466 | (1<<IP_ROUTER_ALERT) | (1<<IP_FREEBIND) | | 466 | (1<<IP_ROUTER_ALERT) | (1<<IP_FREEBIND) | |
467 | (1<<IP_PASSSEC) | (1<<IP_TRANSPARENT) | | 467 | (1<<IP_PASSSEC) | (1<<IP_TRANSPARENT) | |
468 | (1<<IP_MINTTL))) || | 468 | (1<<IP_MINTTL) | (1<<IP_NODEFRAG))) || |
469 | optname == IP_MULTICAST_TTL || | 469 | optname == IP_MULTICAST_TTL || |
470 | optname == IP_MULTICAST_ALL || | 470 | optname == IP_MULTICAST_ALL || |
471 | optname == IP_MULTICAST_LOOP || | 471 | optname == IP_MULTICAST_LOOP || |
@@ -588,6 +588,13 @@ static int do_ip_setsockopt(struct sock *sk, int level, | |||
588 | } | 588 | } |
589 | inet->hdrincl = val ? 1 : 0; | 589 | inet->hdrincl = val ? 1 : 0; |
590 | break; | 590 | break; |
591 | case IP_NODEFRAG: | ||
592 | if (sk->sk_type != SOCK_RAW) { | ||
593 | err = -ENOPROTOOPT; | ||
594 | break; | ||
595 | } | ||
596 | inet->nodefrag = val ? 1 : 0; | ||
597 | break; | ||
591 | case IP_MTU_DISCOVER: | 598 | case IP_MTU_DISCOVER: |
592 | if (val < IP_PMTUDISC_DONT || val > IP_PMTUDISC_PROBE) | 599 | if (val < IP_PMTUDISC_DONT || val > IP_PMTUDISC_PROBE) |
593 | goto e_inval; | 600 | goto e_inval; |