--- zzzz-none-000/linux-4.19.183/net/ipv6/sit.c 2021-03-24 10:07:39.000000000 +0000 +++ bcm63-7530ax-756/linux-4.19.183/net/ipv6/sit.c 2023-06-28 08:54:21.000000000 +0000 @@ -56,6 +56,9 @@ #include #include +#if defined(CONFIG_BCM_KF_BLOG) && defined(CONFIG_BLOG) +#include +#endif /* This version of net/ipv6/sit.c is cloned of net/ipv4/ip_gre.c @@ -691,6 +694,10 @@ tstats->rx_bytes += skb->len; u64_stats_update_end(&tstats->syncp); +#if defined(CONFIG_BCM_KF_BLOG) && defined(CONFIG_BLOG) + blog_link(TOS_MODE, blog_ptr(skb), tunnel, DIR_RX, BLOG_TOS_FIXED); + blog_link(IF_DEVICE, blog_ptr(skb), (void*)tunnel->dev, DIR_RX, skb->len); +#endif netif_rx(skb); return 0; @@ -993,8 +1000,32 @@ skb_set_inner_ipproto(skb, IPPROTO_IPV6); +#if defined(CONFIG_BCM_KF_BLOG) && defined(CONFIG_BLOG) + blog_link(TOS_MODE, blog_ptr(skb), tunnel, DIR_TX, tunnel->parms.iph.tos); + blog_link(IF_DEVICE, blog_ptr(skb), (void*)dev, DIR_TX, skb->len); +#endif + +#if defined(CONFIG_BCM_KF_IPV6) + /* + * cd-router #1329: DF flag should not be set + * RFC 3056 sec 4: DF flag should not be set + * RFC 4213 sec 3.2.1: DF flag MUST NOT be set for static MTU cases. + * RFC 4213 sec 3.2.2: For dynamic MTU cases, the algorithm should be: + * if ( (v4MTU-20) < 1280 ) { + * if ( v6Pkt > 1280 ) send ICMPv6 "TooBig" with MTU=1280; + * else encapsulate to v4 packet and DF flag MUST NOT be set + * } + * else { + * if ( v6Pkt > (v4MTU-20) ) send ICMPv6 "TooBig" with MTU=(v4MTU-20); + * else encapsulate to v4 packet and DF flag MUST be set + * } + */ + iptunnel_xmit(NULL, rt, skb, fl4.saddr, fl4.daddr, IPPROTO_IPV6, tos, ttl, + 0, !net_eq(tunnel->net, dev_net(dev))); +#else iptunnel_xmit(NULL, rt, skb, fl4.saddr, fl4.daddr, protocol, tos, ttl, df, !net_eq(tunnel->net, dev_net(dev))); +#endif return NETDEV_TX_OK; tx_error_icmp: