summaryrefslogtreecommitdiffstats
path: root/listen
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
parent886a37dd2309e60f85360ddec562417bbe741730 (diff)
remerged with terry indents
Diffstat (limited to 'listen')
-rw-r--r--listen/Makefile.in75
-rw-r--r--listen/ax25dump.c56
-rw-r--r--listen/listen.h2
-rw-r--r--listen/nrdump.c50
-rw-r--r--listen/rosedump.c81
5 files changed, 168 insertions, 96 deletions
diff --git a/listen/Makefile.in b/listen/Makefile.in
index 2672438..84de815 100644
--- a/listen/Makefile.in
+++ b/listen/Makefile.in
@@ -122,6 +122,10 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
+DEP_FILES = .deps/arpdump.P .deps/ax25dump.P .deps/flexnetdump.P \
+.deps/icmpdump.P .deps/ipdump.P .deps/kissdump.P .deps/listen.P \
+.deps/nrdump.P .deps/ripdump.P .deps/rosedump.P .deps/rspfdump.P \
+.deps/tcpdump.P .deps/udpdump.P .deps/utils.P
SOURCES = $(listen_SOURCES)
OBJECTS = $(listen_OBJECTS)
@@ -129,9 +133,9 @@ all: all-redirect
.SUFFIXES:
.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
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu listen/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
@@ -161,9 +165,6 @@ uninstall-binPROGRAMS:
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
done
-.c.o:
- $(COMPILE) -c $<
-
# FIXME: We should only use cygpath when building on Windows,
# and only if it is available.
.c.obj:
@@ -186,9 +187,6 @@ distclean-compile:
maintainer-clean-compile:
-.c.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
.s.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
@@ -282,6 +280,11 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = listen
distdir: $(DISTFILES)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(top_distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu listen/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
@@ -292,6 +295,38 @@ distdir: $(DISTFILES)
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
+
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+
+-include $(DEP_FILES)
+
+mostlyclean-depend:
+
+clean-depend:
+
+distclean-depend:
+ -rm -rf .deps
+
+maintainer-clean-depend:
+
+%.o: %.c
+ @echo '$(COMPILE) -c $<'; \
+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
+ tr ' ' '\012' < .deps/$(*F).pp \
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
+
+%.lo: %.c
+ @echo '$(LTCOMPILE) -c $<'; \
+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
+ < .deps/$(*F).pp > .deps/$(*F).P; \
+ tr ' ' '\012' < .deps/$(*F).pp \
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
@@ -329,26 +364,27 @@ distclean-generic:
maintainer-clean-generic:
mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \
- mostlyclean-libtool mostlyclean-tags \
+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-binPROGRAMS clean-compile clean-libtool clean-tags \
- clean-generic mostlyclean-am
+ clean-depend clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-binPROGRAMS distclean-compile distclean-libtool \
- distclean-tags distclean-generic clean-am
+ distclean-tags distclean-depend distclean-generic \
+ clean-am
-rm -f libtool
distclean: distclean-am
maintainer-clean-am: maintainer-clean-binPROGRAMS \
maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-tags maintainer-clean-generic \
- distclean-am
+ maintainer-clean-tags maintainer-clean-depend \
+ maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -360,12 +396,13 @@ mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile mostlyclean-libtool distclean-libtool \
clean-libtool maintainer-clean-libtool install-man1 uninstall-man1 \
install-man uninstall-man tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
-check-am installcheck-am installcheck install-exec-am install-exec \
-install-data-am install-data install-am install uninstall-am uninstall \
-all-redirect all-am all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info-am info \
+dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-am install-data install-am install \
+uninstall-am uninstall all-redirect all-am all installdirs \
+mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
installconf:
diff --git a/listen/ax25dump.c b/listen/ax25dump.c
index 4c4a40c..1809315 100644
--- a/listen/ax25dump.c
+++ b/listen/ax25dump.c
@@ -1,4 +1,4 @@
-/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/ax25dump.c,v 1.2 2001/09/12 13:18:43 terry Exp $ */
+/* @(#) $Header: /home/ax25-cvs/ax25-apps/listen/ax25dump.c,v 1.3 2001/11/27 04:57:43 csmall Exp $ */
/* AX25 header tracing
* Copyright 1991 Phil Karn, KA9Q
@@ -241,33 +241,33 @@ 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, type);
+ 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) {
diff --git a/listen/listen.h b/listen/listen.h
index 4418967..1633bb1 100644
--- a/listen/listen.h
+++ b/listen/listen.h
@@ -39,7 +39,7 @@ void ax25_dump(unsigned char *, int, int);
char *pax25(char *, unsigned char *);
/* In nrdump.c */
-void netrom_dump(unsigned char *, int, int);
+void netrom_dump(unsigned char *, int, int, int);
/* In arpdump.c */
void arp_dump(unsigned char *, int);
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);
diff --git a/listen/rosedump.c b/listen/rosedump.c
index 7665313..9a77677 100644
--- a/listen/rosedump.c
+++ b/listen/rosedump.c
@@ -153,51 +153,42 @@ void rose_dump(unsigned char *data, int length, int hexdump)
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, 0);
+ 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 {
lprintf(T_ROSEHDR, " len %d\n", length - 3);