On Sat, Feb 11, 2012 at 09:44:23PM +0800, Marek Lindner wrote:
> 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.

Thank you for your feedback.
Yes, you are right. Actually I didn't care about the "weight" of th patch: I
simply added the new type at the end and then applied the needed changes. But I
agree with you: moving the new type patch at the beginning is a good idea.

Cheers,

> 
> Cheers,
> Marek

-- 
Antonio Quartulli

..each of us alone is worth nothing..
Ernesto "Che" Guevara

Attachment: pgp99iNSIFn49.pgp
Description: PGP signature

Reply via email to