batctl: tcpdump - Add support for bla loopdetect

Message ID 1460451087-18450-1-git-send-email-sven@open-mesh.com (mailing list archive)
State Accepted, archived
Delegated to: Marek Lindner
Headers

Commit Message

Sven Eckelmann April 12, 2016, 8:51 a.m. UTC
  From: Sven Eckelmann <sven.eckelmann@open-mesh.com>

Complex bridge loop detection was added to batman-adv. It uses so called
BLA LOOPDETECT ARP packets to find out if there is a loop. The bla2 claim
function of tcpdump extracts the same information which also
batadv_bla_send_claim uses for its debug output.

Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
---
 packet.h  | 1 +
 tcpdump.c | 6 ++++++
 2 files changed, 7 insertions(+)
  

Comments

Marek Lindner April 14, 2016, 4:54 p.m. UTC | #1
On Tuesday, April 12, 2016 10:51:27 Sven Eckelmann wrote:
> From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
> 
> Complex bridge loop detection was added to batman-adv. It uses so called
> BLA LOOPDETECT ARP packets to find out if there is a loop. The bla2 claim
> function of tcpdump extracts the same information which also
> batadv_bla_send_claim uses for its debug output.
> 
> Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
> ---
>  packet.h  | 1 +
>  tcpdump.c | 6 ++++++
>  2 files changed, 7 insertions(+)

Applied in revision 511de65.

Thanks,
Marek
  

Patch

diff --git a/packet.h b/packet.h
index 0796dfd..372128d 100644
--- a/packet.h
+++ b/packet.h
@@ -175,6 +175,7 @@  enum batadv_bla_claimframe {
 	BATADV_CLAIM_TYPE_UNCLAIM	= 0x01,
 	BATADV_CLAIM_TYPE_ANNOUNCE	= 0x02,
 	BATADV_CLAIM_TYPE_REQUEST	= 0x03,
+	BATADV_CLAIM_TYPE_LOOPDETECT	= 0x04,
 };
 
 /**
diff --git a/tcpdump.c b/tcpdump.c
index a30e34b..e969d7d 100644
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -366,6 +366,12 @@  static int dump_bla2_claim(struct ether_header *eth_hdr,
 		printf("dst backbone %s\n",
 		       get_name_by_macaddr((struct ether_addr *)eth_hdr->ether_dhost, read_opt));
 		break;
+	case BATADV_CLAIM_TYPE_LOOPDETECT:
+		printf("BLA LOOPDETECT, src backbone %s, ",
+		       get_name_by_macaddr((struct ether_addr *)eth_hdr->ether_shost, read_opt));
+		printf("dst backbone %s\n",
+		       get_name_by_macaddr((struct ether_addr *)eth_hdr->ether_dhost, read_opt));
+		break;
 	default:
 		printf("BLA UNKNOWN, type %hhu\n", bla_dst->type);
 		break;