Hi all, Today's linux-next merge of the net-next tree got a conflict in net/batman-adv/routing.c between commit fe8a93b95145 ("batman-adv: make is_my_mac() check for the current mesh only") from the net tree and commits f86ce0ad107b ("batman-adv: Return reason for failure in batadv_check_unicast_packet()") and 612d2b4fe0a1 ("batman-adv: network coding - save overheard and tx packets for decoding") from the net-next tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc net/batman-adv/routing.c index 319f290,8f88967..0000000 --- a/net/batman-adv/routing.c +++ b/net/batman-adv/routing.c @@@ -548,8 -549,17 +549,19 @@@ batadv_find_ifalter_router(struct batad return router; } + /** + * batadv_check_unicast_packet - Check for malformed unicast packets ++ * @batpriv: some description ... + * @skb: packet to check + * @hdr_size: size of header to pull + * + * Check for short header and bad addresses in given packet. Returns negative + * value when check fails and 0 otherwise. The negative value depends on the + * reason: -ENODATA for bad header, -EBADR for broadcast destination or source, + * and -EREMOTE for non-local (other host) destination. + */ -static int batadv_check_unicast_packet(struct sk_buff *skb, int hdr_size) +static int batadv_check_unicast_packet(struct batadv_priv *bat_priv, + struct sk_buff *skb, int hdr_size) { struct ethhdr *ethhdr; @@@ -565,11 -575,11 +577,11 @@@ /* packet with broadcast sender address */ if (is_broadcast_ether_addr(ethhdr->h_source)) - return -1; + return -EBADR; /* not for me */ - if (!batadv_is_my_mac(ethhdr->h_dest)) + if (!batadv_is_my_mac(bat_priv, ethhdr->h_dest)) - return -1; + return -EREMOTE; return 0; } @@@ -1046,7 -1058,16 +1061,16 @@@ int batadv_recv_unicast_packet(struct s if (is4addr) hdr_size = sizeof(*unicast_4addr_packet); - if (batadv_check_unicast_packet(bat_priv, skb, hdr_size) < 0) + /* function returns -EREMOTE for promiscuous packets */ - check = batadv_check_unicast_packet(skb, hdr_size); ++ check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); + + /* Even though the packet is not for us, we might save it to use for + * decoding a later received coded packet + */ + if (check == -EREMOTE) + batadv_nc_skb_store_sniffed_unicast(bat_priv, skb); + + if (check < 0) return NET_RX_DROP; if (!batadv_check_unicast_ttvn(bat_priv, skb))
Attachment:
pgpfkNaooW_ex.pgp
Description: PGP signature