Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (48 commits) net: Fix wrong interpretation of some copy_to_user() results. xfrm: alg_key_len & alg_icv_len should be unsigned [netdrvr] tehuti: move ioctl perm check closer to function start ipv6: Fix typo in net/ipv6/Kconfig via-velocity: fix vlan receipt tg3: sparse cleanup forcedeth: realtek phy crossover detection ibm_newemac: Increase MDIO timeouts gianfar: Fix skb allocation strategy netxen: reduce stack usage of netxen_nic_flash_print smc911x: test after postfix decrement fails in smc911x_{reset,drop_pkt} net drivers: fix platform driver hotplug/coldplug forcedeth: new backoff implementation ehea: make things static phylib: Add support for board-level PHY fixups [netdrvr] atlx: code movement: move atl1 parameter parsing atlx: remove flash vendor parameter korina: misc cleanup korina: fix misplaced return statement WAN: Fix confusing insmod error code for C101 too. ...
This commit is contained in:
@@ -167,7 +167,7 @@ config IPV6_SIT
|
||||
Tunneling means encapsulating data of one protocol type within
|
||||
another protocol and sending it over a channel that understands the
|
||||
encapsulating protocol. This driver implements encapsulation of IPv6
|
||||
into IPv4 packets. This is useful if you want to connect two IPv6
|
||||
into IPv4 packets. This is useful if you want to connect to IPv6
|
||||
networks over an IPv4-only path.
|
||||
|
||||
Saying M here will produce a module called sit.ko. If unsure, say Y.
|
||||
|
@@ -971,6 +971,19 @@ static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
|
||||
|
||||
switch (optname) {
|
||||
case IPV6_CHECKSUM:
|
||||
if (inet_sk(sk)->num == IPPROTO_ICMPV6 &&
|
||||
level == IPPROTO_IPV6) {
|
||||
/*
|
||||
* RFC3542 tells that IPV6_CHECKSUM socket
|
||||
* option in the IPPROTO_IPV6 level is not
|
||||
* allowed on ICMPv6 sockets.
|
||||
* If you want to set it, use IPPROTO_RAW
|
||||
* level IPV6_CHECKSUM socket option
|
||||
* (Linux extension).
|
||||
*/
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* You may get strange result with a positive odd offset;
|
||||
RFC2292bis agrees with me. */
|
||||
if (val > 0 && (val&1))
|
||||
@@ -1046,6 +1059,11 @@ static int do_rawv6_getsockopt(struct sock *sk, int level, int optname,
|
||||
|
||||
switch (optname) {
|
||||
case IPV6_CHECKSUM:
|
||||
/*
|
||||
* We allow getsockopt() for IPPROTO_IPV6-level
|
||||
* IPV6_CHECKSUM socket option on ICMPv6 sockets
|
||||
* since RFC3542 is silent about it.
|
||||
*/
|
||||
if (rp->checksum == 0)
|
||||
val = -1;
|
||||
else
|
||||
|
Reference in New Issue
Block a user