public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
* [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets
@ 2011-05-29 17:17 Marek Lindner
  2011-05-29 17:17 ` [B.A.T.M.A.N.] [PATCH 2/2] batctl: tcpdump - add option to select all packet types except specified Marek Lindner
  2011-05-29 19:41 ` [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Antonio Quartulli
  0 siblings, 2 replies; 5+ messages in thread
From: Marek Lindner @ 2011-05-29 17:17 UTC (permalink / raw)
  To: b.a.t.m.a.n; +Cc: Marek Lindner

Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
 tcpdump.c |   91 +++++++++++++++++++++++++++++++++++++++++++++++++++----------
 tcpdump.h |    3 +-
 2 files changed, 78 insertions(+), 16 deletions(-)

diff --git a/tcpdump.c b/tcpdump.c
index a715e27..6f1adc1 100644
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -52,7 +52,7 @@ if ((size_t)(buff_len) < (check_len)) { \
 }
 
 static unsigned short dump_level = DUMP_TYPE_BATOGM | DUMP_TYPE_BATICMP | DUMP_TYPE_BATUCAST |
-		DUMP_TYPE_BATBCAST | DUMP_TYPE_BATVIS | DUMP_TYPE_BATFRAG | DUMP_TYPE_NONBAT;
+		DUMP_TYPE_BATBCAST | DUMP_TYPE_BATVIS | DUMP_TYPE_BATFRAG | DUMP_TYPE_BATTT | DUMP_TYPE_NONBAT;
 
 static void parse_eth_hdr(unsigned char *packet_buff, ssize_t buff_len, int read_opt, int time_printed);
 
@@ -63,14 +63,15 @@ static void tcpdump_usage(void)
 	printf(" \t -h print this help\n");
 	printf(" \t -n don't convert addresses to bat-host names\n");
 	printf(" \t -p dump specific packet type\n");
-	printf(" \t\t%d - batman ogm packets\n", DUMP_TYPE_BATOGM);
-	printf(" \t\t%d - batman icmp packets\n", DUMP_TYPE_BATICMP);
-	printf(" \t\t%d - batman unicast packets\n", DUMP_TYPE_BATUCAST);
-	printf(" \t\t%d - batman broadcast packets\n", DUMP_TYPE_BATBCAST);
-	printf(" \t\t%d - batman vis packets\n", DUMP_TYPE_BATVIS);
-	printf(" \t\t%d - batman fragmented packets\n", DUMP_TYPE_BATFRAG);
-	printf(" \t\t%d - non batman packets\n", DUMP_TYPE_NONBAT);
-	printf(" \t\t%d - batman ogm & non batman packets\n", DUMP_TYPE_BATOGM | DUMP_TYPE_NONBAT);
+	printf(" \t\t%3d - batman ogm packets\n", DUMP_TYPE_BATOGM);
+	printf(" \t\t%3d - batman icmp packets\n", DUMP_TYPE_BATICMP);
+	printf(" \t\t%3d - batman unicast packets\n", DUMP_TYPE_BATUCAST);
+	printf(" \t\t%3d - batman broadcast packets\n", DUMP_TYPE_BATBCAST);
+	printf(" \t\t%3d - batman vis packets\n", DUMP_TYPE_BATVIS);
+	printf(" \t\t%3d - batman fragmented packets\n", DUMP_TYPE_BATFRAG);
+	printf(" \t\t%3d - batman tt / roaming packets\n", DUMP_TYPE_BATTT);
+	printf(" \t\t%3d - non batman packets\n", DUMP_TYPE_NONBAT);
+	printf(" \t\t%3d - batman ogm & non batman packets\n", DUMP_TYPE_BATOGM | DUMP_TYPE_NONBAT);
 }
 
 static int print_time(void)
@@ -247,6 +248,58 @@ static void dump_vlan(unsigned char *packet_buff, ssize_t buff_len, int read_opt
 	parse_eth_hdr(packet_buff + 4, buff_len - 4, read_opt, time_printed);
 }
 
+static void dump_batman_tt(unsigned char *packet_buff, ssize_t buff_len, int read_opt, int time_printed)
+{
+	struct ether_header *ether_header;
+	struct tt_query_packet *tt_query_packet;
+
+	LEN_CHECK((size_t)buff_len - sizeof(struct ether_header), sizeof(struct tt_query_packet), "BAT TT");
+
+	ether_header = (struct ether_header *)packet_buff;
+	tt_query_packet = (struct tt_query_packet *)(packet_buff + sizeof(struct ether_header));
+
+	if (!time_printed)
+		print_time();
+
+	printf("BAT %s > ",
+	       get_name_by_macaddr((struct ether_addr *)tt_query_packet->src, read_opt));
+
+	printf("%s: TT %s, ttvn %d, %s %d, ttl %2d, v %d, flags [%c%c%c], length %zu\n",
+	       get_name_by_macaddr((struct ether_addr *)tt_query_packet->dst, read_opt),
+	       tt_query_packet->flags & TT_RESPONSE ? "response" : "request",
+	       tt_query_packet->ttvn, tt_query_packet->flags & TT_RESPONSE ? "entries" : "crc",
+	       ntohs(tt_query_packet->tt_data), tt_query_packet->ttl, tt_query_packet->version,
+	       (tt_query_packet->flags & TT_REQUEST ? 'Q' : '.'),
+	       (tt_query_packet->flags & TT_RESPONSE ? 'P' : '.'),
+	       (tt_query_packet->flags & TT_FULL_TABLE ? 'F' : '.'),
+	       (size_t)buff_len - sizeof(struct ether_header));
+}
+
+static void dump_batman_roam(unsigned char *packet_buff, ssize_t buff_len, int read_opt, int time_printed)
+{
+	struct ether_header *ether_header;
+	struct roam_adv_packet *roam_adv_packet;
+
+	LEN_CHECK((size_t)buff_len - sizeof(struct ether_header), sizeof(struct roam_adv_packet), "BAT ROAM");
+
+	ether_header = (struct ether_header *)packet_buff;
+	roam_adv_packet = (struct roam_adv_packet *)(packet_buff + sizeof(struct ether_header));
+
+	if (!time_printed)
+		print_time();
+
+	printf("BAT %s > ",
+	       get_name_by_macaddr((struct ether_addr *)roam_adv_packet->src, read_opt));
+
+	printf("%s: ROAM, ",
+	       get_name_by_macaddr((struct ether_addr *)roam_adv_packet->dst, read_opt));
+
+	printf("client %s, ttl %2d, v %d, length %zu\n",
+	       get_name_by_macaddr((struct ether_addr *)roam_adv_packet->client, read_opt),
+	       roam_adv_packet->ttl, roam_adv_packet->version,
+	       (size_t)buff_len - sizeof(struct ether_header));
+}
+
 static void dump_batman_ogm(unsigned char *packet_buff, ssize_t buff_len, int read_opt, int time_printed)
 {
 	struct ether_header *ether_header;
@@ -263,9 +316,9 @@ static void dump_batman_ogm(unsigned char *packet_buff, ssize_t buff_len, int re
 	printf("BAT %s: ",
 	       get_name_by_macaddr((struct ether_addr *)batman_packet->orig, read_opt));
 
-	printf("OGM via neigh %s, seq %u, tq %3d, ttl %2d, v %d, flags [%c%c%c%c], length %zu\n",
+	printf("OGM via neigh %s, seq %u, tq %3d, ttvn %d, ttl %2d, v %d, flags [%c%c%c%c], length %zu\n",
 	        get_name_by_macaddr((struct ether_addr *)ether_header->ether_shost, read_opt),
-	        ntohl(batman_packet->seqno), batman_packet->tq,
+	        ntohl(batman_packet->seqno), batman_packet->tq, batman_packet->ttvn,
 	        batman_packet->ttl, batman_packet->version,
 	        (batman_packet->flags & DIRECTLINK ? 'D' : '.'),
 	        (batman_packet->flags & VIS_SERVER ? 'V' : '.'),
@@ -334,9 +387,9 @@ static void dump_batman_ucast(unsigned char *packet_buff, ssize_t buff_len, int
 	printf("BAT %s > ",
 	       get_name_by_macaddr((struct ether_addr *)ether_header->ether_shost, read_opt));
 
-	printf("%s: UCAST, ttl %hhu, ",
+	printf("%s: UCAST, ttvn %d, ttl %hhu, ",
 	       get_name_by_macaddr((struct ether_addr *)unicast_packet->dest, read_opt),
-	       unicast_packet->ttl);
+	       unicast_packet->ttvn, unicast_packet->ttl);
 
 	parse_eth_hdr(packet_buff + ETH_HLEN + sizeof(struct unicast_packet),
 		      buff_len - ETH_HLEN - sizeof(struct unicast_packet),
@@ -385,9 +438,9 @@ static void dump_batman_frag(unsigned char *packet_buff, ssize_t buff_len, int r
 	printf("BAT %s > ",
 	       get_name_by_macaddr((struct ether_addr *)unicast_frag_packet->orig, read_opt));
 
-	printf("%s: FRAG, seq %hu, ttl %hhu, flags [%c%c], ",
+	printf("%s: FRAG, seq %hu, ttvn %d, ttl %hhu, flags [%c%c], ",
 	       get_name_by_macaddr((struct ether_addr *)unicast_frag_packet->dest, read_opt),
-	       ntohs(unicast_frag_packet->seqno), unicast_frag_packet->ttl,
+	       ntohs(unicast_frag_packet->seqno), unicast_frag_packet->ttvn, unicast_frag_packet->ttl,
 	       (unicast_frag_packet->flags & UNI_FRAG_HEAD ? 'H' : '.'),
 	       (unicast_frag_packet->flags & UNI_FRAG_LARGETAIL ? 'L' : '.'));
 
@@ -447,6 +500,14 @@ static void parse_eth_hdr(unsigned char *packet_buff, ssize_t buff_len, int read
 			if (dump_level & DUMP_TYPE_BATFRAG)
 				dump_batman_frag(packet_buff, buff_len, read_opt, time_printed);
 			break;
+		case BAT_TT_QUERY:
+			if (dump_level & DUMP_TYPE_BATTT)
+				dump_batman_tt(packet_buff, buff_len, read_opt, time_printed);
+			break;
+		case BAT_ROAM_ADV:
+			if (dump_level & DUMP_TYPE_BATTT)
+				dump_batman_roam(packet_buff, buff_len, read_opt, time_printed);
+			break;
 		default:
 			printf("Warning - packet contains unknown batman packet type: 0x%02x\n", batman_packet->packet_type);
 			break;
diff --git a/tcpdump.h b/tcpdump.h
index 4364be1..925b116 100644
--- a/tcpdump.h
+++ b/tcpdump.h
@@ -37,7 +37,8 @@
 #define DUMP_TYPE_BATBCAST 8
 #define DUMP_TYPE_BATVIS 16
 #define DUMP_TYPE_BATFRAG 32
-#define DUMP_TYPE_NONBAT 64
+#define DUMP_TYPE_BATTT 64
+#define DUMP_TYPE_NONBAT 128
 
 #define IEEE80211_FCTL_FTYPE 0x0c00
 #define IEEE80211_FCTL_TODS 0x0001
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [B.A.T.M.A.N.] [PATCH 2/2] batctl: tcpdump - add option to select all packet types except specified
  2011-05-29 17:17 [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Marek Lindner
@ 2011-05-29 17:17 ` Marek Lindner
  2011-05-30 11:52   ` Marek Lindner
  2011-05-29 19:41 ` [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Antonio Quartulli
  1 sibling, 1 reply; 5+ messages in thread
From: Marek Lindner @ 2011-05-29 17:17 UTC (permalink / raw)
  To: b.a.t.m.a.n; +Cc: Marek Lindner

Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
 tcpdump.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/tcpdump.c b/tcpdump.c
index 6f1adc1..3e68844 100644
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -51,8 +51,9 @@ if ((size_t)(buff_len) < (check_len)) { \
 	return; \
 }
 
-static unsigned short dump_level = DUMP_TYPE_BATOGM | DUMP_TYPE_BATICMP | DUMP_TYPE_BATUCAST |
+static unsigned short dump_level_all = DUMP_TYPE_BATOGM | DUMP_TYPE_BATICMP | DUMP_TYPE_BATUCAST |
 		DUMP_TYPE_BATBCAST | DUMP_TYPE_BATVIS | DUMP_TYPE_BATFRAG | DUMP_TYPE_BATTT | DUMP_TYPE_NONBAT;
+static unsigned short dump_level;
 
 static void parse_eth_hdr(unsigned char *packet_buff, ssize_t buff_len, int read_opt, int time_printed);
 
@@ -63,6 +64,8 @@ static void tcpdump_usage(void)
 	printf(" \t -h print this help\n");
 	printf(" \t -n don't convert addresses to bat-host names\n");
 	printf(" \t -p dump specific packet type\n");
+	printf(" \t -x dump all packet types except specified\n");
+	printf("packet types:\n");
 	printf(" \t\t%3d - batman ogm packets\n", DUMP_TYPE_BATOGM);
 	printf(" \t\t%3d - batman icmp packets\n", DUMP_TYPE_BATICMP);
 	printf(" \t\t%3d - batman unicast packets\n", DUMP_TYPE_BATUCAST);
@@ -621,7 +624,9 @@ int tcpdump(int argc, char **argv)
 	unsigned char packet_buff[2000];
 	int monitor_header_len = -1;
 
-	while ((optchar = getopt(argc, argv, "hnp:")) != -1) {
+	dump_level = dump_level_all;
+
+	while ((optchar = getopt(argc, argv, "hnp:x:")) != -1) {
 		switch (optchar) {
 		case 'h':
 			tcpdump_usage();
@@ -632,10 +637,16 @@ int tcpdump(int argc, char **argv)
 			break;
 		case 'p':
 			tmp = strtol(optarg, NULL , 10);
-			if ((tmp > 0) && (tmp <= dump_level))
+			if ((tmp > 0) && (tmp <= dump_level_all))
 				dump_level = tmp;
 			found_args += ((*((char*)(optarg - 1)) == optchar ) ? 1 : 2);
 			break;
+		case 'x':
+			tmp = strtol(optarg, NULL , 10);
+			if ((tmp > 0) && (tmp <= dump_level_all))
+				dump_level &= ~tmp;
+			found_args += ((*((char*)(optarg - 1)) == optchar ) ? 1 : 2);
+			break;
 		default:
 			tcpdump_usage();
 			return EXIT_FAILURE;
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets
  2011-05-29 17:17 [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Marek Lindner
  2011-05-29 17:17 ` [B.A.T.M.A.N.] [PATCH 2/2] batctl: tcpdump - add option to select all packet types except specified Marek Lindner
@ 2011-05-29 19:41 ` Antonio Quartulli
  2011-05-30 11:51   ` Marek Lindner
  1 sibling, 1 reply; 5+ messages in thread
From: Antonio Quartulli @ 2011-05-29 19:41 UTC (permalink / raw)
  To: The list for a Better Approach To Mobile Ad-hoc Networking

On Sun, May 29, 2011 at 07:17:39PM +0200, Marek Lindner wrote:
> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>

Acked-by: Antonio Quartulli <ordex@autistici.org>


Thank you!

-- 
Antonio Quartulli

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets
  2011-05-29 19:41 ` [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Antonio Quartulli
@ 2011-05-30 11:51   ` Marek Lindner
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Lindner @ 2011-05-30 11:51 UTC (permalink / raw)
  To: The list for a Better Approach To Mobile Ad-hoc Networking

On Sunday 29 May 2011 21:41:42 Antonio Quartulli wrote:
> On Sun, May 29, 2011 at 07:17:39PM +0200, Marek Lindner wrote:
> > Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
> 
> Acked-by: Antonio Quartulli <ordex@autistici.org>

Applied in revision e177d6e.

Thanks for testing,
Marek

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH 2/2] batctl: tcpdump - add option to select all packet types except specified
  2011-05-29 17:17 ` [B.A.T.M.A.N.] [PATCH 2/2] batctl: tcpdump - add option to select all packet types except specified Marek Lindner
@ 2011-05-30 11:52   ` Marek Lindner
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Lindner @ 2011-05-30 11:52 UTC (permalink / raw)
  To: The list for a Better Approach To Mobile Ad-hoc Networking

On Sunday 29 May 2011 19:17:40 Marek Lindner wrote:
> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
> ---
>  tcpdump.c |   17 ++++++++++++++---
>  1 files changed, 14 insertions(+), 3 deletions(-)

Applied in revision c6ed60c.

Regards,
Marek

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-05-30 11:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-29 17:17 [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Marek Lindner
2011-05-29 17:17 ` [B.A.T.M.A.N.] [PATCH 2/2] batctl: tcpdump - add option to select all packet types except specified Marek Lindner
2011-05-30 11:52   ` Marek Lindner
2011-05-29 19:41 ` [B.A.T.M.A.N.] [PATCH 1/2] batctl: tcpdump - add support for tt request / roaming advertisement packets Antonio Quartulli
2011-05-30 11:51   ` Marek Lindner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox