.. | .. |
---|
131 | 131 | if (lwtunnel_xmit_redirect(dst->lwtstate)) { |
---|
132 | 132 | int res = lwtunnel_xmit(skb); |
---|
133 | 133 | |
---|
134 | | - if (res < 0 || res == LWTUNNEL_XMIT_DONE) |
---|
| 134 | + if (res != LWTUNNEL_XMIT_CONTINUE) |
---|
135 | 135 | return res; |
---|
136 | 136 | } |
---|
137 | 137 | |
---|
.. | .. |
---|
1925 | 1925 | IP6_UPD_PO_STATS(net, rt->rt6i_idev, IPSTATS_MIB_OUT, skb->len); |
---|
1926 | 1926 | if (proto == IPPROTO_ICMPV6) { |
---|
1927 | 1927 | struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb)); |
---|
| 1928 | + u8 icmp6_type; |
---|
1928 | 1929 | |
---|
1929 | | - ICMP6MSGOUT_INC_STATS(net, idev, icmp6_hdr(skb)->icmp6_type); |
---|
| 1930 | + if (sk->sk_socket->type == SOCK_RAW && !inet_sk(sk)->hdrincl) |
---|
| 1931 | + icmp6_type = fl6->fl6_icmp_type; |
---|
| 1932 | + else |
---|
| 1933 | + icmp6_type = icmp6_hdr(skb)->icmp6_type; |
---|
| 1934 | + ICMP6MSGOUT_INC_STATS(net, idev, icmp6_type); |
---|
1930 | 1935 | ICMP6_INC_STATS(net, idev, ICMP6_MIB_OUTMSGS); |
---|
1931 | 1936 | } |
---|
1932 | 1937 | |
---|