diff options
author | Thomas Osterried <thomas@osterried.de> | 2006-10-05 11:50:39 +0000 |
---|---|---|
committer | Thomas Osterried <thomas@osterried.de> | 2006-10-05 11:50:39 +0000 |
commit | bee3ed95da5f252caae391d51d3c4a0f210e14eb (patch) | |
tree | 10543b624b5359c414c22e8722d754ddd9eb6aef /ax25rtd | |
parent | 981af1193d960e8234e7b0c8fe048aca1ebdb6e9 (diff) |
- documentation (ax25rtd.8, ax25rtd.conf.5, ax25rtctl.8)
- new feature: advanced routing option
Diffstat (limited to 'ax25rtd')
-rw-r--r-- | ax25rtd/Makefile.am | 2 | ||||
-rw-r--r-- | ax25rtd/Makefile.in | 746 | ||||
-rw-r--r-- | ax25rtd/ax25rtctl.8 | 76 | ||||
-rw-r--r-- | ax25rtd/ax25rtd.8 | 45 | ||||
-rw-r--r-- | ax25rtd/ax25rtd.c | 5 | ||||
-rw-r--r-- | ax25rtd/ax25rtd.conf | 16 | ||||
-rw-r--r-- | ax25rtd/ax25rtd.conf.5 | 144 | ||||
-rw-r--r-- | ax25rtd/ax25rtd.h | 3 | ||||
-rw-r--r-- | ax25rtd/config.c | 8 | ||||
-rw-r--r-- | ax25rtd/listener.c | 36 |
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; } |