From 0eb707fdcf1b87e71bb3a9eaa8472d0b05799a3d Mon Sep 17 00:00:00 2001 From: Terry Dawson VK2KTJ Date: Wed, 12 Sep 2001 13:18:43 +0000 Subject: updated libtool, uniformly indented source, corrected small ax25mond Makefile bug --- listen/Makefile.in | 29 +++-- listen/arpdump.c | 48 ++++---- listen/ax25dump.c | 335 ++++++++++++++++++++++++++------------------------- listen/flexnetdump.c | 61 +++++----- listen/icmpdump.c | 28 +++-- listen/ipdump.c | 59 ++++----- listen/kissdump.c | 17 ++- listen/listen.c | 171 +++++++++++++------------- listen/nrdump.c | 81 +++++++------ listen/ripdump.c | 217 +++++++++++++++++---------------- listen/rosedump.c | 252 +++++++++++++++++++------------------- listen/rspfdump.c | 91 ++++++++------ listen/tcpdump.c | 54 +++++---- listen/udpdump.c | 31 ++--- listen/utils.c | 35 +++--- 15 files changed, 790 insertions(+), 719 deletions(-) (limited to 'listen') diff --git a/listen/Makefile.in b/listen/Makefile.in index 9f1fe31..2672438 100644 --- a/listen/Makefile.in +++ b/listen/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -64,15 +64,17 @@ AWK = @AWK@ AX25_LIB = @AX25_LIB@ CC = @CC@ DLLTOOL = @DLLTOOL@ -LD = @LD@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ -NM = @NM@ OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ +STRIP = @STRIP@ VERSION = @VERSION@ bin_PROGRAMS = listen @@ -88,6 +90,7 @@ listen_SOURCES = listen.c listen.h kissdump.c ax25dump.c nrdump.c arpdump mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = +bin_PROGRAMS = listen$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) @@ -95,9 +98,11 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ -listen_OBJECTS = listen.o kissdump.o ax25dump.o nrdump.o arpdump.o \ -ipdump.o icmpdump.o udpdump.o tcpdump.o rspfdump.o ripdump.o rosedump.o \ -flexnetdump.o utils.o +listen_OBJECTS = listen.$(OBJEXT) kissdump.$(OBJEXT) ax25dump.$(OBJEXT) \ +nrdump.$(OBJEXT) arpdump.$(OBJEXT) ipdump.$(OBJEXT) icmpdump.$(OBJEXT) \ +udpdump.$(OBJEXT) tcpdump.$(OBJEXT) rspfdump.$(OBJEXT) \ +ripdump.$(OBJEXT) rosedump.$(OBJEXT) flexnetdump.$(OBJEXT) \ +utils.$(OBJEXT) listen_LDADD = $(LDADD) listen_DEPENDENCIES = listen_LDFLAGS = @@ -122,7 +127,7 @@ OBJECTS = $(listen_OBJECTS) all: all-redirect .SUFFIXES: -.SUFFIXES: .S .c .lo .o .s +.SUFFIXES: .S .c .lo .o .obj .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps listen/Makefile @@ -159,6 +164,11 @@ uninstall-binPROGRAMS: .c.o: $(COMPILE) -c $< +# FIXME: We should only use cygpath when building on Windows, +# and only if it is available. +.c.obj: + $(COMPILE) -c `cygpath -w $<` + .s.o: $(COMPILE) -c $< @@ -167,6 +177,7 @@ uninstall-binPROGRAMS: mostlyclean-compile: -rm -f *.o core *.core + -rm -f *.$(OBJEXT) clean-compile: @@ -194,8 +205,8 @@ distclean-libtool: maintainer-clean-libtool: -listen: $(listen_OBJECTS) $(listen_DEPENDENCIES) - @rm -f listen +listen$(EXEEXT): $(listen_OBJECTS) $(listen_DEPENDENCIES) + @rm -f listen$(EXEEXT) $(LINK) $(listen_LDFLAGS) $(listen_OBJECTS) $(listen_LDADD) $(LIBS) install-man1: diff --git a/listen/arpdump.c b/listen/arpdump.c index c399098..ef94c00 100644 --- a/listen/arpdump.c +++ b/listen/arpdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/arpdump.c,v 1.1 2001/04/10 01:58:51 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/arpdump.c,v 1.2 2001/09/12 13:18:43 terry Exp $ */ /* ARP packet tracing routines * Copyright 1991 Phil Karn, KA9Q @@ -31,20 +31,18 @@ void arp_dump(unsigned char *data, int length) lprintf(T_PROTOCOL, "ARP: "); lprintf(T_IPHDR, "len %d", length); - if (length < 16) - { + if (length < 16) { lprintf(T_ERROR, " bad packet\n"); return; } - hardware = get16(data + 0); - protocol = get16(data + 2); - hwlen = data[4]; - pralen = data[5]; + hardware = get16(data + 0); + protocol = get16(data + 2); + hwlen = data[4]; + pralen = data[5]; operation = get16(data + 6); - - if (hardware != ARP_AX25) - { + + if (hardware != ARP_AX25) { lprintf(T_IPHDR, " non-AX25 ARP packet\n"); return; } @@ -57,18 +55,14 @@ void arp_dump(unsigned char *data, int length) if (hwlen != AXALEN) lprintf(T_IPHDR, " hwlen %d", hwlen); - if (protocol == PID_IP) - { + if (protocol == PID_IP) { lprintf(T_IPHDR, " prot IP"); is_ip = 1; - } - else - { + } else { lprintf(T_IPHDR, " prot 0x%x prlen %d", protocol, pralen); } - switch (operation) - { + switch (operation) { case ARP_REQUEST: lprintf(T_IPHDR, " op REQUEST"); break; @@ -85,21 +79,23 @@ void arp_dump(unsigned char *data, int length) lprintf(T_IPHDR, " op %d", operation); break; } - - shwaddr = data + 8; + + shwaddr = data + 8; sprotaddr = shwaddr + hwlen; - - thwaddr = sprotaddr + pralen; - tprotaddr = thwaddr + hwlen; - + + thwaddr = sprotaddr + pralen; + tprotaddr = thwaddr + hwlen; + lprintf(T_IPHDR, "\nsender"); - if (is_ip) lprintf(T_ADDR, " IPaddr %d.%d.%d.%d", + if (is_ip) + lprintf(T_ADDR, " IPaddr %d.%d.%d.%d", sprotaddr[0], sprotaddr[1], sprotaddr[2], sprotaddr[3]); lprintf(T_IPHDR, " hwaddr %s\n", pax25(tmp, shwaddr)); - lprintf(T_IPHDR,"target"); - if (is_ip) lprintf(T_ADDR, " IPaddr %d.%d.%d.%d", + lprintf(T_IPHDR, "target"); + if (is_ip) + lprintf(T_ADDR, " IPaddr %d.%d.%d.%d", tprotaddr[0], tprotaddr[1], tprotaddr[2], tprotaddr[3]); if (*thwaddr != 0) diff --git a/listen/ax25dump.c b/listen/ax25dump.c index 5265453..4c4a40c 100644 --- a/listen/ax25dump.c +++ b/listen/ax25dump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/ax25dump.c,v 1.1 2001/04/10 01:58:51 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/ax25dump.c,v 1.2 2001/09/12 13:18:43 terry Exp $ */ /* AX25 header tracing * Copyright 1991 Phil Karn, KA9Q @@ -57,7 +57,7 @@ #define Y 4 #define Z 8 -static int ftype(unsigned char *, int *, int *, int *, int *, int); +static int ftype(unsigned char *, int *, int *, int *, int *, int); static char *decode_type(int); #define NDAMA_STRING "" @@ -90,11 +90,13 @@ void ax25_dump(unsigned char *data, int length, int hexdump) tmp[4] = ' ' + (data[5] >> 2); tmp[5] = ' ' + ((data[5] << 4) & 0x30) + (data[6] >> 4); if (data[6] & 0xf) - sprintf(tmp+7, "-%d", data[6] & 0xf); - lprintf(T_ADDR, "%d->%s%s", (data[0] << 6) | ((data[1] >> 2) & 0x3f), strtok(tmp, " "), tmp+7); + sprintf(tmp + 7, "-%d", data[6] & 0xf); + lprintf(T_ADDR, "%d->%s%s", + (data[0] << 6) | ((data[1] >> 2) & 0x3f), + strtok(tmp, " "), tmp + 7); cmdrsp = (data[1] & 2) ? LAPB_COMMAND : LAPB_RESPONSE; dama = NDAMA_STRING; - data += 7; + data += 7; length -= 7; } else { /* Extract the address header */ @@ -103,124 +105,133 @@ void ax25_dump(unsigned char *data, int length, int hexdump) lprintf(T_ERROR, "AX25: bad header!\n"); return; } - + if ((data[AXLEN + ALEN] & SSSID_SPARE) == SSSID_SPARE) { extseq = 0; -// lprintf(T_PROTOCOL, " "); +// lprintf(T_PROTOCOL, " "); } else { extseq = 1; lprintf(T_PROTOCOL, "EAX25: "); } - + if ((data[AXLEN + ALEN] & ESSID_SPARE) == ESSID_SPARE) dama = NDAMA_STRING; else dama = DAMA_STRING; - - lprintf(T_AXHDR, "fm "); + + lprintf(T_AXHDR, "fm "); lprintf(T_ADDR, "%s", pax25(tmp, data + AXLEN)); lprintf(T_AXHDR, " to "); lprintf(T_ADDR, "%s", pax25(tmp, data)); - + cmdrsp = LAPB_UNKNOWN; - + if ((data[ALEN] & C) && !(data[AXLEN + ALEN] & C)) cmdrsp = LAPB_COMMAND; - + if ((data[AXLEN + ALEN] & C) && !(data[ALEN] & C)) cmdrsp = LAPB_RESPONSE; end = (data[AXLEN + ALEN] & HDLCAEB); - - data += (AXLEN + AXLEN); + + data += (AXLEN + AXLEN); length -= (AXLEN + AXLEN); if (!end) { lprintf(T_AXHDR, " via"); - + while (!end) { /* Print digi string */ - lprintf(T_ADDR," %s%s", pax25(tmp, data), (data[ALEN] & REPEATED) ? "*" : ""); - + lprintf(T_ADDR, " %s%s", pax25(tmp, data), + (data[ALEN] & REPEATED) ? "*" : + ""); + end = (data[ALEN] & HDLCAEB); - - data += AXLEN; + + data += AXLEN; length -= AXLEN; } } } - if (length == 0) return; - + if (length == 0) + return; + ctlen = ftype(data, &type, &ns, &nr, &pf, extseq); - - data += ctlen; + + data += ctlen; length -= ctlen; lprintf(T_AXHDR, " ctl %s", decode_type(type)); - if ((type & 0x3) != U) /* I or S frame? */ - lprintf(T_AXHDR, "%d", nr); + if ((type & 0x3) != U) /* I or S frame? */ + lprintf(T_AXHDR, "%d", nr); if (type == I) - lprintf(T_AXHDR, "%d", ns); - + lprintf(T_AXHDR, "%d", ns); + switch (cmdrsp) { - case LAPB_COMMAND: - if (pf) lprintf(T_AXHDR, "+"); - else lprintf(T_AXHDR, "^"); - break; - case LAPB_RESPONSE: - if (pf) lprintf(T_AXHDR, "-"); - else lprintf(T_AXHDR, "v"); - break; - default: - break; + case LAPB_COMMAND: + if (pf) + lprintf(T_AXHDR, "+"); + else + lprintf(T_AXHDR, "^"); + break; + case LAPB_RESPONSE: + if (pf) + lprintf(T_AXHDR, "-"); + else + lprintf(T_AXHDR, "v"); + break; + default: + break; } if (type == I || type == UI) { /* Decode I field */ - if (length > 0) { /* Get pid */ + if (length > 0) { /* Get pid */ pid = *data++; length--; - lprintf(T_AXHDR," pid=%X",pid); - - switch (pid) { - case PID_SEGMENT: - lprintf(T_AXHDR,"(segment)"); - break; - case PID_ARP: - lprintf(T_AXHDR,"(ARP)"); - break; - case PID_NETROM: - lprintf(T_AXHDR,"(NET/ROM)"); - break; - case PID_IP: - lprintf(T_AXHDR,"(IP)"); - break; - case PID_X25: - lprintf(T_AXHDR, "(X.25)"); - break; - case PID_TEXNET: - lprintf(T_AXHDR, "(TEXNET)"); - break; - case PID_FLEXNET: - lprintf(T_AXHDR, "(FLEXNET)"); - break; - case PID_NO_L3: - lprintf(T_AXHDR, "(Text)"); - break; + lprintf(T_AXHDR, " pid=%X", pid); + + switch (pid) { + case PID_SEGMENT: + lprintf(T_AXHDR, "(segment)"); + break; + case PID_ARP: + lprintf(T_AXHDR, "(ARP)"); + break; + case PID_NETROM: + lprintf(T_AXHDR, "(NET/ROM)"); + break; + case PID_IP: + lprintf(T_AXHDR, "(IP)"); + break; + case PID_X25: + lprintf(T_AXHDR, "(X.25)"); + break; + case PID_TEXNET: + lprintf(T_AXHDR, "(TEXNET)"); + break; + case PID_FLEXNET: + lprintf(T_AXHDR, "(FLEXNET)"); + break; + case PID_NO_L3: + lprintf(T_AXHDR, "(Text)"); + break; } - lprintf(T_AXHDR, "%s len %d ",dama,length); + lprintf(T_AXHDR, "%s len %d ", dama, length); - if(timestamp) + if (timestamp) display_timestamp(); if (pid == PID_SEGMENT) { seg = *data++; length--; - lprintf(T_AXHDR, "%s remain %u", seg & SEG_FIRST ? " First seg;" : "", seg & SEG_REM); + lprintf(T_AXHDR, "%s remain %u", + seg & SEG_FIRST ? " First seg;" : + "", seg & SEG_REM); if (seg & SEG_FIRST) { pid = *data++; @@ -230,99 +241,99 @@ void ax25_dump(unsigned char *data, int length, int hexdump) lprintf(T_AXHDR, "\n"); switch (pid) { - case PID_SEGMENT: - data_dump(data, length, hexdump); - break; - case PID_ARP: - arp_dump(data, length); - break; - case PID_NETROM: - netrom_dump(data, length, hexdump); - break; - case PID_IP: - ip_dump(data, length, hexdump); - break; - case PID_X25: - rose_dump(data, length, hexdump); - break; - case PID_TEXNET: - data_dump(data, length, hexdump); - break; - case PID_FLEXNET: - flexnet_dump(data, length, hexdump); - break; - case PID_NO_L3: - data_dump(data, length, hexdump); - break; - default: - data_dump(data, length, hexdump); - break; + case PID_SEGMENT: + data_dump(data, length, hexdump); + break; + case PID_ARP: + arp_dump(data, length); + break; + case PID_NETROM: + netrom_dump(data, length, hexdump); + break; + case PID_IP: + ip_dump(data, length, hexdump); + break; + case PID_X25: + rose_dump(data, length, hexdump); + break; + case PID_TEXNET: + data_dump(data, length, hexdump); + break; + case PID_FLEXNET: + flexnet_dump(data, length, hexdump); + break; + case PID_NO_L3: + data_dump(data, length, hexdump); + break; + default: + data_dump(data, length, hexdump); + break; } } } else if (type == FRMR && length >= 3) { - /* FIX ME XXX - lprintf(T_AXHDR, ": %s", decode_type(ftype(data[0]))); - */ + /* FIX ME XXX + lprintf(T_AXHDR, ": %s", decode_type(ftype(data[0]))); + */ lprintf(T_AXHDR, ": %02X", data[0]); lprintf(T_AXHDR, " Vr = %d Vs = %d", - (data[1] >> 5) & MMASK, - (data[1] >> 1) & MMASK); - if(data[2] & W) + (data[1] >> 5) & MMASK, (data[1] >> 1) & MMASK); + if (data[2] & W) lprintf(T_ERROR, " Invalid control field"); - if(data[2] & X) + if (data[2] & X) lprintf(T_ERROR, " Illegal I-field"); - if(data[2] & Y) + if (data[2] & Y) lprintf(T_ERROR, " Too-long I-field"); - if(data[2] & Z) + if (data[2] & Z) lprintf(T_ERROR, " Invalid seq number"); - lprintf(T_AXHDR,"%s ", dama); + lprintf(T_AXHDR, "%s ", dama); - if(timestamp) - display_timestamp(); - lprintf(T_AXHDR,"\n"); + if (timestamp) + display_timestamp(); + lprintf(T_AXHDR, "\n"); } else if ((type == SABM || type == UA) && length >= 2) { /* FlexNet transmits the QSO "handle" for header * compression in SABM and UA frame data fields */ - lprintf(T_AXHDR," [%d]%s ", (data[0] << 8) | data[1], dama); - if(timestamp) + lprintf(T_AXHDR, " [%d]%s ", (data[0] << 8) | data[1], + dama); + if (timestamp) display_timestamp(); - lprintf(T_AXHDR,"\n"); + lprintf(T_AXHDR, "\n"); } else { - lprintf(T_AXHDR,"%s ", dama); - if(timestamp) - display_timestamp(); - lprintf(T_AXHDR,"\n"); + lprintf(T_AXHDR, "%s ", dama); + if (timestamp) + display_timestamp(); + lprintf(T_AXHDR, "\n"); } } static char *decode_type(int type) { switch (type) { - case I: - return "I"; - case SABM: - return "SABM"; - case SABME: - return "SABME"; - case DISC: - return "DISC"; - case DM: - return "DM"; - case UA: - return "UA"; - case RR: - return "RR"; - case RNR: - return "RNR"; - case REJ: - return "REJ"; - case FRMR: - return "FRMR"; - case UI: - return "UI"; - default: - return "[invalid]"; + case I: + return "I"; + case SABM: + return "SABM"; + case SABME: + return "SABME"; + case DISC: + return "DISC"; + case DM: + return "DM"; + case UA: + return "UA"; + case RR: + return "RR"; + case RNR: + return "RNR"; + case REJ: + return "REJ"; + case FRMR: + return "FRMR"; + case UI: + return "UI"; + default: + return "[invalid]"; } } @@ -331,9 +342,9 @@ char *pax25(char *buf, unsigned char *data) int i, ssid; char *s; char c; - + s = buf; - + for (i = 0; i < ALEN; i++) { c = (data[i] >> 1) & 0x7F; @@ -341,56 +352,58 @@ char *pax25(char *buf, unsigned char *data) strcpy(buf, "[invalid]"); return buf; } - - if (c != ' ') *s++ = c; - } + + if (c != ' ') + *s++ = c; + } if ((ssid = (data[ALEN] & SSID)) != 0) sprintf(s, "-%d", ssid >> 1); else *s = '\0'; - return(buf); + return (buf); } -static int ftype(unsigned char *data, int *type, int *ns, int *nr, int *pf, int extseq) +static int ftype(unsigned char *data, int *type, int *ns, int *nr, int *pf, + int extseq) { if (extseq) { if ((*data & 0x01) == 0) { /* An I frame is an I-frame ... */ *type = I; - *ns = (*data >> 1) & 127; + *ns = (*data >> 1) & 127; data++; - *nr = (*data >> 1) & 127; - *pf = *data & EPF; + *nr = (*data >> 1) & 127; + *pf = *data & EPF; return 2; } if (*data & 0x02) { *type = *data & ~PF; - *pf = *data & PF; + *pf = *data & PF; return 1; } else { *type = *data; data++; - *nr = (*data >> 1) & 127; - *pf = *data & EPF; + *nr = (*data >> 1) & 127; + *pf = *data & EPF; return 2; } } else { if ((*data & 0x01) == 0) { /* An I frame is an I-frame ... */ *type = I; - *ns = (*data >> 1) & 7; - *nr = (*data >> 5) & 7; - *pf = *data & PF; + *ns = (*data >> 1) & 7; + *nr = (*data >> 5) & 7; + *pf = *data & PF; return 1; } - if (*data & 0x02) { /* U-frames use all except P/F bit for type */ + if (*data & 0x02) { /* U-frames use all except P/F bit for type */ *type = *data & ~PF; - *pf = *data & PF; + *pf = *data & PF; return 1; - } else { /* S-frames use low order 4 bits for type */ + } else { /* S-frames use low order 4 bits for type */ *type = *data & 0x0F; - *nr = (*data >> 5) & 7; - *pf = *data & PF; + *nr = (*data >> 5) & 7; + *pf = *data & PF; return 1; } } diff --git a/listen/flexnetdump.c b/listen/flexnetdump.c index 3269390..a96f00f 100644 --- a/listen/flexnetdump.c +++ b/listen/flexnetdump.c @@ -12,19 +12,19 @@ * some bits stolen from Dieter Deyke (Wampes), such as these defines :-) */ -#define FLEX_INIT '0' /* Link initialization */ -#define FLEX_RPRT '1' /* Poll answer */ -#define FLEX_POLL '2' /* Poll */ -#define FLEX_ROUT '3' /* Routing information */ -#define FLEX_QURY '6' /* Path query */ -#define FLEX_RSLT '7' /* Query result */ +#define FLEX_INIT '0' /* Link initialization */ +#define FLEX_RPRT '1' /* Poll answer */ +#define FLEX_POLL '2' /* Poll */ +#define FLEX_ROUT '3' /* Routing information */ +#define FLEX_QURY '6' /* Path query */ +#define FLEX_RSLT '7' /* Query result */ static int flx_get_number(unsigned char **data, int *length) { int l = *length; unsigned char *d = *data; int res = 0; - + if (l <= 0 || *d < '0' || *d > '9') return -1; while (l > 0 && *d >= '0' && *d <= '9') { @@ -51,26 +51,27 @@ void flexnet_dump(unsigned char *data, int length, int hexdump) int hopcnt, qsonr; unsigned char *cp; - lprintf(T_PROTOCOL, "FlexNet:"); + lprintf(T_PROTOCOL, "FlexNet:"); if (length < 1) { - lprintf(T_ERROR, " bad packet\n"); - return; - } + lprintf(T_ERROR, " bad packet\n"); + return; + } switch (data[0]) { default: - lprintf(T_ERROR, " unknown packet type\n"); + lprintf(T_ERROR, " unknown packet type\n"); data_dump(data, length, hexdump); return; case FLEX_INIT: if (length < 2) { lprintf(T_ERROR, " bad packet\n"); - dump_end(data+1, length-1); + dump_end(data + 1, length - 1); return; } - lprintf(T_FLEXNET, " Link setup - max SSID %d ", data[1] & 0xf); - dump_end(data+1, length-1); + lprintf(T_FLEXNET, " Link setup - max SSID %d ", + data[1] & 0xf); + dump_end(data + 1, length - 1); return; case FLEX_RPRT: @@ -98,29 +99,35 @@ void flexnet_dump(unsigned char *data, int length, int hexdump) if (isdigit(*data) || isupper(*data)) { if (length < 10) goto too_short; - lprintf(T_FLEXNET, " %.6s %2d-%2d ", data, data[6]-'0', data[7]-'0'); + lprintf(T_FLEXNET, " %.6s %2d-%2d ", data, + data[6] - '0', data[7] - '0'); data += 8; length -= 8; i = flx_get_number(&data, &length); data++; length--; - if (!i) + if (!i) lprintf(T_FLEXNET, "link down\n"); - else - lprintf(T_FLEXNET, "delay: %d\n", i); + else + lprintf(T_FLEXNET, "delay: %d\n", + i); } else { - if (*data == '+') - lprintf(T_FLEXNET, " Request token\n"); + if (*data == '+') + lprintf(T_FLEXNET, + " Request token\n"); else if (*data == '-') - lprintf(T_FLEXNET, " Release token\n"); + lprintf(T_FLEXNET, + " Release token\n"); else if (*data != '\r') - lprintf(T_FLEXNET, " invalid char: %02x\n", *data); + lprintf(T_FLEXNET, + " invalid char: %02x\n", + *data); data++; length--; } } return; - + case FLEX_QURY: case FLEX_RSLT: lprintf(T_FLEXNET, " Route query"); @@ -134,7 +141,8 @@ void flexnet_dump(unsigned char *data, int length, int hexdump) qsonr = flx_get_number(&data, &length); data++; length--; - lprintf(T_FLEXNET, " - hop count: %d QSO number: %d\n", hopcnt, qsonr); + lprintf(T_FLEXNET, " - hop count: %d QSO number: %d\n", + hopcnt, qsonr); cp = memchr(data, '\r', length); if (cp) *cp = 0; @@ -142,8 +150,7 @@ void flexnet_dump(unsigned char *data, int length, int hexdump) return; } -too_short: + too_short: lprintf(T_ERROR, " packet too short\n"); dump_end(data, length); } - diff --git a/listen/icmpdump.c b/listen/icmpdump.c index 2b51e7f..dcec1b0 100644 --- a/listen/icmpdump.c +++ b/listen/icmpdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/icmpdump.c,v 1.1 2001/04/10 01:58:52 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/icmpdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */ /* ICMP header tracing * Copyright 1991 Phil Karn, KA9Q @@ -29,14 +29,14 @@ void icmp_dump(unsigned char *data, int length, int hexdump) unsigned char *address; int id, seq; - type = data[0]; - code = data[1]; + type = data[0]; + code = data[1]; pointer = data[4]; address = data + 4; - id = get16(data + 4); - seq = get16(data + 6); + id = get16(data + 4); + seq = get16(data + 6); - data += ICMPLEN; + data += ICMPLEN; length -= ICMPLEN; lprintf(T_IPHDR, "ICMP: type "); @@ -119,8 +119,7 @@ void icmp_dump(unsigned char *data, int length, int hexdump) break; } lprintf(T_IPHDR, " new gateway %d.%d.%d.%d", - address[0], address[1], - address[2], address[3]); + address[0], address[1], address[2], address[3]); lprintf(T_IPHDR, "\nReturned "); ip_dump(data, length, hexdump); break; @@ -168,22 +167,26 @@ void icmp_dump(unsigned char *data, int length, int hexdump) break; case ICMP_INFO_RQST: - lprintf(T_IPHDR, "Information Request id %d seq %d\n", id, seq); + lprintf(T_IPHDR, "Information Request id %d seq %d\n", id, + seq); data_dump(data, length, hexdump); break; case ICMP_INFO_REPLY: - lprintf(T_IPHDR, "Information Reply id %d seq %d\n", id, seq); + lprintf(T_IPHDR, "Information Reply id %d seq %d\n", id, + seq); data_dump(data, length, hexdump); break; case ICMP_TIMESTAMP: - lprintf(T_IPHDR, "Timestamp Request id %d seq %d\n", id, seq); + lprintf(T_IPHDR, "Timestamp Request id %d seq %d\n", id, + seq); data_dump(data, length, hexdump); break; case ICMP_TIME_REPLY: - lprintf(T_IPHDR, "Timestamp Reply id %d seq %d\n", id, seq); + lprintf(T_IPHDR, "Timestamp Reply id %d seq %d\n", id, + seq); data_dump(data, length, hexdump); break; @@ -193,4 +196,3 @@ void icmp_dump(unsigned char *data, int length, int hexdump) break; } } - diff --git a/listen/ipdump.c b/listen/ipdump.c index fc14461..8dfc433 100644 --- a/listen/ipdump.c +++ b/listen/ipdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/ipdump.c,v 1.1 2001/04/10 01:58:52 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/ipdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */ /* IP header tracing routines * Copyright 1991 Phil Karn, KA9Q @@ -12,8 +12,8 @@ #define DF 0x4000 #define CE 0x8000 -#define IPIPNEW_PTCL 4 -#define IPIPOLD_PTCL 94 +#define IPIPNEW_PTCL 4 +#define IPIPOLD_PTCL 94 #define TCP_PTCL 6 #define UDP_PTCL 17 #define ICMP_PTCL 1 @@ -37,42 +37,45 @@ void ip_dump(unsigned char *data, int length, int hexdump) /* Sneak peek at IP header and find length */ hdr_length = (data[0] & 0xf) << 2; - - if (hdr_length < IPLEN) - { + + if (hdr_length < IPLEN) { lprintf(T_ERROR, " bad header\n"); return; } - tos = data[1]; + tos = data[1]; ip_length = get16(data + 2); - id = get16(data + 4); - fl_offs = get16(data + 6); - flags = fl_offs & 0xE000; - offset = (fl_offs & 0x1FFF) << 3; - ttl = data[8]; - protocol = data[9]; - source = data + 12; - dest = data + 16; + id = get16(data + 4); + fl_offs = get16(data + 6); + flags = fl_offs & 0xE000; + offset = (fl_offs & 0x1FFF) << 3; + ttl = data[8]; + protocol = data[9]; + source = data + 12; + dest = data + 16; lprintf(T_IPHDR, " len %d", ip_length); - + lprintf(T_ADDR, " %d.%d.%d.%d->%d.%d.%d.%d", - source[0], source[1], source[2], source[3], - dest[0], dest[1], dest[2], dest[3]); - + source[0], source[1], source[2], source[3], + dest[0], dest[1], dest[2], dest[3]); + lprintf(T_IPHDR, " ihl %d ttl %d", hdr_length, ttl); - - if (tos != 0) lprintf(T_IPHDR, " tos %d", tos); - + + if (tos != 0) + lprintf(T_IPHDR, " tos %d", tos); + if (offset != 0 || (flags & MF)) lprintf(T_IPHDR, " id %d offs %d", id, offset); - - if (flags & DF) lprintf(T_IPHDR, " DF"); - if (flags & MF) lprintf(T_IPHDR, " MF"); - if (flags & CE) lprintf(T_IPHDR, " CE"); - - data += hdr_length; + + if (flags & DF) + lprintf(T_IPHDR, " DF"); + if (flags & MF) + lprintf(T_IPHDR, " MF"); + if (flags & CE) + lprintf(T_IPHDR, " CE"); + + data += hdr_length; length -= hdr_length; if (offset != 0) { diff --git a/listen/kissdump.c b/listen/kissdump.c index 0066f63..14c7909 100644 --- a/listen/kissdump.c +++ b/listen/kissdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/kissdump.c,v 1.1 2001/04/10 01:58:53 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/kissdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */ /* Tracing routines for KISS TNC * Copyright 1991 Phil Karn, KA9Q @@ -13,7 +13,7 @@ #define PARAM_TXTAIL 4 #define PARAM_FULLDUP 5 #define PARAM_HW 6 -#define PARAM_RETURN 15 /* Should be 255, but is ANDed with 0x0F */ +#define PARAM_RETURN 15 /* Should be 255, but is ANDed with 0x0F */ void ki_dump(unsigned char *data, int length, int hexdump) { @@ -22,16 +22,14 @@ void ki_dump(unsigned char *data, int length, int hexdump) type = data[0] & 0xf; - if (type == PARAM_DATA) - { + if (type == PARAM_DATA) { ax25_dump(data + 1, length - 1, hexdump); return; } - + val = data[1]; - - switch (type) - { + + switch (type) { case PARAM_TXDELAY: lprintf(T_KISS, "TX Delay: %lu ms\n", val * 10L); break; @@ -45,7 +43,8 @@ void ki_dump(unsigned char *data, int length, int hexdump) lprintf(T_KISS, "TX Tail time: %lu ms\n", val * 10L); break; case PARAM_FULLDUP: - lprintf(T_KISS, "Duplex: %s\n", val == 0 ? "Half" : "Full"); + lprintf(T_KISS, "Duplex: %s\n", + val == 0 ? "Half" : "Full"); break; case PARAM_HW: lprintf(T_KISS, "Hardware %u\n", val); diff --git a/listen/listen.c b/listen/listen.c index f603f12..be6dfbe 100644 --- a/listen/listen.c +++ b/listen/listen.c @@ -42,12 +42,13 @@ static void display_port(char *dev) void display_timestamp(void) { time_t timenowx; - struct tm* timenow; + struct tm *timenow; time(&timenowx); timenow = localtime(&timenowx); - lprintf(T_TIMESTAMP, "%02d:%02d:%02d", timenow->tm_hour, timenow->tm_min, timenow->tm_sec); + lprintf(T_TIMESTAMP, "%02d:%02d:%02d", timenow->tm_hour, + timenow->tm_min, timenow->tm_sec); } #define ASCII 0 @@ -59,7 +60,7 @@ void display_timestamp(void) int main(int argc, char **argv) { unsigned char buffer[BUFSIZE]; - int dumpstyle = ASCII; + int dumpstyle = ASCII; int size; int s; char *port = NULL, *dev = NULL; @@ -68,43 +69,45 @@ int main(int argc, char **argv) struct ifreq ifr; int proto = ETH_P_AX25; - timestamp = 0; + timestamp = 0; while ((s = getopt(argc, argv, "8achip:rtv")) != -1) { switch (s) { - case '8': - sevenbit = 0; - break; - case 'a': - proto = ETH_P_ALL; - break; - case 'c': - color = 1; - break; - case 'h': - dumpstyle = HEX; - break; - case 'i': - ibmhack = 1; - break; - case 'p': - port = optarg; - break; - case 'r': - dumpstyle = READABLE; - break; - case 't': - timestamp = 1; - break; - case 'v': - printf("listen: %s\n", VERSION); - return 0; - case ':': - fprintf(stderr, "listen: option -p needs a port name\n"); - return 1; - case '?': - fprintf(stderr, "Usage: listen [-8] [-a] [-c] [-h] [-i] [-p port] [-r] [-t] [-v]\n"); - return 1; + case '8': + sevenbit = 0; + break; + case 'a': + proto = ETH_P_ALL; + break; + case 'c': + color = 1; + break; + case 'h': + dumpstyle = HEX; + break; + case 'i': + ibmhack = 1; + break; + case 'p': + port = optarg; + break; + case 'r': + dumpstyle = READABLE; + break; + case 't': + timestamp = 1; + break; + case 'v': + printf("listen: %s\n", VERSION); + return 0; + case ':': + fprintf(stderr, + "listen: option -p needs a port name\n"); + return 1; + case '?': + fprintf(stderr, + "Usage: listen [-8] [-a] [-c] [-h] [-i] [-p port] [-r] [-t] [-v]\n"); + return 1; } } @@ -113,7 +116,8 @@ int main(int argc, char **argv) if (port != NULL) { if ((dev = ax25_config_get_dev(port)) == NULL) { - fprintf(stderr, "listen: invalid port name - %s\n", port); + fprintf(stderr, "listen: invalid port name - %s\n", + port); return 1; } } @@ -122,7 +126,7 @@ int main(int argc, char **argv) perror("socket"); return 1; } - + if (color) { color = initcolor(); /* Initialize color support */ if (!color) @@ -130,18 +134,20 @@ int main(int argc, char **argv) } setservent(1); - + for (;;) { asize = sizeof(sa); - if ((size = recvfrom(s, buffer, sizeof(buffer), 0, &sa, &asize)) == -1) { + if ((size = + recvfrom(s, buffer, sizeof(buffer), 0, &sa, + &asize)) == -1) { perror("recv"); return 1; } - + if (dev != NULL && strcmp(dev, sa.sa_data) != 0) continue; - + if (proto == ETH_P_ALL) { strcpy(ifr.ifr_name, sa.sa_data); if (ioctl(s, SIOCGIFHWADDR, &ifr) < 0) @@ -154,16 +160,16 @@ int main(int argc, char **argv) #else ki_dump(buffer, size, dumpstyle); #endif -// lprintf(T_DATA, "\n"); +// lprintf(T_DATA, "\n"); } } else { display_port(sa.sa_data); #ifdef NEW_AX25_STACK ax25_dump(buffer, size, dumpstyle); #else - ki_dump(buffer, size, dumpstyle); + ki_dump(buffer, size, dumpstyle); #endif -// lprintf(T_DATA, "\n"); +// lprintf(T_DATA, "\n"); } if (color) refresh(); @@ -173,22 +179,22 @@ int main(int argc, char **argv) static void ascii_dump(unsigned char *data, int length) { unsigned char c; - int i, j; + int i, j; char buf[100]; for (i = 0; length > 0; i += 64) { sprintf(buf, "%04X ", i); - + for (j = 0; j < 64 && length > 0; j++) { c = *data++; length--; - + if ((c != '\0') && (c != '\n')) strncat(buf, &c, 1); else strcat(buf, "."); } - + lprintf(T_DATA, "%s\n", buf); } } @@ -196,27 +202,27 @@ static void ascii_dump(unsigned char *data, int length) static void readable_dump(unsigned char *data, int length) { unsigned char c; - int i; - int cr = 1; + int i; + int cr = 1; char buf[BUFSIZE]; for (i = 0; length > 0; i++) { - + c = *data++; length--; - + switch (c) { - case 0x00: - buf[i] = ' '; - case 0x0A: /* hum... */ - case 0x0D: - if (cr) - buf[i] = '\n'; - else - i--; - break; - default: - buf[i] = c; + case 0x00: + buf[i] = ' '; + case 0x0A: /* hum... */ + case 0x0D: + if (cr) + buf[i] = '\n'; + else + i--; + break; + default: + buf[i] = c; } cr = (buf[i] != '\n'); } @@ -228,22 +234,22 @@ static void readable_dump(unsigned char *data, int length) static void hex_dump(unsigned char *data, int length) { - int i, j, length2; + int i, j, length2; unsigned char c; char *data2; char buf[4], hexd[49], ascd[17]; length2 = length; - data2 = data; - + data2 = data; + for (i = 0; length > 0; i += 16) { - + hexd[0] = '\0'; for (j = 0; j < 16; j++) { c = *data2++; length2--; - + if (length2 >= 0) sprintf(buf, "%2.2X ", c); else @@ -253,13 +259,14 @@ static void hex_dump(unsigned char *data, int length) ascd[0] = '\0'; for (j = 0; j < 16 && length > 0; j++) { - c = *data++; - length--; - - sprintf(buf, "%c", ((c != '\0') && (c != '\n')) ? c : '.'); - strcat(ascd, buf); + c = *data++; + length--; + + sprintf(buf, "%c", + ((c != '\0') && (c != '\n')) ? c : '.'); + strcat(ascd, buf); } - + lprintf(T_DATA, "%04X %s | %s\n", i, hexd, ascd); } } @@ -282,18 +289,18 @@ void data_dump(unsigned char *data, int length, int dumpstyle) int get16(unsigned char *cp) { int x; - + x = *cp++; x <<= 8; x |= *cp++; - - return(x); + + return (x); } int get32(unsigned char *cp) { int x; - + x = *cp++; x <<= 8; x |= *cp++; @@ -301,6 +308,6 @@ int get32(unsigned char *cp) x |= *cp++; x <<= 8; x |= *cp; - - return(x); + + return (x); } diff --git a/listen/nrdump.c b/listen/nrdump.c index a5a2bfc..42965e5 100644 --- a/listen/nrdump.c +++ b/listen/nrdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/nrdump.c,v 1.1 2001/04/10 01:58:54 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/nrdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */ /* NET/ROM header tracing routines * Copyright 1991 Phil Karn, KA9Q @@ -41,23 +41,26 @@ void netrom_dump(unsigned char *data, int length, int hexdump) memcpy(tmp, data + 1, ALEN); tmp[ALEN] = '\0'; lprintf(T_AXHDR, "NET/ROM Routing: %s\n", tmp); - - data += (ALEN + 1); + + data += (ALEN + 1); length -= (ALEN + 1); - for(i = 0;i < NRDESTPERPACK;i++) { - if (length < AXLEN) break; - - lprintf(T_DATA," %12s", pax25(tmp, data)); + for (i = 0; i < NRDESTPERPACK; i++) { + if (length < AXLEN) + break; + + lprintf(T_DATA, " %12s", pax25(tmp, data)); memcpy(tmp, data + AXLEN, ALEN); tmp[ALEN] = '\0'; lprintf(T_DATA, "%8s", tmp); - lprintf(T_DATA, " %12s", pax25(tmp, data + AXLEN + ALEN)); - lprintf(T_DATA, " %3u\n", data[AXLEN + ALEN + AXLEN]); + lprintf(T_DATA, " %12s", + pax25(tmp, data + AXLEN + ALEN)); + lprintf(T_DATA, " %3u\n", + data[AXLEN + ALEN + AXLEN]); - data += (AXLEN + ALEN + AXLEN + 1); + data += (AXLEN + ALEN + AXLEN + 1); length -= (AXLEN + ALEN + AXLEN + 1); } @@ -76,63 +79,73 @@ void netrom_dump(unsigned char *data, int length, int hexdump) lprintf(T_AXHDR, "NET/ROM: "); lprintf(T_ADDR, "%s->", pax25(tmp, data)); lprintf(T_ADDR, "%s", pax25(tmp, data + AXLEN)); - lprintf(T_AXHDR," ttl %d\n", data[AXLEN + AXLEN]); + lprintf(T_AXHDR, " ttl %d\n", data[AXLEN + AXLEN]); - data += (AXLEN + AXLEN + 1); + data += (AXLEN + AXLEN + 1); length -= (AXLEN + AXLEN + 1); switch (data[4] & NR4OPCODE) { - case NR4OPPID: /* network PID extension */ + case NR4OPPID: /* network PID extension */ if (data[0] == NRPROTO_IP && data[1] == NRPROTO_IP) { ip_dump(data + 5, length - 5, hexdump); return; } else { - lprintf(T_AXHDR, " protocol family %x, proto %x", - data[0], data[1]); + lprintf(T_AXHDR, + " protocol family %x, proto %x", + data[0], data[1]); } break; - case NR4OPCONRQ: /* Connect request */ - lprintf(T_AXHDR, " conn rqst: my ckt %02X/%02X", data[0], data[1]); + case NR4OPCONRQ: /* Connect request */ + lprintf(T_AXHDR, " conn rqst: my ckt %02X/%02X", + data[0], data[1]); lprintf(T_AXHDR, " wnd %d", data[5]); lprintf(T_ADDR, " %s", pax25(tmp, data + 6)); lprintf(T_ADDR, "@%s", pax25(tmp, data + 6 + AXLEN)); - data += AXLEN + AXLEN + 6; + data += AXLEN + AXLEN + 6; length -= AXLEN + AXLEN + 6; if (length > 0) - lprintf(T_AXHDR, " timeout %d", data[1] * 256 + data[0]); + lprintf(T_AXHDR, " timeout %d", + data[1] * 256 + data[0]); lprintf(T_AXHDR, "\n"); break; - case NR4OPCONAK: /* Connect acknowledgement */ - lprintf(T_AXHDR," conn ack: ur ckt %02X/%02X my ckt %02X/%02X", data[0], data[1], data[2], data[3]); + case NR4OPCONAK: /* Connect acknowledgement */ + lprintf(T_AXHDR, + " conn ack: ur ckt %02X/%02X my ckt %02X/%02X", + data[0], data[1], data[2], data[3]); lprintf(T_AXHDR, " wnd %d", data[5]); netrom_flags(data[4]); break; - case NR4OPDISRQ: /* Disconnect request */ - lprintf(T_AXHDR, " disc: ur ckt %02X/%02X\n", data[0], data[1]); + case NR4OPDISRQ: /* Disconnect request */ + lprintf(T_AXHDR, " disc: ur ckt %02X/%02X\n", + data[0], data[1]); break; - case NR4OPDISAK: /* Disconnect acknowledgement */ - lprintf(T_AXHDR, " disc ack: ur ckt %02X/%02X\n", data[0], data[1]); + case NR4OPDISAK: /* Disconnect acknowledgement */ + lprintf(T_AXHDR, " disc ack: ur ckt %02X/%02X\n", + data[0], data[1]); break; - case NR4OPINFO: /* Information (data) */ - lprintf(T_AXHDR, " info: ur ckt %02X/%02X", data[0], data[1]); + case NR4OPINFO: /* Information (data) */ + lprintf(T_AXHDR, " info: ur ckt %02X/%02X", + data[0], data[1]); lprintf(T_AXHDR, " txseq %d rxseq %d", data[2], data[3]); netrom_flags(data[4]); data_dump(data + 5, length - 5, hexdump); break; - case NR4OPACK: /* Information acknowledgement */ - lprintf(T_AXHDR, " info ack: ur ckt %02X/%02X", data[0], data[1]); + case NR4OPACK: /* Information acknowledgement */ + lprintf(T_AXHDR, " info ack: ur ckt %02X/%02X", + data[0], data[1]); lprintf(T_AXHDR, " rxseq %d", data[3]); netrom_flags(data[4]); break; default: - lprintf(T_AXHDR, " unknown transport type %d\n", data[4] & 0x0f) ; + lprintf(T_AXHDR, " unknown transport type %d\n", + data[4] & 0x0f); break; } } @@ -141,15 +154,13 @@ void netrom_dump(unsigned char *data, int length, int hexdump) static void netrom_flags(int flags) { if (flags & NR4CHOKE) - lprintf(T_AXHDR," CHOKE"); + lprintf(T_AXHDR, " CHOKE"); if (flags & NR4NAK) - lprintf(T_AXHDR," NAK"); + lprintf(T_AXHDR, " NAK"); if (flags & NR4MORE) - lprintf(T_AXHDR," MORE"); + lprintf(T_AXHDR, " MORE"); lprintf(T_AXHDR, "\n"); } - - diff --git a/listen/ripdump.c b/listen/ripdump.c index 9f3a799..8a3f966 100644 --- a/listen/ripdump.c +++ b/listen/ripdump.c @@ -23,59 +23,56 @@ #define RIP_HEADER 4 #define RIP_ENTRY 20 -#define RIP_AF_INET 2 /* IP Family */ +#define RIP_AF_INET 2 /* IP Family */ -#define RIPCMD_REQUEST 1 /* want info */ -#define RIPCMD_RESPONSE 2 /* responding to request */ +#define RIPCMD_REQUEST 1 /* want info */ +#define RIPCMD_RESPONSE 2 /* responding to request */ #define RIP98_ENTRY 6 -static struct mask_struct -{ +static struct mask_struct { unsigned int mask; unsigned int width; -} -mask_table[] = -{ - {0xFFFFFFFF, 32}, - {0xFFFFFFFE, 31}, - {0xFFFFFFFC, 30}, - {0xFFFFFFF8, 29}, - {0xFFFFFFF0, 28}, - {0xFFFFFFE0, 27}, - {0xFFFFFFC0, 26}, - {0xFFFFFF80, 25}, - {0xFFFFFF00, 24}, - {0xFFFFFE00, 23}, - {0xFFFFFC00, 22}, - {0xFFFFF800, 21}, - {0xFFFFF000, 20}, - {0xFFFFE000, 19}, - {0xFFFFC000, 18}, - {0xFFFF8000, 17}, - {0xFFFF0000, 16}, - {0xFFFE0000, 15}, - {0xFFFC0000, 14}, - {0xFFF80000, 13}, - {0xFFF00000, 12}, - {0xFFE00000, 11}, - {0xFFC00000, 10}, - {0xFF800000, 9}, - {0xFF000000, 8}, - {0xFE000000, 7}, - {0xFC000000, 6}, - {0xF8000000, 5}, - {0xF0000000, 4}, - {0xE0000000, 3}, - {0xC0000000, 2}, - {0x80000000, 1}, - {0x00000000, 0}, -}; +} mask_table[] = { + { + 0xFFFFFFFF, 32}, { + 0xFFFFFFFE, 31}, { + 0xFFFFFFFC, 30}, { + 0xFFFFFFF8, 29}, { + 0xFFFFFFF0, 28}, { + 0xFFFFFFE0, 27}, { + 0xFFFFFFC0, 26}, { + 0xFFFFFF80, 25}, { + 0xFFFFFF00, 24}, { + 0xFFFFFE00, 23}, { + 0xFFFFFC00, 22}, { + 0xFFFFF800, 21}, { + 0xFFFFF000, 20}, { + 0xFFFFE000, 19}, { + 0xFFFFC000, 18}, { + 0xFFFF8000, 17}, { + 0xFFFF0000, 16}, { + 0xFFFE0000, 15}, { + 0xFFFC0000, 14}, { + 0xFFF80000, 13}, { + 0xFFF00000, 12}, { + 0xFFE00000, 11}, { + 0xFFC00000, 10}, { + 0xFF800000, 9}, { + 0xFF000000, 8}, { + 0xFE000000, 7}, { + 0xFC000000, 6}, { + 0xF8000000, 5}, { + 0xF0000000, 4}, { + 0xE0000000, 3}, { + 0xC0000000, 2}, { + 0x80000000, 1}, { +0x00000000, 0},}; static unsigned int mask2width(unsigned int mask) { struct mask_struct *t; - + for (t = mask_table; t->mask != 0; t++) if (mask == t->mask) return t->width; @@ -90,85 +87,87 @@ void rip_dump(unsigned char *data, int length) int version; int domain; char ipaddmask[25]; - + lprintf(T_PROTOCOL, "RIP: "); - cmd = data[0]; + cmd = data[0]; version = data[1]; - domain = get16(data + 2); + domain = get16(data + 2); length -= RIP_HEADER; - data += RIP_HEADER; + data += RIP_HEADER; - switch (cmd) - { - case RIPCMD_REQUEST: - lprintf(T_IPHDR, "REQUEST"); - break; + switch (cmd) { + case RIPCMD_REQUEST: + lprintf(T_IPHDR, "REQUEST"); + break; - case RIPCMD_RESPONSE: - lprintf(T_IPHDR, "RESPONSE"); - break; + case RIPCMD_RESPONSE: + lprintf(T_IPHDR, "RESPONSE"); + break; - default: - lprintf(T_IPHDR, " cmd %u", cmd); - break; + default: + lprintf(T_IPHDR, " cmd %u", cmd); + break; } - - switch (version) - { - case RIP_VERSION_98: /* IPGATE **/ - lprintf(T_IPHDR, " vers %u entries %u\n", version, length / RIP98_ENTRY); - - i = 0; - while (length >= RIP98_ENTRY) - { - sprintf(ipaddmask, "%u.%u.%u.%u/%-2u", data[0], data[1], data[2], data[3], data[4]); - lprintf(T_ADDR, "%-16s %-3u ", ipaddmask, data[5]); - - if ((++i % 3) == 0) lprintf(T_IPHDR, "\n"); - - length -= RIP98_ENTRY; - data += RIP98_ENTRY; - } - if ((i % 3) != 0) lprintf(T_IPHDR, "\n"); - break; - - default: - lprintf(T_IPHDR, " vers %u entries %u domain %u:\n", version, length / RIP_ENTRY, domain); - - i = 0; - while (length >= RIP_ENTRY) - { - if (get16(data + 0) != RIP_AF_INET) - { - /* Skip non-IP addresses */ - length -= RIP_ENTRY; - data += RIP_ENTRY; - continue; - } - - if (version >= RIP_VERSION_2) - { - sprintf(ipaddmask, "%u.%u.%u.%u/%-4d", data[4], data[5], data[6], data[7], - mask2width(get32(data + 8))); - } - else - { - sprintf(ipaddmask, "%u.%u.%u.%u/??", data[4], data[5], data[6], data[7]); - } - - lprintf(T_ADDR, "%-20s%-3u", ipaddmask, get32(data + 16)); - - if ((++i % 3) == 0) lprintf(T_IPHDR, "\n"); + switch (version) { + case RIP_VERSION_98: /* IPGATE * */ + lprintf(T_IPHDR, " vers %u entries %u\n", version, + length / RIP98_ENTRY); + + i = 0; + while (length >= RIP98_ENTRY) { + sprintf(ipaddmask, "%u.%u.%u.%u/%-2u", data[0], + data[1], data[2], data[3], data[4]); + lprintf(T_ADDR, "%-16s %-3u ", ipaddmask, data[5]); + if ((++i % 3) == 0) + lprintf(T_IPHDR, "\n"); + + length -= RIP98_ENTRY; + data += RIP98_ENTRY; + } + + if ((i % 3) != 0) + lprintf(T_IPHDR, "\n"); + break; + + default: + lprintf(T_IPHDR, " vers %u entries %u domain %u:\n", + version, length / RIP_ENTRY, domain); + + i = 0; + while (length >= RIP_ENTRY) { + if (get16(data + 0) != RIP_AF_INET) { + /* Skip non-IP addresses */ length -= RIP_ENTRY; - data += RIP_ENTRY; + data += RIP_ENTRY; + continue; + } + + if (version >= RIP_VERSION_2) { + sprintf(ipaddmask, "%u.%u.%u.%u/%-4d", + data[4], data[5], data[6], data[7], + mask2width(get32(data + 8))); + } else { + sprintf(ipaddmask, "%u.%u.%u.%u/??", + data[4], data[5], data[6], + data[7]); } - if ((i % 3) != 0) lprintf(T_IPHDR, "\n"); - break; + lprintf(T_ADDR, "%-20s%-3u", ipaddmask, + get32(data + 16)); + + if ((++i % 3) == 0) + lprintf(T_IPHDR, "\n"); + + length -= RIP_ENTRY; + data += RIP_ENTRY; + } + + if ((i % 3) != 0) + lprintf(T_IPHDR, "\n"); + break; } } - diff --git a/listen/rosedump.c b/listen/rosedump.c index c4d26b0..7665313 100644 --- a/listen/rosedump.c +++ b/listen/rosedump.c @@ -56,7 +56,7 @@ void rose_dump(unsigned char *data, int length, int hexdump) unsigned char *source = NULL; unsigned char *dest = NULL; unsigned int len, hlen; - unsigned int lci = ((unsigned)(data[0] & 0x0F) << 8) + data[1]; + unsigned int lci = ((unsigned) (data[0] & 0x0F) << 8) + data[1]; lprintf(T_ROSEHDR, "X.25: LCI %3.3X : ", lci); switch (data[2]) { @@ -64,26 +64,22 @@ void rose_dump(unsigned char *data, int length, int hexdump) len = 4; hlen = (((data[3] >> 4) & 0x0F) + 1) / 2; hlen += (((data[3] >> 0) & 0x0F) + 1) / 2; - if (hlen == 10) - { - dest = data+4; - source = data+9; + if (hlen == 10) { + dest = data + 4; + source = data + 9; } - len += hlen; - data += len; + len += hlen; + data += len; length -= len; lprintf(T_ROSEHDR, "CALL REQUEST - "); - if (length) - { - unsigned int flen = data[0]+1; + if (length) { + unsigned int flen = data[0] + 1; facility(data, length); length -= flen; data += flen; if (length > 0) data_dump(data, length, 1); - } - else - { + } else { lprintf(T_ROSEHDR, "\n"); } return; @@ -95,9 +91,8 @@ void rose_dump(unsigned char *data, int length, int hexdump) case CLEAR_REQUEST: lprintf(T_ROSEHDR, "CLEAR REQUEST - Cause %s - Diag %d\n", clear_code(data[3]), data[4]); - if (length > 6) - { - facility(data+6, length-6); + if (length > 6) { + facility(data + 6, length - 6); } return; @@ -126,12 +121,13 @@ void rose_dump(unsigned char *data, int length, int hexdump) case RESET_CONFIRMATION: lprintf(T_ROSEHDR, "RESET CONFIRMATION\n"); return; - + case RESTART_REQUEST: - lprintf(T_ROSEHDR, "RESTART REQUEST - Cause %s - Diag %d\n", + lprintf(T_ROSEHDR, + "RESTART REQUEST - Cause %s - Diag %d\n", restart_code(data[3]), data[4]); return; - + case RESTART_CONFIRMATION: lprintf(T_ROSEHDR, "RESTART CONFIRMATION\n"); return; @@ -139,7 +135,7 @@ void rose_dump(unsigned char *data, int length, int hexdump) case REGISTRATION_REQUEST: lprintf(T_ROSEHDR, "REGISTRATION REQUEST\n"); return; - + case REGISTRATION_CONFIRMATION: lprintf(T_ROSEHDR, "REGISTRATION CONFIRMATION\n"); return; @@ -151,53 +147,59 @@ void rose_dump(unsigned char *data, int length, int hexdump) (data[0] & QBIT) ? "Q" : "", (data[0] & DBIT) ? "D" : "", (data[2] & MBIT) ? "M" : ""); - if ((length >= 5) && (data[0] & QBIT) && (data[3] == 0x7f)) - { + if ((length >= 5) && (data[0] & QBIT) && (data[3] == 0x7f)) { /* pid transport */ int pid = data[4]; data += 5; length -= 5; switch (pid) { - case PID_SEGMENT: - lprintf(T_ROSEHDR," len %d\n", length - 5); - data_dump(data, length, hexdump); - break; - case PID_ARP: - lprintf(T_ROSEHDR," pid=ARP len %d\n", length - 5); - arp_dump(data, length); - break; - case PID_NETROM: - lprintf(T_ROSEHDR," pid=NET/ROM len %d\n", length - 5); - netrom_dump(data, length, hexdump); - break; - case PID_IP: - lprintf(T_ROSEHDR," pid=IP len %d\n", length - 5); - ip_dump(data, length, hexdump); - break; - case PID_X25: - lprintf(T_ROSEHDR, " pid=X.25 len %d\n", length - 5); - rose_dump(data, length, hexdump); - break; - case PID_TEXNET: - lprintf(T_ROSEHDR, " pid=TEXNET len %d\n", length - 5); - data_dump(data, length, hexdump); - break; - case PID_FLEXNET: - lprintf(T_ROSEHDR, " pid=FLEXNET len %d\n", length - 5); - flexnet_dump(data, length, hexdump); - break; - case PID_NO_L3: - lprintf(T_ROSEHDR, " pid=Text len %d\n", length - 5); - data_dump(data, length, hexdump); - break; - default: - lprintf(T_ROSEHDR, " pid=0x%x len %d\n", pid, length - 5); - data_dump(data, length, hexdump); - break; + case PID_SEGMENT: + lprintf(T_ROSEHDR, " len %d\n", + length - 5); + data_dump(data, length, hexdump); + break; + case PID_ARP: + lprintf(T_ROSEHDR, " pid=ARP len %d\n", + length - 5); + arp_dump(data, length); + break; + case PID_NETROM: + lprintf(T_ROSEHDR, " pid=NET/ROM len %d\n", + length - 5); + netrom_dump(data, length, hexdump); + break; + case PID_IP: + lprintf(T_ROSEHDR, " pid=IP len %d\n", + length - 5); + ip_dump(data, length, hexdump); + break; + case PID_X25: + lprintf(T_ROSEHDR, " pid=X.25 len %d\n", + length - 5); + rose_dump(data, length, hexdump); + break; + case PID_TEXNET: + lprintf(T_ROSEHDR, " pid=TEXNET len %d\n", + length - 5); + data_dump(data, length, hexdump); + break; + case PID_FLEXNET: + lprintf(T_ROSEHDR, " pid=FLEXNET len %d\n", + length - 5); + flexnet_dump(data, length, hexdump); + break; + case PID_NO_L3: + lprintf(T_ROSEHDR, " pid=Text len %d\n", + length - 5); + data_dump(data, length, hexdump); + break; + default: + lprintf(T_ROSEHDR, " pid=0x%x len %d\n", + pid, length - 5); + data_dump(data, length, hexdump); + break; } - } - else - { + } else { lprintf(T_ROSEHDR, " len %d\n", length - 3); data_dump(data + 3, length - 3, hexdump); } @@ -205,15 +207,15 @@ void rose_dump(unsigned char *data, int length, int hexdump) } switch (data[2] & 0x1F) { - case RR: - lprintf(T_ROSEHDR, "RR R%d\n", (data[2] >> 5) & 0x07); - return; - case RNR: - lprintf(T_ROSEHDR, "RNR R%d\n", (data[2] >> 5) & 0x07); - return; - case REJ: - lprintf(T_ROSEHDR, "REJ R%d\n", (data[2] >> 5) & 0x07); - return; + case RR: + lprintf(T_ROSEHDR, "RR R%d\n", (data[2] >> 5) & 0x07); + return; + case RNR: + lprintf(T_ROSEHDR, "RNR R%d\n", (data[2] >> 5) & 0x07); + return; + case REJ: + lprintf(T_ROSEHDR, "REJ R%d\n", (data[2] >> 5) & 0x07); + return; } lprintf(T_ROSEHDR, "UNKNOWN\n"); @@ -234,7 +236,7 @@ static char *clear_code(unsigned char code) return "Remote Procedure Error"; if (code == 0x19) return "Reverse Charging Acceptance Not Subscribed"; - if (code == 0x21) + if (code == 0x21) return "Incompatible Destination"; if (code == 0x29) return "Fast Select Acceptance Not Subscribed"; @@ -252,9 +254,9 @@ static char *clear_code(unsigned char code) return "Not Obtainable"; if (code == 0x15) return "RPOA Out Of Order"; - + sprintf(buffer, "Unknown %02X", code); - + return buffer; } @@ -266,15 +268,15 @@ static char *reset_code(unsigned char code) return "DTE Originated"; if (code == 0x03) return "Remote Procedure Error"; - if (code == 0x11) + if (code == 0x11) return "Incompatible Destination"; if (code == 0x05) return "Local Procedure Error"; if (code == 0x07) return "Network Congestion"; - + sprintf(buffer, "Unknown %02X", code); - + return buffer; } @@ -290,9 +292,9 @@ static char *restart_code(unsigned char code) return "Network Congestion"; if (code == 0x07) return "Network Operational"; - + sprintf(buffer, "Unknown %02X", code); - + return buffer; } @@ -300,7 +302,8 @@ static char *dump_x25_addr(unsigned char *data) { static char buffer[25]; - sprintf(buffer, "%02X%02X,%02X%02X%02X", data[0], data[1], data[2], data[3], data[4]); + sprintf(buffer, "%02X%02X,%02X%02X%02X", data[0], data[1], data[2], + data[3], data[4]); return buffer; } @@ -311,8 +314,7 @@ static char *dump_ax25_call(unsigned char *data, int l_data) char *ptr = buffer; int ssid; - while (l_data-- > 1) - { + while (l_data-- > 1) { *ptr = *data++ >> 1; if (*ptr != ' ') ++ptr; @@ -320,8 +322,7 @@ static char *dump_ax25_call(unsigned char *data, int l_data) *ptr++ = '-'; ssid = (*data & 0x1F) >> 1; - if (ssid >= 10) - { + if (ssid >= 10) { *ptr++ = '1'; ssid -= 10; } @@ -343,7 +344,7 @@ static void facility(unsigned char *data, int lgtot) char *result = buf; factot = data; - + lgfac = *data++; lg = lgfac; @@ -351,12 +352,10 @@ static void facility(unsigned char *data, int lgtot) digid[0] = digis[0] = '\0'; indorig[0] = inddest[0] = '\0'; - while (lg > 0) - { + while (lg > 0) { fct = *data++; lg--; - switch (fct) - { + switch (fct) { case 0: /* Marker=0 National Fac ou Marker=15 CCITT */ data++; @@ -364,12 +363,13 @@ static void facility(unsigned char *data, int lgtot) break; case 0x3F: /* Used if call request via L2 digi instead of L3 */ - lprintf (T_ROSEHDR, "Facility 3F%2.2X\n", *data++); + lprintf(T_ROSEHDR, "Facility 3F%2.2X\n", *data++); lg--; break; case 0x7F: /* Random number to avoid loops */ - lprintf (T_ROSEHDR, "NbAlea: %2.2X%2.2X\n", *data, *(data + 1)); + lprintf(T_ROSEHDR, "NbAlea: %2.2X%2.2X\n", *data, + *(data + 1)); data += 2; lg -= 2; break; @@ -377,7 +377,8 @@ static void facility(unsigned char *data, int lgtot) /* Destination digi (for compatibility) */ lgdigi = *data++; if (!digi_fac) - strcpy(digid, dump_ax25_call(data, lgdigi)); + strcpy(digid, + dump_ax25_call(data, lgdigi)); data += lgdigi; lg -= 1 + lgdigi; break; @@ -385,14 +386,16 @@ static void facility(unsigned char *data, int lgtot) /* Origin digi (for compatibility) */ lgdigi = *data++; if (!digi_fac) - strcpy(digis, dump_ax25_call(data, lgdigi)); + strcpy(digis, + dump_ax25_call(data, lgdigi)); data += lgdigi; lg -= 1 + lgdigi; break; case 0xED: /* Out of order : callsign */ lgaddcall = *data++; - lprintf(T_ROSEHDR, "at %s", dump_ax25_call(data, lgaddcall)); + lprintf(T_ROSEHDR, "at %s", + dump_ax25_call(data, lgaddcall)); data += lgaddcall; lg -= 1 + lgaddcall; break; @@ -407,21 +410,19 @@ static void facility(unsigned char *data, int lgtot) break; case 0xEF: lgaddcall = *data++; - for (d = data, l = 0; l < lgaddcall ; l += 7, d += 7) - { - if (l > (6 * 7)) - { + for (d = data, l = 0; l < lgaddcall; + l += 7, d += 7) { + if (l > (6 * 7)) { /* 6 digis maximum */ break; } - if (d[6] & AX25_HBIT) - { - strcat(digis, dump_ax25_call(d, 7)); + if (d[6] & AX25_HBIT) { + strcat(digis, + dump_ax25_call(d, 7)); strcat(digis, " "); - } - else - { - strcat(digid, dump_ax25_call(d, 7)); + } else { + strcat(digid, + dump_ax25_call(d, 7)); strcat(digid, " "); } } @@ -439,50 +440,47 @@ static void facility(unsigned char *data, int lgtot) lgad = *data++; lg -= 6; lgaddr = lgad; - + if (fct == 0xCB) - strcpy (addstorig, dump_x25_addr(data)); + strcpy(addstorig, dump_x25_addr(data)); else - strcpy (addstdest, dump_x25_addr(data)); - + strcpy(addstdest, dump_x25_addr(data)); + data += (lgad + 1) / 2; lg -= (lgad + 1) / 2; lgadind = lgaddcall - (lgad + 1) / 2 - 5; - - if (fct == 0xCB) - { - strncpy (indorig, data, lgadind); + + if (fct == 0xCB) { + strncpy(indorig, data, lgadind); indorig[lgadind] = '\0'; - } - else - { - strncpy (inddest, data, lgadind); + } else { + strncpy(inddest, data, lgadind); inddest[lgadind] = '\0'; } - + data += lgadind; lg -= lgadind; break; default: - lprintf (T_ROSEHDR, "Unknown Facility Type %2.2X\n", fct); + lprintf(T_ROSEHDR, "Unknown Facility Type %2.2X\n", + fct); data_dump(factot, lgtot, 1); lg = 0; break; } - result += strlen (result); + result += strlen(result); } - if (*indorig && *inddest) - { + if (*indorig && *inddest) { /* Build the displayed string */ - lprintf (T_ROSEHDR, "fm %-9s @%s", indorig, addstorig); + lprintf(T_ROSEHDR, "fm %-9s @%s", indorig, addstorig); if (*digis) - lprintf (T_ROSEHDR, " via %s", digis); - lprintf (T_ROSEHDR, "\n"); - lprintf (T_ROSEHDR, "to %-9s @%s", inddest, addstdest); + lprintf(T_ROSEHDR, " via %s", digis); + lprintf(T_ROSEHDR, "\n"); + lprintf(T_ROSEHDR, "to %-9s @%s", inddest, addstdest); if (*digid) - lprintf (T_ROSEHDR, " via %s", digid); - lprintf (T_ROSEHDR, "\n"); + lprintf(T_ROSEHDR, " via %s", digid); + lprintf(T_ROSEHDR, "\n"); } } diff --git a/listen/rspfdump.c b/listen/rspfdump.c index e05e0fa..4a84b42 100644 --- a/listen/rspfdump.c +++ b/listen/rspfdump.c @@ -9,45 +9,60 @@ void rspf_dump(unsigned char *data, int length) { int bptr, nodes, links, adjs; - + lprintf(T_IPHDR, "RSPF: version %u ", data[0]); - - switch(data[1]) - { - case 3: /* RRH */ - lprintf(T_IPHDR, "type RRH seq %#04x flags %d\n",ntohs(*((u_short*)(&data[8]))), data[10]); - bptr = 11; - while (bptr < length) - lprintf(T_IPHDR, "%c", data[bptr++]); - lprintf(T_IPHDR, "\n"); - break; - case 1: /*Routing update*/ - lprintf(T_IPHDR, "type ROUTING UPDATE "); - lprintf(T_IPHDR, "fragment %u frag total %u sync %u #nodes %u env_id %u\n", data[2], data[3], data[6], data[7], ntohs(*((u_short*)(&data[8])))); - - bptr = data[6] + 6; - nodes = data[7]; - while(nodes-- && (length - bptr) > 7) - { - lprintf(T_DATA, " Reporting Router: %s Seq %u Subseq %u #links %u\n", inet_ntoa(*((struct in_addr*)(&data[bptr]))), ntohs(*((u_short*)(&data[bptr+4]))), data[bptr+6], data[bptr+7]); - links = data[bptr+7]; - bptr += 8; - while(links-- && (length - bptr) > 4) - { - lprintf(T_DATA, " horizon %u ERP factor %u cost %u #adjacencies %u\n", data[bptr], data[bptr+1], data[bptr+2], data[bptr+3]); - adjs = data[bptr+3]; - bptr += 4; - while(adjs-- && (length - bptr) > 4) - { - lprintf(T_DATA, " %s/%d \n", inet_ntoa(*((struct in_addr*)(&data[bptr+1]))), data[bptr] & 0x3f); - bptr += 5; - } + + switch (data[1]) { + case 3: /* RRH */ + lprintf(T_IPHDR, "type RRH seq %#04x flags %d\n", + ntohs(*((u_short *) (&data[8]))), data[10]); + bptr = 11; + while (bptr < length) + lprintf(T_IPHDR, "%c", data[bptr++]); + lprintf(T_IPHDR, "\n"); + break; + case 1: /*Routing update */ + lprintf(T_IPHDR, "type ROUTING UPDATE "); + lprintf(T_IPHDR, + "fragment %u frag total %u sync %u #nodes %u env_id %u\n", + data[2], data[3], data[6], data[7], + ntohs(*((u_short *) (&data[8])))); + + bptr = data[6] + 6; + nodes = data[7]; + while (nodes-- && (length - bptr) > 7) { + lprintf(T_DATA, + " Reporting Router: %s Seq %u Subseq %u #links %u\n", + inet_ntoa(* + ((struct in_addr + *) (&data[bptr]))), + ntohs(*((u_short *) (&data[bptr + 4]))), + data[bptr + 6], data[bptr + 7]); + links = data[bptr + 7]; + bptr += 8; + while (links-- && (length - bptr) > 4) { + lprintf(T_DATA, + " horizon %u ERP factor %u cost %u #adjacencies %u\n", + data[bptr], data[bptr + 1], + data[bptr + 2], data[bptr + 3]); + adjs = data[bptr + 3]; + bptr += 4; + while (adjs-- && (length - bptr) > 4) { + lprintf(T_DATA, + " %s/%d \n", + inet_ntoa(* + ((struct in_addr + *) (&data[bptr + + + 1]))), + data[bptr] & 0x3f); + bptr += 5; } - } - break; - default: - lprintf(T_ERROR, "Unknown packet type %d\n", data[1]); - break; + } + } + break; + default: + lprintf(T_ERROR, "Unknown packet type %d\n", data[1]); + break; } } - diff --git a/listen/tcpdump.c b/listen/tcpdump.c index 3a9520f..23c9686 100644 --- a/listen/tcpdump.c +++ b/listen/tcpdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/tcpdump.c,v 1.1 2001/04/10 01:58:56 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/tcpdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */ /* TCP header tracing routines * Copyright 1991 Phil Karn, KA9Q @@ -38,37 +38,46 @@ void tcp_dump(unsigned char *data, int length, int hexdump) int mss = 0; source = get16(data + 0); - dest = get16(data + 2); - seq = get32(data + 4); - ack = get32(data + 8); + dest = get16(data + 2); + seq = get32(data + 4); + ack = get32(data + 8); hdrlen = (data[12] & 0xF0) >> 2; - flags = data[13]; - wnd = get16(data + 14); - up = get16(data + 18); + flags = data[13]; + wnd = get16(data + 14); + up = get16(data + 18); lprintf(T_PROTOCOL, "TCP:"); lprintf(T_TCPHDR, " %s->", servname(source, "tcp")); lprintf(T_TCPHDR, "%s Seq x%x", servname(dest, "tcp"), seq); - if (flags & ACK) lprintf(T_TCPHDR, " Ack x%x", ack); + if (flags & ACK) + lprintf(T_TCPHDR, " Ack x%x", ack); - if (flags & CE) lprintf(T_TCPHDR, " CE"); + if (flags & CE) + lprintf(T_TCPHDR, " CE"); - if (flags & URG) lprintf(T_TCPHDR, " URG"); + if (flags & URG) + lprintf(T_TCPHDR, " URG"); - if (flags & ACK) lprintf(T_TCPHDR, " ACK"); + if (flags & ACK) + lprintf(T_TCPHDR, " ACK"); - if (flags & PSH) lprintf(T_TCPHDR, " PSH"); + if (flags & PSH) + lprintf(T_TCPHDR, " PSH"); - if (flags & RST) lprintf(T_TCPHDR, " RST"); + if (flags & RST) + lprintf(T_TCPHDR, " RST"); - if (flags & SYN) lprintf(T_TCPHDR, " SYN"); + if (flags & SYN) + lprintf(T_TCPHDR, " SYN"); - if (flags & FIN) lprintf(T_TCPHDR, " FIN"); + if (flags & FIN) + lprintf(T_TCPHDR, " FIN"); lprintf(T_TCPHDR, " Wnd %d", wnd); - if (flags & URG) lprintf(T_TCPHDR, " UP x%x", up); + if (flags & URG) + lprintf(T_TCPHDR, " UP x%x", up); /* Process options, if any */ if (hdrlen > TCPLEN && length >= hdrlen) { @@ -95,29 +104,30 @@ void tcp_dump(unsigned char *data, int length, int hexdump) optlen = *cp++; /* Process valid multi-byte options */ - switch (kind) { + switch (kind) { case MSS_KIND: - if (optlen == MSS_LENGTH) + if (optlen == MSS_LENGTH) mss = get16(cp); break; } - optlen = max(2, optlen); /* Enforce legal minimum */ + optlen = max(2, optlen); /* Enforce legal minimum */ i -= optlen; cp += optlen - 2; } } - if (mss != 0) lprintf(T_TCPHDR," MSS %d", mss); + if (mss != 0) + lprintf(T_TCPHDR, " MSS %d", mss); length -= hdrlen; - data += hdrlen; + data += hdrlen; if (length > 0) { lprintf(T_TCPHDR, " Data %d\n", length); data_dump(data, length, hexdump); return; } - + lprintf(T_TCPHDR, "\n"); } diff --git a/listen/udpdump.c b/listen/udpdump.c index 4eb75a1..f80a134 100644 --- a/listen/udpdump.c +++ b/listen/udpdump.c @@ -1,4 +1,4 @@ -/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/udpdump.c,v 1.1 2001/04/10 01:58:56 csmall Exp $ */ +/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/udpdump.c,v 1.2 2001/09/12 13:18:44 terry Exp $ */ /* UDP packet tracing * Copyright 1991 Phil Karn, KA9Q @@ -18,27 +18,28 @@ void udp_dump(unsigned char *data, int length, int hexdump) int dest; hdr_length = get16(data + 4); - source = get16(data + 0); - dest = get16(data + 2); + source = get16(data + 0); + dest = get16(data + 2); lprintf(T_PROTOCOL, "UDP:"); - lprintf(T_TCPHDR, " len %d %s->", hdr_length, servname(source, "udp")); + lprintf(T_TCPHDR, " len %d %s->", hdr_length, + servname(source, "udp")); lprintf(T_TCPHDR, "%s", servname(dest, "udp")); - + if (hdr_length > UDPHDR) { length -= UDPHDR; - data += UDPHDR; - + data += UDPHDR; + switch (dest) { - case RIP_PORT: - lprintf(T_TCPHDR, "\n"); - rip_dump(data, length); - break; - default: - lprintf(T_TCPHDR, " Data %d\n", length); - data_dump(data, length, hexdump); - break; + case RIP_PORT: + lprintf(T_TCPHDR, "\n"); + rip_dump(data, length); + break; + default: + lprintf(T_TCPHDR, " Data %d\n", length); + data_dump(data, length, hexdump); + break; } } } diff --git a/listen/utils.c b/listen/utils.c index ce7ecb9..0d978ee 100644 --- a/listen/utils.c +++ b/listen/utils.c @@ -14,33 +14,32 @@ #include "listen.h" -int color = 0; /* Colorized? */ -int sevenbit = 1; /* Are we on a 7-bit terminal? */ -int ibmhack = 0; /* IBM mapping? */ +int color = 0; /* Colorized? */ +int sevenbit = 1; /* Are we on a 7-bit terminal? */ +int ibmhack = 0; /* IBM mapping? */ /* mapping of IBM codepage 437 chars 128-159 to ISO latin1 equivalents * (158 and 159 are mapped to space) */ -unsigned char ibm_map[32] = -{ +unsigned char ibm_map[32] = { 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197, 201, 230, 198, 244, 246, 242, 251, 249, - 255, 214, 220, 162, 163, 165, 32, 32 + 255, 214, 220, 162, 163, 165, 32, 32 }; - + /* * Printf in Technicolor (TM) (available in selected theatres only) */ - + void lprintf(int dtype, char *fmt, ...) { va_list args; char str[1024]; unsigned char *p; chtype ch; - + va_start(args, fmt); vsnprintf(str, 1024, fmt, args); va_end(args); @@ -51,17 +50,17 @@ void lprintf(int dtype, char *fmt, ...) if (sevenbit && ch > 127) ch = '.'; - + if ((ch > 127 && ch < 160) && ibmhack) ch = ibm_map[ch - 128] | A_BOLD; else if ((ch < 32) && (ch != '\n')) ch = (ch + 64) | A_REVERSE; - if ((dtype == T_ADDR) || (dtype == T_PROTOCOL) - || (dtype == T_AXHDR) || (dtype == T_IPHDR) + if ((dtype == T_ADDR) || (dtype == T_PROTOCOL) + || (dtype == T_AXHDR) || (dtype == T_IPHDR) || (dtype == T_ROSEHDR) || (dtype == T_PORT) || (dtype == T_TIMESTAMP)) - ch |= A_BOLD; + ch |= A_BOLD; ch |= COLOR_PAIR(dtype); @@ -76,7 +75,7 @@ void lprintf(int dtype, char *fmt, ...) fflush(stdout); } } - + int initcolor(void) { if (!has_colors) @@ -91,7 +90,7 @@ int initcolor(void) idlok(stdscr, TRUE); /* Use hardware ins/del of the terminal */ nodelay(stdscr, TRUE); /* Make getch() nonblocking */ - /* Pick colors for each type */ + /* Pick colors for each type */ init_pair(T_PORT, COLOR_GREEN, COLOR_BLACK); init_pair(T_DATA, COLOR_WHITE, COLOR_BLACK); init_pair(T_ERROR, COLOR_RED, COLOR_BLACK); @@ -104,8 +103,8 @@ int initcolor(void) init_pair(T_KISS, COLOR_MAGENTA, COLOR_BLACK); init_pair(T_BPQ, COLOR_MAGENTA, COLOR_BLACK); init_pair(T_TCPHDR, COLOR_BLUE, COLOR_BLACK); - init_pair(T_FLEXNET, COLOR_BLUE, COLOR_BLACK); - + init_pair(T_FLEXNET, COLOR_BLUE, COLOR_BLACK); + return 1; } @@ -114,7 +113,7 @@ char *servname(int port, char *proto) { struct servent *serv; static char str[16]; - + if ((serv = getservbyport(htons(port), proto))) strncpy(str, serv->s_name, 16); else -- cgit v1.2.3