|
Lines 1520-1542
static int br_multicast_ipv6_rcv(struct net_bridge *br,
Link Here
|
| 1520 |
err = pskb_trim_rcsum(skb2, len); |
1520 |
err = pskb_trim_rcsum(skb2, len); |
| 1521 |
if (err) |
1521 |
if (err) |
| 1522 |
goto out; |
1522 |
goto out; |
| 1523 |
err = -EINVAL; |
|
|
| 1524 |
} |
1523 |
} |
| 1525 |
|
1524 |
|
| 1526 |
ip6h = ipv6_hdr(skb2); |
|
|
| 1527 |
|
| 1528 |
switch (skb2->ip_summed) { |
1525 |
switch (skb2->ip_summed) { |
| 1529 |
case CHECKSUM_COMPLETE: |
1526 |
case CHECKSUM_COMPLETE: |
| 1530 |
if (!csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, skb2->len, |
1527 |
if (!csum_fold(skb2->csum)) |
| 1531 |
IPPROTO_ICMPV6, skb2->csum)) |
|
|
| 1532 |
break; |
1528 |
break; |
| 1533 |
/*FALLTHROUGH*/ |
1529 |
/*FALLTHROUGH*/ |
| 1534 |
case CHECKSUM_NONE: |
1530 |
case CHECKSUM_NONE: |
| 1535 |
skb2->csum = ~csum_unfold(csum_ipv6_magic(&ip6h->saddr, |
1531 |
skb2->csum = 0; |
| 1536 |
&ip6h->daddr, |
1532 |
if (skb_checksum_complete(skb2)) |
| 1537 |
skb2->len, |
|
|
| 1538 |
IPPROTO_ICMPV6, 0)); |
| 1539 |
if (__skb_checksum_complete(skb2)) |
| 1540 |
goto out; |
1533 |
goto out; |
| 1541 |
} |
1534 |
} |
| 1542 |
|
1535 |
|