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

Reply via email to