summaryrefslogtreecommitdiffstats
path: root/listen/nrdump.c
diff options
context:
space:
mode:
authorCraig Small <csmall@enc.com.au>2001-11-27 04:57:42 +0000
committerCraig Small <csmall@enc.com.au>2001-11-27 04:57:42 +0000
commit9e695cc7bac9a3ee8831bdae91a265af4b321bd1 (patch)
tree8f69839778d45ce695854ca68dac324a0af7e611 /listen/nrdump.c
parent886a37dd2309e60f85360ddec562417bbe741730 (diff)
remerged with terry indents
Diffstat (limited to 'listen/nrdump.c')
-rw-r--r--listen/nrdump.c50
1 files changed, 47 insertions, 3 deletions
diff --git a/listen/nrdump.c b/listen/nrdump.c
index 42965e5..419c8e8 100644
--- a/listen/nrdump.c
+++ b/listen/nrdump.c
@@ -1,8 +1,11 @@
-/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/nrdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */
+/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/nrdump.c,v 1.3 2001/11/27 04:57:43 csmall Exp $ */
/* NET/ROM header tracing routines
* Copyright 1991 Phil Karn, KA9Q
+ *
+ * Added decoding of INP route information frames, Jeroen (PE1RXQ)
*/
+
#include <stdio.h>
#include <string.h>
#include "listen.h"
@@ -28,16 +31,58 @@
#define NR3NODESIG 0xFF
#define NR3POLLSIG 0xFE
+#define UI 0x03
+
static void netrom_flags(int);
+/* Display INP route information frames */
+static void netrom_inp_dump(unsigned char *data, int length)
+{
+ char node[10];
+ char alias[7];
+ int hops;
+ int tt;
+ int alen;
+ int i;
+
+ if (data[0]==0xff) {
+ lprintf(T_AXHDR, "INP Route Information Frame:\n");
+ i=1;
+ while (i<length-10) {
+ pax25(node, data+i);
+ i+=7;
+ hops=data[i++];
+ tt=data[i++]*256;
+ tt+=data[i++];
+ alias[0]=0;
+ while (i<length-data[i] && data[i]) {
+ if (data[i+1]==0x00) {
+ alen=data[i]-2;
+ alen=alen < 7 ? alen : 6;
+ memcpy(alias, data+i+2, alen);
+ alias[alen]=0;
+ }
+ i+=data[i];
+ }
+ i++;
+ lprintf(T_DATA, " %12s %-6s %6u %6u\n", node, alias, hops, tt);
+ }
+ }
+}
+
/* Display NET/ROM network and transport headers */
-void netrom_dump(unsigned char *data, int length, int hexdump)
+void netrom_dump(unsigned char *data, int length, int hexdump, int type)
{
char tmp[15];
register int i;
/* See if it is a routing broadcast */
if (data[0] == NR3NODESIG) {
+ /* Filter out INP routing frames */
+ if (type!=UI) {
+ netrom_inp_dump(data, length);
+ return;
+ }
memcpy(tmp, data + 1, ALEN);
tmp[ALEN] = '\0';
lprintf(T_AXHDR, "NET/ROM Routing: %s\n", tmp);
@@ -48,7 +93,6 @@ void netrom_dump(unsigned char *data, int length, int hexdump)
for (i = 0; i < NRDESTPERPACK; i++) {
if (length < AXLEN)
break;
-
lprintf(T_DATA, " %12s", pax25(tmp, data));
memcpy(tmp, data + AXLEN, ALEN);