From 1b4023134b5ff6342301c8135b11df46546d2828 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Mon, 7 Jun 1999 10:24:56 +0200 Subject: Import ax25-tools 0.0.2 from tarball --- INSTALL | 3 +- Makefile.am | 3 + Makefile.in | 6 + README | 14 +- ax25/Makefile.am | 3 + ax25/Makefile.in | 10 +- ax25/ax25d.c | 15 +- ax25/axctl.c | 12 +- ax25/axparms.c | 11 +- ax25/axspawn.c | 11 ++ ax25/beacon.c | 12 +- ax25/mheard.c | 13 +- ax25/mheardd.c | 12 +- ax25/rxecho.c | 13 +- config.h.in | 18 +-- configure | 363 +++++++++++++++++++++++++++++------------------- configure.in | 16 ++- hdlcutil/Makefile.am | 2 + hdlcutil/Makefile.in | 6 + hdlcutil/baycom.9 | 62 +++++++++ hdlcutil/hdlcdrv.9 | 220 +++++++++++++++++++++++++++++ hdlcutil/sethdlc.8 | 282 +++++++++++++++++++++++++++++++++++++ hdlcutil/smdiag.8 | 78 +++++++++++ hdlcutil/smmixer.8 | 164 ++++++++++++++++++++++ hdlcutil/soundmodem.9 | 82 +++++++++++ kiss/Makefile.am | 3 + kiss/Makefile.in | 8 ++ kiss/kissattach.8 | 50 +++++++ kiss/kissattach.c | 12 +- kiss/kissnetd.8 | 26 ++++ kiss/kissparms.8 | 70 ++++++++++ kiss/kissparms.c | 14 +- kiss/mkiss.8 | 66 +++++++++ kiss/net2kiss.8 | 45 ++++++ netrom/Makefile.am | 2 + netrom/Makefile.in | 12 +- netrom/netromd.c | 16 ++- netrom/netromr.c | 15 ++ netrom/netromt.c | 15 ++ netrom/nodesave.c | 6 + netrom/nrattach.c | 19 ++- netrom/nrparms.c | 16 ++- pathnames.h | 28 ++++ rose/Makefile.am | 6 +- rose/Makefile.in | 11 +- rose/rsattach.c | 19 ++- rose/rsdwnlnk.c | 12 +- rose/rsparms.c | 12 +- rose/rsuplnk.c | 12 +- rose/rsusers.sh | 128 +++++++++++++++++ tcpip/Makefile.am | 2 + tcpip/Makefile.in | 9 +- tcpip/ttylinkd.c | 10 ++ user_call/Makefile.am | 4 +- user_call/Makefile.in | 14 +- user_call/ax25_call.8 | 24 ++++ user_call/ax25_call.c | 11 ++ user_call/netrom_call.8 | 28 ++++ user_call/netrom_call.c | 14 ++ user_call/rose_call.8 | 26 ++++ user_call/rose_call.c | 11 ++ 61 files changed, 1991 insertions(+), 216 deletions(-) create mode 100644 hdlcutil/baycom.9 create mode 100644 hdlcutil/hdlcdrv.9 create mode 100644 hdlcutil/sethdlc.8 create mode 100644 hdlcutil/smdiag.8 create mode 100644 hdlcutil/smmixer.8 create mode 100644 hdlcutil/soundmodem.9 create mode 100644 kiss/kissattach.8 create mode 100644 kiss/kissnetd.8 create mode 100644 kiss/kissparms.8 create mode 100644 kiss/mkiss.8 create mode 100644 kiss/net2kiss.8 create mode 100644 pathnames.h create mode 100755 rose/rsusers.sh create mode 100644 user_call/ax25_call.8 create mode 100644 user_call/netrom_call.8 create mode 100644 user_call/rose_call.8 diff --git a/INSTALL b/INSTALL index e1fab66..2d3d5e9 100644 --- a/INSTALL +++ b/INSTALL @@ -5,7 +5,7 @@ To make this library you will need the following: glibc2.1 A Modern kernel libtool - ax25-lib 0.0.2 or better + ax25-lib 0.0.3 or better To build it you type: ./configure @@ -16,3 +16,4 @@ By default, it will install the files in /usr/local. To change this so that binaries go in /usr and the conf files go in /etc type 'make install prefix=/usr' + - Craig Small diff --git a/Makefile.am b/Makefile.am index 68f5e15..d0f7bd0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,3 +9,6 @@ installconf: @for app in $(SUBDIRS); do $(MAKE) -C $$app installconf; done SUBDIRS = ax25 hdlcutil kiss netrom rose tcpip user_call + +EXTRA_DIST = pathnames.h + diff --git a/Makefile.in b/Makefile.in index dcdcc0e..4a82957 100644 --- a/Makefile.in +++ b/Makefile.in @@ -58,13 +58,19 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ SUBDIRS = ax25 hdlcutil kiss netrom rose tcpip user_call + +EXTRA_DIST = pathnames.h ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h diff --git a/README b/README index 0a8e484..b59dea9 100644 --- a/README +++ b/README @@ -1,17 +1,15 @@ AX25 Tools ========== -THESE TOOLS ARE ALPHA CODE AND IS ONLY BEEN RELEASE FOR DEVELOPERS FOR -DEBUGGING. - -This means if you are only installing this because it is the latest -and greatest and you don't understand how to diagnose bugs, then you -should probably not run it and go back to the ax25-utils-2* -packages. - You are supposed to use glibc 2.1 (libc6 unstable libraries) for this package. I have attempted to cater for glibc 2.0 users here. +More specifically, it is recommended that you use a glibc newer than +2 May 1999, I believe Debian libc6 package 2.1.1-5 will do. + +These tools were built on a Debian system, potato release, the libraries +are libc6 2.1.1-10 and ncurses 4.2-3.2. Kernel is 2.2.5 + - Craig Small diff --git a/ax25/Makefile.am b/ax25/Makefile.am index 55dc33d..6bfe46a 100644 --- a/ax25/Makefile.am +++ b/ax25/Makefile.am @@ -19,6 +19,9 @@ sbin_PROGRAMS = ax25d axctl axparms axspawn beacon bpqparms mheardd rxecho bin_PROGRAMS = mheard +LDADD = $(AX25_LIB) +axspawn_LDADD = $(AX25_LIB) $(UTIL_LIB) + man_MANS = ax25.4 ax25d.conf.5 axports.5 axspawn.conf.5 rxecho.conf.5 \ ax25d.8 axctl.8 axparms.8 axspawn.8 beacon.8 bpqparms.8 \ mheard.1 mheardd.8 rxecho.8 diff --git a/ax25/Makefile.in b/ax25/Makefile.in index ef14c64..2331d82 100644 --- a/ax25/Makefile.in +++ b/ax25/Makefile.in @@ -58,11 +58,15 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ etcfiles = ax25.profile ax25d.conf axspawn.conf rxecho.conf varfiles = mheard.dat @@ -71,6 +75,9 @@ sbin_PROGRAMS = ax25d axctl axparms axspawn beacon bpqparms mheardd rxecho bin_PROGRAMS = mheard +LDADD = $(AX25_LIB) +axspawn_LDADD = $(AX25_LIB) $(UTIL_LIB) + man_MANS = ax25.4 ax25d.conf.5 axports.5 axspawn.conf.5 rxecho.conf.5 ax25d.8 axctl.8 axparms.8 axspawn.8 beacon.8 bpqparms.8 mheard.1 mheardd.8 rxecho.8 @@ -116,7 +123,6 @@ axparms_LDADD = $(LDADD) axparms_DEPENDENCIES = axparms_LDFLAGS = axspawn_OBJECTS = axspawn.o -axspawn_LDADD = $(LDADD) axspawn_DEPENDENCIES = axspawn_LDFLAGS = beacon_OBJECTS = beacon.o @@ -459,7 +465,7 @@ distdir: $(DISTFILES) ax25d.o: ax25d.c ../config.h ../pathnames.h axctl.o: axctl.c ../config.h axparms.o: axparms.c ../config.h ../pathnames.h -axspawn.o: axspawn.c ../pathnames.h +axspawn.o: axspawn.c ../config.h ../pathnames.h beacon.o: beacon.c ../config.h bpqparms.o: bpqparms.c ../config.h mheard.o: mheard.c ../config.h ../pathnames.h diff --git a/ax25/ax25d.c b/ax25/ax25d.c index 8d45713..86d3895 100644 --- a/ax25/ax25d.c +++ b/ax25/ax25d.c @@ -113,6 +113,8 @@ #include #include +#include + #include #include #include @@ -121,9 +123,21 @@ #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include @@ -131,7 +145,6 @@ #include #include -#include #include "../pathnames.h" diff --git a/ax25/axctl.c b/ax25/axctl.c index 84422fd..3d7c780 100644 --- a/ax25/axctl.c +++ b/ax25/axctl.c @@ -5,19 +5,27 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H +#include +#else #include +#endif #include #include -#include - int main(int argc, char **argv) { struct ax25_ctl_struct ax25_ctl; diff --git a/ax25/axparms.c b/ax25/axparms.c index 5683d46..dbcae8f 100644 --- a/ax25/axparms.c +++ b/ax25/axparms.c @@ -5,18 +5,27 @@ #include #include +#include + #include #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include -#include #include "../pathnames.h" diff --git a/ax25/axspawn.c b/ax25/axspawn.c index 88381cf..35724a4 100644 --- a/ax25/axspawn.c +++ b/ax25/axspawn.c @@ -130,10 +130,21 @@ #include #include +#include + #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif + #include #include "../pathnames.h" diff --git a/ax25/beacon.c b/ax25/beacon.c index c9b989e..b36f979 100644 --- a/ax25/beacon.c +++ b/ax25/beacon.c @@ -4,18 +4,26 @@ #include #include +#include + #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include -#include - static int logging = FALSE; static int mail = FALSE; static int single = FALSE; diff --git a/ax25/mheard.c b/ax25/mheard.c index 2ab582c..6b3f21a 100644 --- a/ax25/mheard.c +++ b/ax25/mheard.c @@ -6,13 +6,22 @@ #include #include +#include + +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif + #include #include -#include - #include "../pathnames.h" struct PortRecord { diff --git a/ax25/mheardd.c b/ax25/mheardd.c index 2d98fad..a2b3b21 100644 --- a/ax25/mheardd.c +++ b/ax25/mheardd.c @@ -8,6 +8,8 @@ #include #include +#include + #include #include #include @@ -17,16 +19,22 @@ #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include #include -#include - #include "../pathnames.h" #define KISS_MASK 0x0F diff --git a/ax25/rxecho.c b/ax25/rxecho.c index 31334aa..633509e 100644 --- a/ax25/rxecho.c +++ b/ax25/rxecho.c @@ -53,18 +53,27 @@ #include #include +#include + #include #include #include + +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include -#include - #include "../pathnames.h" #define MAXCALLS 8 diff --git a/config.h.in b/config.h.in index 29a1390..3b84bf1 100644 --- a/config.h.in +++ b/config.h.in @@ -86,6 +86,15 @@ /* Define if you have the header file. */ #undef HAVE_LIMITS_H +/* Define if you have the header file. */ +#undef HAVE_NETAX25_AX25_H + +/* Define if you have the header file. */ +#undef HAVE_NETROM_NETROM_H + +/* Define if you have the header file. */ +#undef HAVE_NETROSE_ROSE_H + /* Define if you have the header file. */ #undef HAVE_PATHS_H @@ -107,15 +116,6 @@ /* Define if you have the header file. */ #undef HAVE_UNISTD_H -/* Define if you have the ax25 library (-lax25). */ -#undef HAVE_LIBAX25 - -/* Define if you have the util library (-lutil). */ -#undef HAVE_LIBUTIL - -/* Define if you have the z library (-lz). */ -#undef HAVE_LIBZ - /* Name of package */ #undef PACKAGE diff --git a/configure b/configure index 1e9bf5a..e29bd90 100755 --- a/configure +++ b/configure @@ -526,7 +526,7 @@ fi -VERSION=0.0.1 +VERSION=0.0.2 PACKAGE=ax25-tools ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do @@ -1108,8 +1108,13 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + + echo $ac_n "checking for zlibVersion in -lz""... $ac_c" 1>&6 -echo "configure:1113: checking for zlibVersion in -lz" >&5 +echo "configure:1118: checking for zlibVersion in -lz" >&5 ac_lib_var=`echo z'_'zlibVersion | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1117,7 +1122,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1143,28 +1148,22 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo z | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 +Z_LIB= fi echo $ac_n "checking for ax25_config_load_ports in -lax25""... $ac_c" 1>&6 -echo "configure:1160: checking for ax25_config_load_ports in -lax25" >&5 +echo "configure:1159: checking for ax25_config_load_ports in -lax25" >&5 ac_lib_var=`echo ax25'_'ax25_config_load_ports | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lax25 -lz $LIBS" +LIBS="-lax25 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1190,21 +1189,55 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo ax25 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 +AX25_LIB= +fi - LIBS="-lax25 $LIBS" +echo $ac_n "checking for axio_init in -lax25io""... $ac_c" 1>&6 +echo "configure:1200: checking for axio_init in -lax25io" >&5 +ac_lib_var=`echo ax25io'_'axio_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lax25io lz $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_t""no" 1>&6 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" fi +rm -f conftest* +LIBS="$ac_save_LIBS" +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + AX25IO_LIB="-lax25io" +else + echo "$ac_t""no" 1>&6 +AX25IO_LIB= +fi echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6 -echo "configure:1208: checking for initscr in -lncurses" >&5 +echo "configure:1241: checking for initscr in -lncurses" >&5 ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1212,7 +1245,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lncurses $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1244,9 +1277,8 @@ else NCURSES_LIB= fi - echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:1250: checking for openpty in -lutil" >&5 +echo "configure:1282: checking for openpty in -lutil" >&5 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1254,7 +1286,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1280,20 +1312,15 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo util | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 +UTIL_LIB= fi + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1297: checking how to run the C preprocessor" >&5 +echo "configure:1324: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1308,13 +1335,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1345: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1325,13 +1352,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1342,13 +1369,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1377,7 +1404,7 @@ echo "$ac_t""$CPP" 1>&6 # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:1381: checking for X" >&5 +echo "configure:1408: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -1439,12 +1466,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1513,14 +1540,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -1626,17 +1653,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:1630: checking whether -R must be followed by a space" >&5 +echo "configure:1657: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -1652,14 +1679,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -1691,7 +1718,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:1695: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:1722: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1699,7 +1726,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1732,7 +1759,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:1736: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:1763: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1740,7 +1767,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1780,12 +1807,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1784: checking for gethostbyname" >&5 +echo "configure:1811: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1829,7 +1856,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1833: checking for gethostbyname in -lnsl" >&5 +echo "configure:1860: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1837,7 +1864,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1878,12 +1905,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1882: checking for connect" >&5 +echo "configure:1909: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1927,7 +1954,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:1931: checking for connect in -lsocket" >&5 +echo "configure:1958: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1935,7 +1962,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1970,12 +1997,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:1974: checking for remove" >&5 +echo "configure:2001: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -2019,7 +2046,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:2023: checking for remove in -lposix" >&5 +echo "configure:2050: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2027,7 +2054,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2062,12 +2089,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:2066: checking for shmat" >&5 +echo "configure:2093: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -2111,7 +2138,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:2115: checking for shmat in -lipc" >&5 +echo "configure:2142: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2119,7 +2146,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2163,7 +2190,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:2167: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:2194: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2171,7 +2198,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2212,7 +2239,7 @@ fi # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:2216: checking for X" >&5 +echo "configure:2243: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -2274,12 +2301,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2310: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2348,14 +2375,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -2442,12 +2469,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2446: checking for ANSI C header files" >&5 +echo "configure:2473: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2455,7 +2482,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2472,7 +2499,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2490,7 +2517,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2511,7 +2538,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2522,7 +2549,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2546,12 +2573,12 @@ EOF fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:2550: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:2577: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2567,7 +2594,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:2571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2591,17 +2618,57 @@ for ac_hdr in fcntl.h limits.h paths.h strings.h sys/file.h sys/ioctl.h sys/time do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2595: checking for $ac_hdr" >&5 +echo "configure:2622: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +for ac_hdr in netax25/ax25.h netrom/netrom.h netrose/rose.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2662: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2629,7 +2696,7 @@ done cat > conftest.$ac_ext < EOF @@ -2644,7 +2711,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -2659,7 +2726,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < EOF @@ -2677,12 +2744,12 @@ rm -f conftest* echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2681: checking for working const" >&5 +echo "configure:2748: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2752,12 +2819,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:2756: checking for uid_t in sys/types.h" >&5 +echo "configure:2823: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -2786,12 +2853,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:2790: checking for pid_t" >&5 +echo "configure:2857: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2819,12 +2886,12 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:2823: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:2890: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2833,7 +2900,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:2837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -2854,12 +2921,12 @@ EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:2858: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:2925: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2867,7 +2934,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:2871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -2890,13 +2957,13 @@ fi if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:2894: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:2961: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -2914,7 +2981,7 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -2936,7 +3003,7 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:2940: checking for 8-bit clean memcmp" >&5 +echo "configure:3007: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2944,7 +3011,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -2972,7 +3039,7 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:2976: checking whether setpgrp takes no argument" >&5 +echo "configure:3043: checking whether setpgrp takes no argument" >&5 if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2980,7 +3047,7 @@ else { echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_setpgrp_void=no else @@ -3024,12 +3091,12 @@ EOF fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3028: checking return type of signal handlers" >&5 +echo "configure:3095: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3046,7 +3113,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:3050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3065,12 +3132,12 @@ EOF echo $ac_n "checking for strftime""... $ac_c" 1>&6 -echo "configure:3069: checking for strftime" >&5 +echo "configure:3136: checking for strftime" >&5 if eval "test \"`echo '$''{'ac_cv_func_strftime'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strftime=yes" else @@ -3115,7 +3182,7 @@ else echo "$ac_t""no" 1>&6 # strftime is in -lintl on SCO UNIX. echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6 -echo "configure:3119: checking for strftime in -lintl" >&5 +echo "configure:3186: checking for strftime in -lintl" >&5 ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3123,7 +3190,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3161,7 +3228,7 @@ fi fi echo $ac_n "checking for wait3 that fills in rusage""... $ac_c" 1>&6 -echo "configure:3165: checking for wait3 that fills in rusage" >&5 +echo "configure:3232: checking for wait3 that fills in rusage" >&5 if eval "test \"`echo '$''{'ac_cv_func_wait3_rusage'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3169,7 +3236,7 @@ else ac_cv_func_wait3_rusage=no else cat > conftest.$ac_ext < #include @@ -3200,7 +3267,7 @@ main() { } } EOF -if { (eval echo configure:3204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_wait3_rusage=yes else @@ -3225,12 +3292,12 @@ fi for ac_func in gethostname gettimeofday mkdir select socket strdup strerror strspn strstr strtol strtoul uname do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3229: checking for $ac_func" >&5 +echo "configure:3296: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3424,7 +3491,11 @@ s%@MAKEINFO@%$MAKEINFO%g s%@SET_MAKE@%$SET_MAKE%g s%@AWK@%$AWK%g s%@CC@%$CC%g +s%@Z_LIB@%$Z_LIB%g +s%@AX25_LIB@%$AX25_LIB%g +s%@AX25IO_LIB@%$AX25IO_LIB%g s%@NCURSES_LIB@%$NCURSES_LIB%g +s%@UTIL_LIB@%$UTIL_LIB%g s%@CPP@%$CPP%g s%@X_CFLAGS@%$X_CFLAGS%g s%@X_PRE_LIBS@%$X_PRE_LIBS%g diff --git a/configure.in b/configure.in index 4efad35..4e5dd00 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(ax25/ax25d.c) dnl For automake -VERSION=0.0.1 +VERSION=0.0.2 PACKAGE=ax25-tools AM_INIT_AUTOMAKE($PACKAGE,$VERSION) @@ -16,14 +16,17 @@ AC_PROG_CC AC_PROG_INSTALL dnl Checks for libraries. -AC_CHECK_LIB(z, zlibVersion) -dnl AC_SUBST(AX25_LIB) -dnl AC_CHECK_LIB(ax25, ax25_config_load_ports, AX25_LIB="-lax25", AX25_LIB=,-lz) -AC_CHECK_LIB(ax25, ax25_config_load_ports,,,-lz) +AC_SUBST(Z_LIB) +AC_SUBST(AX25_LIB) +AC_SUBST(AX25IO_LIB) AC_SUBST(NCURSES_LIB) +AC_SUBST(UTIL_LIB) +AC_CHECK_LIB(z, zlibVersion,Z_LIB="-lz",Z_LIB=) +AC_CHECK_LIB(ax25, ax25_config_load_ports, AX25_LIB="-lax25", AX25_LIB=) +AC_CHECK_LIB(ax25io, axio_init, AX25IO_LIB="-lax25io", AX25IO_LIB=,lz) AC_CHECK_LIB(ncurses, initscr,NCURSES_LIB="-lncurses",NCURSES_LIB=) +AC_CHECK_LIB(util, openpty, UTIL_LIB="-lutil",UTIL_LIB=) -AC_CHECK_LIB(util, openpty) AC_PATH_XTRA dnl Checks for header files. @@ -31,6 +34,7 @@ AC_PATH_X AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h limits.h paths.h strings.h sys/file.h sys/ioctl.h sys/time.h syslog.h unistd.h) +AC_CHECK_HEADERS(netax25/ax25.h netrom/netrom.h netrose/rose.h) dnl Check for ceratin functions in header files AC_HEADER_EGREP(ax25_fwd_struct, netax25/ax25.h, AC_DEFINE(HAVE_AX25_FWD_STRUCT)) diff --git a/hdlcutil/Makefile.am b/hdlcutil/Makefile.am index 32059d1..effca5e 100644 --- a/hdlcutil/Makefile.am +++ b/hdlcutil/Makefile.am @@ -5,6 +5,8 @@ sbin_PROGRAMS = setcrystal sethdlc smmixer smdiag man_MANS = sethdlc.8 smdiag.8 smmixer.8 baycom.9 hdlcdrv.9 soundmodem.9 +EXTRA_DIST = $(man_MANS) + setcrystal_SOURCES = \ setcrystal.c diff --git a/hdlcutil/Makefile.in b/hdlcutil/Makefile.in index edf7170..a0d16f9 100644 --- a/hdlcutil/Makefile.in +++ b/hdlcutil/Makefile.in @@ -58,16 +58,22 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ sbin_PROGRAMS = setcrystal sethdlc smmixer smdiag man_MANS = sethdlc.8 smdiag.8 smmixer.8 baycom.9 hdlcdrv.9 soundmodem.9 +EXTRA_DIST = $(man_MANS) + setcrystal_SOURCES = setcrystal.c diff --git a/hdlcutil/baycom.9 b/hdlcutil/baycom.9 new file mode 100644 index 0000000..5e91100 --- /dev/null +++ b/hdlcutil/baycom.9 @@ -0,0 +1,62 @@ +.\" Copyright 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) +.\" May be distributed under the GNU General Public License +.\" " +.TH BAYCOM 9 "2 October 1996" "Linux 2.1.x" "Kernel Reference Guide" +.SH NAME +baycom \- amateur (AX.25) packet radio network driver for baycom modems +.SH SYNOPSIS + +.nf +.B #include +.B #include +.fi + +.SH DESCRIPTION +The driver currently supports three different modems: ser12, par96 and +par97. +.SS ser12 +This is a very simple 1200 baud AFSK modem. The modem consists only +of a modulator/demodulator chip, usually a TI TCM3105. The computer +is responsible for regenerating the receiver bit clock. The modem +connects to a serial port, hence the name. Since the serial port is +not used as an async serial port, the kernel driver for serial ports +cannot be used, and this driver only supports standard serial +hardware (8250, 16450, 16550). +.SS par96 +This is a modem for 9600 baud FSK compatible to the G3RUH standard. +The modem does all the filtering and regenerates the receiver clock. +Data is transferred from and to the PC via a shift register. +The shift register is filled with 16 bits and an interrupt is +signalled. The PC then empties the shift register in a burst. This +modem connects to the parallel port, hence the name. +.SS par97 +This is a redesign of the par96 modem by Henning Rech, DF9IC. The +modem is protocol compatible to par96, but uses only three low +power ICs and can therefore be fed from the parallel port and +does not require an additional power supply. + +.SH "IOCTL CALLS" +The \fBioctl\fP calls follow the implementation in the \fIhdlcdrv\fP. + +.TP +.B BAYCOMCTL_GETMODEMTYPE +returns the modem type (i.e. \fIser12\fP or \fIpar96\fP) and the +options in effect (currently only the source of the DCD signal) +.TP +.B BAYCOMCTL_SETMODEMTYPE +sets the modem type and the options. Only superuser can do this. +.TP +.B BAYCOMCTL_GETDEBUG +return some debugging values. Not always available. + + +.SH "SEE ALSO" +.BR baycom " (9), " soundmodem " (9)," +linux/drivers/net/hdlcdrv.c, + +.SH AUTHOR +baycom was written by Thomas Sailer, HB9JNX/AE4WA, (sailer@ife.ee.ethz.ch). + + + + diff --git a/hdlcutil/hdlcdrv.9 b/hdlcutil/hdlcdrv.9 new file mode 100644 index 0000000..3a46948 --- /dev/null +++ b/hdlcutil/hdlcdrv.9 @@ -0,0 +1,220 @@ +.\" Copyright 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) +.\" May be distributed under the GNU General Public License +.\" " +.TH HDLCDRV 9 "2 October 1996" "Linux 2.1.x" "Kernel Reference Guide" +.SH NAME +hdlcdrv \- HDLC amateur (AX.25) packet radio network driver +.SH SYNOPSIS + +.B #include + +.B linux/drivers/net/hdlcdrv.c + +.BI "extern inline void hdlcdrv_putbits(struct hdlcdrv_state * " s ", unsigned int " bits ");" + +.BI "extern inline unsigned int hdlcdrv_getbits(struct hdlcdrv_state * " s ");" + +.BI "extern inline void hdlcdrv_channelbit(struct hdlcdrv_state * " s ", unsigned int " bit ");" + +.BI "extern inline void hdlcdrv_setdcd(struct hdlcdrv_state * " s " , int " dcd ");" + +.BI "extern inline int hdlcdrv_ptt(struct hdlcdrv_state * " s ");" + +.BI "void hdlcdrv_receiver(struct device *, struct hdlcdrv_state *);" + +.BI "void hdlcdrv_transmitter(struct device *, struct hdlcdrv_state *);" + +.BI "void hdlcdrv_arbitrate(struct device *, struct hdlcdrv_state *);" + +.BI "int hdlcdrv_register_hdlcdrv(struct device * " dev ", struct hdlcdrv_ops * " ops ", unsigned int " privsize ", char * " ifname ", unsigned int " baseaddr " , unsigned int " irq ", unsigned int " dma "); + +.BI "int hdlcdrv_unregister_hdlcdrv(struct device * " dev ");" + +.SH DESCRIPTION +This driver should ease the implementation of simple AX.25 packet radio +modems where the software is responsible for the HDLC encoding and decoding. +Examples of such modems include the \fIbaycom\fP family and the +\fIsoundcard\fP modems. + +This driver provides a standard Linux network driver interface. +It can even be compiled if Kernel AX.25 is not enabled in the Linux +configuration. This allows this driver to be used even for userland +AX.25 stacks such as \fIWampes\fP or \fITNOS\fP, with the help of +the \fInet2kiss\fP utility. + +This driver does not access any hardware; it is the responsibility of +an additional hardware driver such as \fIbaycom\fP or \fIsoundmodem\fP +to access the hardware and derive the bitstream to feed into this +driver. + +The hardware driver should store its state in a structure of the +following form: + +.nf +struct hwdrv_state { + struct hdlc_state \fIhdrv\fP; + + ... the drivers private state +}; +.fi + +A pointer to this structure will be stored in \fIdev->priv\fP. + +\fBhdlcdrv_register_hdlcdrv\fP registers a hardware driver to the +hdlc driver. \fIdev\fP points to storage for the \fIdevice\fP structure, +which must be provided by the hardware driver, but gets initialized by +this function call. \fIops\fP provides information about the hardware driver +and its calls. \fIprivsize\fP should be \fIsizeof(struct\ hwdrv_state)\fP. +\fIifname\fP specifies the name the interface should get. \fIbaseaddr\fP, +\fIirq\fP and \fIdma\fP are simply stored in the \fIdevice\fP structure. +After this function succeeds, the interface is registered with the kernel. +It is not running, however, this must be done with +\fBifconfig\ \fP\fIifname\fP\fB\ up\fP. + +\fBhdlcdrv_unregister_hdlcdrv\fP shuts the interface down and unregisters +it with the kernel. + +\fBhdlcdrv_putbits\fP delivers 16 received bits for processing to the HDLC +driver. This routine merely stores them in a buffer and does not process them. +It is thus fast and can be called with interrupts off. The least significant +bit should be the first one received. + +\fBhdlcdrv_getbits\fP requests 16 bits from the driver for transmission. +The least significant bit should be transmitted first. This routine takes +them from a buffer and is therefore fast. It can be called with interrupts +off. + +\fBhdlcdrv_channelbit\fP puts a single bit into a buffer, which can be +displayed with \fBsethdlc\ \-s\fP. It is intended for driver debugging +purposes. + +\fBhdlcdrv_setdcd\fP informs the HDLC driver about the channel state +(i.e. if the hardware driver detected a data carrier). This information +is used in the channel access algorithm, i.e. it prevents the driver +from transmitting on a half duplex channel if there is already a +transmitter on air. + +\fBhdlcdrv_ptt\fP should be called by the hardware driver to determine +if it should start or stop transmitting. The hardware driver does not +need to worry about keyup delays. This is done by the HDLC driver. + +\fBhdlcdrv_receiver\fP actually processes the received bits delivered +by \fBhdlcdrv_putbits\fP. It should be called with interrupts on. +It guards itself against reentrance problems. + +\fBhdlcdrv_transmitter\fP actually prepares the bits to be transmitted. +It should be called with interrupts on. It guards itself against +reentrance problems. + +\fBhdlcdrv_arbitrate\fP does the channel access algorithm +(p-persistent CSMA). It should be called once every 10ms. Note that the +hardware driver \fBmust\fP set the \fIhdrv.par.bitrate\fP field prior +to starting operation so that \fBhdlcdrv\fP can calculate the transmitter +keyup delay correctly. + +.SH "HARDWARE DRIVER ENTRY POINTS" +The hardware driver should provide the following information to +the HDLC driver: + +.nf +struct hdlcdrv_ops { + const char *\fIdrvname\fP; + const char *\fIdrvinfo\fP; + int (*\fIopen\fP)(struct device *); + int (*\fIclose\fP)(struct device *); + int (*\fIioctl\fP)(struct device *, struct ifreq *, int); +}; +.fi + +\fBdrvname\fP and \fBdrvinfo\fP are just for informational purposes. + +The following routines receive a pointer to the \fIdevice\fP structure, +where they may find the io address, irq and dma channels. + +\fBopen\fP must be provided. It is called during +\fBifconfig\ \fP\fIifname\fP\fB\ up\fP and should check for the hardware, +grab it and initialize it. It usually installs an interrupt handler +which then gets invoked by the hardware. + +\fBclose\fP must be provided. It is called during +\fBifconfig\ \fP\fIifname\fP\fB\ down\fP and should undo all actions done +by \fBopen\fP, i.e. release io regions and irqs. + +\fBioctl\fP may be provided to implement device specific ioctl's. + +.SH "IOCTL CALLS" + +The driver only responds to \fISIOCDEVPRIVATE\fP. Parameters are passed +from and to the driver using the following struct: + +.nf +struct hdlcdrv_ioctl { + int cmd; + union { + struct hdlcdrv_params mp; + struct hdlcdrv_channel_params cp; + struct hdlcdrv_channel_state cs; + unsigned int calibrate; + unsigned char bits; + } data; +}; +.fi + +Since the 16 private \fIioctl\ request\fP numbers for network drivers +were not enough, the driver implements its own \fIsub\ request\fP number +with \fIcmd\fP. The following numbers are implemented: + +.TP +.B HDLCDRVCTL_GETMODEMPAR +returns the IO parameters of the modem in \fIdata.mp\fP. This includes +the io address, irq, eventually dma, and ports to output a PTT signal. + +.TP +.B HDLCDRVCTL_SETMODEMPAR +sets the modem parameters. Only superuser can do this. Parameters +can only be changed if the interface is not running (i.e. down). + +.TP +.B HDLCDRVCTL_GETCHANNELPAR +returns the channel access parameters. + +.TP +.B HDLCDRVCTL_SETCHANNELPAR +sets the channel access parameters. Only superuser can do this. +They may also be changed using the \fBkissparms\fP command if using +kernel AX.25 or the \fBparam\fP command of \fB*NOS\fP. + +.TP +.B HDLCDRVCTL_GETSTAT +statistics and status information, such as if a carrier is detected +on the channel and if the interface is currently transmitting. + +.TP +.B HDLCDRVCTL_CALIBRATE +instructs the driver to transmit a calibration pattern for the +specified number of seconds. + +.TP +.B HDLCDRVCTL_GETSAMPLES +returns the bits delivered by the hardware driver with +\fIhdlcdrv_channelbit\fP. The bits are returned 8 at a time +with the least significant bit the first one. This command may not be +available, depending on debugging settings. + +.TP +.B HDLCDRVCTL_GETBITS +returns the bits delivered by the hardware driver to the HDLC decoder. +The bits are returned 8 at a time with the least significant bit the +first one. This command may not be available, depending on debugging +settings. + +.SH "SEE ALSO" +.BR baycom "\ (9), " soundmodem "\ (9), " sethdlc "\ (8), " +linux/drivers/net/hdlcdrv.c, + +.SH AUTHOR +hdlcdrv was written by Thomas Sailer, HB9JNX/AE4WA, (sailer@ife.ee.ethz.ch). + + + + diff --git a/hdlcutil/sethdlc.8 b/hdlcutil/sethdlc.8 new file mode 100644 index 0000000..d232b6c --- /dev/null +++ b/hdlcutil/sethdlc.8 @@ -0,0 +1,282 @@ +.\" Copyright 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) +.\" May be distributed under the GNU General Public License +.\" +.\" portions from setserial.8 by Rickard E. Faith (faith@cs.unc.edu) +.\" " +.TH SETHDLC 8 "1 October 1996" "Sethdlc 0.1" "Linux Programmer's Manual" +.SH NAME +sethdlc \- get/set Linux HDLC packet radio modem driver port information +.SH SYNOPSIS +.B sethdlc +.B "[ \-bdhs ]" +.B "[\-i device]" + +.B "sethdlc [\-i device] -c" +cal + +.B "sethdlc\ -p" +.B "[\-i\ device]" +.BR "[\ mode\ " mode "\ ]" +.BR "[\ io\ " iobase "\ ]" +.BR "[\ irq\ " irq "\ ]" +.BR "[\ dma\ " dma "\ ]" +.BR "[\ dma2\ " dma2 "\ ]" +.BR "[\ serio\ " seriobase "\ ]" +.BR "[\ pario\ " pariobase "\ ]" +.BR "[\ midiio\ " midiiobase "\ ]" +.BR "[\ options\ " options "\ ]" + +.B "sethdlc\ -a" +.B "[\-i\ device]" +.BR "[\ txd\ " txdelay "\ ]" +.BR "[\ txtail\ " txtail "\ ]" +.BR "[\ slot\ " slottime "\ ]" +.BR "[\ ppersist\ " ppersistence "\ ]" +.BR "[\ full\ ]" +.BR "[\ half\ ]" + + +.SH DESCRIPTION +.B sethdlc +is a program designed to set and/or report the configuration information +associated with a soundcard radio modem port. This information includes the +modem type, what I/O port, IRQ and DMA channel a particular modem +port is using, and where to output a transmitter keying (PTT) signal. + +With the +.B \-p +option, +.B sethdlc +sets and/or reports the port configuration. + +With the +.B \-a +option, +.B sethdlc +sets and/or reports the AX.25 channel access parameters. These parameters can also +be set with the +.I kissparms +utility. + +With the +.B \-c +option, +.B sethdlc +instructs the driver to send a calibration pattern for +.I cal +seconds. + +Without the +.B \-p, +.B \-a +and +.B \-c +option, +.B sethdlc +will stay in the foreground and display received packets. The AX.25 header +and eventually a FlexNet compressed header are decoded. CTRL-C terminates +.B sethdlc. +Specifying additional options, +.B sethdlc +may display additional information. + + +.SH OPTIONS +.B sethdlc +accepts the following options: + +.TP +.B \-b +Trace the bits at the output of the demodulator, after RX clock recovery. +This option is only available if \fBsethdlc\fP +and the soundcard modem kernel driver is compiled with debugging support on. +This is useful for driver debugging. +.TP +.B \-d +Trace DCD, PTT and other status information on stdout. \fBsethdlc\fP +displays two times per second a line containing these informations. +.TP +.B \-h +Display an overview of the available command line parameters and exit. +.TP +.B \-i +The +.I device +argument specifies the HDLC modem device which should be configured or +interrogated. It will usually have the following form: +\fIbc[0-3]\fP for the baycom driver and +\fIsm[0-3]\fP for the soundcard modem driver. +.TP +.B \-s +Trace the bits at the demodulator output, \fIbefore\fP +the RX clock recovery, to stdout. This option is only available the modem driver +is compiled with debugging support on. It may not be available on some modem, such +as the \fIpar96\fP. + +.SH PARAMETERS +The following parameters can be assigned to a soundcard radio modem port. + +All numerical parameter values are assumed to be in decimal unless preceeded by "0x". + +The +.B mode +parameter sets the type of hardware and the operating mode of the driver. +\fIser12\fP and \fIpar96\fP are valid modes for the \fBbaycom\fP driver. +A star "\fI*\fP" may be added to enable software DCD. The \fBmode\fP string +format of the \fBsoundmodem\fP driver is as follows: \fIhw:mode\fP. +\fIhw\fP may be either \fIsbc\fP, \fIwss\fP or \fIwssfdx\fP. The first +one specifies SoundBlaster compatible soundcards, the second one +WindowsSoundSystem compatible hardware, and the third one WSS fullduplex +operation (which currently works with Crystal Semiconductor Chipsets +CS423[126]). The \fImode\fP portion may be \fIafsk1200\fP or \fIfsk9600\fP. +Optionally, the receive and transmit modes may be different +(\fIhw:txmode.rxmode\fP). + +The +.B ioport +parameter sets the I/O port address. Typical values for the \fIser12\fP modem are +0x3f8, 0x2f8, 0x3e8 or 0x2e8, for the \fIpar96\fP modem 0x378, 0x278 or 0x3bc, for +the \fIsbc\fP modems 0x220 and for the \fIwss\fP modems 0x530, 0x608, 0xe80 or 0xf40. + +The +.B irq +parameter sets the hardware IRQ number. Typical values for the \fIser12\fP modem are +4 and 3, for the \fIpar96\fP modem 7 or 5, for the \fIsbc\fP modems are 7 or 5 and for +the \fIwss\fP modems, any free IRQ from the set 2, 7, 9, 10, 11 will do. The driver +automatically configures the WSS soundcard to the correct IRQ. + +The +.B dma +parameter sets the hardware DMA number. Typical values for the \fIsbc\fP modems are +1 or 0 and for the \fIwss\fP modems, any free DMA from 0 to 3 (except 2) will do. +The driver automatically configures the WSS soundcard to the correct DMA. +The Baycom modems do not need DMA. + +The +.B dma2 +parameter sets the second hardware DMA number. This is only needed for +full duplex operation with the \fBsoundmodem\fP driver. + +The +.B seriobase +parameter optionally sets the address of a serial port, where +the driver will output a PTT signal at the TxD and RTS pins, and a DCD +signal at the DTR pin. As Baycom modems do have their own PTT pin, this +parameter is not used by the Baycom modem driver. + +The +.B pariobase +parameter optionally sets the address of a LPT port where +the driver will output a PTT signal on the DATA0 line and a DCD signal +on the DATA1 line. As Baycom modems do have their own PTT pin, this +parameter is not used by the Baycom modem driver. + +The +.B midiiobase +parameter optionally sets the address of a MPU401 compatible +MIDI port, where the driver will output a PTT signal. Since the MIDI port is +effectively an UART and therefore cannot output a DC signal, the output must +be fed through a retriggerable monoflop with a period of about 15ms. See +.I http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html +for a sample schematic diagram. As Baycom modems do have their own PTT pin, +this parameter is not used by the Baycom modem driver. + +The +.B txdelay +sets the transmitter keyup delay time. Unlike \fIkissparms\fP, the unit is +\fItens of ms\fP. This is the time the transmitter needs to switch its PA +on and for its frequency synthesizer to settle. Typical values for a handheld +transceiver are 200ms (i.e. 20), and for a good crystal driven transceiver +20ms (i.e. 2). + +The +.B txtail +sets the time PTT is held after the last packet. Unlike \fIkissparms\fP, the unit +is \fItens of ms\fP. Do not set this value to 0. Most modems need some extra +time to actually clock the last bits out to the transmitter. + +The +.B slottime +parameter specifies how often the channel access algorithm is executed. +Unlike \fIkissparms\fP, the unit is \fItens of ms\fP. Unless you have very +specific requirements, set this to 100ms (i.e. 10). + +The +.B ppersist +sets how "eagerly" the station starts to transmit as soon as the channel +gets free. The optimum value is 256 divided by the number of stations on the +channel. (This should really be done automatically by the L2) + +.B full +sets the modem to full duplex mode. Note that some modems do not actually support +full duplex mode, in this case this parameter makes the modem start its transmission +as soon as it gets packets from the upper layer, without waiting for the channel +to become free. This is needed by some implementations of alternative channel +access algorithms, e.g. \fIDAMA\fP. + +.B half +sets the modem to half duplex mode. + +.SH CONSIDERATIONS OF CONFIGURING BAYCOM PORTS +It is important to note that sethdlc merely tells the Linux kernel +where it should expect to find the I/O port and IRQ lines of a +particular serial port. It does +.I not +configure the hardware to use a +particular I/O port. In order to do that, you will need to physically +program the serial board, usually by setting some jumpers or by +switching some DIP switches. + +This section will provide some pointers in helping you decide how you +would like to configure your baycom ports. + +The "standard MS-DOS" port associations are given below: + +.nf +.RS +COM1, port 0x3f8, irq 4 +COM2, port 0x2f8, irq 3 +COM3, port 0x3e8, irq 4 +COM4, port 0x2e8, irq 3 +LPT1, port 0x378, irq 7 +LPT1 (on hercules graphics adapter), port 0x3bc, irq 7 +LPT1, port 0x278, irq 5 +.RE +.fi + +.SH CONSIDERATIONS OF CONFIGURING SOUNDCARD RADIO MODEM PORTS +Some cards need to be initialized before they act as a WSS or SoundBlaster +compatible card. This driver does \fInot\fP do this. You can use the standard +linux sound driver, if compiled as a module. Just load the sound driver +(insmod sound) and remove it again (rmmod sound). The card should then be +configured for either soundblaster or WSS compatibility. If this does not work +for some reason, you'll have to write your own soundcard configuration +utility. This is not as complicated as it sounds; it can be done from +user space (but requiring root privileges) using \fIioperm\fP and/or \fIiopl\fP. + +It is important that the audio levels of your radio match those of the +soundcard. To help achieve this, there are two utilities: \fIsmdiag\fP +and \fIsmmixer\fP. See their respective manpage. + +The sound driver and the soundcard modem driver are mutually exclusive, i.e. they +cannot both access the same soundcard at the same time. Even worse, the sound driver +reserves the soundcard as soon as it gets loaded. The souncard modem driver however +reserves the card only when the interface is started, i.e. during ifconfig sm[0-3] up. + +9600 baud may not currently work on SoundBlaster cards with DSP revision 4.x, i.e. +SB16 and SB32 AWE. This is because they seem to not be fully backwards compatible. + +.SH CAUTION +CAUTION: Using an invalid port can lock up your machine. + +.SH "SEE ALSO" +.nf +.BR smdiag "\ (8), " smmixer "\ (8), " kissparms "\ (8)," +linux/drivers/net/hdlcdrv.c, +linux/drivers/net/baycom.c, +linux/drivers/net/soundmodem.c +.fi + +.SH AUTHOR +sethdlc was written by Thomas Sailer, HB9JNX/AE4WA (sailer@ife.ee.ethz.ch). +Inspired by setserial. diff --git a/hdlcutil/smdiag.8 b/hdlcutil/smdiag.8 new file mode 100644 index 0000000..276a1b7 --- /dev/null +++ b/hdlcutil/smdiag.8 @@ -0,0 +1,78 @@ +.\" Copyright 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) +.\" May be distributed under the GNU General Public License +.\" " +.TH SMDIAG 8 "1 October 1996" "Smdiag 0.1" "Linux Programmer's Manual" +.SH NAME +smdiag \- Linux soundcard packet radio modem driver diagnostics utility +.SH SYNOPSIS +.B smdiag +.B "[\-i device]" +.B "[\-d display]" +.B "[ \-ce ]" + +.SH DESCRIPTION +.B smdiag +may help to adjust the audio levels of the soundcard modem driver, as well +as to control the quality of the radio link. It may either display an +oscilloscope like view of the input signal, or display an eye diagram. +The display may be gated with DCD, i.e. only updated if the modem detects +a data carrier. + +.SH OPTIONS +.B smdiag +accepts the following options: + +.TP +.B \-i +The +.I device +argument specifies the soundcard modem device which should be configured or +interrogated. It will usually have the following form: +.I sm[0-3]. +.TP +.B \-d +sets the address of the X server to display the window. +.TP +.B \-h +display an overview of the available command line parameters and exit. +.TP +.B \-c +toggle the carrier gating of the display. +.TP +.B \-e +display an eye diagram (overlay of the synchronized demodulator output) +instead of an oscilloscope view of the input signal. + +.SH KEYS +.TP +.B C +clears the window +.TP +.B D +toggles the DCD gating. +.TP +.B E +displays an eye diagram +.TP +.B I +displays the input signal +.TP +.B Q +quits +.I smdiag + +.SH BUGS +.B smdiag +Reacts sluggishly to keypresses. The window size is fixed. For speed reasons, +two square root operations per sample are not implemented in the AFSK 1200 +baud modes. The eye diagram for the AFSK 1200 baud mode is therefore +distorted. + +.SH "SEE ALSO" +.BR smmixer " (8), " sethdlc " (8)," +linux/drivers/net/soundmodem.c + +.SH AUTHOR +smdiag was written by Thomas Sailer (sailer@ife.ee.ethz.ch). + + diff --git a/hdlcutil/smmixer.8 b/hdlcutil/smmixer.8 new file mode 100644 index 0000000..c6fc2bb --- /dev/null +++ b/hdlcutil/smmixer.8 @@ -0,0 +1,164 @@ +.\" Copyright 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) +.\" May be distributed under the GNU General Public License +.\" " +.TH SMMIXER 8 "1 October 1996" "Smmixer 0.1" "Linux Programmer's Manual" +.SH NAME +smmixer \- get/set Linux soundcard packet radio modem driver mixer +.SH SYNOPSIS +.B smmixer +.B "[\-i device]" +.BR "[ " params " ]" + +.SH DESCRIPTION +.B smmixer +displays and/or sets the input source and input and output levels of a +soundcard modem port. + +.SH OPTIONS +.B smmixer +accepts the following option: + +.TP +.B \-i +The +.I device +argument specifies the soundcard modem device which should be configured or +interrogated. It will usually have the following form: +.I sm[0-3]. + +.SH PARAMETERS +The +.B AD1848 (WSS) +mixer accepts the following parameters: +.TP +.B ol=val +sets the level of the left output to the specified value. Legal values are from +-100..0dB. +.TP +.B or=val +sets the level of the right output to the specified value. Legal values are from +-100..0dB. +.TP +.B o=val +sets the level of both outputs to the specified value. Legal values are from +-100..0dB. +.TP +.B il=val +sets the level of the left input to the specified value. Legal values are from +0..43dB. +.TP +.B ir=val +sets the level of the right input to the specified value. Legal values are from +0..43dB. +.TP +.B i=val +sets the level of both inputs to the specified value. Legal values are from +0..43dB. +.TP +.B sl=val +sets the source of the left input to the specified value. Legal values are +.I line, aux1, mic +or +.I dac. +.TP +.B sr=val +sets the source of the right input to the specified value. Legal values are +.I line, aux1, mic +or +.I dac. +.TP +.B s=val +sets the source of both inputs to the specified value. Legal values are +.I line, aux1, mic +or +.I dac. + +.in \n[IN]u +The +.B CT1335 (SB2.x) +mixer accepts the following parameter: +.TP +.B o=val +sets the output level to the specified value. Legal values are from -46..0dB. + +.in \n[IN]u +The +.B CT1345 (SBPro) +mixer accepts the following parameters: +.TP +.B ol=val +sets the level of the left output to the specified value. Legal values are from +-46..0dB. +.TP +.B or=val +sets the level of the right output to the specified value. Legal values are from +-46..0dB. +.TP +.B o=val +sets the level of both outputs to the specified value. Legal values are from +-46..0dB. +.TP +.B s=val +sets the input source to the specified value. Legal values are +.I mic, cd +or +.I line. + +.in \n[IN]u +The +.B CT1745 (SB16, SB32 AWE) +mixer accepts the following parameters: +.TP +.B ol=val +sets the level of the left output to the specified value. Legal values are from +-62..18dB. +.TP +.B or=val +sets the level of the right output to the specified value. Legal values are from +-62..18dB. +.TP +.B o=val +sets the level of both outputs to the specified value. Legal values are from +-62..18dB. +.TP +.B il=val +sets the level of the left input to the specified value. Legal values are from +-62..18dB. +.TP +.B ir=val +sets the level of the right input to the specified value. Legal values are from +-62..18dB. +.TP +.B i=val +sets the level of both inputs to the specified value. Legal values are from +-62..18dB. +.TP +.B s=val +enables the specified value as a source. Legal values are +.I line, line.l, line.r, midi, midi.l, midi.r, cd, cd.l, cd.r +or +.I mic. + +.SH CONSIDERATIONS +It is important that the audio levels of your radio match those of the +soundcard. To help achieve this, use the +.I smdiag +utility. + +This utility can only be used after the interface is started up, i.e. after +ifconfig sm? up. + +The sound driver and the soundcard modem driver are mutually exclusive, i.e. they +cannot both access the same soundcard at the same time. Even worse, the sound driver +reserves the soundcard as soon as it gets loaded. The souncard modem driver however +reserves the card only when the interface is started, i.e. during ifconfig if up. + +9600 baud may not currently work on SoundBlaster cards with DSP revision 4.x, i.e. +SB16 and SB32 AWE. This is because they seem to not be fully backwards compatible. + +.SH "SEE ALSO" +.BR smdiag " (8), " sethdlc " (8)," +linux/drivers/net/soundmodem.c + +.SH AUTHOR +smmixer was written by Thomas Sailer (sailer@ife.ee.ethz.ch). diff --git a/hdlcutil/soundmodem.9 b/hdlcutil/soundmodem.9 new file mode 100644 index 0000000..c65837c --- /dev/null +++ b/hdlcutil/soundmodem.9 @@ -0,0 +1,82 @@ +.\" Copyright 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) +.\" May be distributed under the GNU General Public License +.\" " +.TH SOUNDMODEM 9 "2 October 1996" "Linux 2.1.x" "Kernel Reference Guide" +.SH NAME +soundmodem \- amateur (AX.25) packet radio network driver for soundcards +.SH SYNOPSIS + +.nf +.B #include +.B #include +.fi + +.SH DESCRIPTION +The driver currently supports both 1200 baud AFSK and 9600 baud FSK +(G3RUH compatible) using a standard SoundBlaster compatible or +WindowsSoundSystem compatible soundcard. The whole decoding is done +in software, so you definitely do not want to use it on a 386SX class +machine. + +.SH "KEYING THE TRANSMITTER" +Soundcards do not have a DC coupled output that could serve as a +PTT signal. So there are basically for possibilities for +obtaining a PTT signal. Sample schematic diagrams can be found on +\fIhttp://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html\fP. +.SS "VOX circuitry" +A simple VOX circuitry that detects output signals at the output of +the soundcard can be used, especially as it can be built with a single +transistor plus a few passive components and typical soundcards have +strong output signals. +.SS "Parallel Port" +A parallel port line can also be used to signal PTT. If selected, +the PTT signal is output on the DATA0 line and DCD is output on the +DATA1 line. +.SS "Serial Port" +A standard serial port (8250, 16450, 16550) can also be used to output +PTT. PTT is output on RTS and TxD, while DCD is output on DTR. +.SS "MPU401 MIDI Port" +The MIDI port is basically an asynchronous serial interface and +thus cannot output a straight DC level, however it may be used if +connected through a retriggerable monoflop with about 15ms pulse +duration. Note that only newer SoundBlaster models have a genuine +MPU401 MIDI port. The older SB MIDI port cannot be used. + +.SH "IOCTL CALLS" +The \fBioctl\fP calls follow the implementation in the \fIhdlcdrv\fP. + +.TP +.B SMCTL_GETMODEMTYPE +returns the modem type (i.e. \fISBC1200\fP, \fISBC9600\fP, \fIWSS1200\fP +or \fIWSS9600\fP) +.TP +.B SMCTL_SETMODEMTYPE +sets the modem type. Only superuser can do this. +.TP +.B SMCTL_GETMIXER +returns the mixer type and the contents of the specified +mixer register. +.TP +.B SMCTL_SETMIXER +sets the specified mixer register, if the specified +mixer type matches the mixer type of the soundcard. Only +superuser can do this. +.TP +.B SMCTL_DIAGNOSE +returns the contents of the diagnose buffer, which is used by +\fIsmdiag\fP to display the eye and oscilloscope diagrams. +.TP +.B SMCTL_GETDEBUG +return some debugging values. Not always available. + + +.SH "SEE ALSO" +.BR baycom " (9), " soundmodem " (9)," smdiag " (8)," smmixer " (9)," +linux/drivers/net/hdlcdrv.c, + +.SH AUTHOR +soundmodem was written by Thomas Sailer, HB9JNX/AE4WA, (sailer@ife.ee.ethz.ch). + + + + diff --git a/kiss/Makefile.am b/kiss/Makefile.am index 7a130da..82db252 100644 --- a/kiss/Makefile.am +++ b/kiss/Makefile.am @@ -3,6 +3,9 @@ installconf: sbin_PROGRAMS = kissattach kissnetd kissparms mkiss net2kiss +LDADD= $(AX25_LIB) + man_MANS = kissattach.8 kissnetd.8 kissparms.8 mkiss.8 net2kiss.8 +EXTRA_DIST = $(man_MANS) diff --git a/kiss/Makefile.in b/kiss/Makefile.in index 883ef04..ba5b17c 100644 --- a/kiss/Makefile.in +++ b/kiss/Makefile.in @@ -58,15 +58,23 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ sbin_PROGRAMS = kissattach kissnetd kissparms mkiss net2kiss +LDADD = $(AX25_LIB) + man_MANS = kissattach.8 kissnetd.8 kissparms.8 mkiss.8 net2kiss.8 + +EXTRA_DIST = $(man_MANS) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = diff --git a/kiss/kissattach.8 b/kiss/kissattach.8 new file mode 100644 index 0000000..eabc2a1 --- /dev/null +++ b/kiss/kissattach.8 @@ -0,0 +1,50 @@ +.TH KISSATTACH 8 "13 October 1996" Linux "Linux System Managers Manual" +.SH NAME +kissattach \- Attach a KISS interface +.SH SYNOPSIS +.B kissattach [-i inetaddr] [-l] [-m mtu] [-v] tty port +.SH DESCRIPTION +.LP +Attach a KISS interface to what is normally a tty line connected to a TNC in +KISS mode. This program will turn itself into a background process. To down +an interface send its kissattach process a SIGKILL. +.LP +.B Kissattach +takes many of the parameters for the port from the axports(5) file. If the +speed parameter in the file is not equal to zero then it is used for the +serial port speed, a zero value means that no speed is set. The paclen +parameter is used for the device mtu unless overridden by a value on the +command line. +.LP +The tty argument will typically be that of a serial port with a KISS TNC +attached, although it could be a psuedo tty or a KISS port emulator such as +an SCC card. The port arguments is the name of a port as given in the +axports(5) file. +.SH OPTIONS +.TP 16 +.BI "\-i inetaddr" +Set the internet address of the interface. This address may either be a +dotted decimal address or a host name. +.TP 16 +.BI \-l +Log messages to the system log, the default is not to. +.TP 16 +.BI "\-m mtu" +Sets the mtu of the interface. If this value is not given then the value is +taken from the paclen parameter in axports. +.TP 16 +.BI \-v +Display the version. +.SH "SEE ALSO" +.BR kill (1), +.BR stty (1), +.BR ax25 (4), +.BR axparms (4), +.BR axports (5), +.BR ifconfig (8). +.SH AUTHOR +.nf +Alan Cox GW4PTS +.br +Jonathan Naylor G4KLX +.fi diff --git a/kiss/kissattach.c b/kiss/kissattach.c index 149c2bd..0c80fe4 100644 --- a/kiss/kissattach.c +++ b/kiss/kissattach.c @@ -10,21 +10,29 @@ #include #include +#include + #include #include #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include -#include - #include "../pathnames.h" static char *callsign; diff --git a/kiss/kissnetd.8 b/kiss/kissnetd.8 new file mode 100644 index 0000000..d069ac9 --- /dev/null +++ b/kiss/kissnetd.8 @@ -0,0 +1,26 @@ +.TH KISSNETD 8 "13 October 1996" Linux "Linux System Managers Manual" +.SH NAME +kissnetd \- Create a virtual network. +.SH SYNOPSIS +.B kissnetd [-f size] [-v] tty... +.SH DESCRIPTION +.LP +.B Kissnetd +allows the creation of a virtual network of AX.25 systems that use the KISS +protocol. Each tty named on the command line is opened and any KISS frames +received on tty is copied to the other ttys. This allows a number of AX.25 +systems to share the same packets. +.SH OPTIONS +.TP 10 +.BI "\-f size" +This sets the maximum KISS frame size that the program will handle. The +default is 512 bytes which will be adequate under most circumstances. +.TP 10 +.BI \-v +Enables verbose mode, tracing of data passed is sent to standard output. +.SH "SEE ALSO" +.BR kissattach (8), +.BR kissparms (8), +.BR mkiss (8). +.SH AUTHOR +Frederic Rible F1OAT diff --git a/kiss/kissparms.8 b/kiss/kissparms.8 new file mode 100644 index 0000000..ee004de --- /dev/null +++ b/kiss/kissparms.8 @@ -0,0 +1,70 @@ +.TH KISSPARMS 8 "15 October 1996" Linux "Linux System Managers Manual" +.SH NAME +kissparms \- Configure KISS TNCs. +.SH SYNOPSIS +.B kissparms -p [-f y|n] [-h hw] [-l txtail] [-r pers] [-s slot] [-t txd] [-e feclevel] [-v] [-x] +.SH DESCRIPTION +.LP +.B Kissparms +is used to dynamically configure KISS TNCs that have been setup for AX.25 +use by +.B kissattach. +This program uses the packet interface to allow it to communicate with the +KISS TNC without interrupting the AX.25 data stream. Therefore the KISS +parameters may be set at any time during the operation of the AX.25 port. +.LP +A full description of the KISS protocol can be found in the ARRL 6th Computer +Networking Conference papers pp 38-43. While use of the Tx Tail value is +now deprecated, it has been included to satisfy the requirements of users of +old TNC firmware. +.LP +Although this utility was originally designed for controlling KISS TNCs +connected to a serial port, it is used by a number of other Linux packet +radio devices such as the Z8530 SCC driver for controlling their parameters +in exactly the same manner. Therefore +.B kissparms +functionality extends to more than KISS TNCs. +.SH OPTIONS +.TP 12 +.BI "\-p port" +Sets the port that is being configured. +.TP 12 +.BI "\-f y|n" +This sets the TNC into either full duplex ``y'', or half duplex ``n'' mode. +.TP 12 +.BI "\-h hardware" +This is used to set hardware specific parameters. +.TP 12 +.BI "\-e FEC error correction level" +Sets the FEC error correction level in a DSP card based modem (KISS parameter +8). Larger correction level means better noise resistance, but slower +throughput on a good connection. This is an experimental feature found in a +QPSK modem for the Motorola DSP56001 based DSP4 and EVM cards only. +.TP 12 +.BI "\-l txtail" +Sets the TX Tail time in milliseconds. Note that the command to the TNC only +operates in steps of ten milliseconds, so only use values like 10, 20 etc. +.TP 12 +.BI "\-r persist" +Sets the persist value. This parameter is scaled to the range 0 to 255. +.TP 12 +.BI "\-s slottime" +Sets the slottime in milliseconds. Note that the command to the TNC only +operates in steps of ten milliseconds, so only use values like 10, 20 etc. +.TP 12 +.BI "\-t txdelay" +Sets the TX Delay in milliseconds. Note that the command to the TNC only +operates in steps of ten milliseconds, so only use values like 10, 20 etc. +.TP 12 +.BI \-v +Display the version. +.TP 12 +.BI \-x +Takes the TNC out of KISS mode back into ``normal'' mode. This command is +manufacturer specific but works in many cases. This option overrides all +options except the port number. +.SH "SEE ALSO" +.BR axports (5), +.BR kissattach (8). +.SH AUTHOR +Jonathan Naylor G4KLX diff --git a/kiss/kissparms.c b/kiss/kissparms.c index 0a1a101..d761f55 100644 --- a/kiss/kissparms.c +++ b/kiss/kissparms.c @@ -3,15 +3,23 @@ #include #include +#include + #include #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include -#include - -#include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H +#include +#else +#include +#endif #define PARAM_TXDELAY 1 #define PARAM_PERSIST 2 diff --git a/kiss/mkiss.8 b/kiss/mkiss.8 new file mode 100644 index 0000000..4c6c973 --- /dev/null +++ b/kiss/mkiss.8 @@ -0,0 +1,66 @@ +.TH MKISS 8 "05 January 1997" Linux "Linux System Managers Manual" +.SH NAME +mkiss \- Attach a multi KISS interface +.SH SYNOPSIS +.B mkiss [-c] [-h] [-l] [-s speed] [-p] [-v] ttyinterface pty... +.SH DESCRIPTION +.LP +.B Mkiss +allows dual port TNCs or multiple TNCs sharing the same serial port to be +used with the Linux AX.25 kernel software. The AX.25 softare has no support +for dual port TNCs or multiple TNCs charing the same serial line. The +different ports are addressed by encoding the port number in the control +byte of every kiss frame. +.B Mkiss +watches a serial port, and routes kiss frames to/from the pseudo ttys. The +other side of the pseudo ttys are then attached with +.B kissattach +as normal. +.sp 1 +Statistics about the operation of +.B mkiss +may be obtained by sending the SIGUSR1 signal to the running program. On +reception of such a signal +.B mkiss +will print a set of statistics to the system log if logging has been +enabled. +.sp 1 +Although mention is made of using pseudo ttys as the last arguments, +these devices may be normal serial ports. However +.B mkiss +provides no way in which to set their speed, the speed must therefore be set +by some other method. +.SH OPTIONS +.TP 10 +.BI \-c +This enables a one-byte checksum on each incoming and outgoing KISS frame on +the serial port. This checksum is used by G8BPQ KISS roms to maintain the +integrity of KISS frames. +.TP 10 +.BI \-h +Enables hardware handshaking on the serial line to the TNC. The KISS +specification states that no hardware flow control shall be used so the +default is off. But some KISS implementations do use hardware flow control. +.TP 10 +.BI \-l +Enables system logging, the default is off. +.TP 10 +.BI "\-s speed" +Set the speed of the serial port. +.TP 10 +.BI "\-p" +Enables polling. Polled mode is used by G8BPQ KISS roms to prevent +contention on systems where multiple TNCs share the same serial line. +.TP 10 +.BI \-v +Display the version. +.SH "SEE ALSO" +.BR kissattach (8), +.BR ifconfig (8), +.BR kill (1). +.SH AUTHORS +Tomi Manninen OH2BNS +.br +Jonathan Naylor G4KLX +.br +Kevin Uhlir N0BEL diff --git a/kiss/net2kiss.8 b/kiss/net2kiss.8 new file mode 100644 index 0000000..040f164 --- /dev/null +++ b/kiss/net2kiss.8 @@ -0,0 +1,45 @@ +.TH NET2KISS 8 "15 October 1996" "" "" +.SH NAME +net2kiss \- convert a network AX.25 driver to a KISS stream on a pseudo-tty +.SH SYNOPSIS +.B "net2kiss [-sfzva] [-i ifname] ptyname" +.br +.SH DESCRIPTION +.B net2kiss +takes AX.25 packets from an AX.25 kernel network interface and converts them +into a KISS data stream via a pseudo-tty. +.SH PARAMETERS +.TP +.B ptyname +specifies the path to the pseudo-tty. +.SH OPTIONS +.TP +.B "\-i ifname" +specifies the name of the kernel AX.25 network interface. The default +is bc0. +.TP +.B \-s +tells net2kiss to search by itself for a free pseudoterminal, open the +master side and create a symlink named by -p to the slave side. +.TP +.B \-f +can be used in conjunction with -s to force the creation of the symlink +even if the target file does already exist. +.TP +.B \-v +Verbose output. Displays error messages during operation and decoded +packets to stdout. +.TP +.B \-z +put the network interface into promiscious mode. +.TP +.B \-a +receive every packet instead of only AX.25 from the kernel AX.25 network +interface. +.SH BUGS +None known. +.SH SEE ALSO +.BR ifconfig (8), +.BR kissattach (8). +.SH AUTHORS +Thomas M. Sailer, HB9JNX/AE4WA, diff --git a/netrom/Makefile.am b/netrom/Makefile.am index 03f0c0d..c5845b8 100644 --- a/netrom/Makefile.am +++ b/netrom/Makefile.am @@ -12,6 +12,8 @@ installconf: sbin_PROGRAMS = netromd nodesave nrattach nrparms nrsdrv +LDADD = $(AX25_LIB) + man_MANS = netrom.4 nrports.5 nrbroadcast.5 netromd.8 nodesave.8 \ nrattach.8 nrparms.8 nrsdrv.8 diff --git a/netrom/Makefile.in b/netrom/Makefile.in index 80c3c9c..810c407 100644 --- a/netrom/Makefile.in +++ b/netrom/Makefile.in @@ -58,17 +58,23 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ etcfiles = nrbroadcast nrports etcdir = $(sysconfdir)/ax25 sbin_PROGRAMS = netromd nodesave nrattach nrparms nrsdrv +LDADD = $(AX25_LIB) + man_MANS = netrom.4 nrports.5 nrbroadcast.5 netromd.8 nodesave.8 nrattach.8 nrparms.8 nrsdrv.8 @@ -359,9 +365,9 @@ distdir: $(DISTFILES) fi; \ done netromd.o: netromd.c ../config.h ../pathnames.h netromd.h -netromr.o: netromr.c ../pathnames.h netromd.h -netromt.o: netromt.c ../pathnames.h netromd.h -nodesave.o: nodesave.c +netromr.o: netromr.c ../config.h ../pathnames.h netromd.h +netromt.o: netromt.c ../config.h ../pathnames.h netromd.h +nodesave.o: nodesave.c ../config.h nrattach.o: nrattach.c ../config.h ../pathnames.h nrparms.o: nrparms.c ../config.h nrsdrv.o: nrsdrv.c ../config.h ../pathnames.h diff --git a/netrom/netromd.c b/netrom/netromd.c index fa80c9b..5fab52d 100644 --- a/netrom/netromd.c +++ b/netrom/netromd.c @@ -5,6 +5,8 @@ #include #include +#include + #include #include #include @@ -14,17 +16,27 @@ #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include #include -#include - #include "../pathnames.h" #include "netromd.h" diff --git a/netrom/netromr.c b/netrom/netromr.c index eafd225..90e775a 100644 --- a/netrom/netromr.c +++ b/netrom/netromr.c @@ -4,6 +4,8 @@ #include #include +#include + #include #include @@ -12,9 +14,22 @@ #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif + #include #include "../pathnames.h" diff --git a/netrom/netromt.c b/netrom/netromt.c index d22caf1..3b37d5f 100644 --- a/netrom/netromt.c +++ b/netrom/netromt.c @@ -5,13 +5,28 @@ #include #include +#include + #include #include #include + +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include diff --git a/netrom/nodesave.c b/netrom/nodesave.c index 3eab61b..a677422 100644 --- a/netrom/nodesave.c +++ b/netrom/nodesave.c @@ -2,11 +2,17 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif #include diff --git a/netrom/nrattach.c b/netrom/nrattach.c index aee0936..ecbbd56 100644 --- a/netrom/nrattach.c +++ b/netrom/nrattach.c @@ -8,17 +8,32 @@ #include #include +#include + #include #include #include #include + +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H +#include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include -#include +#else +#include +#endif -#include +#include #include "../pathnames.h" diff --git a/netrom/nrparms.c b/netrom/nrparms.c index 7e89ff9..bc5803b 100644 --- a/netrom/nrparms.c +++ b/netrom/nrparms.c @@ -4,20 +4,32 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include -#include - char nodes_usage[] = "usage: nrparms -nodes nodecall +|- ident quality count port neighbour [digicall...]\n"; char routes_usage[] = "usage: nrparms -routes port nodecall [digicall...] +|- pathquality\n"; diff --git a/pathnames.h b/pathnames.h new file mode 100644 index 0000000..62b8227 --- /dev/null +++ b/pathnames.h @@ -0,0 +1,28 @@ + +#define CONF_AX25D_FILE "/etc/ax25/ax25d.conf" +#define CONF_AXPORTS_FILE "/etc/ax25/axports" +#define CONF_AXSPAWN_FILE "/etc/ax25/axspawn.conf" +#define CONF_AXSPAWN_PROF_FILE "/etc/ax25/ax25.profile" +#define CONF_NETROMD_FILE "/etc/ax25/nrbroadcast" +#define CONF_NRPORTS_FILE "/etc/ax25/nrports" +#define CONF_RIP98D_FILE "/etc/ax25/rip98d.conf" +#define CONF_RSPORTS_FILE "/etc/ax25/rsports" +#define CONF_RXECHO_FILE "/etc/ax25/rxecho.conf" +#define CONF_TTYLINKD_FILE "/etc/ax25/ttylinkd.conf" + +#define DATA_MHEARD_FILE "/var/ax25/mheard/mheard.dat" + +#define LOCK_AXSPAWN_FILE "/var/lock/axspawn" +#define LOCK_SERIAL_DIR "/var/lock" + +#define PROC_AX25_FILE "/proc/net/ax25" +#define PROC_AX25_ROUTE_FILE "/proc/net/ax25_route" +#define PROC_IP_ROUTE_FILE "/proc/net/route" +#define PROC_NR_SYSCTL_DIR "/proc/sys/net/netrom" +#define PROC_RS_NEIGH_FILE "/proc/net/rose_neigh" +#define PROC_RS_NODES_FILE "/proc/net/rose_nodes" +#define PROC_AX25_CALLS_FILE "/proc/net/ax25_calls" +#define PROC_NR_NEIGH_FILE "/proc/net/nr_neigh" +#define PROC_NR_NODES_FILE "/proc/net/nr_nodes" + + diff --git a/rose/Makefile.am b/rose/Makefile.am index 3cbb2c8..c806d95 100644 --- a/rose/Makefile.am +++ b/rose/Makefile.am @@ -11,9 +11,13 @@ installconf: sbin_PROGRAMS = rsattach rsdwnlnk rsmemsiz rsparms rsuplnk +LDADD = $(AX25_LIB) + +rsmemsiz_LDADD = + sbin_SCRIPTS = rsusers.sh man_MANS = rose.4 rsports.5 rsattach.8 rsparms.8 rsdwnlnk.8 rsuplnk.8 -EXTRA_DIST = $(man_MANS) $(etcfiles) +EXTRA_DIST = $(man_MANS) $(etcfiles) $(sbin_SCRIPTS) diff --git a/rose/Makefile.in b/rose/Makefile.in index 0ded273..8849f25 100644 --- a/rose/Makefile.in +++ b/rose/Makefile.in @@ -58,22 +58,30 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ etcfiles = rsports etcdir = $(sysconfdir)/ax25 sbin_PROGRAMS = rsattach rsdwnlnk rsmemsiz rsparms rsuplnk +LDADD = $(AX25_LIB) + +rsmemsiz_LDADD = + sbin_SCRIPTS = rsusers.sh man_MANS = rose.4 rsports.5 rsattach.8 rsparms.8 rsdwnlnk.8 rsuplnk.8 -EXTRA_DIST = $(man_MANS) $(etcfiles) +EXTRA_DIST = $(man_MANS) $(etcfiles) $(sbin_SCRIPTS) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = @@ -100,7 +108,6 @@ rsdwnlnk_DEPENDENCIES = rsdwnlnk_LDFLAGS = rsmemsiz_SOURCES = rsmemsiz.c rsmemsiz_OBJECTS = rsmemsiz.o -rsmemsiz_LDADD = $(LDADD) rsmemsiz_DEPENDENCIES = rsmemsiz_LDFLAGS = rsparms_SOURCES = rsparms.c diff --git a/rose/rsattach.c b/rose/rsattach.c index 3d98858..b7323e1 100644 --- a/rose/rsattach.c +++ b/rose/rsattach.c @@ -8,6 +8,8 @@ #include #include +#include + #include #include @@ -16,11 +18,24 @@ #include /* #include */ + +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H +#include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include -#include +#else +#include +#endif -#include +#include #include "../pathnames.h" diff --git a/rose/rsdwnlnk.c b/rose/rsdwnlnk.c index 5729d99..d4e4348 100644 --- a/rose/rsdwnlnk.c +++ b/rose/rsdwnlnk.c @@ -5,18 +5,26 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include -#include - #define AX25_HBIT 0x80 void alarm_handler(int sig) diff --git a/rose/rsparms.c b/rose/rsparms.c index 86e0935..68e8481 100644 --- a/rose/rsparms.c +++ b/rose/rsparms.c @@ -4,19 +4,27 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include -#include - #include "../pathnames.h" char nodes_usage[] = "usage: rsparms -node add|del nodeaddr[/mask] port neighbour [digis...]\n rsparms -node list\n"; diff --git a/rose/rsuplnk.c b/rose/rsuplnk.c index a024e20..e9f5ecd 100644 --- a/rose/rsuplnk.c +++ b/rose/rsuplnk.c @@ -5,19 +5,27 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include #include -#include - void alarm_handler(int sig) { } diff --git a/rose/rsusers.sh b/rose/rsusers.sh new file mode 100755 index 0000000..09c2e97 --- /dev/null +++ b/rose/rsusers.sh @@ -0,0 +1,128 @@ +#! /bin/sh + +ALL=n + +if [ $# = 1 ]; then + ALL=y +fi + +echo -en "Linux/ROSE 001. AX.25, NET/ROM and ROSE Users.\r" + +if [ -r /proc/net/ax25 ]; then + cat /proc/net/ax25 | awk ' + BEGIN { + printf "Active AX.25 Sessions\r" + printf "Dest Source State\r" + n = 0 + } + NR > 1 { + if ($4 == 0) { + state = "LISTENING" + } else if ($4 == 1) { + state = "CONNECTING" + } else if ($4 == 2) { + state = "DISCONNECTING" + } else if ($4 == 3) { + state = "CONNECTED" + } else { + state = "RECOVERY" + } + if ($4 != 0) { + printf "%-9s %-9s %s\r", $1, $2, state + n++ + } else { + if (ALL == "y") { + printf "%-9s %-9s %s\r", $1, $2, state + n++ + } + } + } + END { + if (n == 0) { + printf "None active\r" + } + }' ALL=$ALL + + echo -en "\r" +fi + +if [ -r /proc/net/nr ]; then + cat /proc/net/nr | awk ' + BEGIN { + printf "Active NET/ROM Sessions\r" + printf "User Dest Source State\r" + n = 0 + } + NR > 1 { + if ($7 == 0) { + state = "LISTENING" + } else if ($7 == 1) { + state = "CONNECTING" + } else if ($7 == 2) { + state = "DISCONNECTING" + } else if ($7 == 3) { + state = "CONNECTED" + } else { + state = "RECOVERY" + } + if ($7 != 0) { + printf "%-9s %-9s %-9s %s\r", $1, $2, $3, state + n++ + } else { + if (ALL == "y") { + printf "%-9s %-9s %-9s %s\r", $1, $2, $3, state + n++ + } + } + } + END { + if (n == 0) { + printf "None active\r" + } + }' ALL=$ALL + + echo -en "\r" +fi + +if [ -r /proc/net/rose ]; then + cat /proc/net/rose | awk ' + BEGIN { + printf "Active ROSE Sessions\r" + printf "Dest Source State\r" + n = 0 + } + NR > 1 { + if ($7 == 0) { + state = "LISTENING" + } else if ($7 == 1) { + state = "CONNECTING" + } else if ($7 == 2) { + state = "DISCONNECTING" + } else if ($7 == 3) { + state = "CONNECTED" + } else { + state = "RESETTING" + } + if ($7 != 0) { + printf "%-10s %-9s %-10s %-9s %s\r", $1, $2, $3, $4, state + n++ + } else { + if (ALL == "y") { + printf "%-10s %-9s %-10s %-9s %s\r", $1, $2, $3, $4, state + n++ + } + } + } + END { + if (n == 0) { + printf "None active\r" + } + }' ALL=$ALL + + echo -en "\r" +fi + +read + +exit 0 + diff --git a/tcpip/Makefile.am b/tcpip/Makefile.am index d047ac5..4fbc7e9 100644 --- a/tcpip/Makefile.am +++ b/tcpip/Makefile.am @@ -21,3 +21,5 @@ rip98d_SOURCES = \ rip98t.c \ rip98d.h +rip98d_LDADD = $(AX25_LIB) + diff --git a/tcpip/Makefile.in b/tcpip/Makefile.in index 90da959..84ce5b2 100644 --- a/tcpip/Makefile.in +++ b/tcpip/Makefile.in @@ -58,11 +58,15 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ etcfiles = rip98.conf ttylinkd.conf etcdir = $(sysconfdir)/ax25 @@ -75,6 +79,8 @@ EXTRA_DIST = $(man_MANS) $(etcfiles) rip98d_SOURCES = rip98d.c rip98r.c rip98t.c rip98d.h + +rip98d_LDADD = $(AX25_LIB) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = @@ -90,7 +96,6 @@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ rip98d_OBJECTS = rip98d.o rip98r.o rip98t.o -rip98d_LDADD = $(LDADD) rip98d_DEPENDENCIES = rip98d_LDFLAGS = ttylinkd_SOURCES = ttylinkd.c @@ -299,7 +304,7 @@ distdir: $(DISTFILES) rip98d.o: rip98d.c ../config.h ../pathnames.h rip98d.h rip98r.o: rip98r.c rip98d.h rip98t.o: rip98t.c rip98d.h -ttylinkd.o: ttylinkd.c ../pathnames.h +ttylinkd.o: ttylinkd.c ../config.h ../pathnames.h info-am: info: info-am diff --git a/tcpip/ttylinkd.c b/tcpip/ttylinkd.c index e185c7e..aeef59a 100644 --- a/tcpip/ttylinkd.c +++ b/tcpip/ttylinkd.c @@ -35,6 +35,8 @@ #include #include +#include + #define osockaddr sockaddr #include @@ -45,8 +47,16 @@ #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include "../pathnames.h" diff --git a/user_call/Makefile.am b/user_call/Makefile.am index 5aedbd3..0a176b9 100644 --- a/user_call/Makefile.am +++ b/user_call/Makefile.am @@ -6,5 +6,7 @@ sbin_PROGRAMS = ax25_call netrom_call rose_call man_MANS = ax25_call.8 netrom_call.8 rose_call.8 -DATA_EXTRA = $(man_MANS) +EXTRA_DIST = $(man_MANS) + +LDADD = $(AX25_LIB) diff --git a/user_call/Makefile.in b/user_call/Makefile.in index 232f104..cf78c65 100644 --- a/user_call/Makefile.in +++ b/user_call/Makefile.in @@ -58,17 +58,23 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : AWK = @AWK@ +AX25IO_LIB = @AX25IO_LIB@ +AX25_LIB = @AX25_LIB@ CC = @CC@ MAKEINFO = @MAKEINFO@ NCURSES_LIB = @NCURSES_LIB@ PACKAGE = @PACKAGE@ +UTIL_LIB = @UTIL_LIB@ VERSION = @VERSION@ +Z_LIB = @Z_LIB@ sbin_PROGRAMS = ax25_call netrom_call rose_call man_MANS = ax25_call.8 netrom_call.8 rose_call.8 -DATA_EXTRA = $(man_MANS) +EXTRA_DIST = $(man_MANS) + +LDADD = $(AX25_LIB) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = @@ -266,9 +272,9 @@ distdir: $(DISTFILES) || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done -ax25_call.o: ax25_call.c -netrom_call.o: netrom_call.c -rose_call.o: rose_call.c +ax25_call.o: ax25_call.c ../config.h +netrom_call.o: netrom_call.c ../config.h +rose_call.o: rose_call.c ../config.h info-am: info: info-am diff --git a/user_call/ax25_call.8 b/user_call/ax25_call.8 new file mode 100644 index 0000000..ab93de0 --- /dev/null +++ b/user_call/ax25_call.8 @@ -0,0 +1,24 @@ +.TH AX25_CALL 8 "11 December 1996" Linux "Linux Programmer's Manual" +.SH NAME +ax25_call \- make an AX.25 connection +.SH SYNOPSIS +.B ax25_call port local_call remote_call [digipeaters ...] +.SH DESCRIPTION +.LP +.B ax25_call +establishes an AX.25 connection in a manner suitable for calling from either +the +.B ax25d +program directly, or from the +.B node +program as an external command. By setting the command line arguments +appropriately it is possible to set the local callsign from which the call +will be made. No translation of the end of lines is performed by this +program. +.SH FILES +.br +/etc/ax25/axports +.SH "SEE ALSO" +.BR ax25 (4). +.SH AUTHOR +Jonathan Naylor G4KLX diff --git a/user_call/ax25_call.c b/user_call/ax25_call.c index aaa47ce..235feb9 100644 --- a/user_call/ax25_call.c +++ b/user_call/ax25_call.c @@ -4,12 +4,23 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif + #include #include diff --git a/user_call/netrom_call.8 b/user_call/netrom_call.8 new file mode 100644 index 0000000..1a11989 --- /dev/null +++ b/user_call/netrom_call.8 @@ -0,0 +1,28 @@ +.TH NETROM_CALL 8 "11 December 1996" Linux "Linux Programmer's Manual" +.SH NAME +netrom_call \- make a NET/ROM connection +.SH SYNOPSIS +.B netrom_call port local_call remote_addr +.SH DESCRIPTION +.LP +.B netrom_call +establishes a NET/ROM connection in a manner suitable for calling from either +the +.B ax25d +program directly, or from the +.B node +program as an external command. By setting the command line arguments +appropriately it is possible to set the local callsign from which the call +will be made. No translation of the end of line conventions is performed by +this program. +.sp 1 +The remote_addr parameter may either be in the form of a single callsign or +as a NET/ROM alias and callsign pair seperated by colon. For example +NMCLUS:GB7BPQ. +.SH FILES +.br +/etc/ax25/nrports +.SH "SEE ALSO" +.BR netrom (4). +.SH AUTHOR +Jonathan Naylor G4KLX diff --git a/user_call/netrom_call.c b/user_call/netrom_call.c index 004b109..deb877e 100644 --- a/user_call/netrom_call.c +++ b/user_call/netrom_call.c @@ -4,13 +4,27 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROM_NETROM_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif #include #include diff --git a/user_call/rose_call.8 b/user_call/rose_call.8 new file mode 100644 index 0000000..9eb888e --- /dev/null +++ b/user_call/rose_call.8 @@ -0,0 +1,26 @@ +.TH ROSE_CALL 8 "11 December 1996" Linux "Linux Programmer's Manual" +.SH NAME +rose_call \- make a ROSE connection +.SH SYNOPSIS +.B rose_call port local_call remote_call remote_rose_addr +.SH DESCRIPTION +.LP +.B rose_call +establishes a ROSE connection in a manner suitable for calling from either +the +.B ax25d +program directly, or from the +.B node +program as an external command. By setting the command line arguments +appropriately it is possible to set the local callsign from which the call +will be made. No translation of the end of line conventions is performed by +this program. +.sp 1 +The remote_rose_addr parameter must be in the form of a ten digit ROSE address. +.SH FILES +.br +/etc/ax25/rsports +.SH "SEE ALSO" +.BR rose (4). +.SH AUTHOR +Jonathan Naylor G4KLX diff --git a/user_call/rose_call.c b/user_call/rose_call.c index 606284d..10e235b 100644 --- a/user_call/rose_call.c +++ b/user_call/rose_call.c @@ -4,12 +4,23 @@ #include #include +#include + #include #include #include +#ifdef HAVE_NETAX25_AX25_H #include +#else +#include +#endif +#ifdef HAVE_NETROSE_ROSE_H #include +#else +#include +#endif + #include #include #include -- cgit v1.2.3