summaryrefslogtreecommitdiffstats
path: root/ax25rtd
diff options
context:
space:
mode:
authorThomas Osterried <thomas@osterried.de>2006-10-05 11:50:39 +0000
committerThomas Osterried <thomas@osterried.de>2006-10-05 11:50:39 +0000
commitbee3ed95da5f252caae391d51d3c4a0f210e14eb (patch)
tree10543b624b5359c414c22e8722d754ddd9eb6aef /ax25rtd
parent981af1193d960e8234e7b0c8fe048aca1ebdb6e9 (diff)
- documentation (ax25rtd.8, ax25rtd.conf.5, ax25rtctl.8)
- new feature: advanced routing option
Diffstat (limited to 'ax25rtd')
-rw-r--r--ax25rtd/Makefile.am2
-rw-r--r--ax25rtd/Makefile.in746
-rw-r--r--ax25rtd/ax25rtctl.876
-rw-r--r--ax25rtd/ax25rtd.845
-rw-r--r--ax25rtd/ax25rtd.c5
-rw-r--r--ax25rtd/ax25rtd.conf16
-rw-r--r--ax25rtd/ax25rtd.conf.5144
-rw-r--r--ax25rtd/ax25rtd.h3
-rw-r--r--ax25rtd/config.c8
-rw-r--r--ax25rtd/listener.c36
10 files changed, 800 insertions, 281 deletions
diff --git a/ax25rtd/Makefile.am b/ax25rtd/Makefile.am
index 51ced12..a1a4b2c 100644
--- a/ax25rtd/Makefile.am
+++ b/ax25rtd/Makefile.am
@@ -2,6 +2,8 @@
etcfiles = ax25rtd.conf
varfiles = ax25_route ip_route
+man_MANS = ax25rtd.8 ax25rtctl.8 ax25rtd.conf.5
+
installconf:
$(mkinstalldirs) $(DESTDIR)$(AX25_SYSCONFDIR)
@list='$(etcfiles)'; for p in $$list; do \
diff --git a/ax25rtd/Makefile.in b/ax25rtd/Makefile.in
index f32afd9..a1e2e25 100644
--- a/ax25rtd/Makefile.in
+++ b/ax25rtd/Makefile.in
@@ -1,6 +1,8 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -10,206 +12,304 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+@SET_MAKE@
-SHELL = @SHELL@
+
+SOURCES = ax25rtctl.c $(ax25rtd_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-
top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-host_alias = @host_alias@
+build_triplet = @build@
host_triplet = @host@
+sbin_PROGRAMS = ax25rtd$(EXEEXT) ax25rtctl$(EXEEXT)
+subdir = ax25rtd
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man5dir)" \
+ "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)"
+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(sbin_PROGRAMS)
+ax25rtctl_SOURCES = ax25rtctl.c
+ax25rtctl_OBJECTS = ax25rtctl.$(OBJEXT)
+ax25rtctl_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+ax25rtctl_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_ax25rtd_OBJECTS = ax25rtd.$(OBJEXT) cache_ctl.$(OBJEXT) \
+ cache_dump.$(OBJEXT) config.$(OBJEXT) listener.$(OBJEXT)
+ax25rtd_OBJECTS = $(am_ax25rtd_OBJECTS)
+ax25rtd_LDADD = $(LDADD)
+ax25rtd_DEPENDENCIES = $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = ax25rtctl.c $(ax25rtd_SOURCES)
+DIST_SOURCES = ax25rtctl.c $(ax25rtd_SOURCES)
+man5dir = $(mandir)/man5
+man8dir = $(mandir)/man8
+NROFF = nroff
+MANS = $(man_MANS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
AR = @AR@
-AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
AX25_LIB = @AX25_LIB@
CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
-DLLTOOL = @DLLTOOL@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
-GCJ = @GCJ@
-GCJFLAGS = @GCJFLAGS@
-HAVE_LIB = @HAVE_LIB@
-LIB = @LIB@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
-LTLIB = @LTLIB@
+LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NCURSES_LIB = @NCURSES_LIB@
-OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
-RC = @RC@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
-
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
etcfiles = ax25rtd.conf
-
-sbin_PROGRAMS = ax25rtd ax25rtctl
-
+varfiles = ax25_route ip_route
+man_MANS = ax25rtd.8 ax25rtctl.8 ax25rtd.conf.5
LDADD = $(AX25_LIB)
-
EXTRA_DIST = $(etcfiles) $(doc_DATA)
-
docdir = ${datadir}/doc/ax25-apps
doc_DATA = TODO.ax25rtd README.ax25rtd
-
-ax25rtd_SOURCES = ax25rtd.c ax25rtd.h cache_ctl.c cache_dump.c config.c listener.c
-
+ax25rtd_SOURCES = \
+ ax25rtd.c \
+ ax25rtd.h \
+ cache_ctl.c \
+ cache_dump.c \
+ config.c \
+ listener.c
AX25_SYSCONFDIR = $(sysconfdir)/ax25
AX25_LOCALSTATEDIR = $(localstatedir)/ax25
+INCLUDES = -DAX25_SYSCONFDIR=\""$(AX25_SYSCONFDIR)"\" \
+ -DAX25_LOCALSTATEDIR=\""$(AX25_LOCALSTATEDIR)"\"
-INCLUDES = -DAX25_SYSCONFDIR=\""$(AX25_SYSCONFDIR)"\" -DAX25_LOCALSTATEDIR=\""$(AX25_LOCALSTATEDIR)"\"
-
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES =
-sbin_PROGRAMS = ax25rtd$(EXEEXT) ax25rtctl$(EXEEXT)
-PROGRAMS = $(sbin_PROGRAMS)
-
+all: all-am
-DEFS = @DEFS@ -I. -I$(srcdir) -I..
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-ax25rtd_OBJECTS = ax25rtd.$(OBJEXT) cache_ctl.$(OBJEXT) \
-cache_dump.$(OBJEXT) config.$(OBJEXT) listener.$(OBJEXT)
-ax25rtd_LDADD = $(LDADD)
-ax25rtd_DEPENDENCIES =
-ax25rtd_LDFLAGS =
-ax25rtctl_SOURCES = ax25rtctl.c
-ax25rtctl_OBJECTS = ax25rtctl.$(OBJEXT)
-ax25rtctl_LDADD = $(LDADD)
-ax25rtctl_DEPENDENCIES =
-ax25rtctl_LDFLAGS =
-CFLAGS = @CFLAGS@
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-DATA = $(doc_DATA)
-
-DIST_COMMON = Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = tar
-GZIP_ENV = --best
-DEP_FILES = .deps/ax25rtctl.P .deps/ax25rtd.P .deps/cache_ctl.P \
-.deps/cache_dump.P .deps/config.P .deps/listener.P
-SOURCES = $(ax25rtd_SOURCES) ax25rtctl.c
-OBJECTS = $(ax25rtd_OBJECTS) ax25rtctl.$(OBJEXT)
-
-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 ax25rtd/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-mostlyclean-sbinPROGRAMS:
-
-clean-sbinPROGRAMS:
- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-
-distclean-sbinPROGRAMS:
-
-maintainer-clean-sbinPROGRAMS:
-
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ax25rtd/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu ax25rtd/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(sbindir)
+ test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
@list='$(sbin_PROGRAMS)'; for p in $$list; do \
- if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-sbinPROGRAMS:
@$(NORMAL_UNINSTALL)
- list='$(sbin_PROGRAMS)'; for p in $$list; do \
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sbindir)/$$f"; \
done
-# 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 $<
-
-.S.o:
- $(COMPILE) -c $<
+clean-sbinPROGRAMS:
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+ax25rtctl$(EXEEXT): $(ax25rtctl_OBJECTS) $(ax25rtctl_DEPENDENCIES)
+ @rm -f ax25rtctl$(EXEEXT)
+ $(LINK) $(ax25rtctl_LDFLAGS) $(ax25rtctl_OBJECTS) $(ax25rtctl_LDADD) $(LIBS)
+ax25rtd$(EXEEXT): $(ax25rtd_OBJECTS) $(ax25rtd_DEPENDENCIES)
+ @rm -f ax25rtd$(EXEEXT)
+ $(LINK) $(ax25rtd_LDFLAGS) $(ax25rtd_OBJECTS) $(ax25rtd_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.o core *.core
-rm -f *.$(OBJEXT)
-clean-compile:
-
distclean-compile:
-rm -f *.tab.c
-maintainer-clean-compile:
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ax25rtctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ax25rtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache_ctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache_dump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listener.Po@am__quote@
-.s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-.S.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
@@ -218,193 +318,290 @@ clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-
-maintainer-clean-libtool:
-
-ax25rtd$(EXEEXT): $(ax25rtd_OBJECTS) $(ax25rtd_DEPENDENCIES)
- @rm -f ax25rtd$(EXEEXT)
- $(LINK) $(ax25rtd_LDFLAGS) $(ax25rtd_OBJECTS) $(ax25rtd_LDADD) $(LIBS)
-
-ax25rtctl$(EXEEXT): $(ax25rtctl_OBJECTS) $(ax25rtctl_DEPENDENCIES)
- @rm -f ax25rtctl$(EXEEXT)
- $(LINK) $(ax25rtctl_LDFLAGS) $(ax25rtctl_OBJECTS) $(ax25rtctl_LDADD) $(LIBS)
-
+ -rm -f libtool
+uninstall-info-am:
+install-man5: $(man5_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man5dir)" || $(mkdir_p) "$(DESTDIR)$(man5dir)"
+ @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.5*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 5*) ;; \
+ *) ext='5' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \
+ done
+uninstall-man5:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.5*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 5*) ;; \
+ *) ext='5' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man5dir)/$$inst"; \
+ done
+install-man8: $(man8_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)"
+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.8*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 8*) ;; \
+ *) ext='8' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \
+ done
+uninstall-man8:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.8*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 8*) ;; \
+ *) ext='8' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
+ done
install-docDATA: $(doc_DATA)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(docdir)
+ test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
@list='$(doc_DATA)'; for p in $$list; do \
- if test -f $(srcdir)/$$p; then \
- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(docdir)/$$p"; \
- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(docdir)/$$p; \
- else if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(docdir)/$$p"; \
- $(INSTALL_DATA) $$p $(DESTDIR)$(docdir)/$$p; \
- fi; fi; \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+ $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
done
uninstall-docDATA:
@$(NORMAL_UNINSTALL)
- list='$(doc_DATA)'; for p in $$list; do \
- rm -f $(DESTDIR)$(docdir)/$$p; \
+ @list='$(doc_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(docdir)/$$f"; \
done
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
tags: TAGS
-ID: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- here=`pwd` && cd $(srcdir) \
- && mkid -f$$here/ID $$unique $(LISP)
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
-mostlyclean-tags:
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
-clean-tags:
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = ax25rtd
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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 ax25rtd/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
fi; \
done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
--include $(DEP_FILES)
+clean-generic:
-mostlyclean-depend:
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-clean-depend:
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
-distclean-depend:
- -rm -rf .deps
+clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
+ mostlyclean-am
-maintainer-clean-depend:
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
-%.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
+dvi: dvi-am
-%.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:
-dvi: dvi-am
-check-am: all-am
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am: install-sbinPROGRAMS
-install-exec: install-exec-am
-install-data-am: install-docDATA
-install-data: install-data-am
+html: html-am
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am: uninstall-sbinPROGRAMS uninstall-docDATA
-uninstall: uninstall-am
-all-am: Makefile $(PROGRAMS) $(DATA)
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
- $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(docdir)
+info: info-am
+info-am:
-mostlyclean-generic:
+install-data-am: install-docDATA install-man
-clean-generic:
+install-exec-am: install-sbinPROGRAMS
-distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+install-info: install-info-am
-maintainer-clean-generic:
-mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
- mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
+install-man: install-man5 install-man8
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
- clean-depend clean-generic mostlyclean-am
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
-clean: clean-am
+pdf: pdf-am
-distclean-am: distclean-sbinPROGRAMS distclean-compile \
- distclean-libtool distclean-tags distclean-depend \
- distclean-generic clean-am
- -rm -f libtool
+pdf-am:
-distclean: distclean-am
+ps: ps-am
-maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
- 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."
+ps-am:
-maintainer-clean: maintainer-clean-am
+uninstall-am: uninstall-docDATA uninstall-info-am uninstall-man \
+ uninstall-sbinPROGRAMS
+
+uninstall-man: uninstall-man5 uninstall-man8
-.PHONY: mostlyclean-sbinPROGRAMS distclean-sbinPROGRAMS \
-clean-sbinPROGRAMS maintainer-clean-sbinPROGRAMS uninstall-sbinPROGRAMS \
-install-sbinPROGRAMS mostlyclean-compile distclean-compile \
-clean-compile maintainer-clean-compile mostlyclean-libtool \
-distclean-libtool clean-libtool maintainer-clean-libtool \
-uninstall-docDATA install-docDATA tags mostlyclean-tags distclean-tags \
-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
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-sbinPROGRAMS ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-docDATA install-exec install-exec-am install-info \
+ install-info-am install-man install-man5 install-man8 \
+ install-sbinPROGRAMS install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-docDATA \
+ uninstall-info-am uninstall-man uninstall-man5 uninstall-man8 \
+ uninstall-sbinPROGRAMS
installconf:
@@ -417,8 +614,7 @@ installconf:
@list='$(varfiles)'; for p in $$list; do \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(AX25_LOCALSTATEDIR)/ax25rtd/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(AX25_LOCALSTATEDIR)/ax25rtd/$$p; \
- done
-
+ done
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/ax25rtd/ax25rtctl.8 b/ax25rtd/ax25rtctl.8
new file mode 100644
index 0000000..fd489fc
--- /dev/null
+++ b/ax25rtd/ax25rtctl.8
@@ -0,0 +1,76 @@
+.TH AX25RTCTL 8 "11 November 2003" Linux "Linux Programmer's Manual"
+.SH NAME
+ax25rtctl \- AX.25 routing control program
+.SH SYNOPSIS
+.B ax25rtctl [options]
+.SH DESCRIPTION
+.LP
+.B ax25rtctl
+is a program to control ax25rtd. There are several options:
+.TP
+.B -a, --add ax25 <callsign> <dev> <time> [digipeater]
+Add an entry to the AX.25 routing table. If time is "0"
+this entry will be marked permanent, hence: the daemon will not
+overwrite this route.
+.TP
+.B -d, --del ax25 <callsign> <dev>
+Remove an entry from the AX.25 routing table.
+.TP
+.B -a, --add ip <ip> <dev> <time> <call> <ipmode>
+Add an entry to the IP routing table. If time is "0" the
+entry will be marked permanent.
+.TP
+.B -d, --del ip <ip>
+Remove an entry from the IP routing table.
+.TP
+.B -l, --list ax25
+Lists the content of the cache for the AX.25 routing table.
+.TP
+.B -l, --list ip
+Lists the content of the cache for the IP routing table.
+.TP
+.B -e, --expire <minutes>
+Removes the entries older than <minutes> from the caches and
+the kernel routing tables.
+.TP
+.B -s, --save
+Saves the AX.25 and IP cache to /var/ax25/ax25rtd/ax25_routes and
+/var/ax25/ax25rtd/ip_routes (or the files specified in
+/etc/ax25/ax25rtd.conf).
+.TP
+.B -r, --reload
+Reloads the config file /etc/ax25/ax25rtd.conf. This will
+*not* affect the caches or the heard list.
+.TP
+.B -q, --shutdown
+Same as 'killall -TERM ax25rtd' ;-)
+.TP
+.B -V, --version
+Prints version.
+.PP
+Note that you can specify either the port name (as defined in
+/etc/ax25/axports) or the interface name (shown by ifconfig). If names
+conflict (i.e. port scc0 is in fact interface scc3, and vica versa), the
+interface name has precedence over the port name. Example:
+
+ ax25rtctl --add ax25 dl0tha scc3 0 db0pra
+
+is equivalent to
+
+ ax25rtctl --add ax25 dl0tha 9k6 0 dbpra
+
+All commands return port names in their output, though.
+With one exception: ax25_routes and ip_routes use interface names.
+
+.SH FILES
+/etc/ax25/ax25rtd.conf
+.SH "SEE ALSO"
+.BR ax25rtd.conf (5),
+.BR ax25rtd (8).
+.LP
+.SH AUTHORS
+.nf
+Jörg Reuter <jreuter@poboxes.com>
+.br
+Llaus Kudielka OE1KIB
+.fi
diff --git a/ax25rtd/ax25rtd.8 b/ax25rtd/ax25rtd.8
new file mode 100644
index 0000000..c765358
--- /dev/null
+++ b/ax25rtd/ax25rtd.8
@@ -0,0 +1,45 @@
+.TH AX25RTD 8 "11 November 2003" Linux "Linux Programmer's Manual"
+.SH NAME
+ax25rtd \- AX.25 routing daemon
+.SH SYNOPSIS
+.B ax25rtd
+.SH DESCRIPTION
+.LP
+.B ax25rtd
+is a daemon that:
+.LP
+- emulates the ceased "autorouter" of Linux Kernel AX.25
+.br
+- sets up ARP entries automagically
+.br
+- may adjust IP routes and encapsulation mode
+ (although I really do not recomment to use this feature...)
+.LP
+The "autorouter" is not really an autorouter. It just listens to the AX.25
+traffic on your ports and uses this information to setup AX.25 routes. This
+can be turned on or off by altering the configuration file
+/etc/ax25/ax25rtd.conf.
+.LP
+Ax25rtd provides a socket /var/ax25/ax25rtd/control which is used for
+runtime maintainance through
+.B ax25rtctl
+or to set up new routes by other
+daemons (a Flexnet router, perhaps?)
+.LP
+On startup ax25rtd reads the configuration file and afterwards preloads
+the caches from the files /var/ax25/ax25rtd/ax25_routes and
+/var/ax25/ax25rtd/ip_routes. On SIGTERM or
+.B ax25rtctl --save
+it saves the caches to those files.
+.SH FILES
+/etc/ax25/ax25rtd.conf
+.SH "SEE ALSO"
+.BR ax25rtd.conf (5),
+.BR ax25rtctl (8).
+.LP
+.SH AUTHORS
+.nf
+Jörg Reuter <jreuter@poboxes.com>
+.br
+Llaus Kudielka OE1KIB
+.fi
diff --git a/ax25rtd/ax25rtd.c b/ax25rtd/ax25rtd.c
index dbdc0b2..39d2959 100644
--- a/ax25rtd/ax25rtd.c
+++ b/ax25rtd/ax25rtd.c
@@ -1,4 +1,4 @@
-/* $Id: ax25rtd.c,v 1.4 2002/11/03 19:51:08 mctaylor Exp $
+/* $Id: ax25rtd.c,v 1.5 2006/10/05 11:50:39 dl9sau Exp $
*
* Copyright (c) 1996 Jörg Reuter (jreuter@poboxes.com)
*
@@ -66,7 +66,7 @@
#include "../pathnames.h"
#include "ax25rtd.h"
-const char *Version = "ax25rtd $Revision: 1.4 $";
+const char *Version = "ax25rtd $Revision: 1.5 $";
config *Config = NULL;
int reload = 0;
@@ -80,6 +80,7 @@ int ax25_routes_cnt = 0;
int ax25_maxroutes = AX25_MAXROUTES;
char ip_encaps_dev[32] = "";
+char iproute2_table[32] = "";
config *dev_get_config(char *dev)
{
diff --git a/ax25rtd/ax25rtd.conf b/ax25rtd/ax25rtd.conf
index 5a8e9f3..0b84f32 100644
--- a/ax25rtd/ax25rtd.conf
+++ b/ax25rtd/ax25rtd.conf
@@ -13,6 +13,22 @@
ax25-maxroutes 4096
ip-maxroutes 4096
#
+#iproute2-table radio
+# iproute2-table: name of the kernel routing table. This is an advanced
+# routing feature. If you do not need it, just leave this setting as is.
+# The current implementation depends on iproute2 (anyone like to code it
+# directly?).
+# If not set or empty, routes are set in the normal, default, manner.
+# Please configure /etc/iproute2/rt_protos with
+# 44 ax25rtd
+# and /etc/iproute2/rt_tables with
+# 210 radio
+# where "radio" is the name of the table, (for the configuration option below).
+#
+#ip-encaps-dev ipax0
+# This option was for a patched kernel of the 2.2.x series. Multible
+# interfaces were aggregated to one interface when sending IP frames.
+#
# Port config
# ===========
#
diff --git a/ax25rtd/ax25rtd.conf.5 b/ax25rtd/ax25rtd.conf.5
new file mode 100644
index 0000000..ac42d71
--- /dev/null
+++ b/ax25rtd/ax25rtd.conf.5
@@ -0,0 +1,144 @@
+.TH AX25RTD.CONF 5 "11 November 2003" Linux "Linux Programmer's Manual"
+.SH NAME
+ax25rtd.conf \- ax25 routing daemon configuration file
+.SH SYNOPSIS
+.B /etc/ax25/ax25rtd.conf
+.SH DESCRIPTION
+
+
+The file /etc/ax25/ax25rtd.conf is the configuration file for ax25rtd.
+The parameters of the options shown here are the default values except the
+ones marked with (example)
+.PP
+ax25-maxroutes 4096
+.TP
+ip-maxroutes 4096
+The maximum size of the three lists / caches. On overflow,
+ax25rtd will substitute the oldest entry with the new one.
+.TP
+iproute2-table radio
+
+name ("radio") of the kernel routing table. This is an advanced
+routing feature. If you do not need it, just leave this setting as is.
+
+The current implementation depends on iproute2 (anyone like to code it
+directly?).
+
+If not set or empty, routes are set in the normal, default, manner.
+Please configure /etc/iproute2/rt_protos with
+
+ 44 ax25rtd
+
+and /etc/iproute2/rt_tables with
+
+ 210 radio
+
+where "radio" is the name of the table, (for the configuration example above).
+
+This option is disabled by default.
+.TP
+ip-encaps-dev ipax0
+This option was for a patched kernel of the 2.2.x series. Multible interfaces
+were aggregated to one interface when sending IP frames. This option is
+disabled by default.
+.TP
+[1k2]
+.br
+This marks the beginning of per-port definitions. Note that
+you have to use port names as defined in axports(5) here,
+anywhere else you may use the port or the device name.
+.TP
+ax25-learn-routes no
+Set this to "yes", ax25rtd will add the routing information
+for every heard frame (with complete digipeater path) to the
+kernel AX.25 routing table. Note that ax25rtd's internal cache
+will be updated anyway, regardless of this option.
+.TP
+ax25-learn-only-mine no
+If you set it to "yes", only frames that are sent to (1) the
+interface callsign, (2) any of the listeners on this device, or
+(3) the callsigns specified by ax25-more-mycalls will be used
+to update the internal cache and (depending on
+ax25-learn-routes) the kernel routing table.
+.TP
+ax25-add-path db0ach (example)
+This is useful on DAMA digipeaters. In this case, the DAMA
+master has to be used for _every_ AX.25 connection, thus
+ax25rtd will add this digipeater(s) to every target we learn
+that has no digipeater path (yet). "db0ach" is just an
+example here.
+.TP
+ax25-more-mycalls dl1bke dl1bke-8 (example)
+You can specify more calls as calls here that belong to
+this interface... "dl1bke" and "dl1bke-8" are examples.
+.TP
+ip-learn-routes no
+If set to "yes", ax25rtd will modify the IP routing table if it
+receives an IP frame (directed to us). This is dangerous!
+
+It should not screw up your routing table, though. Ax25rtd
+recognizes the netmask of the device and will adjust the route
+only if it fits the netmask and the old route points to
+one of the devices ax25rtd knows about (hence an AX.25 device).
+
+The problems begin if you have more than one port and a user
+is able to hear your outgoing traffic on at least two of them.
+Due to technical reasons ax25rtd adjusts the route _after_ the
+kernel has sent the reply to the received TCP frame already.
+This has technical reasons.
+
+If the remote does the same both are switching between the two
+ports.
+
+Don't use this feature unless you know what you are doing.
+
+It _should_ be safe do enable this on one-port machines, although
+I strongly recommend to set a network route instead, i.e.:
+
+ route add -net 44.0.0.0 scc3
+
+Note that ax25rtd's internal cache will be updated anyway,
+regardless of this option.
+.TP
+irtt <irtt>
+If ip-learn-routes is enabled this will assign newly added
+routes an initial round trip time (IRTT) for TCP. <irtt>
+is measured in msec, hence
+
+ irtt 10000
+
+sets the irtt to 10 seconds. A value of 0 disables this
+feature (default).
+.TP
+ip-adjust-mode no
+If you set this option to "yes" ax25rtd will change the IP
+encapsulation mode according to the last received IP frame.
+
+The problem with this option is that the kernel AX.25 sends
+a received IP frame to the IP layer regardless if it was
+sent in UI frame encapsulation "mode datagram (dg)" or
+in I frame encaps, hence in an AX.25 connection, "mode virtual
+connect (vc)". The Linux kernel will respond to this frame
+before ax25rtd can adjust the mode. If the remote does the
+same... You get the picture.
+
+Don't use this feature unless you know what you are doing.
+.TP
+arp-add no
+This option, if set to "yes", changes the ARP table to the
+source callsign of the received frame. It should be harmless,
+just has the the effect that if it is a new entry, the Linux
+ARP code will send one ARP request before ax25rtd has adjust
+the ARP table. If there was already an existing ARP entry
+for this IP route, one IP datagram will be sent to the old
+address. Not really a problem, I hope.
+.SH "SEE ALSO"
+.BR ax25rtd (8),
+.BR ax25rtctl (8).
+.LP
+.SH AUTHORS
+.nf
+Jörg Reuter <jreuter@poboxes.com>
+.br
+Llaus Kudielka OE1KIB
+.fi
diff --git a/ax25rtd/ax25rtd.h b/ax25rtd/ax25rtd.h
index 53627a1..ca0e499 100644
--- a/ax25rtd/ax25rtd.h
+++ b/ax25rtd/ax25rtd.h
@@ -1,4 +1,4 @@
-/* $Id: ax25rtd.h,v 1.2 2006/10/04 11:38:22 dl9sau Exp $
+/* $Id: ax25rtd.h,v 1.3 2006/10/05 11:50:39 dl9sau Exp $
*
* Copyright (c) 1996 Jörg Reuter (jreuter@poboxes.com)
*
@@ -120,6 +120,7 @@ extern int ax25_routes_cnt;
extern int ax25_maxroutes;
extern char ip_encaps_dev[];
+extern char iproute2_table[];
/* config.c */
diff --git a/ax25rtd/config.c b/ax25rtd/config.c
index 7fa250d..1fa94a3 100644
--- a/ax25rtd/config.c
+++ b/ax25rtd/config.c
@@ -1,4 +1,4 @@
-/* $Id: config.c,v 1.3 2005/10/27 13:25:28 dl9sau Exp $
+/* $Id: config.c,v 1.4 2006/10/05 11:50:39 dl9sau Exp $
*
* Copyright (c) 1996 Jörg Reuter (jreuter@poboxes.com)
*
@@ -480,7 +480,11 @@ void load_config()
ip_maxroutes = atoi(arg);
else
missing_arg(cmd);
-
+ } else if (!strcmp(cmd, "iproute2-table")) {
+ if (arg)
+ strcpy(iproute2_table, arg);
+ else
+ missing_arg(cmd);
} else
fprintf(stderr, "invalid command %s\n", cmd);
}
diff --git a/ax25rtd/listener.c b/ax25rtd/listener.c
index afaa19c..44a0601 100644
--- a/ax25rtd/listener.c
+++ b/ax25rtd/listener.c
@@ -1,4 +1,4 @@
-/* $Id: listener.c,v 1.4 2005/10/27 13:25:28 dl9sau Exp $
+/* $Id: listener.c,v 1.5 2006/10/05 11:50:39 dl9sau Exp $
*
* Copyright (c) 1996 Jörg Reuter (jreuter@poboxes.com)
*
@@ -48,6 +48,8 @@
#include "../pathnames.h"
#include "ax25rtd.h"
+#include <stdlib.h>
+
/* FIXME */
static unsigned long get_from_arp(unsigned char *data, int size)
@@ -167,6 +169,30 @@ int set_arp(config * config, long ip, ax25_address * call)
return 0;
}
+/* dl9sau: use iproute2 for advanced routing.
+ * Anyone likes to implement this directly, without system()?
+ */
+#define RT_DEL 0
+#define RT_ADD 1
+int iproute2(long ip, char *dev, int what)
+{
+ char buffer[256];
+ char ipa[32];
+ int ret;
+
+ sprintf(ipa, "%d.%d.%d.%d",
+ (int) (ip & 0x000000FF),
+ (int) ((ip & 0x0000FF00) >> 8),
+ (int) ((ip & 0x00FF0000) >> 16),
+ (int) ((ip & 0xFF000000) >> 24));
+
+ /* ip rule add table 44 */
+ sprintf(buffer, "/sbin/ip route %s %s dev %s table %s proto ax25rtd", (what ? "add" : "del"), ipa, dev, iproute2_table);
+
+ ret = system(buffer);
+ return ret;
+}
+
int set_route(config * config, long ip)
{
struct rtentry rt;
@@ -208,6 +234,9 @@ int set_route(config * config, long ip)
if (!config->ip_add_route)
return 0;
+ if (iproute2_table && *iproute2_table)
+ return iproute2(ip, config->dev, RT_ADD);
+
fds = socket(AF_INET, SOCK_DGRAM, 0);
memset((char *) &rt, 0, sizeof(rt));
@@ -236,6 +265,7 @@ int set_route(config * config, long ip)
return 1;
}
close(fds);
+
return 0;
}
@@ -250,6 +280,9 @@ int del_kernel_ip_route(char *dev, long ip)
if (config == NULL || !config->ip_add_route)
return 0;
+ if (iproute2_table && *iproute2_table)
+ return iproute2(ip, dev, RT_DEL);
+
fds = socket(AF_INET, SOCK_DGRAM, 0);
memset((char *) &rt, 0, sizeof(struct rtentry));
@@ -268,6 +301,7 @@ int del_kernel_ip_route(char *dev, long ip)
return 1;
}
close(fds);
+
return 0;
}