On Tuesday, 27 December 2022 20:34:09 CET Linus Lüssing wrote: > +/** > + * batadv_mcast_forw_shrink_move_headers() - move multicast headers by offset > + * @skb: the batman-adv multicast packet to move headers for > + * @offset: a non-negative offset to move headers by, towards the skb tail > + * > + * Moves the batman-adv multicast packet header, its multicast tracker TVLV and > + * any TVLVs in between by the given offset in direction towards the tail. > + * > + * It also invalidates the skb checksum. > + */ > +static void > +batadv_mcast_forw_shrink_move_headers(struct sk_buff *skb, unsigned int offset) > +{ > + struct batadv_tvlv_mcast_tracker *mcast_tracker; > + unsigned int tracker_hdrlen, len; > + unsigned char *skb_net_hdr; > + u16 num_dests; > + > + skb_net_hdr = skb_network_header(skb); > + mcast_tracker = (struct batadv_tvlv_mcast_tracker *)skb_net_hdr; > + num_dests = ntohs(mcast_tracker->num_dests); > + tracker_hdrlen = batadv_mcast_forw_tracker_hdrlen(num_dests); > + len = skb_network_offset(skb) + tracker_hdrlen; > + > + memmove(skb->data + offset, skb->data, len); > + skb_pull(skb, offset); > + > + /* invalidate checksum: */ > + skb->ip_summed = CHECKSUM_NONE; Shouldn't the invalidation be that already part of the patch 3? At least it includes receive path processing and modification on the tvlv with the destination originator addresses. Kind regards, Sven