hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/ipv6/ip6_output.c
....@@ -131,7 +131,7 @@
131131 if (lwtunnel_xmit_redirect(dst->lwtstate)) {
132132 int res = lwtunnel_xmit(skb);
133133
134
- if (res < 0 || res == LWTUNNEL_XMIT_DONE)
134
+ if (res != LWTUNNEL_XMIT_CONTINUE)
135135 return res;
136136 }
137137
....@@ -1925,8 +1925,13 @@
19251925 IP6_UPD_PO_STATS(net, rt->rt6i_idev, IPSTATS_MIB_OUT, skb->len);
19261926 if (proto == IPPROTO_ICMPV6) {
19271927 struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
1928
+ u8 icmp6_type;
19281929
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);
19301935 ICMP6_INC_STATS(net, idev, ICMP6_MIB_OUTMSGS);
19311936 }
19321937