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