On Friday, February 10, 2012 07:41:42 Antonio Quartulli wrote: > In order to enable an higher verbosity level of the DAT debug messages, the > unicast_4addr_packet is now used to carry ARP packets generated by the DAT > internal mechanism. This packet type will enable batman-adv to recognise > each DAT related message and to print its source (this will help to track > possibly bogus ARP entries) > > Signed-off-by: Antonio Quartulli <[email protected]> > --- > distributed-arp-table.c | 129 > +++++++++++++++++++++++++++++++--------------- distributed-arp-table.h | > 16 +++--- > soft-interface.c | 15 +++-- > 3 files changed, 105 insertions(+), 55 deletions(-) > > diff --git a/distributed-arp-table.c b/distributed-arp-table.c > index 48e97e0..239b5c4 100644 > --- a/distributed-arp-table.c > +++ b/distributed-arp-table.c > @@ -31,6 +31,7 @@ > #include "originator.h" > #include "send.h" > #include "soft-interface.h" > +#include "translation-table.h" > #include "types.h" > #include "translation-table.h" > #include "unicast.h" > @@ -38,10 +39,44 @@ > #ifdef CONFIG_BATMAN_ADV_DEBUG > > static inline void bat_dbg_arp(struct bat_priv *bat_priv, > - struct sk_buff *skb, uint16_t type) { > + struct sk_buff *skb, uint16_t type, > + int hdr_size) { > + struct unicast_4addr_packet *unicast_4addr_packet; > + > bat_dbg(DBG_ARP, bat_priv, "ARP MSG = [src: %pM-%pI4 dst: %pM-%pI4]\n", > - ARP_HW_SRC(skb), &ARP_IP_SRC(skb), ARP_HW_DST(skb), > - &ARP_IP_DST(skb)); > + ARP_HW_SRC(skb, hdr_size), &ARP_IP_SRC(skb, hdr_size), > + ARP_HW_DST(skb, hdr_size), &ARP_IP_DST(skb, hdr_size)); > + > + if (hdr_size == 0) > + return; > + > + /* if the AP packet is encapsulated in a batman packet, let's print some > + * debug messages */ > + unicast_4addr_packet = (struct unicast_4addr_packet *)skb->data; > + > + switch (unicast_4addr_packet->u.header.packet_type) { > + case BAT_UNICAST: > + bat_dbg(DBG_ARP, bat_priv, "encapsulated within a UNICAST " > + "packet\n"); > + break; > + case BAT_UNICAST_4ADDR: > + bat_dbg(DBG_ARP, bat_priv, "encapsulated within a " > + "UNICAST_4ADDR packet (src: %pM)\n", > + unicast_4addr_packet->src); > + if (unicast_4addr_packet->subtype != BAT_P_DHT_PUT || > + unicast_4addr_packet->subtype != BAT_P_DHT_GET) > + bat_dbg(DBG_ARP, bat_priv, "It's a DAT message\n");
Isn't this check going to fail as soon as a new subtype was added ? > + unicast_4addr_packet = (struct unicast_4addr_packet *)skb->data; > + > + if (dat_snoop_incoming_arp_request(bat_priv, skb, hdr_size)) > + goto out; > + > + if (dat_snoop_incoming_arp_reply(bat_priv, skb, hdr_size)) > + goto out; > + The unicast_4addr_packet variable isn't used anywhere ... Most of this patch simply adds a hdr_size variable to the functions added by earlier patches. Why not adding the unicast_4addr type at the beginning of the patch series ? You would not need this patch. Cheers, Marek
