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 ordex@autistici.org
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