Dave,
AFAIK, we have not heard objectsions and I finally agree on this.
Please apply.
Signed-off-by: YOSHIFUJI Hideaki <[EMAIL PROTECTED]>
--yoshfuji
In article <[EMAIL PROTECTED]> (at Wed, 3 Jan 2007 18:57:48 +0900), Masahide
NAKAMURA <[EMAIL PROTECTED]> says:
> Add checksum default defines for mobility header(MH) which
> goes through raw socket. As the result kernel's behavior is
> to handle MH checksum as default.
>
> This patch also removes verifying inbound MH checksum at
> mip6_mh_filter() since it did not consider user specified
> checksum offset and was redundant check with raw socket code.
>
> Signed-off-by: Masahide NAKAMURA <[EMAIL PROTECTED]>
> ---
> net/ipv6/mip6.c | 26 --------------------------
> net/ipv6/raw.c | 13 +++++++++++--
> 2 files changed, 11 insertions(+), 28 deletions(-)
>
> diff --git a/net/ipv6/mip6.c b/net/ipv6/mip6.c
> index be7dd7d..681bb07 100644
> --- a/net/ipv6/mip6.c
> +++ b/net/ipv6/mip6.c
> @@ -89,7 +89,6 @@ static int mip6_mh_len(int type)
> int mip6_mh_filter(struct sock *sk, struct sk_buff *skb)
> {
> struct ip6_mh *mh;
> - int mhlen;
>
> if (!pskb_may_pull(skb, (skb->h.raw - skb->data) + 8) ||
> !pskb_may_pull(skb, (skb->h.raw - skb->data) + ((skb->h.raw[1] + 1)
> << 3)))
> @@ -103,31 +102,6 @@ int mip6_mh_filter(struct sock *sk, stru
> mip6_param_prob(skb, 0, (&mh->ip6mh_hdrlen) - skb->nh.raw);
> return -1;
> }
> - mhlen = (mh->ip6mh_hdrlen + 1) << 3;
> -
> - if (skb->ip_summed == CHECKSUM_COMPLETE) {
> - skb->ip_summed = CHECKSUM_UNNECESSARY;
> - if (csum_ipv6_magic(&skb->nh.ipv6h->saddr,
> - &skb->nh.ipv6h->daddr,
> - mhlen, IPPROTO_MH,
> - skb->csum)) {
> - LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH hw checksum
> failed\n");
> - skb->ip_summed = CHECKSUM_NONE;
> - }
> - }
> - if (skb->ip_summed == CHECKSUM_NONE) {
> - if (csum_ipv6_magic(&skb->nh.ipv6h->saddr,
> - &skb->nh.ipv6h->daddr,
> - mhlen, IPPROTO_MH,
> - skb_checksum(skb, 0, mhlen, 0))) {
> - LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH checksum failed "
> - "[" NIP6_FMT " > " NIP6_FMT "]\n",
> - NIP6(skb->nh.ipv6h->saddr),
> - NIP6(skb->nh.ipv6h->daddr));
> - return -1;
> - }
> - skb->ip_summed = CHECKSUM_UNNECESSARY;
> - }
>
> if (mh->ip6mh_proto != IPPROTO_NONE) {
> LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH invalid payload proto =
> %d\n",
> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
> index 4ae1b19..4b83e69 100644
> --- a/net/ipv6/raw.c
> +++ b/net/ipv6/raw.c
> @@ -1094,10 +1094,19 @@ static void rawv6_close(struct sock *sk,
>
> static int rawv6_init_sk(struct sock *sk)
> {
> - if (inet_sk(sk)->num == IPPROTO_ICMPV6) {
> - struct raw6_sock *rp = raw6_sk(sk);
> + struct raw6_sock *rp = raw6_sk(sk);
> +
> + switch (inet_sk(sk)->num) {
> + case IPPROTO_ICMPV6:
> rp->checksum = 1;
> rp->offset = 2;
> + break;
> + case IPPROTO_MH:
> + rp->checksum = 1;
> + rp->offset = 4;
> + break;
> + default:
> + break;
> }
> return(0);
> }
> --
> 1.4.2
>
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html