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(+)
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;