summaryrefslogtreecommitdiffstats
path: root/src/isode/compat
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1995-02-01 21:43:42 +0000
committerTheodore Tso <tytso@mit.edu>1995-02-01 21:43:42 +0000
commit0c5cf54cc8c832e091362306cb5fe9644a17dc0d (patch)
treecee62d2d10b033f6a59d9e143a9554b3da0acbea /src/isode/compat
parent2c1429f492c4bd0575a2ab0969b7a0f542e7124b (diff)
downloadkrb5-0c5cf54cc8c832e091362306cb5fe9644a17dc0d.tar.gz
krb5-0c5cf54cc8c832e091362306cb5fe9644a17dc0d.tar.xz
krb5-0c5cf54cc8c832e091362306cb5fe9644a17dc0d.zip
Removing ISODE.... (and there was much rejoicing)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4870 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/isode/compat')
-rw-r--r--src/isode/compat/Makefile.in220
-rw-r--r--src/isode/compat/asprintf.c92
-rw-r--r--src/isode/compat/baduser.c68
-rw-r--r--src/isode/compat/bridge.c414
-rw-r--r--src/isode/compat/camtec.c247
-rw-r--r--src/isode/compat/chkpassword.c81
-rw-r--r--src/isode/compat/chrcnv.c62
-rw-r--r--src/isode/compat/cmd_srch.c38
-rw-r--r--src/isode/compat/configure.in6
-rw-r--r--src/isode/compat/dgram.c785
-rw-r--r--src/isode/compat/explode.c49
-rw-r--r--src/isode/compat/general.c142
-rw-r--r--src/isode/compat/getpassword.c124
-rw-r--r--src/isode/compat/hpuxx25.c902
-rw-r--r--src/isode/compat/implode.c60
-rw-r--r--src/isode/compat/inst-man.sh167
-rw-r--r--src/isode/compat/internet.c680
-rw-r--r--src/isode/compat/isoaddrs.c1212
-rw-r--r--src/isode/compat/isofiles.c44
-rw-r--r--src/isode/compat/isohost.c74
-rw-r--r--src/isode/compat/isologs.sh36
-rw-r--r--src/isode/compat/isoman.rf8
-rw-r--r--src/isode/compat/isoservent.c124
-rw-r--r--src/isode/compat/lexequ.c48
-rw-r--r--src/isode/compat/lexnequ.c53
-rw-r--r--src/isode/compat/libicompat.335
-rw-r--r--src/isode/compat/log_tai.c126
-rw-r--r--src/isode/compat/logger.c602
-rw-r--r--src/isode/compat/na2norm.c143
-rw-r--r--src/isode/compat/na2str.c42
-rw-r--r--src/isode/compat/nochrcnv.c61
-rw-r--r--src/isode/compat/norm2na.c267
-rw-r--r--src/isode/compat/pa2str.c87
-rw-r--r--src/isode/compat/putenv.c96
-rw-r--r--src/isode/compat/rcmd_srch.c33
-rw-r--r--src/isode/compat/saddr2str.c39
-rw-r--r--src/isode/compat/sel2str.c78
-rw-r--r--src/isode/compat/select.c369
-rw-r--r--src/isode/compat/serror.c41
-rw-r--r--src/isode/compat/servbyname.c56
-rw-r--r--src/isode/compat/servbyport.c59
-rw-r--r--src/isode/compat/servbysel.c60
-rw-r--r--src/isode/compat/signals.c129
-rw-r--r--src/isode/compat/smalloc.c40
-rw-r--r--src/isode/compat/sprintb.c57
-rw-r--r--src/isode/compat/sstr2arg.c144
-rw-r--r--src/isode/compat/str2elem.c51
-rw-r--r--src/isode/compat/str2saddr.c36
-rw-r--r--src/isode/compat/str2sel.c112
-rw-r--r--src/isode/compat/str2taddr.c36
-rw-r--r--src/isode/compat/str2vec.c85
-rw-r--r--src/isode/compat/strdup.c49
-rw-r--r--src/isode/compat/sunlink.c665
-rw-r--r--src/isode/compat/taddr2str.c39
-rw-r--r--src/isode/compat/tailor.c939
-rw-r--r--src/isode/compat/ubcx25.c299
-rw-r--r--src/isode/compat/ultrix25.c752
-rw-r--r--src/isode/compat/version.major1
-rw-r--r--src/isode/compat/version.minor1
-rw-r--r--src/isode/compat/x25addr.c1455
60 files changed, 0 insertions, 12820 deletions
diff --git a/src/isode/compat/Makefile.in b/src/isode/compat/Makefile.in
deleted file mode 100644
index 18407a3753..0000000000
--- a/src/isode/compat/Makefile.in
+++ /dev/null
@@ -1,220 +0,0 @@
-###############################################################################
-# Instructions to Make, for compilation of UNIX compatibility library
-###############################################################################
-
-TOPDIR = $(BUILDTOP)/
-
-OPTIONS = -I. -I$(HDIR) -I$(ISODEINC) $(PEPYPATH) $(KRBOPT)
-CFLAGS = $(CCOPTS) $(OPTIONS) $(LOPTIONS)
-
-KRBINC = $(TOPDIR)include/
-ISODEINCM= $(KRBINC)isode
-ISODEINC= $(ISODEINCM)/
-
-HDIR = $(TOPDIR)isode/h/
-UTILDIR = $(srcdir)/$(TOPDIR)isode/util/
-INCDIRM = $(HDIR)
-INCDIR = $(INCDIRM)/
-PEPSYDIRM= $(INCDIR)pepsy
-PEPSYDIR= $(PEPSYDIRM)/
-LIBISODE= $(TOPDIR)lib/libisode.a
-LIBDSAP = $(TOPDIR)lib/libdsap.a
-
-LIBES = libcompat.a
-LLIBS =
-HFILES = $(HDIR)manifest.h $(HDIR)general.h $(HDIR)config.h
-LN = ln
-
-
-##################################################################
-# Here it is...
-##################################################################
-
-all: libcompat
-inst-all: inst-isologs # inst-libcompat manuals
-install: inst-all clean
-lint: l-libcompat
-
-
-################################################################
-# libcompat
-################################################################
-LIBOBJS = @LIBOBJS@
-
-CFILES = general.c logger.c select.c signals.c \
- asprintf.c explode.c implode.c isofiles.c isohost.c sel2str.c \
- serror.c sprintb.c str2elem.c str2sel.c str2vec.c \
- tailor.c \
- baduser.c chkpassword.c getpassword.c putenv.c \
- chrcnv.c cmd_srch.c lexequ.c lexnequ.c log_tai.c nochrcnv.c \
- rcmd_srch.c smalloc.c sstr2arg.c strdup.c \
- isoservent.c servbyname.c servbyport.c servbysel.c \
- isoaddrs.c str2saddr.c str2taddr.c saddr2str.c taddr2str.c\
- na2norm.c norm2na.c na2str.c pa2str.c \
- internet.c \
- dgram.c \
- bridge.c camtec.c sunlink.c ubcx25.c \
- hpuxx25.c ultrix25.c x25addr.c
-OFILES = general.o logger.o select.o signals.o \
- asprintf.o explode.o implode.o isofiles.o isohost.o sel2str.o \
- serror.o sprintb.o str2elem.o str2sel.o str2vec.o \
- tailor.o \
- baduser.o chkpassword.o getpassword.o putenv.o \
- chrcnv.o cmd_srch.o lexequ.o lexnequ.o log_tai.o nochrcnv.o \
- rcmd_srch.o smalloc.o sstr2arg.o $(LIBOBJS) \
- isoservent.o servbyname.o servbyport.o servbysel.o \
- isoaddrs.o str2saddr.o str2taddr.o saddr2str.o taddr2str.o \
- na2norm.o norm2na.o na2str.o pa2str.o \
- internet.o \
- dgram.o \
- bridge.o camtec.o sunlink.o ubcx25.o \
- hpuxx25.o ultrix25.o x25addr.o \
- $(OSTRINGS)
-
-inst-libcompat: $(LIBDIR)libicompat.a $(LINTDIR)llib-licompat
-
-$(LIBDIR)libicompat.a: libcompat.a
- -rm -f $@
- cp libcompat.a $@
- @$(UTILDIR)make-lib.sh $(SYSTEM) $@ -ranlib
- -@ls -gls $@
- -@echo ""
-
-$(LINTDIR)llib-licompat: llib-lcompat
- -cp $@ zllib-lcompat
- -rm -f $@
- sed -e 's%#include "\(.*\)"%#include "$(INCDIR)\1"%' \
- < llib-lcompat | \
- sed -e 's%#include "/usr/include/\(.*\)"%#include <\1>%' > $@
- @$(UTILDIR)inst-lint.sh $(SYSTEM) $(OPTIONS) $@
- -@ls -gls $@ $@.ln
- -@echo ""
-
-libcompat: libcompat.a
-
-libcompat.a: compatvrsn.o
- -rm -f $@
- $(UTILDIR)make-lib.sh $(SYSTEM) $@ $(OFILES) \
- compatvrsn.o
- -@rm -f $(TOPDIR)lib/libcompat.a $(TOPDIR)lib/llib-lcompat
- -@$(LN) libcompat.a $(TOPDIR)lib/libcompat.a || cp libcompat.a $(TOPDIR)lib/libcompat.a
- -@$(LN) llib-lcompat $(TOPDIR)lib/llib-lcompat
- -@ls -l $@
- -@echo "COMPAT library built normally"
-
-compatvrsn.c: $(OFILES)
- @$(UTILDIR)version.sh compat > $@
-
-clean::
- $(RM) version.major version.minor version.local
-
-l-libcompat:; $(LINT) $(LFLAGS) -DBINPATH=\"$(BINDIR)\" \
- -DETCPATH=\"$(ETCDIR)\" -DSBINPATH=\"$(SBINDIR)\" \
- -DLOGPATH=\"$(LOGDIR)\" $(CFILES) compatvrsn.c \
- | grep -v "warning: possible pointer alignment problem"
-
-general.o: $(HFILES)
-logger.o: $(HFILES) $(HDIR)logger.h $(HDIR)tailor.h
-select.o: $(HFILES) $(HDIR)logger.h $(HDIR)tailor.h
-signals.o: $(HFILES)
-asprintf.o: $(HFILES)
-explode.o: $(HFILES)
-implode.o: $(HFILES)
-isofiles.o: $(HFILES) $(HDIR)tailor.h $(HDIR)logger.h
-isohost.o: $(HFILES) $(HDIR)internet.h $(HDIR)tailor.h $(HDIR)logger.h
-sel2str.o: $(HFILES) $(HDIR)isoaddrs.h
-serror.o: $(HFILES)
-sprintb.o: $(HFILES)
-str2elem.o: $(HFILES)
-str2sel.o: $(HFILES) $(HDIR)tailor.h $(HDIR)logger.h
-str2vec.o: $(HFILES)
-tailor.o: $(HFILES) $(HDIR)isoaddrs.h $(HDIR)tailor.h $(HDIR)logger.h
- $(CC) $(CFLAGS) -DBINPATH=\"$(BINDIR)\" \
- -DETCPATH=\"$(ETCDIR)\" -DSBINPATH=\"$(SBINDIR)\" \
- -DLOGPATH=\"$(LOGDIR)\" -c $(srcdir)/tailor.c
-baduser.o: $(HFILES) $(HDIR)tailor.h $(HDIR)logger.h
-chkpassword.o: $(HFILES)
-getpassword.o: $(HFILES)
-putenv.o: $(HFILES)
-chrcnv.o: $(HFILES)
-cmd_srch.o: $(HFILES) $(HDIR)cmd_srch.h
-lexequ.o: $(HFILES)
-lexnequ.o: $(HFILES)
-log_tai.o: $(HFILES) $(HDIR)logger.h
-nochrcnv.o: $(HFILES)
-rcmd_srch.o: $(HFILES) $(HDIR)cmd_srch.h
-smalloc.o: $(HFILES) $(HDIR)tailor.h
-sstr2arg.o: $(HFILES)
-isoservent.o: $(HFILES) $(HDIR)isoservent.h $(HDIR)tailor.h $(HDIR)logger.h
-servbyname.o: $(HFILES) $(HDIR)isoservent.h $(HDIR)tailor.h $(HDIR)logger.h
-servbyport.o: $(HFILES) $(HDIR)isoservent.h $(HDIR)tailor.h $(HDIR)logger.h
-servbysel.o: $(HFILES) $(HDIR)isoservent.h $(HDIR)tailor.h $(HDIR)logger.h
-isoaddrs.o: $(HFILES) $(HDIR)isoaddrs.h $(HDIR)internet.h $(HDIR)tailor.h \
- $(HDIR)logger.h
-str2saddr.o: $(HFILES) $(HDIR)isoaddrs.h
-str2taddr.o: $(HFILES) $(HDIR)isoaddrs.h
-saddr2str.o: $(HFILES) $(HDIR)isoaddrs.h
-taddr2str.o: $(HFILES) $(HDIR)isoaddrs.h
-na2norm.o: $(HFILES) $(HDIR)isoaddrs.h $(HDIR)internet.h $(HDIR)tailor.h \
- $(HDIR)logger.h
-norm2na.o: $(HDIR)psap.h $(HFILES) $(HDIR)isoaddrs.h $(HDIR)tailor.h \
- $(HDIR)logger.h
-na2str.o: $(HFILES) $(HDIR)isoaddrs.h
-pa2str.o: $(HFILES) $(HDIR)isoaddrs.h
-internet.o: $(HFILES) $(HDIR)internet.h
-dgram.o: $(HFILES) $(HDIR)tailor.h $(HDIR)logger.h \
- $(HDIR)dgram.h $(HDIR)internet.h $(HDIR)tp4.h
-bridge.o: $(HFILES) $(HDIR)internet.h $(HDIR)internet.h $(HDIR)tailor.h \
- $(HDIR)logger.h $(HDIR)tpkt.h $(HDIR)tsap.h
-camtec.o: $(HFILES) $(HDIR)x25.h $(HDIR)tailor.h $(HDIR)logger.h \
- $(HDIR)tpkt.h $(HDIR)tsap.h
-sunlink.o: $(HFILES) $(HDIR)isoaddrs.h $(HDIR)x25.h $(HDIR)tailor.h \
- $(HDIR)logger.h
-ubcx25.o: $(HFILES) $(HDIR)x25.h $(HDIR)tailor.h $(HDIR)logger.h \
- $(HDIR)tpkt.h $(HDIR)tsap.h
-ultrix.o: $(HFILES) $(HDIR)x25.h $(HDIR)tailor.h $(HDIR)logger.h \
- $(HDIR)tpkt.h $(HDIR)tsap.h
-hpuxx25.o: $(HFILES) $(HDIR)x25.h $(HDIR)tailor.h $(HDIR)logger.h \
- $(HDIR)tpkt.h $(HDIR)tsap.h
-x25addr.o: $(HFILES) $(HDIR)x25.h $(HDIR)tailor.h $(HDIR)logger.h \
- $(HDIR)tpkt.h $(HDIR)tsap.h
-
-
-################################################################
-# isologs
-################################################################
-
-inst-isologs: $(SBINDIR)isologs
-
-$(SBINDIR)isologs: isologs.sh Makefile
- -cp $@ zxisologs
- -rm -f $@
- sed -e 's%@(ETCDIR)%$(ETCDIR)%' < isologs.sh | \
- sed -e 's%@(LOGDIR)%$(LOGDIR)%' > $@
- chmod a+rx $@
- -@ls -gls $@
- -@echo ""
-
-
-################################################################
-# manual pages
-################################################################
-
-MANUALS = libicompat.3
-
-manuals:; @$(UTILDIR)inst-man.sh $(MANOPTS) $(MANUALS)
- -@echo ""
-
-
-################################################################
-# clean
-################################################################
-
-clean::; rm -f *.o *.a z* _* core compatvrsn.c
-
-grind:; iprint Makefile
- tgrind -lc $(CFILES) compatvrsn.c llib-lcompat
- @echo $(MANUALS) | \
- tr " " "\012" | \
- sed -e "s%.*%itroff -man &%" | \
- sh -ve
diff --git a/src/isode/compat/asprintf.c b/src/isode/compat/asprintf.c
deleted file mode 100644
index 0ea2b09543..0000000000
--- a/src/isode/compat/asprintf.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* asprintf.c - sprintf with errno */
-
-/*
- * isode/compat/asprintf.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include <varargs.h>
-#include "general.h"
-#include "manifest.h"
-
-/* DATA */
-
-extern int errno;
-
-/* */
-
-void asprintf (bp, ap) /* what, fmt, args, ... */
-char *bp;
-va_list ap;
-{
- char *what;
-
- what = va_arg (ap, char *);
-
- _asprintf (bp, what, ap);
-}
-
-
-void _asprintf (bp, what, ap) /* fmt, args, ... */
-register char *bp;
-char *what;
-va_list ap;
-{
- register int eindex;
- char *fmt;
-
- eindex = errno;
-
- *bp = NULL;
- fmt = va_arg (ap, char *);
-
- if (fmt) {
-#ifndef VSPRINTF
- struct _iobuf iob;
-#endif
-
-#ifndef VSPRINTF
-#ifdef pyr
- memset ((char *) &iob, 0, sizeof iob);
- iob._file = _NFILE;
-#endif
- iob._flag = _IOWRT | _IOSTRG;
-#if !defined(vax) && !defined(pyr)
- iob._ptr = (unsigned char *) bp;
-#else
- iob._ptr = bp;
-#endif
- iob._cnt = BUFSIZ;
- _doprnt (fmt, ap, &iob);
- putc (NULL, &iob);
-#else
- (void) vsprintf (bp, fmt, ap);
-#endif
- bp += strlen (bp);
-
- }
-
- if (what) {
- if (*what) {
- (void) sprintf (bp, " %s: ", what);
- bp += strlen (bp);
- }
- (void) strcpy (bp, sys_errname (eindex));
- bp += strlen (bp);
- }
-
- errno = eindex;
-}
diff --git a/src/isode/compat/baduser.c b/src/isode/compat/baduser.c
deleted file mode 100644
index a93a62bab6..0000000000
--- a/src/isode/compat/baduser.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* baduser.c - check file of bad users */
-
-/*
- * isode/compat/baduser.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* */
-
-int baduser (file, user)
-char *file,
- *user;
-{
- int hit,
- tries;
- register char *bp;
- char buffer[BUFSIZ];
- FILE *fp;
-
- hit = 0;
- for (tries = 0; tries < 2 && !hit; tries++) {
- switch (tries) {
- case 0:
- if (file) {
- bp = isodefile (file, 0);
- break;
- }
- tries++;
- /* and fall */
- default:
- bp = "/etc/ftpusers";
- break;
- }
- if ((fp = fopen (bp, "r")) == NULL)
- continue;
-
- while (fgets (buffer, sizeof buffer, fp)) {
- if (bp = index (buffer, '\n'))
- *bp = NULL;
- if (strcmp (buffer, user) == 0) {
- hit++;
- break;
- }
- }
-
- (void) fclose (fp);
- }
-
-
- return hit;
-}
diff --git a/src/isode/compat/bridge.c b/src/isode/compat/bridge.c
deleted file mode 100644
index 7166a2ada9..0000000000
--- a/src/isode/compat/bridge.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* bridge.c - X.25 abstractions for TCP bridge to X25 */
-
-/*
- * isode/compat/bridge.c
- * Contributed by Julian Onions, Nottingham University in the UK
- *
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-#include "internet.h"
-#include "tpkt.h"
-
-/* TCP/X.25 BRIDGE */
-
-#ifdef BRIDGE_X25
-
-
-static int assfd[FD_SETSIZE];
-static char bridge_inited = 0;
-
-/* */
-
-/* ARGSUSED */
-
-int start_bridge_client (local)
-struct NSAPaddr *local;
-{
- int sd;
- u_short port;
- register struct servent *sp;
-
- if ((sp = getservbyname ("x25bridge", "tcp")) == NULL)
- port = x25_bridge_port;
- else
- port = sp -> s_port;
-
- if ((sd = in_connect (x25_bridge_host, port)) == NOTOK)
- return NOTOK;
-
- if (write_tcp_socket (sd, "\01", 1) != 1) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("initial write"));
-
- (void) close_tcp_socket (sd);
- return NOTOK;
- }
-
- return sd;
-}
-
-/* */
-
-static int in_connect (addr, port)
-char *addr;
-u_short port;
-{
- int sd;
- struct sockaddr_in in_socket;
- register struct sockaddr_in *isock = &in_socket;
- register struct hostent *hp;
-
- if ((hp = gethostbystring (addr)) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP, ("%s: unknown host", addr));
-
- return NOTOK;
- }
-
- memset ((char *) isock, 0, sizeof *isock);
- isock -> sin_family = hp -> h_addrtype;
- isock -> sin_port = port;
- inaddr_copy (hp, isock);
-
- if ((sd = start_tcp_client ((struct sockaddr_in *) NULL, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("start_tcp_client"));
-
- return NOTOK;
- }
-
- if (join_tcp_server (sd, isock) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("join_tcp_server"));
-
- (void) close_tcp_socket (sd);
- return NOTOK;
- }
-
- return sd;
-}
-
-/* */
-
-int join_bridge_server (fd, remote)
-int fd;
-register struct NSAPaddr *remote;
-{
- if (remote != NULLNA)
- remote -> na_stack = NA_BRG, remote -> na_community = ts_comm_x25_default;
- if (bridge_write_nsap_addr (fd, remote, write_tcp_socket) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP, ("write of NSAP failed"));
-
- return NOTOK;
- }
-
- return fd;
-}
-
-/* */
-
-int start_bridge_server (local, backlog, opt1, opt2)
-struct NSAPaddr *local;
-int backlog,
- opt1,
- opt2;
-{
- int len,
- new,
- sd;
- u_short port;
- struct servent *sp;
- struct sockaddr_in in_socket;
- register struct sockaddr_in *isock = &in_socket;
-
- if (bridge_inited == 0) {
- for (sd = 0; sd < FD_SETSIZE; sd++)
- assfd[sd] = NOTOK;
- bridge_inited = 1;
- }
- if ((sp = getservbyname ("x25bridge", "tcp")) == NULL)
- port = x25_bridge_port;
- else
- port = sp -> s_port;
-
- if ((sd = in_connect (x25_bridge_host, port)) == NOTOK)
- return NOTOK;
-
- if (write_tcp_socket (sd, "\02", 1) != 1) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("initial write"));
-
- (void) close_tcp_socket (sd);
- return NOTOK;
- }
-
- if (local != NULLNA)
- local -> na_stack = NA_BRG, local -> na_community = ts_comm_x25_default;
- if (local != NULLNA && local -> na_dtelen == 0)
- {
- (void) strcpy (local -> na_dte, x25_bridge_addr);
- local -> na_dtelen = strlen(x25_bridge_addr);
- }
- if (local != NULLNA) {
- DLOG (compat_log, LLOG_DEBUG,
- ("addr", "type=%d '%s' len=%d",
- local -> na_stack, local -> na_dte,local -> na_dtelen));
- DLOG (compat_log, LLOG_DEBUG,
- ("addr", "pid='%s'(%d) fac='%s'(%d) cudf='%s'(%d)",
- local -> na_pid, local -> na_pidlen,
- local -> na_fac, local -> na_faclen,
- local -> na_pid, local -> na_pidlen,
- local -> na_cudf, local -> na_cudflen));
- }
-
- if (bridge_write_nsap_addr (sd, local, write_tcp_socket) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP, ("write of NSAP failed"));
-
- (void) close_tcp_socket (sd);
- return NOTOK;
- }
-
- if ((new = in_listen (backlog, opt1, opt2)) == NOTOK) {
- (void) close_tcp_socket (sd);
- return NOTOK;
- }
-
- len = sizeof *isock;
- if (getsockname (new, (struct sockaddr *) isock, &len) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("getsockname"));
-
-out: ;
- (void) close_tcp_socket (sd);
- (void) close_tcp_socket (new);
- return NOTOK;
- }
-
- isock -> sin_family = htons (isock -> sin_family);
- if (write_tcp_socket (sd, (char *)isock, sizeof *isock) != sizeof *isock) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("write of sockaddr_in"));
-
- goto out;
- }
- assfd[new] = sd;
-
- return new;
-}
-
-int get_bridge_assfd(fd)
-int fd;
-{
- if (!bridge_inited)
- return NOTOK;
- return assfd[fd];
-}
-
-/* */
-
-static int in_listen (backlog, opt1, opt2)
-int backlog,
- opt1,
- opt2;
-{
- int sd;
- char *cp;
- struct sockaddr_in lo_socket;
- register struct sockaddr_in *lsock = &lo_socket;
- register struct hostent *hp;
-
- if ((hp = gethostbystring (cp = getlocalhost ())) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP, ("%s: unknown host", cp));
-
- return NOTOK;
- }
-
- memset ((char *) lsock, 0, sizeof *lsock);
- lsock -> sin_family = hp -> h_addrtype;
- inaddr_copy (hp, lsock);
-
- if ((sd = start_tcp_server (lsock, backlog, opt1, opt2)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("start_tcp_server"));
-
- return NOTOK;
- }
-
- return sd;
-}
-
-/* */
-
-int join_bridge_client (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- int new;
- struct sockaddr_in in_socket;
- struct NSAPaddr sock;
-
- if ((new = join_tcp_client (fd, &in_socket)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("join_tcp_client"));
-
- return NOTOK;
- }
-
- if (bridge_read_nsap_addr (new, &sock, read_tcp_socket) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("read of NSAP"));
-
- (void) close_tcp_socket (new);
- return NOTOK;
- }
- DLOG (compat_log, LLOG_DEBUG,
- ("addr", "type=%d '%s' len=%d", sock.na_stack, sock.na_dte,
- sock.na_dtelen));
- DLOG (compat_log, LLOG_DEBUG,
- ("addr", "pid='%s'(%d) fac='%s'(%d) cudf='%s'(%d)",
- sock.na_pid, sock.na_pidlen,
- sock.na_fac, sock.na_faclen,
- sock.na_pid, sock.na_pidlen,
- sock.na_cudf, sock.na_cudflen));
- sock.na_stack = ntohl (sock.na_stack);
- *remote = sock;
- DLOG (compat_log, LLOG_DEBUG,
- ("addr", "type=%d '%s' len=%d",
- remote -> na_stack, remote -> na_dte,remote -> na_dtelen));
- DLOG (compat_log, LLOG_DEBUG,
- ("addr", "pid='%s'(%d) fac='%s'(%d) cudf='%s'(%d)",
- remote -> na_pid, remote -> na_pidlen,
- remote -> na_fac, remote -> na_faclen,
- remote -> na_pid, remote -> na_pidlen,
- remote -> na_cudf, remote -> na_cudflen));
- return new;
-}
-
-int close_bridge_socket (sd)
-int sd;
-{
- if (bridge_inited && assfd[sd] != NOTOK)
- (void) close_tcp_socket (assfd[sd]);
- assfd[sd] = NOTOK;
- return close_tcp_socket (sd);
-}
-
-/* ARGSUSED */
-
-int bridgediscrim (na)
-struct NSAPaddr *na;
-{
-#ifndef X25
- return 1; /* must be bridge */
-#else
- int len = strlen (x25_bridge_discrim);
-
- if (len == 1 && *x25_bridge_discrim == '-')
- return 0;
-
- return (len == 0 ? 1
- : strncmp (na -> na_dte, x25_bridge_discrim, len) == 0);
-#endif
-}
-#endif
-
-/*
- * Structure is as follows :-
- * 0-1 type
- * 2-17 dte
- * 18 dte len
- * 19-22 pid
- * 23 pid len
- * 24-39 user data
- * 40 user data len
- * 41-46 facilities
- * 47 facility length
- */
-
-int bridge_write_nsap_addr (fd, nsap, writefnx)
-int fd;
-struct NSAPaddr *nsap;
-IFP writefnx;
-{
- u_short na_stack;
- char buffer[50];
-
- if (nsap == NULLNA || (na_stack = nsap -> na_stack) != NA_BRG)
- return NOTOK;
- na_stack = htons(na_stack);
- memcpy (buffer, (char *)&na_stack, sizeof(na_stack));
- memcpy (&buffer[2], nsap -> na_dte, 16);
- buffer[18] = nsap -> na_dtelen;
- memcpy (&buffer[19], nsap -> na_pid, 4);
- buffer[23] = nsap -> na_pidlen;
- memcpy (&buffer[24], nsap -> na_cudf, 16);
- buffer[40] = nsap -> na_cudflen;
- memcpy (&buffer[41], nsap -> na_fac, 6);
- buffer[47] = nsap -> na_faclen;
- if ((*writefnx) (fd, buffer, 48) != 48)
- return NOTOK;
- return OK;
-}
-
-static int readx ();
-
-int bridge_read_nsap_addr (fd, nsap, readfnx)
-int fd;
-struct NSAPaddr *nsap;
-IFP readfnx;
-{
- u_short na_stack;
- char buffer[50];
-
- if (readx (fd, buffer, 48, readfnx) != 48)
- return NOTOK;
- memcpy ((char *)&na_stack, buffer, sizeof(na_stack));
- na_stack = ntohs(na_stack);
- if (na_stack != NA_BRG)
- return NOTOK;
- nsap -> na_stack = na_stack;
- memcpy (nsap -> na_dte, &buffer[2], 16);
- nsap -> na_dtelen = buffer[18];
- memcpy (nsap -> na_pid, &buffer[19], 4);
- nsap -> na_pidlen = buffer[23];
- memcpy (nsap -> na_cudf, &buffer[24], 16);
- nsap -> na_cudflen = buffer[40];
- memcpy (nsap -> na_fac, &buffer[41], 6);
- nsap -> na_faclen = buffer[47];
- return OK;
-}
-
-static int readx (fd, buffer, n, readfnx)
-int fd;
-char *buffer;
-int n;
-IFP readfnx;
-{
- register int i,
- cc;
- register char *bp;
-
- for (bp = buffer, i = n; i > 0; bp += cc, i -= cc) {
- switch (cc = (*readfnx) (fd, bp, i)) {
- case NOTOK:
- return (i = bp - buffer) ? i : NOTOK;
-
- case OK:
- break;
-
- default:
- continue;
- }
- break;
- }
-
- return (bp - buffer);
-}
diff --git a/src/isode/compat/camtec.c b/src/isode/compat/camtec.c
deleted file mode 100644
index 31c04e3c21..0000000000
--- a/src/isode/compat/camtec.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* camtec.c - X.25, CONS abstractions for CAMTEC CCL */
-
-/*
- * isode/compat/camtec.c
- * Contributed by Keith Ruttle, CAMTEC Electronics Ltd
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-#ifdef X25
-
-#include "x25.h"
-#include "isoaddrs.h"
-
-
-#ifdef CAMTEC_CCL
-
-#include "tailor.h"
-#include "tpkt.h"
-
-/* 4.[23] UNIX: CCL X25 */
-
-
-static char calling_dte[NSAP_DTELEN + 1];
-
-/* */
-
-int start_x25_client (local)
-struct NSAPaddr *local;
-{
- int sd, pgrp;
- CONN_DB l_iov;
-
- if (local != NULLNA)
- local -> na_stack = NA_X25, local -> na_community = ts_comm_x25_default;
- if ((sd = socket (AF_CCL, SOCK_STREAM, CCLPROTO_X25)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK; /* Error can be found in errno */
- }
-
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("SIOCSPGRP"));
- return NOTOK; /* Error can be found in errno */
- }
-
- l_iov.ccl_iovec[0].iov_base = calling_dte;
- gen2if(local, &l_iov, ADDR_LOCAL);
-
- return sd;
-}
-
-/* */
-
-int start_x25_server (local, backlog, opt1, opt2)
-struct NSAPaddr *local;
-int backlog,
- opt1,
- opt2;
-{
- int sd, pgrp;
- CONN_DB b_iov;
- char param1[128];
-
- b_iov.ccl_iovec[0].iov_base = param1;
-
- if ((sd = socket (AF_CCL, SOCK_STREAM, CCLPROTO_X25)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK; /* Can't get an X.25 socket */
- }
-
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("SIOCSPGRP"));
- return NOTOK; /* Error can be found in errno */
- }
-
- if (local != NULLNA) {
- local -> na_stack = NA_X25, local -> na_community = ts_comm_x25_default;
- if (local -> na_dtelen == 0) {
- (void) strcpy (local -> na_dte, x25_local_dte);
- local -> na_dtelen = strlen(x25_local_dte);
- if (local -> na_pidlen == 0 && *x25_local_pid)
- local -> na_pidlen =
- str2sel (x25_local_pid, -1, local -> na_pid, NPSIZE);
- }
- }
-
- (void) gen2if (local, &b_iov, ADDR_LISTEN);
- if (bind (sd, &b_iov, sizeof(b_iov)) != NOTOK) {
- if (ioctl(sd, CCL_AUTO_ACCEPT, 1) < 0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("CCL_AUTO_ACCEPT"));
- close (sd);
- return NOTOK;
- }
- (void) listen (sd, backlog);
- return sd;
- }
-
- (void) close (sd);
- return NOTOK;
-}
-
-/* */
-
-int join_x25_client (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB sck;
- struct iovec *iov;
- int i, len = 0;
- int nfd;
- char param1[128];
- char param2[128];
- char param3[128];
- char param4[256];
-
- iov = &(sck.ccl_iovec[0]);
- if((nfd = accept (fd, (char *) 0, &len)) == NOTOK)
- return NOTOK;
- iov[0].iov_base = param1;
- iov[1].iov_base = param2;
- iov[2].iov_base = param3;
- iov[3].iov_base = param4;
- iov[0].iov_len = iov[1].iov_len = iov[2].iov_len = 128;
- iov[3].iov_len = 256;
- iov[4].iov_len = iov[5].iov_len = iov[6].iov_len = 0;
- if (ioctl(nfd, CCL_FETCH_CONNECT, &iov[0]) < 0)
- return NOTOK;
- (void) if2gen (remote, &sck, ADDR_REMOTE);
- ioctl (nfd, CCL_SEND_TYPE, 0);
- return nfd;
-}
-
-int join_x25_server (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB zsck;
- CONN_DB *sck = &zsck;
- int r;
- struct iovec *iov = &( zsck.ccl_iovec[0] );
- char param1[128];
- char param3[128];
- char param4[256];
-
- if (remote == NULLNA || remote -> na_stack != NA_X25)
- {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("Invalid type na%d", remote->na_stack));
- return NOTOK;
- }
-
- iov[0].iov_base = param1;
- iov[1].iov_base = calling_dte;
- iov[1].iov_len = strlen(calling_dte);
- iov[2].iov_base = param3;
- iov[3].iov_base = param4;
- iov[4].iov_len = iov[5].iov_len = iov[6].iov_len = 0;
-
- (void) gen2if (remote, sck, ADDR_REMOTE);
- if ((r = connect (fd, sck, sizeof (CONN_DB))) >= 0)
- ioctl (fd, CCL_SEND_TYPE, 0);
- memset(calling_dte, 0, sizeof calling_dte );
- return (r);
-}
-
-int read_x25_socket (fd, buffer, len)
-int fd, len;
-char *buffer;
-{
- static u_char mode;
- int cc, count = 0, total = len;
- char *p = buffer;
-
- do {
- cc = recv (fd, p, total, 0);
- switch (cc) {
- case NOTOK:
- if (errno == ECONNRESET) {
- struct iovec iov[7];
- char parm[34];
- int i;
- iov[0].iov_base = parm;
- iov[0].iov_len = 1;
- iov[1].iov_base = parm + 1;
- iov[1].iov_len = 32;
- for (i = 2; i < 7; i++) {
- iov[i].iov_base = (char *)0;
- iov[i].iov_len = 0;
- }
- ioctl(fd, CCL_FETCH_RESET, iov);
- elucidate_x25_err( 1 << RECV_DIAG, iov[0].iov_base);
- }
- case 0:
- return cc;
-
- default:
- ioctl (fd, CCL_RECV_TYPE, &mode);
- count += cc;
- p += cc;
- total -= cc;
- break;
- }
- } while (total > 0 && (mode & MORE_DATA));
-
- DLOG (compat_log, LLOG_DEBUG,
- ("X25 read, total %d", count ));
- return count;
-}
-
-int write_x25_socket (fd, buffer, len)
-int fd, len;
-char *buffer;
-{
- int count;
- int cc;
-
- count = send(fd, buffer, len, 0);
- DLOG (compat_log, LLOG_DEBUG,
- ("X25 write, total %d/%d", count, len));
- return count;
-}
-#else /* CAMTEC_CCL */
-int _camtec_sunlink_stub2 () {}
-#endif /* CAMTEC_CCL */
-#else /* X25 */
-int _camtec_sunlink_stub () {}
-#endif /* X25 */
diff --git a/src/isode/compat/chkpassword.c b/src/isode/compat/chkpassword.c
deleted file mode 100644
index dfef5180b3..0000000000
--- a/src/isode/compat/chkpassword.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* chkpassword.c - check the password */
-
-/*
- * isode/compat/chkpassword.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-
-char *crypt ();
-
-
-#ifdef KRB_PASSWD
-#include <krb.h>
-#endif
-
-/* L.McLoughlin added kerberos passwd checking - based on original
- * code from xnlock by S. Lacey.
- * Takes the username, the password from the password file, and the passwd
- * the user is trying to use.
- * Returns 1 if the passwd matches otherwise 0.
- */
-
-#ifndef KRB_PASSWD
-/* ARGSUSED */
-#endif
-
-int chkpassword ( usrname, pwpass, usrpass )
-char *usrname;
-char *pwpass;
-char *usrpass;
-{
-#ifdef KRB_PASSWD
- char realm[REALM_SZ];
- int krbval;
-
- /*
- * check to see if the passwd is `*krb*'
- * if it is, use kerberos
- */
-
- if (strcmp(pwpass, "*krb*") == 0) {
- /*
- * use kerberos, first of all find the realm
- */
- if (krb_get_lrealm(realm, 1) != KSUCCESS) {
- (void) strncpy(realm, KRB_REALM, sizeof(realm));
- }
-
- /*
- * now check the passwd
- */
- krbval = krb_get_pw_in_tkt(usrname, "",
- realm, "krbtgt",
- realm,
- DEFAULT_TKT_LIFE, usrpass);
-
- return (krbval == INTK_OK);;
- }
-#endif
-
- /*
- * use passwd file password
- */
- return (strcmp(crypt(usrpass, pwpass), pwpass) == 0);
-}
diff --git a/src/isode/compat/chrcnv.c b/src/isode/compat/chrcnv.c
deleted file mode 100644
index 5e9738db13..0000000000
--- a/src/isode/compat/chrcnv.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* chrcnv.c - character conversion table */
-
-/*
- * isode/compat/chrcnv.c
- */
-
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-
-/* */
-
-char /* character conversion table */
- chrcnv[] = /* lower to upper case letters */
-{
- '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7',
- '\10', '\t', '\n', '\13', '\14', '\r', '\16', '\17',
- '\20', '\21', '\22', '\23', '\24', '\25', '\26', '\27',
- '\30', '\31', '\32', '\33', '\34', '\35', '\36', '\37',
- ' ', '!', '"', '#', '$', '%', '&', '\47',
- '(', ')', '*', '+', ',', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', ':', ';', '<', '=', '>', '?',
- '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
- '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '{', '|', '}', '~', '\177',
- '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7',
- '\10', '\t', '\n', '\13', '\14', '\r', '\16', '\17',
- '\20', '\21', '\22', '\23', '\24', '\25', '\26', '\27',
- '\30', '\31', '\32', '\33', '\34', '\35', '\36', '\37',
- ' ', '!', '"', '#', '$', '%', '&', '\47',
- '(', ')', '*', '+', ',', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', ':', ';', '<', '=', '>', '?',
- '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
- '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '{', '|', '}', '~', '\177'
-};
-
diff --git a/src/isode/compat/cmd_srch.c b/src/isode/compat/cmd_srch.c
deleted file mode 100644
index 40bc9df7e1..0000000000
--- a/src/isode/compat/cmd_srch.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* cmd_srch.c - search a lookup table: return numeric value */
-
-/*
- * isode/compat/cmd_srch.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include "manifest.h"
-#include "cmd_srch.h"
-
-/* */
-
-/* map a string onto a value */
-
-cmd_srch(str, cmd)
-register char *str;
-register CMD_TABLE *cmd;
-{
- extern char chrcnv[];
-
- for(;cmd->cmd_key != NULLCP; cmd++)
- if(chrcnv[*str] == chrcnv[*cmd->cmd_key] &&
- lexequ(str, cmd->cmd_key) == 0)
- return(cmd->cmd_value);
- return(cmd->cmd_value);
-}
diff --git a/src/isode/compat/configure.in b/src/isode/compat/configure.in
deleted file mode 100644
index 7c8d29c885..0000000000
--- a/src/isode/compat/configure.in
+++ /dev/null
@@ -1,6 +0,0 @@
-AC_INIT(configure.in)
-WITH_CCOPTS
-CONFIG_RULES
-AC_SET_BUILDTOP
-AC_REPLACE_FUNCS(strdup)
-V5_AC_OUTPUT_MAKEFILE
diff --git a/src/isode/compat/dgram.c b/src/isode/compat/dgram.c
deleted file mode 100644
index 0919d5f8aa..0000000000
--- a/src/isode/compat/dgram.c
+++ /dev/null
@@ -1,785 +0,0 @@
-/* dgram.c - datagram (CL-mode TS) abstractions */
-
-/*
- * isode/compat/dgram.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-#include "dgram.h"
-#ifdef TCP
-#include "internet.h"
-#endif
-#ifdef TP4
-#include "tp4.h"
-#endif
-
-
-#if defined(SOCKETS) && (defined(TCP) || defined(CLTS))
-#ifndef DEBUG
-#define action(s,f,i)
-#else
-static action ();
-#endif
-
-extern int errno;
-extern IFP set_check_fd ();
-
-/* */
-
-union sockaddr_un { /* 'cause sizeof (struct sockaddr_iso) == 32 */
- struct sockaddr sa;
-
-#ifdef TCP
- struct sockaddr_in sin;
-#endif
-
-#ifdef BSD_TP4
- union sockaddr_osi sosi;
-#endif
-};
-
-
-struct dgramblk {
- int dgram_parent;
- union sockaddr_un dgram_peer;
-#ifdef BSD44
- u_char dgram_addrlen;
-#endif
-
- struct qbuf dgram_queue;
-};
-
-
-static int maxpeers = 0;
-static struct dgramblk *peers = NULL;
-
-/* */
-
-#ifdef TCP
-
-/* ARGSUSED */
-
-int start_udp_server (sock, backlog, opt1, opt2)
-struct sockaddr_in *sock;
-int backlog,
- opt1,
- opt2;
-{
- register int port;
- int sd;
-#ifdef BSD43
- int onoff;
-#endif
- register struct dgramblk *up,
- *vp;
-
- if (peers == NULL) {
- maxpeers = getdtablesize ();
- peers = (struct dgramblk *) calloc ((unsigned)maxpeers, sizeof *peers);
- if (peers == NULL)
- return NOTOK;
-
- for (vp = (up = peers) + maxpeers; up < vp; up++) {
- up -> dgram_parent = NOTOK;
- up -> dgram_queue.qb_forw = up -> dgram_queue.qb_back =
- &up -> dgram_queue;
- }
- }
-
- if ((sd = socket (AF_INET, SOCK_DGRAM, 0)) == NOTOK)
- return NOTOK;
-
- if (sock -> sin_port != 0) {
- action ("BIND", sd, (struct sockaddr *) sock);
-
- if (bind (sd, (struct sockaddr *) sock, sizeof *sock) != NOTOK)
- goto got_socket;
-
- (void) close (sd);
- return NOTOK;
- }
- else
- sock -> sin_family = AF_INET;
-
- for (port = IPPORT_RESERVED;; port++) {
- sock -> sin_port = htons ((u_short) port);
-
- action ("BIND", sd, (struct sockaddr *) sock);
-
- if (bind (sd, (struct sockaddr *) sock, sizeof *sock) != NOTOK)
- break;
-
- switch (errno) {
- case EADDRINUSE:
- continue;
-
- case EADDRNOTAVAIL:
- default:
- (void) close (sd);
- return NOTOK;
- }
- }
-
-got_socket: ;
-#ifdef DEBUG
- {
- int len = sizeof *sock;
-
- action ("FOO1", sd, (struct sockaddr *) sock);
- if (getsockname (sd, (struct sockaddr *) sock, &len) != NOTOK)
- action ("FOO2", sd, (struct sockaddr *) sock);
- }
-#endif
-
-#ifndef BSD43
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, NULLCP, 0);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, NULLCP, 0);
-#else
- onoff = 1;
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, (char *)&onoff, sizeof onoff);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, (char *)&onoff, sizeof onoff);
-#endif
-
- (void) set_check_fd (sd, check_dgram_socket, NULLCP);
- return (peers[sd].dgram_parent = sd);
-}
-#endif
-
-/* */
-
-#ifdef BSD_TP4
-
-/* ARGSUSED */
-
-int start_clts_server (sock, backlog, opt1, opt2)
-union sockaddr_osi *sock;
-int backlog,
- opt1,
- opt2;
-{
- int sd;
-#ifdef BSD43
- int onoff;
-#endif
- u_char *cp;
- register struct dgramblk *up,
- *vp;
- struct sockaddr_iso *ifaddr = &sock -> osi_sockaddr;
-
- if (peers == NULL) {
- maxpeers = getdtablesize ();
- peers = (struct dgramblk *) calloc ((unsigned)maxpeers, sizeof *peers);
- if (peers == NULL)
- return NOTOK;
-
- for (vp = (up = peers) + maxpeers; up < vp; up++) {
- up -> dgram_parent = NOTOK;
- up -> dgram_queue.qb_forw = up -> dgram_queue.qb_back =
- &up -> dgram_queue;
- }
- }
-
- if ((sd = socket (AF_ISO, SOCK_DGRAM, 0)) == NOTOK)
- return NOTOK;
-
- if (ifaddr -> siso_tlen != 0) {
- action ("BIND", sd, (struct sockaddr *) ifaddr);
-
- if (bind (sd, (struct sockaddr *) ifaddr, (int) ifaddr -> siso_len)
- != NOTOK)
- goto got_socket;
-
- (void) close (sd);
- return NOTOK;
- }
- else
- ifaddr -> siso_family = AF_ISO;
-
- {
- int pid;
- u_char *dp,
- *ep,
- *fp;
-
- pid = getpid ();
- cp = fp = (u_char *) ifaddr -> siso_data + ifaddr -> siso_nlen;
- for (ep = (dp = (u_char *) &pid) + sizeof pid; dp < ep; dp++)
- *cp++ = *dp;
- ifaddr -> siso_tlen = (cp - fp) + 1;
- ifaddr -> siso_slen = ifaddr -> siso_plen = 0;
- ifaddr -> siso_len = sizeof *ifaddr;
- }
-
- for (*cp = 0x00; *cp < 0xff; *cp += 1) {
- action ("BIND", sd, (struct sockaddr *) ifaddr);
-
- if (bind (sd, (struct sockaddr *) ifaddr, (int) ifaddr -> siso_len)
- != NOTOK)
- goto got_socket;
-
- switch (errno) {
- case EADDRINUSE:
- continue;
-
- case EADDRNOTAVAIL:
- default:
- (void) close (sd);
- return NOTOK;
- }
- }
- (void) close (sd);
- errno = EADDRNOTAVAIL;
- return NOTOK;
-
-got_socket: ;
-#ifdef DEBUG
- {
- int len = sizeof *sock;
-
- action ("FOO1", sd, ifaddr);
- if (getsockname (sd, (struct sockaddr *) ifaddr, &len) != NOTOK)
- action ("FOO2", sd, ifaddr);
- }
-#endif
-
-#ifndef BSD43
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, NULLCP, 0);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, NULLCP, 0);
-#else
- onoff = 1;
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, (char *)&onoff, sizeof onoff);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, (char *)&onoff, sizeof onoff);
-#endif
-
- (void) set_check_fd (sd, check_dgram_socket, NULLCP);
- return (peers[sd].dgram_parent = sd);
-}
-#endif
-
-/* */
-
-int join_dgram_aux (fd, sock, newfd)
-int fd,
- newfd;
-struct sockaddr *sock;
-{
- int nfds,
- sd;
- fd_set ifds;
- register struct qbuf *qb;
- register struct dgramblk *up;
-
- if (fd < 0 || fd >= maxpeers || peers[fd].dgram_parent != fd) {
- errno = EINVAL;
- return NOTOK;
- }
-
- if (newfd) {
- FD_ZERO (&ifds);
-
- nfds = fd + 1;
- FD_SET (fd, &ifds);
- if (select_dgram_socket (nfds, &ifds, NULLFD, NULLFD, OK) == NOTOK)
- return NOTOK;
-
- up = &peers[fd];
- if ((qb = up -> dgram_queue.qb_forw) == &up -> dgram_queue) {
- errno = EWOULDBLOCK;
- return NOTOK;
- }
-
- if ((sd = dup (fd)) == NOTOK)
- return NOTOK;
- (void) set_check_fd (fd, check_dgram_socket, NULLCP);
-
- up = &peers[sd];
-#ifdef BSD44
- memcpy ((caddr_t) sock, qb -> qb_base,
- ((struct sockaddr *) qb -> qb_base) -> sa_len);
-#else
- *sock = *((struct sockaddr *) qb -> qb_base); /* struct copy */
-#endif
-
- remque (qb);
- insque (qb, up -> dgram_queue.qb_back);
- }
- else
- up = &peers[fd];
-
- up -> dgram_parent = fd;
-#ifdef BSD44
- if (sock -> sa_len == 0)
- sock -> sa_len = sizeof *sock;
- memcpy ((caddr_t) &up -> dgram_peer, (caddr_t) sock, sock -> sa_len);
- {
- struct sockaddr_in *sin;
-
- up -> dgram_addrlen = sock -> sa_family != AF_INET ? sock -> sa_len
- : sizeof *sin - sizeof sin -> sin_zero;
- }
-#else
- up -> dgram_peer.sa = *sock; /* struct copy */
-#endif
-
- action ("JOIN", newfd ? sd : fd, sock);
-
- return (newfd ? sd : OK);
-}
-
-/* */
-
-int read_dgram_socket (fd, q)
-int fd;
-struct qbuf **q;
-{
- int nfds;
- fd_set ifds,
- mask;
- register struct qbuf *qb;
- register struct dgramblk *up;
-
- if (fd < 0
- || fd >= maxpeers
- || (up = &peers[fd]) -> dgram_parent == NOTOK) {
- errno = EINVAL;
- return NOTOK;
- }
-
- if ((qb = up -> dgram_queue.qb_forw) == &up -> dgram_queue) {
- FD_ZERO (&mask);
-
- nfds = fd + 1;
- FD_SET (fd, &mask);
- for (ifds = mask;; ifds = mask) {
- if (select_dgram_socket (nfds, &ifds, NULLFD, NULLFD, NOTOK)
- == NOTOK)
- return NOTOK;
-
- if ((qb = up -> dgram_queue.qb_forw) != &up -> dgram_queue)
- break;
- }
- }
-
- remque (qb);
- qb -> qb_forw = qb -> qb_back = qb;
-
- *q = qb;
-
- return qb -> qb_len;
-}
-
-/* */
-
-int hack_dgram_socket (fd, sock)
-int fd;
-struct sockaddr *sock;
-{
- register struct dgramblk *up;
-
- if (fd < 0
- || fd >= maxpeers
- || (up = &peers[fd]) -> dgram_parent != fd) {
- errno = EINVAL;
- return NOTOK;
- }
-
- if (sock == NULL) {
- memset ((caddr_t) &up -> dgram_peer, 0, sizeof up -> dgram_peer);
- return OK;
- }
-
-#ifdef BSD44
- if (sock -> sa_len == 0)
- sock -> sa_len = sizeof *sock;
- memcpy ((caddr_t) &up -> dgram_peer, (caddr_t) sock, sock -> sa_len);
- up -> dgram_addrlen = 0;
-#else
- up -> dgram_peer.sa = *sock; /* struct copy */
-#endif
-
- action ("HACK", fd, sock);
-
- return OK;
-}
-
-
-int write_dgram_socket (fd, qb)
-int fd;
-register struct qbuf *qb;
-{
- register struct dgramblk *up;
-
- if (fd < 0
- || fd >= maxpeers
- || (up = &peers[fd]) -> dgram_parent == NOTOK
- || up -> dgram_peer.sa.sa_family == 0) {
- errno = EINVAL;
- return NOTOK;
- }
-
- action ("SENDTO", fd, &up -> dgram_peer.sa);
-
-#ifdef BSD44
- return sendto (fd, qb -> qb_data, qb -> qb_len, NULL,
- &up -> dgram_peer.sa, (int) up -> dgram_peer.sa.sa_len);
-#else
- return sendto (fd, qb -> qb_data, qb -> qb_len, NULL,
- &up -> dgram_peer.sa, sizeof up -> dgram_peer.sa);
-#endif
-}
-
-
-/* */
-
-int close_dgram_socket (fd)
-int fd;
-{
- register struct dgramblk *up,
- *vp;
-
- if (fd < 0
- || fd >= maxpeers
- || (up = &peers[fd]) -> dgram_parent == NOTOK) {
- errno = EINVAL;
- return NOTOK;
- }
-
- action ("CLOSE", fd, &up -> dgram_peer.sa);
-
- up -> dgram_parent = NOTOK;
- memset ((char *) &up -> dgram_peer, 0, sizeof up -> dgram_peer);
- QBFREE (&up -> dgram_queue);
-
- for (vp = (up = peers) + maxpeers; up < vp; up++)
- if (up -> dgram_parent == fd)
- up -> dgram_parent = up - peers;
-
- (void) set_check_fd (fd, NULLIFP, NULLCP);
- return close (fd);
-}
-
-/* */
-
-int select_dgram_socket (nfds, rfds, wfds, efds, secs)
-int nfds;
-fd_set *rfds,
- *wfds,
- *efds;
-int secs;
-{
- register int fd;
- int cc,
- mfds,
- result;
- fd_set ifds,
- jfds;
- register struct qbuf *qb;
- register struct dgramblk *up,
- *vp;
- struct dgramblk *wp;
- union sockaddr_un *sock;
-
- if (rfds) {
- jfds = *rfds;
-
- if (secs != OK)
- for (vp = (up = peers) + maxpeers, fd = 0; up < vp; up++, fd++)
- if (up -> dgram_parent != NOTOK
- && FD_ISSET (fd, &jfds)
- && up -> dgram_queue.qb_forw != &up -> dgram_queue) {
- secs = OK;
- break;
- }
- }
-
- if ((result = selsocket (nfds, rfds, wfds, efds, secs)) == NOTOK
- || rfds == NULLFD)
- return result;
-
- ifds = *rfds;
- if ((mfds = nfds) > maxpeers)
- mfds = maxpeers;
- for (fd = 0, up = peers; fd < mfds; fd++, up++)
- if (FD_ISSET (fd, &ifds)) {
- int slen;
- u_char len;
- char *data;
-
- FD_CLR (fd, &ifds);
-
- if (up -> dgram_parent == NOTOK)
- continue;
-
- if ((qb = (struct qbuf *) malloc ((unsigned) (sizeof *qb
- + (slen
- = sizeof *sock)
- + MAXDGRAM)))
- == NULL)
- return NOTOK;
-
- sock = (union sockaddr_un *) qb -> qb_base;
- qb -> qb_data = qb -> qb_base + slen;
- if ((cc = recvfrom (fd, qb -> qb_data, MAXDGRAM, NULL,
- &sock -> sa, &slen)) == NOTOK) {
- free ((char *) qb);
- return NOTOK;
- }
-#ifdef BSD44
- sock -> sa.sa_len = slen;
-#endif
- qb -> qb_len = cc;
-
- action ("RECVFROM", fd, &sock -> sa);
-
- vp = up;
- data = sock -> sa.sa_data;
- switch (sock -> sa.sa_family) {
- case AF_INET: /* XXX: doesn't take into account padding */
- len = sizeof sock -> sa.sa_data
- - sizeof sock -> sin.sin_zero;
- break;
-
- default:
-#ifdef BSD44
- len = sock -> sa.sa_len;
-#else
- len = sizeof sock -> sa;
-#endif
- break;
- }
- if (
-#ifdef BSD44
- len != up -> dgram_addrlen ||
-#endif
- memcmp (data, up -> dgram_peer.sa.sa_data, (int) len)
- != 0) {
- for (wp = (vp = peers) + maxpeers; vp < wp; vp++)
- if (vp != up
- && vp -> dgram_parent == up -> dgram_parent
-#ifdef BSD44
- && len == vp -> dgram_addrlen
-#endif
- && memcmp (data, vp -> dgram_peer.sa.sa_data,
- (int) len) == 0)
- break;
- if (vp >= wp
- && (vp = &peers[up -> dgram_parent])
- -> dgram_peer.sa.sa_family != 0) {
- free ((char *) qb);
- continue;
- }
- }
-
- insque (qb, vp -> dgram_queue.qb_back);
-
- if (--result <= 0
- || (result = selsocket (nfds, &ifds, NULLFD, NULLFD, OK))
- <= 0)
- break;
-
- }
-
- for (vp = (up = peers) + maxpeers, fd = 0; up < vp; up++, fd++)
- if (up -> dgram_parent != NOTOK && FD_ISSET (fd, &jfds))
- if (up -> dgram_queue.qb_forw != &up -> dgram_queue)
- FD_SET (fd, rfds);
- else
- FD_CLR (fd, rfds);
-
- result = 0;
- ifds = *rfds;
- if (wfds)
- for (fd = 0; fd < nfds; fd++)
- if (FD_ISSET (fd, wfds))
- FD_SET (fd, &ifds);
- if (efds)
- for (fd = 0; fd < nfds; fd++)
- if (FD_ISSET (fd, efds))
- FD_SET (fd, &ifds);
- for (fd = 0; fd < nfds; fd++)
- if (FD_ISSET (fd, &ifds))
- result++;
-
- return result;
-}
-
-/* */
-
-int check_dgram_socket (fd)
-int fd;
-{
- int nfds;
- fd_set ifds;
-
- FD_ZERO (&ifds);
-
- nfds = fd + 1;
- FD_SET (fd, &ifds);
-
- return select_dgram_socket (nfds, &ifds, NULLFD, NULLFD, OK);
-}
-
-/* */
-
-#ifdef DEBUG
-
-#ifdef TCP
-#include "isoaddrs.h"
-
-
-static inetprint (sin, bp)
-struct sockaddr_in *sin;
-char *bp;
-{
- (void) sprintf (bp, "Internet=%s+%d+%d", inet_ntoa (sin -> sin_addr),
- (int) ntohs (sin -> sin_port), NA_TSET_UDP);
-}
-#endif
-
-/* */
-
-#ifdef CLTS
-/* prints OSI address using the format described in:
-
- "A string encoding of Presentation Address"
-
- S.E. Kille, Research Note RN/89/14, February 1989
- Department of Computer Science
- University College London
-
- */
-
-#ifndef SSEL
-#define SSEL(s) ((s)->siso_tlen + TSEL(s))
-#define PSEL(s) ((s)->siso_slen + SSEL(s))
-#endif
-
-
-static isoprint (siso, bp)
-register struct sockaddr_iso *siso;
-char *bp;
-{
- int didone = 0;
-
- if (siso -> siso_plen) {
- hexprint (bp, siso -> siso_plen, PSEL (siso), "'", "'H");
- bp += strlen (bp);
- *bp++ = '/';
- didone++;
- }
- if (siso -> siso_slen || didone) {
- hexprint (bp, siso -> siso_slen, SSEL (siso), "'", "'H");
- bp += strlen (bp);
- *bp++ = '/';
- didone++;
- }
- if (siso -> siso_tlen || didone) {
- hexprint (bp, siso -> siso_tlen, TSEL (siso), "'", "'H");
- bp += strlen (bp);
- *bp++ = '/';
- didone++;
- }
- hexprint (bp, siso -> siso_nlen, siso -> siso_data, "NS+", "");
-}
-
-
-static hexprint (bp, n, buf, start, stop)
-char *bp;
-int n;
-u_char *buf;
-char *start,
- *stop;
-{
- register u_char *in = buf, *top = in + n;
-
- if (n == 0)
- return;
-
- (void) strcpy (bp, start);
- bp += strlen (bp);
-
- while (in < top) {
- (void) sprintf (bp, "%02x", *in++ & 0xff);
- bp += 2;
- }
-
- (void) strcpy (bp, stop);
-}
-#endif
-
-/* */
-
-static struct printent {
- int p_family;
- IFP p_function;
-} ents[] = {
-#ifdef TCP
- AF_INET, inetprint,
-#endif
-
-#ifdef CLTS
- AF_ISO, isoprint,
-#endif
-
- NULL
-};
-
-static action (s, fd, sock)
-char *s;
-int fd;
-struct sockaddr *sock;
-{
- char buffer[BUFSIZ];
- register struct printent *p;
-
- if (!(compat_log -> ll_events & LLOG_TRACE))
- return;
-
- for (p = ents; p -> p_family; p++)
- if (p -> p_family == sock -> sa_family)
- break;
- if (!p -> p_family) {
- DLOG (compat_log, LLOG_EXCEPTIONS,
- ("unknown dgram address family 0x%x", sock -> sa_family));
- return;
- }
-
- (void) (*p -> p_function) (sock, buffer);
-
- DLOG (compat_log, LLOG_TRACE, ("%-10.10s %d %s", s, fd, buffer));
-}
-#endif
-
-#else
-
-/* */
-
-int dgram_dummy () {}
-
-#endif
diff --git a/src/isode/compat/explode.c b/src/isode/compat/explode.c
deleted file mode 100644
index ec0fe0d8be..0000000000
--- a/src/isode/compat/explode.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* explode.c - explode octets into ascii */
-
-/*
- * isode/compat/explode.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* DATA */
-
-static char nib2hex[0x10] = {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
-};
-
-/* */
-
-int explode (a, b, n)
-register char *a;
-register u_char *b;
-register int n;
-{
- register int i;
- register u_char c;
-
- for (i = 0; i < n; i++) {
- c = *b++;
- *a++ = nib2hex[(u_char)(c & 0xf0) >> 4];
- *a++ = nib2hex[(c & 0x0f)];
- }
- *a = NULL;
-
- return (n * 2);
-}
diff --git a/src/isode/compat/general.c b/src/isode/compat/general.c
deleted file mode 100644
index 65ea8db109..0000000000
--- a/src/isode/compat/general.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* general.c - general utilities for emulation of 4.2BSD */
-
-/*
- * isode/compat/general.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* Berkeley UNIX: 4.2 */
-
-#ifdef BSD42
-
-/* Simply including "general.h" is sufficient. */
-
-int _general_stub () {};
-
-#endif
-
-/* non-Berkeley UNIX */
-
-#if !defined(BSDLIBC) || defined(BSD44)
-
-#ifndef lint
-
-struct qelem {
- struct qelem *q_forw;
- struct qelem *q_back;
- char q_data[1]; /* extensible */
-};
-
-
-insque (elem, pred)
-struct qelem *elem,
- *pred;
-{
- pred -> q_forw -> q_back = elem;
- elem -> q_forw = pred -> q_forw;
- elem -> q_back = pred;
- pred -> q_forw = elem;
-}
-
-
-remque (elem)
-struct qelem *elem;
-{
- elem -> q_forw -> q_back = elem -> q_back;
- elem -> q_back -> q_forw = elem -> q_forw;
-}
-
-#endif
-#endif
-
-/* DUP2 */
-
-#ifndef BSD42
-#ifdef SYS5
-#include <fcntl.h>
-#endif
-
-
-extern int errno;
-
-
-int dup2 (d1, d2)
-register int d1,
- d2;
-{
- int d;
-
- if (d1 == d2)
- return OK;
-
- (void) close (d2);
-#ifdef F_DUPFD
- if ((d = fcntl (d1, F_DUPFD, d2)) == NOTOK)
- return NOTOK;
-#else
- if ((d = dup2_aux (d1, d2)) == NOTOK)
- return NOTOK;
-#endif
- if (d == d2)
- return OK;
-
- errno = 0;
- return NOTOK;
-}
-
-
-#ifndef F_DUPFD
-dup2_aux (d1, d2)
-int d1,
- d2;
-{
- int fd,
- result;
-
- if ((fd = dup (d1)) == NOTOK || fd == d2)
- return fd;
-
- result = dup2_aux (d1, d2);
-
- (void) close (fd);
-
- return result;
-}
-#endif
-#endif
-
-/* BYTEORDER */
-
-#ifndef SWABLIB
-
-/* ROS and HP-UX don't seem to have these in libc.a */
-
-#undef ntohs
-u_short ntohs (netshort) u_short netshort; { return netshort; }
-
-#undef htons
-u_short htons (hostshort) u_short hostshort; { return hostshort; }
-
-#undef ntohl
-u_long ntohl (netlong) u_long netlong; { return netlong; }
-
-#undef htonl
-u_long htonl (hostlong) u_long hostlong; { return hostlong; }
-
-#endif
diff --git a/src/isode/compat/getpassword.c b/src/isode/compat/getpassword.c
deleted file mode 100644
index 9397471f0d..0000000000
--- a/src/isode/compat/getpassword.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* getpassword.c - generic read-the-password-from-the-tty */
-
-/*
- * isode/compat/getpassword.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <signal.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "sys.file.h"
-
-#ifdef BSD44
-char *getpass ();
-#endif
-
-/* */
-
-/* roll our own since want to get past UNIX's limit of 8 octets... */
-
-char *getpassword (prompt)
-char *prompt;
-{
-#ifndef BSD44
- register int c;
- int flags,
- isopen;
- register char *bp,
- *ep;
-#if !defined(SYS5) && !defined(XOS_2)
- struct sgttyb sg;
-#else
- struct termio sg;
-#endif
- SFP istat;
- FILE *fp;
- static char buffer[BUFSIZ];
-
-#ifdef SUNLINK_7_0
- fp = stdin, isopen = 0; /* will help greatly to work off a script */
-#else
- if ((c = open ("/dev/tty", O_RDWR)) != NOTOK && (fp = fdopen (c, "r")))
- setbuf (fp, NULLCP), isopen = 1;
- else {
- if (c != NOTOK)
- (void) close (c);
-
- fp = stdin, isopen = 0;
- }
-#endif
-
- istat = signal (SIGINT, SIG_IGN);
-
-#if !defined(SYS5) && !defined(XOS_2)
- (void) gtty (fileno (fp), &sg);
- flags = sg.sg_flags;
- sg.sg_flags &= ~ECHO;
- (void) stty (fileno (fp), &sg);
-#else
- (void) ioctl (fileno (fp), TCGETA, (char *) &sg);
- flags = sg.c_lflag;
- sg.c_lflag &= ~ECHO;
- (void) ioctl (fileno (fp), TCSETAW, (char *) &sg);
-#endif
-
-#ifdef SUNLINK_7_0
- (void) fprintf (stdout, "%s", prompt);
- (void) fflush (stdout);
-#else
- (void) fprintf (stderr, "%s", prompt);
- (void) fflush (stderr);
-#endif
-
- for (ep = (bp = buffer) + sizeof buffer - 1; (c = getc (fp)) != EOF;)
-#ifndef apollo
- if (c == '\n')
-#else
- if (c == '\n' || c == '\r')
-#endif
- break;
- else
- if (bp < ep)
- *bp++ = c;
- *bp = NULL;
-
-#ifdef SUNLINK_7_0
- (void) fprintf (stdout, "\n");
- (void) fflush (stdout);
-#else
- (void) fprintf (stderr, "\n");
- (void) fflush (stderr);
-#endif
-
-#if !defined(SYS5) && !defined(XOS_2)
- sg.sg_flags = flags;
- (void) stty (fileno (fp), &sg);
-#else
- sg.c_lflag = flags;
- (void) ioctl (fileno (fp), TCSETAW, (char *) &sg);
-#endif
-
- (void) signal (SIGINT, istat);
-
- if (isopen)
- (void) fclose (fp);
-
- return buffer;
-#else
- return getpass (prompt);
-#endif
-}
diff --git a/src/isode/compat/hpuxx25.c b/src/isode/compat/hpuxx25.c
deleted file mode 100644
index 366a5926d5..0000000000
--- a/src/isode/compat/hpuxx25.c
+++ /dev/null
@@ -1,902 +0,0 @@
-/* hpuxx25.c - X.25 abstractions for HPUX X25/9000 */
-
-/*
- * isode/compat/hpuxx25.c
- * Contributed by John Pavel, Department of Trade and Industry/National
- * Physical Laboratory in the UK
- *
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include <signal.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* HP UNIX: X25/9000 */
-
-#ifdef X25
-
-#include "x25.h"
-#include "isoaddrs.h"
-
-#ifdef HPUX_X25
-
-#define CALLING 0
-#define CALLED 1
-#define PROBE (-1)
-
-struct fdl_st {
- int fd;
- struct fdl_st *next;
- };
-static struct fdl_st *fdl = NULL;
-static void setup_sigurg ();
-static void clear_sigurg ();
-
-/* */
-
-#ifdef DEBUG
-void print_x25_facilities ();
-#endif
-
-/* */
-
-/* ARGSUSED */
-
-int start_x25_client (local, priv)
-struct NSAPaddr *local;
-int priv;
-{
- int sd, pgrp;
-
- if ((sd = socket (AF_CCITT, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK;
- }
-
- pgrp = -getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("SIOCSPGRP"));
- return NOTOK; /* Error can be found in errno */
- }
-
- return sd;
-}
-
-/* */
-
-int start_x25_server (local, backlog, opt1, opt2)
-struct NSAPaddr *local;
-int backlog,
- opt1,
- opt2;
-{
- CONN_DB sbuf;
- CONN_DB *sock;
- int sd, onoff, pgrp;
- char cudfbuf [NPSIZE + CUDFSIZE];
-
- memset(&sbuf, 0, sizeof(CONN_DB));
- sbuf.addr.x25_family = AF_CCITT;
- if ((sd = socket (AF_CCITT, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK;
- }
-
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("SIOCSPGRP"));
- return NOTOK; /* Error can be found in errno */
- }
-
- /* if neither dte or pid are given use dte from interface */
- if (!(local->na_dtelen || local->na_pidlen)) {
- strcpy (sbuf.addr.x25ifname, "x25_0");
- if (ioctl (sd, X25_RD_HOSTADR, (char *) &sbuf.addr) == NOTOK) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_HOSTADR"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
- sbuf.addr.x25ifname [0] = '\0';
- sbuf.addr.x25hostlen = strlen(sbuf.addr.x25_host);
- if (x25_dnic_prefix && *x25_dnic_prefix)
- strcpy (local->na_dte, x25_dnic_prefix);
- strcat (local->na_dte, sbuf.addr.x25_host);
- local->na_dtelen = strlen (local->na_dte);
- }
- /* Avoid a null local dte address, set it to '0', */
- /* gen2if will set it back to zero in interface address */
- if (!local->na_dtelen) {
- local->na_dtelen = 1;
- local->na_dte [0] = '0';
- }
- sock = gen2if(local, &sbuf, ADDR_LISTEN);
-
- if (sock->cudf.x25_cud_len)
- if (ioctl (sd, X25_WR_USER_DATA, &sock->cudf) == -1) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_WR_USER_DATA"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
- if (bind (sd, (X25_ADDR *) &sock->addr, sizeof(X25_ADDR)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-
-#ifndef BSD43
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, NULLCP, 0);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, NULLCP, 0);
-#else
- onoff = 1;
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, (char *)&onoff, sizeof onoff);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, (char *)&onoff, sizeof onoff);
-#endif
-
- if (set_x25_facilities(sd, CALLED, "Acceptable") == NOTOK) {
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-
- (void) listen (sd, backlog);
-
- onoff = 0;
- if (ioctl (sd, X25_CALL_ACPT_APPROVAL, (char *) &onoff) == NOTOK) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed",
- ("X25_CALL_ACPT_APPROVAL"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-
- return sd;
-}
-
-/* */
-
-int join_x25_server (fd, remote)
-register int fd;
-register struct NSAPaddr *remote;
-{
- CONN_DB sbuf;
- CONN_DB *sock = &sbuf;
- register int nfd;
-
- memset(&sbuf, 0, sizeof(CONN_DB));
- sbuf.addr.x25_family = AF_CCITT;
- sock = gen2if (remote, sock, ADDR_REMOTE);
-
- if (set_x25_facilities(fd, CALLING, "Proposed") == NOTOK)
- return NOTOK;
-
- if (sock->cudf.x25_cud_len)
- if (ioctl (fd, X25_WR_USER_DATA, &sock->cudf) == -1) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_WR_USER_DATA"));
- return NOTOK;
- }
- setup_sigurg (fd);
- if ((nfd = connect (fd, (X25_ADDR *) &sock->addr, sizeof (X25_ADDR)))
- == NOTOK) {
- return nfd;
- }
-#ifdef DEBUG
- else
- if (x25_log -> ll_events & LLOG_DEBUG)
- (void) log_x25_facilities(fd, CALLING, "Effective Calling");
-#endif
-
- remote = if2gen (remote, sock, ADDR_REMOTE);
-
- return nfd;
-}
-
-/* */
-
-int join_x25_client (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB sbuf;
- CONN_DB *sock = &sbuf;
- int len = sizeof *sock;
- int nfd;
-
- memset(&sbuf, 0, sizeof(CONN_DB));
- sbuf.addr.x25_family = AF_CCITT;
- if ((nfd = accept (fd, (X25_ADDR *) &sock->addr, &len)) == NOTOK) {
- return nfd;
- }
-
- setup_sigurg (nfd);
- if (ioctl(nfd,X25_SEND_CALL_ACEPT, NULLCP) < 0)
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_SEND_CALL_ACEPT"));
-
-#ifdef DEBUG
- if (x25_log -> ll_events & LLOG_DEBUG)
- (void) log_x25_facilities(fd, CALLED, "Effective Called");
-#endif
- remote = if2gen (remote, sock, ADDR_REMOTE);
-
- return nfd;
-}
-
-/* */
-
-int fac_ccitt2hp (ccitt, hp)
-CCITT_FACILITY_DB *ccitt;
-FACILITY_DB *hp;
-{
- register int i, j;
- int returncode = OK;
-
- memset (hp, 0, sizeof (FACILITY_DB));
- for (i = 0; i < ccitt->x25_fac_len; i++)
- switch (ccitt->x25_fac [i]) {
- case 0x01:
- hp->t_01 = ccitt->x25_fac [++i];
- break;
- case 0x02:
- hp->t_02 = ccitt->x25_fac [++i];
- break;
- case 0x03:
- hp->t_03_sel = 1;
- hp->t_03 = ccitt->x25_fac [++i];
- break;
- case 0x07:
- hp->t_07 = ccitt->x25_fac [++i];
- break;
- case 0x41:
- hp->t_41_sel = 1;
- hp->t_41 = ccitt->x25_fac [++i] << 8;
- hp->t_41 += ccitt->x25_fac [++i];
- break;
- case 0x42:
- hp->t_42 [0] = ccitt->x25_fac [++i];
- hp->t_42 [1] = ccitt->x25_fac [++i];
- break;
- case 0x43:
- hp->t_43 [0] = ccitt->x25_fac [++i];
- hp->t_43 [1] = ccitt->x25_fac [++i];
- break;
- case 0x44:
- hp->t_44_sel = 1;
- hp->t_44 = ccitt->x25_fac [++i] << 8;
- hp->t_44 += ccitt->x25_fac [++i];
- break;
- default:
- /* ignore parameter */
- returncode = NOTOK;
- switch (ccitt->x25_fac [i] & 0xc0) {
- case 0x00:
- i += 1; break;
- case 0x40:
- i += 2; break;
- case 0x80:
- i += 3; break;
- case 0xc0:
- i += ccitt->x25_fac [++i]; break;
- }
- }
- return (returncode);
-}
-
-
-void fac_hp2ccitt (hp, ccitt)
-FACILITY_DB *hp;
-CCITT_FACILITY_DB *ccitt;
-{
- register int i;
-
- memset (ccitt, 0, sizeof (CCITT_FACILITY_DB));
- i = 0;
- if (hp->t_01) {
- ccitt->x25_fac_len += 2;
- ccitt->x25_fac [i++] = 0x01;
- ccitt->x25_fac [i++] = hp->t_01;
- }
- if (hp->t_02) {
- ccitt->x25_fac_len += 2;
- ccitt->x25_fac [i++] = 0x02;
- ccitt->x25_fac [i++] = hp->t_02;
- }
- if (hp->t_03_sel) {
- ccitt->x25_fac_len += 2;
- ccitt->x25_fac [i++] = 0x03;
- ccitt->x25_fac [i++] = hp->t_03;
- }
- if (hp->t_07) {
- ccitt->x25_fac_len += 2;
- ccitt->x25_fac [i++] = 0x07;
- ccitt->x25_fac [i++] = hp->t_07;
- }
- if (hp->t_41_sel) {
- ccitt->x25_fac_len += 3;
- ccitt->x25_fac [i++] = 0x41;
- ccitt->x25_fac [i++] = hp->t_41 >> 8;
- ccitt->x25_fac [i++] = hp->t_41 && 0xff;
- }
- if (hp->t_42 [0] || hp->t_42 [1]) {
- ccitt->x25_fac_len += 3;
- ccitt->x25_fac [i++] = 0x42;
- ccitt->x25_fac [i++] = hp->t_42 [0];
- ccitt->x25_fac [i++] = hp->t_42 [1];
- }
- if (hp->t_43 [0] || hp->t_43 [1]) {
- ccitt->x25_fac_len += 3;
- ccitt->x25_fac [i++] = 0x43;
- ccitt->x25_fac [i++] = hp->t_43 [0];
- ccitt->x25_fac [i++] = hp->t_43 [1];
- }
- if (hp->t_44_sel) {
- ccitt->x25_fac_len += 3;
- ccitt->x25_fac [i++] = 0x44;
- ccitt->x25_fac [i++] = hp->t_44 >> 8;
- ccitt->x25_fac [i++] = hp->t_44 && 0xff;
- }
-}
-
-
-int set_x25_facilities(sd, coc, caption)
-int sd, coc;
-char *caption;
-{
- FACILITY_DB facilities;
- CCITT_FACILITY_DB ccitt_facilities;
-
- memset ((char *) &facilities, 0, sizeof (FACILITY_DB));
- memset ((char *) &ccitt_facilities, 0, sizeof (CCITT_FACILITY_DB));
-
- if (ioctl (sd, X25_RD_FACILITIES, (char *) &ccitt_facilities) == NOTOK) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_FACILITIES"));
- return NOTOK;
- }
- if (fac_ccitt2hp (&ccitt_facilities, &facilities) == NOTOK)
- SLOG (x25_log, LLOG_EXCEPTIONS, "unkonwn parameter(s)", ("fac_ccitt2hp"));
-
- if (coc == PROBE
- || !(coc == CALLED
- || reverse_charge || recvpktsize || sendpktsize
- || recvwndsize || sendwndsize || recvthruput
- || sendthruput || cug_req /* || cug_index */
- || fast_select_type || rpoa_req /* || rpoa */)) {
- if (facilities.t_42 [0])
- recvpktsize = 1 << facilities.t_42 [0];
- if (facilities.t_42 [1])
- sendpktsize = 1 << facilities.t_42 [1];
- return OK;
- }
-
- if (reverse_charge)
- facilities.t_01 |= 0x01;
- else
- facilities.t_01 &= ~0x01;
-
- switch (recvpktsize) {
- case 16:
- facilities.t_42 [0] = 4;
- break;
- case 32:
- facilities.t_42 [0] = 5;
- break;
- case 64:
- facilities.t_42 [0] = 6;
- break;
- case 128:
- facilities.t_42 [0] = 7;
- break;
- case 256:
- facilities.t_42 [0] = 8;
- break;
- case 512:
- facilities.t_42 [0] = 9;
- break;
- case 1024:
- facilities.t_42 [0] = 10;
- }
- switch (sendpktsize) {
- case 16:
- facilities.t_42 [1] = 4;
- break;
- case 32:
- facilities.t_42 [1] = 5;
- break;
- case 64:
- facilities.t_42 [1] = 6;
- break;
- case 128:
- facilities.t_42 [1] = 7;
- break;
- case 256:
- facilities.t_42 [1] = 8;
- break;
- case 512:
- facilities.t_42 [1] = 9;
- break;
- case 1024:
- facilities.t_42 [1] = 10;
- }
-
- if (recvwndsize)
- facilities.t_43 [0] = recvwndsize;
- if (sendwndsize)
- facilities.t_43 [1] = sendwndsize;
-
- if (sendthruput)
- facilities.t_02 = (facilities.t_02 & 0xf0) | (sendthruput & 0x0f);
- if (recvthruput)
- facilities.t_02 = (facilities.t_02 & 0x0f) | (recvthruput << 4);
-
- if (cug_req) {
- facilities.t_03_sel = 1;
- facilities.t_03 = cug_index;
- }
-
- switch (fast_select_type) {
- case 0:
- facilities.t_01 &= ~CCITT_FAST_SELECT;
- if (coc == CALLED)
- facilities.t_01 |= CCITT_FAST_ACPT_CLR;
- break;
- case 1:
- facilities.t_01 &= ~CCITT_FAST_SELECT;
- facilities.t_01 |= CCITT_FAST_CLR_ONLY;
- break;
- case 2:
- facilities.t_01 &= ~CCITT_FAST_SELECT;
- facilities.t_01 |= CCITT_FAST_ACPT_CLR;
- break;
- default:
- SLOG (x25_log, LLOG_EXCEPTIONS, "illegal value",
- ("fast_select_type"));
- }
-
- /* rpoa not supported - is this parameter t_41 in ccitt-description ??? */
-
- fac_hp2ccitt (&facilities, &ccitt_facilities);
- if (ioctl (sd, X25_WR_FACILITIES, (char *) &ccitt_facilities) == NOTOK) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_WR_FACILITIES"));
- return NOTOK;
- }
-
-#ifdef DEBUG
- if (x25_log -> ll_events & LLOG_DEBUG)
- print_x25_facilities (facilities, coc, caption);
-#endif
-
- if (facilities.t_42 [0])
- recvpktsize = 1 << facilities.t_42 [0];
- if (facilities.t_42 [1])
- sendpktsize = 1 << facilities.t_42 [1];
-
- return OK;
-}
-
-/* */
-
-int log_cause_and_diag(fd)
-int fd;
-{
- char buf [MAX_EVENT_SIZE];
- int buflen;
- char flags = 0;
-
- for (;;) {
- if ((buflen = recv (fd, buf, MAX_EVENT_SIZE, MSG_OOB)) == NOTOK) {
- if (x25_log -> ll_events & LLOG_NOTICE)
- SLOG (x25_log, LLOG_NOTICE,
- "failed", ("recv %d (MSG_OOB)", fd));
- clear_sigurg (fd);
- return OK;
- }
- else if (!buflen)
- return OK;
- switch (buf [1]) {
- case OOB_INTERRUPT:
- SLOG (x25_log, LLOG_NOTICE, NULLCP, ("OOB_INTERRUPT"));
- break;
- case OOB_VC_RESET:
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP, ("OOB_VC_RESET"));
- flags = (1 << RECV_DIAG);
- close_x25_socket (fd);
- break;
- case OOB_VC_CLEAR:
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP, ("OOB_VC_CLEAR"));
- flags = (1 << RECV_DIAG) | (1 << DIAG_TYPE);
- close_x25_socket (fd);
- break;
- case OOB_VC_RESET_CONF:
- SLOG (x25_log, LLOG_NOTICE, NULLCP, ("OOB_VC_RESET_CONF"));
- break;
- case OOB_VC_INTERRUPT_CONF:
- SLOG (x25_log, LLOG_NOTICE, NULLCP, ("OOB_VC_INTERRUPT_CONF"));
- break;
- case OOB_VC_DBIT_CONF:
- SLOG (x25_log, LLOG_NOTICE, NULLCP, ("OOB_VC_DBIT_CONF"));
- break;
- case OOB_VC_MSG_TOO_BIG:
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP, ("OOB_VC_MSG_TOO_BIG"));
- close_x25_socket (fd);
- break;
- case OOB_VC_L2DOWN:
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP, ("OOB_VC_L2DOWN"));
- close_x25_socket (fd);
- break;
- }
- (void) elucidate_x25_err (flags, &buf [2]);
- }
-}
-
-
-void sigurg (sig, code, scp)
-int sig, code;
-struct sigcontext *scp;
-{
- struct fdl_st *fdlp = fdl, *nfdlp;
-
- (void) signal (SIGURG, sigurg);
- while (fdlp != NULL) {
- log_cause_and_diag (fdlp->fd);
- fdlp = fdlp->next;
- }
- if (scp == NULL) {
- SLOG (x25_log, LLOG_NOTICE, NULLCP, ("No signal context"));
- return;
- };
- if (scp->sc_syscall != SYS_NOTSYSCALL)
- scp->sc_syscall_action = SIG_RESTART;
-}
-
-void setup_sigurg (fd)
-int fd;
-{
- struct fdl_st *fdlp = fdl;
-
- (void) signal (SIGURG, sigurg);
- while (fdlp != NULL)
- if (fdlp->fd == fd)
- return;
- else
- fdlp = fdlp->next;
- if ((fdlp = malloc (sizeof (struct fdl_st))) == NULL) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("malloc (sigurg-struct)"));
- return;
- }
- fdlp->fd = fd;
- fdlp->next = fdl;
- fdl = fdlp;
-}
-
-void clear_sigurg (fd)
-int fd;
-{
- struct fdl_st *fdlp = fdl, *nfdlp;
-
- if ((fdl != NULL) && (fdl->fd == fd)) {
- fdl = fdl->next;
- if (free (fdlp) == NOTOK)
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed",
- ("free (sigurg-struct)"));
- return;
- }
- else while (fdlp != NULL)
- if ((fdlp->next != NULL) && (fdlp->next->fd == fd)) {
- nfdlp = fdlp->next;
- fdlp->next = fdlp->next->next;
- if (free (nfdlp) == NOTOK)
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed",
- ("free (sigurg-struct)"));
- }
- else
- fdlp = fdlp->next;
-}
-
-int close_x25_socket (fd)
-int fd;
-{
- clear_sigurg (fd);
- return (close (fd));
-};
-
-
-/* */
-
-#ifdef DEBUG
-
-static int log_x25_facilities (fd, coc, caption)
-int fd;
-int coc;
-char *caption;
-{
- FACILITY_DB hp;
- CCITT_FACILITY_DB ccitt;
-
- if (ioctl (fd, X25_RD_FACILITIES, (char *) &ccitt) == NOTOK) {
- SLOG (x25_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_FACILITIES"));
- return NOTOK;
- }
-
- fac_ccitt2hp (&ccitt, &hp);
- print_x25_facilities (&hp, coc, caption);
-
- return OK;
-}
-
-/* */
-
-static void print_x25_facilities (hp, coc, caption)
-FACILITY_DB *hp;
-int coc;
-char *caption;
-{
- int i, baud;
-
- DLOG (x25_log, LLOG_DEBUG, ("%s X.25 Facilities:", caption));
-
- /* reverse charge */
- switch (hp->t_01 & REVCHARGE) {
- case 0:
- DLOG (x25_log, LLOG_DEBUG, ((coc == CALLED)
- ? "reverse charging not allowed"
- : "reverse charging not requested"));
- break;
-
- case 1:
- DLOG (x25_log, LLOG_DEBUG, ((coc == CALLING)
- ? "reverse charging requested"
- : "reverse charging allowed"));
- break;
- }
-
- /* ACK expected */
- if (hp->t_07 & ACK_EXPECTED)
- DLOG (x25_log, LLOG_DEBUG, ("ACK-packets expected"));
- else
- DLOG (x25_log, LLOG_DEBUG, ("no ACK-packets expected"));
-
- /* NACK expected */
- if (hp->t_07 & NACK_EXPECTED)
- DLOG (x25_log, LLOG_DEBUG, ("NACK-packets expected"));
- else
- DLOG (x25_log, LLOG_DEBUG, ("no NACK-packets expected"));
-
- /* recvpktsize */
- switch (i = hp->t_42 [0] ? (1 << hp->t_42 [0]) : 0) {
- case 0:
- DLOG (x25_log, LLOG_DEBUG, ("default recv packet size"));
- break;
-
- case 16:
- case 32:
- case 64:
- case 128:
- case 256:
- case 512:
- case 1024:
- DLOG (x25_log, LLOG_DEBUG, ("recv packet size %d", i));
- break;
-
- default:
- DLOG (x25_log, LLOG_DEBUG, ("invalid recv packet size %d", i));
- break;
- }
-
- /* sendpktsize */
- switch (i = hp->t_42 [1] ? (1 << hp->t_42 [1]) : 0) {
- case 0:
- DLOG (x25_log, LLOG_DEBUG, ("default send packet size"));
- break;
-
- case 16:
- case 32:
- case 64:
- case 128:
- case 256:
- case 512:
- case 1024:
- DLOG (x25_log, LLOG_DEBUG, ("send packet size %d", i));
- break;
-
- default:
- DLOG (x25_log, LLOG_DEBUG, ("invalid send packet size %d", i));
- break;
- }
-
- DLOG (x25_log, LLOG_DEBUG,
- (hp->t_43 [0] == 0 ? "default recv window size"
- : 1 <= hp->t_43 [0] && hp->t_43 [0] <= 127
- ? "recv window size %d"
- : "invalid recv window size %d",
- hp->t_43 [0]));
-
- DLOG (x25_log, LLOG_DEBUG,
- (hp->t_43 [1] == 0 ? "default send window size"
- : 1 <= hp->t_43 [1] && hp->t_43 [1] <= 127
- ? "send window size %d"
- : "invalid send window size %d",
- hp->t_43 [1]));
-
- /* recvthruput */
- switch (hp->t_02 >> 4) {
- case 0:
- DLOG (x25_log, LLOG_DEBUG, ("default recv throughput"));
- break;
-
- case 3:
- baud = 75;
-print_recv: ;
- DLOG (x25_log, LLOG_DEBUG, ("recv throughput %dbps", baud));
- break;
-
- case 4:
- baud = 150;
- goto print_recv;
-
- case 5:
- baud = 300;
- goto print_recv;
-
- case 6:
- baud = 600;
- goto print_recv;
-
- case 7:
- baud = 1200;
- goto print_recv;
-
- case 8:
- baud = 2400;
- goto print_recv;
-
- case 9:
- baud = 4800;
- goto print_recv;
-
- case 10:
- baud = 9600;
- goto print_recv;
-
- case 11:
- baud = 19200;
- goto print_recv;
-
- case 12:
- baud = 48000;
- goto print_recv;
-
- default:
- DLOG (x25_log, LLOG_DEBUG, ("invalid recv throughput %d",
- hp->t_02 >> 4));
- break;
- }
-
- /* sendthruput */
- switch (hp->t_02 & 0x0f) {
- case 0:
- DLOG (x25_log, LLOG_DEBUG, ("default send throughput"));
- break;
-
- case 3:
- baud = 75;
-print_send: ;
- DLOG (x25_log, LLOG_DEBUG, ("send throughput %dbps", baud));
- break;
-
- case 4:
- baud = 150;
- goto print_send;
-
- case 5:
- baud = 300;
- goto print_send;
-
- case 6:
- baud = 600;
- goto print_send;
-
- case 7:
- baud = 1200;
- goto print_send;
-
- case 8:
- baud = 2400;
- goto print_send;
-
- case 9:
- baud = 4800;
- goto print_send;
-
- case 10:
- baud = 9600;
- goto print_send;
-
- case 11:
- baud = 19200;
- goto print_send;
-
- case 12:
- baud = 48000;
- goto print_send;
-
- default:
- DLOG (x25_log, LLOG_DEBUG, ("invalid send throughput %d",
- hp->t_02 & 0x0f));
- break;
- }
-
- if (hp->t_03_sel)
- DLOG (x25_log, LLOG_DEBUG, ("closed user group 0x%x (BCD)",
- hp->t_03));
- else
- DLOG (x25_log, LLOG_DEBUG, ("no closed user group"));
-
- if (hp->t_41_sel)
- DLOG (x25_log, LLOG_DEBUG, ("bilateral closed user group 0x%x (BCD)",
- hp->t_41 [0] << 8 + hp->t_41 [1]));
- else
- DLOG (x25_log, LLOG_DEBUG, ("no bilateral closed user group"));
-
- switch (hp->t_01 & CCITT_FAST_SELECT) {
- case CCITT_FAST_OFF:
- DLOG (x25_log, LLOG_DEBUG, ("don't use fast select"));
- break;
-
- case CCITT_FAST_CLR_ONLY:
- DLOG (x25_log, LLOG_DEBUG, ("clear is fast select response"));
- break;
-
- case CCITT_FAST_ACPT_CLR:
- DLOG (x25_log, LLOG_DEBUG,
- ("clear or call accepted is fast select response"));
- break;
-
- default:
- DLOG (x25_log, LLOG_DEBUG, ("invalid fast select type %d",
- hp->t_01 & CCITT_FAST_SELECT));
- break;
- }
-
-/*
- * Don't know the meaning of this parameter (is t_44 ?)
- *
- switch (f.rpoa_req) {
- case 0:
- DLOG (x25_log, LLOG_DEBUG, ("no RPOA transit request"));
- break;
-
- case 1:
- DLOG (x25_log, LLOG_DEBUG, ("RPOA transit request 0x%x",
- f.rpoa_req));
- break;
-
- default:
- DLOG (x25_log, LLOG_DEBUG, ("invalid RPOA transit request %d",
- f.rpoa_req));
- }
- *
- *
- */
-}
-#endif
-#else
-int _hpuxx25_stub2 (){;}
-#endif
-#else
-int _hpuxx25_stub (){;}
-#endif
diff --git a/src/isode/compat/implode.c b/src/isode/compat/implode.c
deleted file mode 100644
index 122fb96665..0000000000
--- a/src/isode/compat/implode.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* implode.c - explode ascii into octets */
-
-/*
- * isode/compat/implode.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* DATA */
-
-char hex2nib[0x80] = {
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
-};
-
-/* */
-
-int implode (a, b, n)
-register u_char *a;
-register char *b;
-register int n;
-{
- register int i;
-
- for (i = 0; i < n; i += 2) {
- *a++ = (hex2nib[b[0] & 0x7f] << 4) | (hex2nib[b[1] & 0x7f]);
- b += 2;
- }
-
- return (n / 2);
-}
diff --git a/src/isode/compat/inst-man.sh b/src/isode/compat/inst-man.sh
deleted file mode 100644
index 50f4e33944..0000000000
--- a/src/isode/compat/inst-man.sh
+++ /dev/null
@@ -1,167 +0,0 @@
-: run this script through /bin/sh
-
-# for a non standard base directory, set MANDIR
-
-# set MANOPTS in config/CONFIG.make -- may be one of:
-# -bsd42 man<n>/<file>
-# -bsd44 cat<n>/thing.0
-# -ros man<n>/<file> -- using /etc/install
-# -sys5 <a|p|u>_man/man<n>/<file>
-# -aix <a|p|u>_man/man<n>/<file>
-# -local manl/<base>.l
-# -l man<n>/<base>.<n>l
-# -hpux hpux
-
-BINDIR="@(BINDIR)"
-ETCDIR="@(ETCDIR)"
-INCDIR="@(INCDIR)"
-LOGDIR="@(LOGDIR)"
-SBINDIR="@(SBINDIR)"
-MANDIR="@(MANDIR)"
-
-M=BSD42
-
-if test ! -d ${MANDIR}
-then
- echo "inst-man: ${MANDIR} non-existant directory" 1>&2
- exit 0
-fi
-
-for A in $*
-do
- case $A in
- -bsd42) M=BSD42
- ;;
-
- -bsd44) M=BSD44
- ;;
-
- -ros) M=ROS
- ;;
-
- -local) M=LOCAL
- ;;
-
- -l) M=L
- ;;
-
- -sys5) M=SYS5
- ;;
-
- -aix) M=AIX
- ;;
-
- -hpux) M=HPUX
- ;;
-
- -*) echo "inst-man: $A unknown" 1>&2
- exit 1
- ;;
-
- *) if test ! -f $A
- then
- exit 0
- fi
- F=`basename $A`
- E=`echo $F | sed -e "s%^.*\.\([1-8]\).*%\1%"`
-
- X=/tmp/$F
- rm -f $X
- echo '.ds BD @(BINDIR)' > $X
- echo '.ds ED @(ETCDIR)' >> $X
- echo '.ds ID @(INCDIR)' >> $X
- echo '.ds LD @(LOGDIR)' >> $X
- echo '.ds SD @(SBINDIR)' >> $X
- cat $A >> $X
-
- case $M in
- BSD42)
- echo install -m 0644 -c $X ${MANDIR}man$E/$F
- install -m 0644 -c $X ${MANDIR}man$E/$F
- ;;
-
- BSD44)
- echo "nroff -man $X > ${MANDIR}cat$E/$F" | \
- sed -e 's%\.\([1-8]\)[1-8cn]*$%.0%' | \
- sh -ve
- ;;
-
- LOCAL)
- (cd /tmp ; \
- echo $F | \
- sed -e "s%.*%install -m 0644 -c & ${MANDIR}manl/&%" | \
- sed -e 's%\.[1-8cn]*$%.l%' | \
- sh -ve)
- ;;
-
- L)
- (cd /tmp ; \
- echo "install -m 0644 -c $F ${MANDIR}man$E/$F" | \
- sed -e 's%\.\([1-8]\)[1-8cn]*$%.\1l%' | \
- sh -ve)
- ;;
-
- SYS5|AIX)
- case $E in
- 3) D=p_man ;;
- 5) D=p_man E=4 ;;
- 8) D=a_man E=1 ;;
- *) D=u_man ;;
- esac
- echo /etc/install -m 0644 -f ${MANDIR}$D/man$E $X
- /etc/install -m 0644 -f ${MANDIR}$D/man$E $X
- case $D in
- a_man)
- F=`basename $A .8c`.1m
- echo mv ${MANDIR}$D/man$E/$A \
- ${MANDIR}$D/man$E/$F
- mv ${MANDIR}$D/man$E/$A ${MANDIR}$D/man$E/$F
- ;;
-
- p_man)
- if [ "$E" = "4" ]; then
- F=`basename $A .5`.4
- echo mv ${MANDIR}$D/man$E/$A \
- ${MANDIR}$D/man$E/$F
- mv ${MANDIR}$D/man$E/$A \
- ${MANDIR}$D/man$E/$F
- fi
- ;;
- esac
- ;;
-
- HPUX)
- case $E in
- 5) E=4 ;;
- 8) E=1m ;;
- esac
- echo /etc/install -m 0644 -f ${MANDIR}man$E $X
- /etc/install -m 0644 -f ${MANDIR}man$E $X
- case $E in
- 4) F=`basename $A .5`.4
- echo mv ${MANDIR}man$E/$A ${MANDIR}man$E/$F
- mv ${MANDIR}man$E/$A ${MANDIR}man$E/$F
- ;;
-
- 1m) F=`basename $A .8c`.1m
- echo mv ${MANDIR}man$E/$A ${MANDIR}man$E/$F
- mv ${MANDIR}man$E/$A ${MANDIR}man$E/$F
- ;;
- esac
- ;;
-
- ROS)
- echo /etc/install -m 0644 -c $X ${MANDIR}man$E/$F
- /etc/install -m 0644 -c $X ${MANDIR}man$E/$F
- ;;
-
- *) echo "inst-man: mode botch" 1>&2
- exit 1
- ;;
- esac
- rm -f $X
- ;;
- esac
-done
-
-exit 0
diff --git a/src/isode/compat/internet.c b/src/isode/compat/internet.c
deleted file mode 100644
index fed93bcbdc..0000000000
--- a/src/isode/compat/internet.c
+++ /dev/null
@@ -1,680 +0,0 @@
-/* internet.c - TCP/IP abstractions */
-
-/*
- * isode/compat/internet.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* */
-
-#ifdef TCP
-#include "internet.h"
-
-
-extern int errno;
-
-/* Berkeley UNIX: 4.2 */
-
-#ifdef SOCKETS
-
-/* For real networking, nothing is better than 4BSD! */
-
-
-int start_tcp_client (sock, priv)
-struct sockaddr_in *sock;
-int priv;
-{
- register int port;
- int eindex,
- sd;
-#ifdef BSD43
- int onoff;
-#endif
-
- if ((sd = socket (AF_INET, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK;
- }
-
- if (sock == NULL)
- goto got_socket;
-
- for (port = IPPORT_RESERVED - priv;; priv ? port-- : port++) {
- sock -> sin_port = htons ((u_short) port);
-
- if (bind (sd, (struct sockaddr *) sock, sizeof *sock) != NOTOK)
- break;
-
- switch (errno) {
- case EADDRINUSE:
- if (!priv || (port >= IPPORT_RESERVED / 2))
- continue; /* else fall */
-
- case EADDRNOTAVAIL:
- default:
- eindex = errno;
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_tcp_socket (sd);
- errno = eindex;
- return NOTOK;
- }
- }
-
-got_socket: ;
-#ifndef BSD43
- if (setsockopt (sd, SOL_SOCKET, SO_KEEPALIVE, NULLCP, 0) == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("set SO_KEEPALIVE"));
-#else
- onoff = 1;
- if (setsockopt (sd, SOL_SOCKET, SO_KEEPALIVE, (char *) &onoff,
- sizeof onoff) == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("set SO_KEEPALIVE"));
-#endif
-
- return sd;
-}
-
-/* */
-
-int start_tcp_server (sock, backlog, opt1, opt2)
-struct sockaddr_in *sock;
-int backlog,
- opt1,
- opt2;
-{
- register int port;
- int eindex,
- sd;
-#ifdef BSD43
- int onoff;
-#endif
-
- if ((sd = socket (AF_INET, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK;
- }
-
- if (sock -> sin_port != 0) {
- if (bind (sd, (struct sockaddr *) sock, sizeof *sock) != NOTOK)
- goto got_socket;
-
- eindex = errno;
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_tcp_socket (sd);
- errno = eindex;
- return NOTOK;
- }
-
- for (port = IPPORT_RESERVED;; port++) {
- sock -> sin_port = htons ((u_short) port);
-
- if (bind (sd, (struct sockaddr *) sock, sizeof *sock) != NOTOK)
- break;
-
- switch (errno) {
- case EADDRINUSE:
- continue;
-
- case EADDRNOTAVAIL:
- default:
- eindex = errno;
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_tcp_socket (sd);
- errno = eindex;
- return NOTOK;
- }
- }
-
-got_socket: ;
-#ifndef BSD43
- if (setsockopt (sd, SOL_SOCKET, SO_KEEPALIVE, NULLCP, 0) == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("set SO_KEEPALIVE"));
- if (opt1 && setsockopt (sd, SOL_SOCKET, opt1, NULLCP, 0) == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("set socket option 0x%x", opt1));
- if (opt2 && setsockopt (sd, SOL_SOCKET, opt2, NULLCP, 0) == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("set socket option 0x%x", opt2));
-#else
- onoff = 1;
- if (setsockopt (sd, SOL_SOCKET, SO_KEEPALIVE, (char *) &onoff,
- sizeof onoff) == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("set SO_KEEPALIVE"));
- if (opt1
- && setsockopt (sd, SOL_SOCKET, opt1, (char *) &onoff, sizeof onoff)
- == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("set socket option 0x%x", opt1));
- if (opt2
- && setsockopt (sd, SOL_SOCKET, opt2, (char *) &onoff, sizeof onoff)
- == NOTOK)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("set socket option 0x%x", opt2));
-#endif
-
- (void) listen (sd, backlog);
-
- return sd;
-}
-
-/* */
-
-int join_tcp_client (fd, sock)
-int fd;
-struct sockaddr_in *sock;
-{
- int eindex,
- len = sizeof *sock,
- result;
-
- if ((result = accept (fd, (struct sockaddr *) sock, &len)) == NOTOK) {
- eindex = errno;
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("accept"));
- errno = eindex;
- }
-
- return result;
-}
-
-/* */
-
-int join_tcp_server (fd, sock)
-int fd;
-struct sockaddr_in *sock;
-{
- int eindex,
- result;
-
- if ((result = connect (fd, (struct sockaddr *) sock, sizeof *sock))
- == NOTOK) {
- eindex = errno;
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("connect"));
- errno = eindex;
- }
-
- return result;
-}
-
-/* */
-
-close_tcp_socket (fd)
-int fd;
-{
-#ifdef never_do_this_if_from_join_tcp_client
- (void) shutdown (fd, 2);
-#endif
-
- return (close (fd));
-}
-
-#endif
-
-/* AT&T UNIX: 5r3 using TLI */
-
-
-/* AT&T UNIX: 5 with EXOS 8044 TCP/IP card */
-
-#ifdef EXOS
-
-/* If we had a getsockname() for the EXOS card, then we could postpone some
- of the binding until connect time. But since we don't, our hand is forced
- and we must prematurely bind the sockets to IP addresses. */
-
-
-start_tcp_client (sock, priv)
-struct sockaddr_in *sock;
-int priv;
-{
- register int port;
- int sd;
- register struct hostent *hp;
-
- if (sock == NULL)
- return socket (SOCK_STREAM, 0, (struct sockaddr *) 0, SO_KEEPALIVE);
-
- if (sock -> sin_addr.s_addr == 0) {
- if ((hp = gethostbyname ("localhost")) == NULL) {
- errno = EADDRNOTAVAIL;
- return NOTOK;
- }
- sock -> sin_family = hp -> h_addrtype;
- inaddr_copy (hp, sock);
- }
-
- for (port = IPPORT_RESERVED - priv;; priv ? port-- : port++) {
- sock -> sin_port = htons ((u_short) port);
-
- if ((sd = socket (SOCK_STREAM, 0, (struct sockaddr *) sock,
- SO_KEEPALIVE)) != NOTOK)
- return sd;
-
- switch (errno) {
- case EADDRINUSE:
- if (!priv || (port >= IPPORT_RESERVED / 2))
- continue; /* else fall */
-
- case EADDRNOTAVAIL:
- default:
- return NOTOK;
- }
- }
-}
-
-/* */
-
-int start_tcp_server (sock, backlog, opt1, opt2)
-struct sockaddr_in *sock;
-int backlog,
- opt1,
- opt2;
-{
- register int port;
- int sd;
- register struct hostent *hp;
-
- if (backlog != 1)
- return socket (SOCK_STREAM, 0, (struct sockaddr *) sock,
- SO_ACCEPTCONN | SO_KEEPALIVE | opt1 | opt2);
-
- if (sock -> sin_addr.s_addr == 0) {
- if ((hp = gethostbyname ("localhost")) == NULL) {
- errno = EADDRNOTAVAIL;
- return NOTOK;
- }
- sock -> sin_family = hp -> h_addrtype;
- inaddr_copy (hp, sock);
- }
-
- for (port = IPPORT_RESERVED;; port++) {
- sock -> sin_port = htons ((u_short) port);
-
- if ((sd = socket (SOCK_STREAM, 0, (struct sockaddr *) sock,
- SO_ACCEPTCONN | SO_KEEPALIVE | opt1 | opt2)) != NOTOK)
- return sd;
-
- switch (errno) {
- case EADDRINUSE:
- continue;
-
- case EADDRNOTAVAIL:
- default:
- return NOTOK;
- }
- }
-}
-
-#endif
-
-/* GETHOSTENT PLUS */
-
-static char *empty = NULL;
-#ifdef h_addr
-static char *addrs[2] = { NULL };
-#endif
-
-struct hostent *gethostbystring (s)
-char *s;
-{
- register struct hostent *h;
-#ifndef DG
- static u_long iaddr;
-#else
- static struct in_addr iaddr;
-#endif
- static struct hostent hs;
-
- iaddr = inet_addr (s);
-#ifndef DG
- if (iaddr == NOTOK)
-#else
- if (iaddr.s_addr == NOTOK)
-#endif
- return gethostbyname (s);
-
- h = &hs;
- h -> h_name = s;
- h -> h_aliases = &empty;
- h -> h_addrtype = AF_INET;
- h -> h_length = sizeof (iaddr);
-#ifdef h_addr
- h -> h_addr_list = addrs;
- memset ((char *) addrs, 0, sizeof addrs);
-#endif
- h -> h_addr = (char *) &iaddr;
-
- return h;
-}
-
-/* AT&T UNIX: 5 with EXOS 8044 TCP/IP card */
-
-#ifdef EXOS
-
-long rhost ();
-char *raddr ();
-
-
-struct hostent *gethostbyaddr (addr, len, type)
-char *addr;
-int len,
- type;
-{
- long iaddr;
- char *name;
- static char buffer[BUFSIZ];
- static struct hostent hs;
- register struct hostent *h = &hs;
-
- if (len != sizeof (long) || type != AF_INET)
- return NULL;
- memcpy ((char *) &iaddr, addr, len);
- if ((name = raddr (iaddr)) == NULL)
- return NULL;
-
- (void) strcpy (buffer, name);
- free (name);
-
- h -> h_name = buffer;
- h -> h_aliases = &empty;
- h -> h_addrtype = type;
- h -> h_length = len;
- h -> h_addr = addr;
-
- return h;
-}
-
-
-struct hostent *gethostbyname (name)
-char *name;
-{
- static long iaddr;
- static char buffer[BUFSIZ];
- static struct hostent hs;
- register struct hostent *h = &hs;
-
- if ((iaddr = rhost (&name)) == NOTOK)
- return NULL;
-
- (void) strcpy (buffer, name);
- free (name);
-
- h -> h_name = buffer;
- h -> h_aliases = &empty;
- h -> h_addrtype = AF_INET;
- h -> h_length = sizeof (iaddr);
- h -> h_addr = (char *) &iaddr;
-
- return h;
-
-}
-
-/* */
-
-/* really only need the "tsap" entry in this table... but why not? */
-
-static struct servent services[] = {
- "tsap", NULL, 102, "tcp",
- "miscellany", NULL, 17000, "lpp",
-
- "echo", NULL, 7, "tcp", /* Network standard functions */
- "echo", NULL, 7, "udp",
- "sink", NULL, 9, "tcp",
- "sink", NULL, 9, "udp",
- "users", NULL, 11, "tcp",
- "users", NULL, 11, "udp",
- "daytime", NULL, 13, "tcp",
- "daytime", NULL, 13, "udp",
- "netstat", NULL, 15, "tcp",
- "netstat", NULL, 15, "udp",
- "qotd", NULL, 17, "tcp",
- "qotd", NULL, 17, "udp",
- "chargen", NULL, 19, "tcp",
- "chargen", NULL, 19, "udp",
- "ftp", NULL, 21, "tcp",
- "telnet", NULL, 23, "tcp",
- "smtp", NULL, 25, "tcp",
- "imagen", NULL, 35, "udp",
- "time", NULL, 37, "tcp",
- "time", NULL, 37, "udp",
- "name", NULL, 42, "tcp",
- "name", NULL, 42, "udp",
- "whois", NULL, 43, "tcp",
- "whois", NULL, 43, "udp",
- "nameserver", NULL, 53, "tcp",
- "nameserver", NULL, 53, "udp",
- "mtp", NULL, 57, "tcp",
- "hostnames", NULL, 101, "tcp",
- "pop", NULL, 109, "tcp",
- "pwdgen", NULL, 129, "tcp",
- "pwdgen", NULL, 129, "udp",
- "x25bridge", NULL, 146, "tcp",
- "iso-ip", NULL, 147, "udp",
-
- "tftp", NULL, 69, "udp", /* Host specific functions */
- "rje", NULL, 77, "tcp",
- "nmui", NULL, 77, "udp",
- "finger", NULL, 79, "tcp",
- "finger", NULL, 79, "udp",
- "link", NULL, 87, "tcp",
- "supdup", NULL, 95, "tcp",
- "path", NULL, 117, "tcp",
-
- "exec", NULL, 512, "tcp", /* UNIX TCP sockets */
- "login", NULL, 513, "tcp",
- "shell", NULL, 514, "tcp",
- "printer", NULL, 515, "tcp",
- "rfile", NULL, 522, "tcp",
- "ingreslock", NULL, 1524, "tcp",
-
- "biff", NULL, 512, "udp", /* UNIX UDP sockets */
- "who", NULL, 513, "udp",
- "syslog", NULL, 514, "udp",
- "talk", NULL, 517, "udp",
- "routed", NULL, 520, "udp",
- "router_1", NULL, 521, "udp",
-
- NULL, &empty, 0, NULL
-};
-
-
-
-struct servent *getservbyname (name, proto)
-register char *name,
- *proto;
-{
- register struct servent *s;
-
- for (s = services; s -> s_name; s++)
- if (strcmp (name, s -> s_name) == 0
- && strcmp (proto, s -> s_proto) == 0) {
- if (s -> s_aliases == NULL) {
- s -> s_aliases = &empty;
- s -> s_port = htons ((u_short) s -> s_port);
- }
-
- return s;
- }
-
- return NULL;
-}
-
-/* */
-
-#define s2a(b) (((int) (b)) & 0xff)
-
-char *inet_ntoa (in)
-struct in_addr in;
-{
- register char *s = (char *) &in;
- static char addr[4 * 3 + 3 + 1];
-
- (void) sprintf (addr, "%d.%d.%d.%d",
- s2a (s[0]), s2a (s[1]), s2a (s[2]), s2a (s[3]));
-
- return addr;
-}
-
-
-u_long inet_addr (cp)
-char *cp;
-{
- register int base;
- register char c;
- register u_long val;
- u_long parts[4];
- register u_long *pp = parts;
-
- for (;;) {
- val = 0, base = 10;
- if (*cp == '0')
- base = 8, cp++;
- if (*cp == 'x' || *cp == 'X')
- base = 16, cp++;
-
- for (; isxdigit ((u_char) (c = *cp)); cp++)
- if (base == 16)
- val = (val << 4) + (c + 10 - (islower ((u_char) c) ? 'a' : 'A'));
- else
- if (isdigit ((u_char) c))
- val = (val * base) + (c - '0');
- else
- break;
-
- switch (*cp) {
- case '.':
- if (pp >= parts + 4)
- return NOTOK;
- *pp++ = val, cp++;
- continue;
-
- default:
- if (*cp && !isspace ((u_char) *cp))
- return NOTOK;
- *pp++ = val;
- break;
- }
-
- break;
- }
-
- switch (pp - parts) {
- case 1:
- val = parts[0];
- break;
-
- case 2:
- val = ((parts[0] & 0xff) << 24)
- | (parts[1] & 0xffffff);
- break;
-
- case 3:
- val = ((parts[0] & 0xff) << 24)
- | ((parts[1] & 0xff) << 16)
- | (parts[2] & 0xffff);
- break;
-
- case 4:
- val = ((parts[0] & 0xff) << 24)
- | ((parts[1] & 0xff) << 16)
- | ((parts[2] & 0xff) << 8)
- | (parts[3] & 0xff);
- break;
-
- default:
- return NOTOK;
- }
-
- return htonl (val);
-}
-
-u_long inet_network (cp)
-char *cp;
-{
- register int base;
- register char c;
- register u_long val;
- u_long parts[4];
- register u_long *pp = parts;
-
- for (;;) {
- val = 0, base = 10;
- if (*cp == '0')
- base = 8, cp++;
- if (*cp == 'x' || *cp == 'X')
- base = 16, cp++;
-
- for (; isxdigit ((u_char) (c = *cp)); cp++)
- if (base == 16)
- val = (val << 4) + (c + 10 - (islower ((u_char) c) ? 'a' : 'A'));
- else
- if (isdigit ((u_char) c))
- val = (val * base) + (c - '0');
- else
- break;
-
- switch (*cp) {
- case '.':
- if (pp >= parts + 4)
- return NOTOK;
- *pp++ = val, cp++;
- continue;
-
- default:
- if (*cp && !isspace ((u_char) *cp))
- return NOTOK;
- *pp++ = val;
- break;
- }
-
- break;
- }
-
- switch (pp - parts) {
- case 1:
- val = (parts[0] & 0xff) << 24;
- break;
-
- case 2:
- val = ((parts[0] & 0xff) << 24)
- | ((parts[1] & 0xff) << 16);
- break;
-
- case 3:
- val = ((parts[0] & 0xff) << 24)
- | ((parts[1] & 0xff) << 16)
- | ((parts[2] & 0xff) << 8)
- break;
-
- case 4:
- val = ((parts[0] & 0xff) << 24)
- | ((parts[1] & 0xff) << 16)
- | ((parts[2] & 0xff) << 8)
- | (parts[3] & 0xff);
- break;
-
- default:
- return NOTOK;
- }
-
- return htonl (val);
-}
-#endif
-#endif
diff --git a/src/isode/compat/isoaddrs.c b/src/isode/compat/isoaddrs.c
deleted file mode 100644
index ff01d47043..0000000000
--- a/src/isode/compat/isoaddrs.c
+++ /dev/null
@@ -1,1212 +0,0 @@
-/* isoaddrs.c - simple parsing of ISODE addresses */
-
-/*
- * isode/compat/isoaddrs.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-#include "internet.h"
-#include "tailor.h"
-
-/* DATA */
-
-static int read_macros ();
-static int read_file ();
-static int add_macro ();
-static char *isomacros = "isomacros";
-
-#define MBUCKETS 128
-#define MHASH(nm) \
- (((nm)[1]) ? (((chrcnv[((nm)[0])] - chrcnv[((nm)[1])]) & 0x1f) \
- + ((chrcnv[(nm)[2]]) & 0x5f)) \
- : (chrcnv[(nm)[0]]) & 0x7f)
-
-struct macro {
- char *m_name;
- char *m_value;
-
- struct macro *m_chain;
-};
-
-static int inited = 0;
-static struct macro *Mbuckets[MBUCKETS];
-
-/* MACROS */
-
-static struct macro *name2macro (name)
-char *name;
-{
- register struct macro *m;
-
- read_macros ();
-
- for (m = Mbuckets[MHASH (name)];
- m && lexequ (m -> m_name, name);
- m = m -> m_chain)
- continue;
-
- if (m)
- LLOG (addr_log, LLOG_DEBUG,
- ("MACRO \"%s\" VALUE \"%s\"", m -> m_name, m -> m_value));
- else
- LLOG (addr_log, LLOG_DEBUG,
- ("lookup of MACRO \"%s\" failed", name));
-
- return m;
-}
-
-/* */
-
-static struct macro *value2macro (value)
-char *value;
-{
- register int i,
- j,
- k;
- register struct macro *m,
- *p,
- **np,
- **pp;
-
- read_macros ();
-
- p = NULL, i = 0;
- k = strlen (value);
- for (pp = (np = Mbuckets) + MBUCKETS; np < pp; np++)
- for (m = *np; m; m = m -> m_chain)
- if ((j = strlen (m -> m_value)) <= k
- && j > i
- && strncmp (value, m -> m_value, j) == 0)
- p = m, i = j;
-
- if (p)
- LLOG (addr_log, LLOG_DEBUG,
- ("MACRO \"%s\" VALUE \"%s\" differential %d",
- p -> m_name, p -> m_value, k - strlen (p -> m_value)));
- else
- LLOG (addr_log, LLOG_DEBUG,
- ("lookup of VALUE \"%s\" failed", value));
-
- return p;
-}
-
-/* */
-
-static int read_macros ()
-{
- register char *hp;
- char buffer[BUFSIZ];
-
- if (inited)
- return;
- inited = 1;
-
- memset ((char *) Mbuckets, 0, sizeof Mbuckets);
-
- read_file (isodefile (isomacros, 0));
-
- if ((hp = getenv ("HOME")) == NULL)
- hp = ".";
- (void) sprintf (buffer, "%s/.isode_macros", hp);
- read_file (buffer);
-}
-
-/* */
-
-static int read_file (file)
-char *file;
-{
- register char *cp;
- char buffer[BUFSIZ + 1],
- *vec[NVEC + NSLACK + 1];
- register FILE *fp;
-
- if ((fp = fopen (file, "r")) == NULL)
- return;
-
- while (fgets (buffer, sizeof buffer, fp)) {
- if (*buffer == '#')
- continue;
- if (cp = index (buffer, '\n'))
- *cp = NULL;
- if (str2vec (buffer, vec) < 2)
- continue;
-
- if (add_macro (vec[0], vec[1]) == NOTOK)
- break;
- }
-
- (void) fclose (fp);
-}
-
-/* */
-
-static int add_macro (name, value)
-char *name,
- *value;
-{
- int i;
- register char *cp;
- char buffer[BUFSIZ];
- register struct macro *m,
- *p;
-
- if (cp = index (value, '=')) {
- *cp++ = NULL;
- if ((p = name2macro (value)) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("macro \"%s\" references non-existant macro \"%s\"",
- name, value));
- return OK;
- }
-
- (void) sprintf (value = buffer, "%s%s", p -> m_value, cp);
- }
-
- if ((m = (struct macro *) calloc (1, sizeof *m)) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("calloc of macro structure failed"));
- return NOTOK;
- }
- if ((m -> m_name = malloc ((unsigned) (strlen (name) + 1))) == NULL
- || (m -> m_value = malloc ((unsigned) (strlen (value) + 1)))
- == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("malloc of alias structure failed"));
- if (m -> m_name)
- free (m -> m_name);
- free ((char *) m);
- return NOTOK;
- }
- (void) strcpy (m -> m_name, name);
- (void) strcpy (m -> m_value, value);
-
- m -> m_chain = Mbuckets[i = MHASH (m -> m_name)];
- Mbuckets[i] = m;
-
- return OK;
-}
-
-/* */
-
-char *macro2str (name)
-char *name;
-{
- register struct macro *m = name2macro (name);
-
- return (m ? m -> m_value : NULLCP);
-}
-
-/* STR2PADDR */
-
-#define PS_INIT 0 /* <selector> or <network-address> */
-#define PS_SEL1 1 /* .. got one selector already */
-#define PS_SEL2 2 /* .. got two selectors already */
-#define PS_SEL3 3 /* <network-address> */
-
-
-static struct afi_info {
- char *p_name;
- char *p_dec0, *p_hex0, *p_dec1, *p_hex1, *p_ia5;
- int p_idi_len, p_dec_dsp_len, p_hex_dsp_len;
-} afi_entries[] = {
- "X121", "36", "37", "52", "53", NULL, 14, 24, 9,
- "DCC", "38", "39", NULL, NULL, NULL, 3, 35, 14,
- "TELEX", "40", "41", "54", "55", NULL, 8, 30, 12,
- "PSTN", "42", "43", "56", "57", NULL, 12, 26, 10,
- "ISDN", "44", "45", "58", "59", NULL, 15, 23, 9,
- "ICD", "46", "47", NULL, NULL, NULL, 4, 34, 13,
- "LOCAL", "48", "49", NULL, NULL, "50", 0, 38, 19,
-
- NULL
-};
-#define p_ia5_dsp_len(pp) \
- (pp -> p_ia5 == NULL ? NOTOK : (pp -> p_dec_dsp_len >> 1))
-
-
-static char sel1[TSSIZE];
-static char sel2[TSSIZE];
-static char sel3[TSSIZE];
-static char *sels[3] = {
- sel1, sel2, sel3
-};
-
-
-#define IMPLODE(intres,octres,octval,intval,losing,loslab) \
-{ \
- register int z = (intval); \
- register char *y = (octval); \
- register char *zp = y + z; \
- \
- while (zp-- > y) \
- if (!isxdigit ((u_char) *zp)) { \
-loslab: ; \
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP, \
- ("invalid hexstring: \"%*.*s\"", \
- z, z, y)); \
- return (losing); \
- } \
- if (z % 2) \
- goto loslab; \
- (intres) = implode ((u_char *) (octres), y, z); \
-}
-
-/* */
-
-struct PSAPaddr *str2paddr (str)
-char *str;
-{
- register int state,
- *lp;
- int j,
- lens[3];
- register char *cp,
- *dp,
- *ep,
- *fp,
- *np,
- **sp;
- char buf1[BUFSIZ],
- buf2[BUFSIZ],
- nsap[NASIZE * 2 + 1];
- register struct macro *m;
- register struct afi_info *pp;
- static int i = 0;
- static struct PSAPaddr pas[2];
- register struct PSAPaddr *pa = &pas[i++];
- register struct SSAPaddr *sa = &pa -> pa_addr;
- register struct TSAPaddr *ta = &sa -> sa_addr;
- register struct NSAPaddr *na = ta -> ta_addrs;
-
- LLOG (addr_log, LLOG_DEBUG, ("str2paddr: %s", str));
- i = i % 2;
-
- memset ((char *) pa, 0, sizeof *pa);
- (void) strcpy (buf1, str);
-
- state = PS_INIT;
- sp = sels, lp = lens;
-
- for (cp = buf1; *cp; )
- switch (state) {
- case PS_INIT:
- case PS_SEL1:
- case PS_SEL2:
- switch (*cp) {
- case '"': /* '"' <otherstring> '"' */
- if ((cp = index (dp = cp + 1, '"')) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("missing double-quote in selector: %s",
- str));
- return NULLPA;
- }
- *cp++ = NULL;
- (void) strcpy (*sp, dp);
- *lp = strlen (dp);
- break;
-
- case '#': /* '#' <digitstring> */
- j = 0;
- for (cp++; isdigit ((u_char) *cp); cp++)
- j = j * 10 + *cp - '0';
- if (j > 0xffff) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("invalid #-style selector: %s", str));
- return NULLPA;
- }
- (*sp)[0] = (j >> 8) & 0xff;
- (*sp)[1] = j & 0xff;
- *lp = 2;
- break;
-
- case '\'': /* "'" <hexstring> "'H" */
- if ((cp = index (dp = cp + 1, '\'')) == NULL) {
-missing_quoteH: ;
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("missing 'H in selector: %s",str));
- return NULLPA;
- }
- *cp++ = NULL;
- if (*cp++ != 'H')
- goto missing_quoteH;
- IMPLODE (*lp, *sp, dp, strlen (dp), NULLPA, L1);
- break;
-
- case '/': /* empty selector */
- *lp = 0;
- break;
-
- default:
- goto stuff_selectors;
- }
- sp++, lp++;
- if (*cp++ != '/') {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("missing selector seperator at position %d: %s",
- cp - buf1, str));
- return NULLPA;
- }
- state++;
- break;
-
-stuff_selectors: ;
- state = PS_SEL3;
- /* and fall */
-
- case PS_SEL3:
- if ((cp = index (ep = cp, '|')) == NULL)
- cp = ep + strlen (ep);
- else
- *cp++ = NULL;
-
- if (dp = index (ep, '=')) {
- *dp++ = NULL;
- if ((m = name2macro (ep)) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("non-existant macro \"%s\"", ep));
- return NULLPA;
- }
- (void) sprintf (ep = buf2, "%s%s", m -> m_value, dp);
- }
-
- {
- register int k,
- l,
- n;
- register struct ts_interim *ts,
- *tp;
-
- tp = NULL, n = 0;
- k = strlen (ep);
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (ts -> ts_value
- && (l = strlen (ts -> ts_value)) <= k
- && l > n
- && strncmp (ep, ts -> ts_value, l) == 0)
- tp = ts, n = l;
- if (tp)
- na -> na_community = tp -> ts_subnet;
- else {
- /* Assume all the AFI+IDI[+DSP] formats are
- * SUBNET_REALNS until later. Note that the X121 format
- * without a DSP is converted to SUBNET_INT_X25 later.
- */
- for (pp = afi_entries; pp -> p_name; pp++)
- if (strncmp (pp -> p_name, ep,
- strlen (pp -> p_name) - 1) == 0 &&
- ep[strlen (pp -> p_name)] == '+')
- break;
- if (!pp -> p_name) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unable to determine community for %s",ep));
- return NULLPA;
- }
- na -> na_community = SUBNET_REALNS;
- }
- }
-
- if ((ep = index (dp = ep, '+')) == NULL) {
-missing_seperator: ;
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("missing network-address seperator: %s", str));
- return NULLPA;
- }
- *ep++ = NULL;
- if (ta -> ta_naddr >= NTADDR) {
-#ifdef h_addr
-too_many: ;
-#endif
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("too many network addresses starting at position %d: %s",
- dp - buf1 + 1, str));
- return pa;
- }
-
- na -> na_stack = NA_NSAP;
- LLOG (addr_log, LLOG_DEBUG,
- ("str2paddr: dp='%s', ep='%s'", dp, ep));
-
- if (lexequ (dp, "NS") == 0) {
- IMPLODE (na -> na_addrlen, na -> na_address, ep,
- strlen (ep), NULLPA, L2);
- }
- else {
- int len;
- char padchar;
-
- for (pp = afi_entries; pp -> p_name; pp++)
- if (lexequ (pp -> p_name, dp) == 0)
- break;
- if (!pp -> p_name) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown AFI \"%s\": %s", dp, str));
- return NULLPA;
- }
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
- for (fp = dp; *fp; fp++)
- if (!isdigit ((u_char) *fp))
- break;
- if (*fp) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("invalid IDI \"%s\": %s", dp, cp));
- return NULLPA;
- }
- if (lexequ (pp -> p_name, "X121") == 0 &&
- *ep == NULL) {
- /* X121 form -- should be more general
- * Only applies if the DSP is NULL
- */
- (void) strcpy (nsap, dp);
- if ((na -> na_dtelen = strlen (nsap)) > NSAP_DTELEN) {
- dp = nsap;
- goto invalid_dte;
- }
- (void) strcpy (na -> na_dte, nsap);
-#ifdef BRIDGE_X25
- na -> na_stack = bridgediscrim (na) ? NA_BRG : NA_X25;
-#else
- na -> na_stack = NA_X25;
-#endif
- na -> na_community = SUBNET_INT_X25;
- goto next;
- }
- switch (*ep) {
- case 'd':
- case 0:
- if (*dp == '0' && pp -> p_dec1 != NULL)
- fp = pp -> p_dec1, padchar = '1';
- else
- fp = pp -> p_dec0, padchar = '0';
- (void) strcpy (nsap, fp);
- fp = nsap + strlen (nsap);
- for (len = pp -> p_idi_len - strlen (dp);
- len > 0;
- len--)
- *fp++ = padchar;
- (void) strcpy (fp, dp);
- fp += strlen (fp);
- if (*ep != NULL)
- (void) strcpy (fp, ep + 1);
- goto handle_dsp;
-
- case 'x':
- if (*dp == '0' && pp -> p_hex1 != NULL)
- fp = pp -> p_hex1, padchar = '1';
- else
- fp = pp -> p_hex0, padchar = '0';
- (void) strcpy (nsap, fp);
- fp = nsap + strlen (nsap);
- for (len = pp -> p_idi_len - strlen (dp);
- len > 0;
- len--)
- *fp++ = padchar;
- (void) strcpy (fp, dp);
- /* Odd length IDI padded below */
- goto handle_dsp;
-
- case 'l':
- if (pp -> p_ia5 == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("No IA5 syntax for AFI \"%s\"",
- pp -> p_name));
- return NULLPA;
- }
- (void) strcpy (nsap, pp -> p_ia5);
- goto handle_dsp;
-
-handle_dsp: ;
- np = nsap, dp = na -> na_address;
- while (*np) {
- *dp = (*np++ - '0') << 4;
- if (*np)
- *dp++ |= (*np++ - '0') & 0x0f;
- else
- *dp++ |= 0x0f;
- }
- na -> na_addrlen = dp - na -> na_address;
- if (*ep == 'x') {
- IMPLODE (j, dp, ep + 1, strlen (ep + 1),
- NULLPA, L3);
- na -> na_addrlen += j;
- }
- else
- if (*ep == 'l') {
- (void) strcpy (dp, ep + 1);
- na -> na_addrlen += strlen (ep + 1);
- }
- break;
-
- default:
- if (*dp == '0' && pp -> p_dec1 != NULL)
- fp = pp -> p_dec1, padchar = '1';
- else
- fp = pp -> p_dec0, padchar = '0';
- (void) strcpy (nsap, fp);
- fp = nsap + strlen (nsap);
- for (len = pp -> p_idi_len - strlen (dp);
- len > 0;
- len--)
- *fp++ = padchar;
- (void) strcpy (fp, dp);
- if (strncmp ("RFC-1006+", ep,
- sizeof "RFC-1006+" - 1) == 0) {
-#ifdef h_addr
- register char **ap;
-#endif
- register struct hostent *hp;
-
- na -> na_stack = NA_TCP;
- ep += sizeof "RFC-1006+" - 1;
- if ((ep = index (dp = ep, '+')) == NULL)
- goto missing_seperator;
- *ep++ = NULL;
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
-
- if ((hp = gethostbystring (dp)) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("%s: unknown host", dp));
- return NULLPA;
- }
- (void) strcpy (na -> na_domain,
- inet_ntoa (*(struct in_addr *)
- hp -> h_addr));
- if (*ep) {
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
- na -> na_port = htons ((u_short) atoi(dp));
-
- if (*ep)
- na -> na_tset = atoi (ep);
- }
-#ifdef h_addr
- for (ap = hp -> h_addr_list + 1; *ap; ap++) {
- ta -> ta_naddr++, na++;
-
- if (ta -> ta_naddr >= NTADDR)
- goto too_many;
- /* just copy one */
- memcpy ((char *) na, (char *) (na - 1),
- sizeof *na);
- (void) strcpy (na -> na_domain,
- inet_ntoa (*(struct in_addr *) *ap));
- }
-#endif
- break;
- }
- if (strncmp ("X.25(80)+", ep,
- sizeof "X.25(80)+" - 1) == 0) {
- na -> na_stack = NA_X25;
- ep += sizeof "X.25(80)+" - 1;
- if ((ep = index (dp = ep, '+')) == NULL)
- goto missing_seperator;
- *ep++ = NULL;
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
- for (np = dp; *np; np++)
- if (!isdigit ((u_char) *np)) {
-invalid_dte: ;
- SLOG (addr_log, LLOG_EXCEPTIONS,
- NULLCP,
- ("invalid DTE \"%s\": %s",
- dp, str));
- return NULLPA;
- }
- if (np - dp > NSAP_DTELEN + 1)
- goto invalid_dte;
- (void) strcpy (na -> na_dte, dp);
- na -> na_dtelen = strlen (na -> na_dte);
- if (*ep) {
- char *cudf,
- *clen;
-
- if ((ep = index (dp = ep, '+')) == NULL)
- goto missing_seperator;
- *ep++ = NULL;
-
- if (lexequ (dp, "CUDF") == 0) {
- cudf = na -> na_cudf;
- clen = &na -> na_cudflen;
- j = sizeof na -> na_cudf;
- }
- else
- if (lexequ (dp, "PID") == 0) {
- cudf = na -> na_pid;
- clen = &na -> na_pidlen;
- j = sizeof na -> na_pid;
- }
- else {
-invalid_field: ;
- SLOG (addr_log, LLOG_EXCEPTIONS,
- NULLCP,
- ("invalid field \"%s\": %s",
- dp, str));
- return NULLPA;
- }
- if (j * 2 < ((int)strlen (ep)))
- goto invalid_field;
- IMPLODE (j, cudf, ep, strlen (ep),
- NULLPA, L4);
- *clen = j & 0xff;
- }
-#ifdef BRIDGE_X25
- na -> na_stack = bridgediscrim (na) ? NA_BRG
- : NA_X25;
-#endif
- break;
- }
-#ifdef notdef
- if (lexequ ("ECMA-117-Binary", ep) == 0) {
- /* some day support this... */
- break;
- }
- if (lexequ ("ECMA-117-Decimal", ep) == 0) {
- /* some day support this... */
- break;
- }
-#endif
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown DSP \"%s\": %s", ep, str));
- return NULLPA;
- }
- }
-next: ;
- ta -> ta_naddr++, na++;
- break;
- }
-
- switch (sp - sels) {
- case 3: /* PSEL+SSEL+TSEL */
- memcpy (ta -> ta_selector, *--sp,
- ta -> ta_selectlen = *--lp);
- memcpy (sa -> sa_selector, *--sp,
- sa -> sa_selectlen = *--lp);
- memcpy (pa -> pa_selector, *--sp,
- pa -> pa_selectlen = *--lp);
- break;
-
- case 2: /* SSEL+TSEL */
- memcpy (ta -> ta_selector, *--sp,
- ta -> ta_selectlen = *--lp);
- memcpy (sa -> sa_selector, *--sp,
- sa -> sa_selectlen = *--lp);
- break;
-
- case 1: /* TSEL */
- memcpy (ta -> ta_selector, *--sp,
- ta -> ta_selectlen = *--lp);
- break;
-
- default:
- break;
- }
-
- return pa;
-}
-
-/* */
-
-int macro2comm (name, ts)
-char *name;
-register struct ts_interim *ts;
-{
- int j,
- len;
- register char *ap,
- *cp,
- *dp,
- *ep,
- *fp,
- *np;
- char padchar,
- addr[NASIZE * 2 + 1],
- buffer[BUFSIZ];
- register struct afi_info *pp;
-
- ts -> ts_length = 0, ts -> ts_syntax = NA_NSAP;
- if ((cp = macro2str (name)) == NULLCP)
- return NOTOK;
- ts -> ts_value = cp;
- (void) strcpy (buffer, cp);
- ap = addr;
-
- if ((ep = index (dp = buffer, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
-
- if (lexequ (dp, "NS") == 0) {
- IMPLODE (ts -> ts_length, ts -> ts_prefix, ep, strlen (ep),
- NOTOK, L5);
-
- return OK;
- }
-
- for (pp = afi_entries; pp -> p_name; pp++)
- if (lexequ (pp -> p_name, dp) == 0)
- break;
- if (!pp -> p_name) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown AFI \"%s\": %s", dp, cp));
- return NOTOK;
- }
-
- if (!ep) {
- /* No IDI */
- (void) strcpy (ap, pp -> p_dec0);
- ap += strlen (ap);
- goto out;
- }
-
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
-
- for (fp = dp; *fp; fp++)
- if (!isdigit ((u_char) *fp))
- break;
- if (*fp) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("invalid IDI \"%s\": %s", dp, cp));
- return NOTOK;
- }
-
- if (lexequ (pp -> p_name, "X121") == 0 && *ep == NULL) {
- /* Only used if there is no DSP */
- (void) strcpy (ap, dp);
- ap += strlen (ap);
-
- ts -> ts_syntax = NA_X25;
- ts -> ts_subnet = SUBNET_INT_X25;
- goto out;
- }
-
- switch (*ep) {
- case 'd':
- case 0:
- if (*dp == '0' && pp -> p_dec1 != NULL)
- fp = pp -> p_dec1, padchar = '1';
- else
- fp = pp -> p_dec0, padchar = '0';
- (void) strcpy (ap, fp);
- ap += strlen (ap);
- for (len = pp -> p_idi_len - strlen (dp); len > 0; len--)
- *ap++ = padchar;
- (void) strcpy (ap, dp);
- ap += strlen (ap);
- if (*ep != NULL)
- (void) strcpy (ap, ep + 1);
- break;
-
- case 'x':
- if (*dp == '0' && pp -> p_hex1 != NULL)
- fp = pp -> p_hex1, padchar = '1';
- else
- fp = pp -> p_hex0, padchar = '0';
- (void) strcpy (ap, fp);
- ap += strlen (ap);
- for (len = pp -> p_idi_len - strlen (dp); len > 0; len--)
- *ap++ = padchar;
- (void) strcpy (ap, dp);
- /* Odd length IDI padded below */
- break;
-
- case 'l':
- if (pp -> p_ia5 == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("No IA5 syntax for AFI \"%s\": %s", pp -> p_name, cp));
- return NOTOK;
- }
- (void) strcpy (ap, pp -> p_ia5);
- break;
-
- default:
- if (*dp == '0' && pp -> p_dec1 != NULL)
- fp = pp -> p_dec1, padchar = '1';
- else
- fp = pp -> p_dec0, padchar = '0';
- (void) strcpy (ap, fp);
- ap += strlen (ap);
- for (len = pp -> p_idi_len - strlen (dp); len > 0; len--)
- *ap++ = padchar;
- (void) strcpy (ap, dp);
- ap += strlen (ap);
-
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
- if (lexequ (dp, "RFC-1006") == 0)
- ts -> ts_syntax = NA_TCP;
- else
- if (lexequ (dp, "X.25(80)") == 0)
- ts -> ts_syntax = NA_X25;
- else {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown DSP \"%s\": %s", dp, cp));
- return NOTOK;
- }
- if ((ep = index (dp = ep, '+')) == NULL)
- ep = dp + strlen (dp);
- else
- *ep++ = NULL;
-
- (void) strcpy (ap, dp);
-
- if (*ep) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("invalid MACRO for community \"%s\": %s", name, cp));
- return NOTOK;
- }
- break;
- }
-
-out: ;
- ap = addr, np = ts -> ts_prefix;
- while (*ap) {
- *np = (*ap++ - '0') << 4;
- if (*ap)
- *np++ |= (*ap++ - '0') & 0x0f;
- else
- *np++ |= 0x0f;
- }
- switch (*ep) {
- case 'x':
- IMPLODE (j, np, ep + 1, strlen (ep + 1), NOTOK, L6);
- np += j;
- break;
-
- case 'l':
- (void) strcpy (np, ep + 1);
- np += strlen (ep + 1);
- break;
-
- default:
- break;
- }
- ts -> ts_length = np - ts -> ts_prefix;
-
- return OK;
-}
-
-/* PADDR2STR */
-
-static char *SEL2STR (sel, len)
-char *sel;
-int len;
-{
- register char *cp,
- *dp,
- *ep;
- static char buffer[PSSIZE * 2 + 4];
-
- if (len <= 0)
- return "";
-
- cp = buffer;
- *cp++ = '"';
- for (ep = (dp = sel) + len; dp < ep; dp++) {
- switch (*dp) {
- case '+':
- case '-':
- case '.':
- break;
-
- default:
- if (!isalnum ((u_char) *dp)) {
- cp = buffer;
- *cp++ = '\'';
- cp += explode (cp, (u_char *) sel, len);
- (void) strcpy (cp, "'H");
- return buffer;
- }
- break;
- }
-
- *cp++ = *dp;
- }
- *cp++ = '"';
- *cp = NULL;
-
- return buffer;
-}
-
-/* */
-
-char *_paddr2str (pa, na, compact)
-register struct PSAPaddr *pa;
-register struct NSAPaddr *na;
-int compact;
-{
- register int n;
- int first;
- register char *bp,
- *cp,
- *dp;
- register struct macro *m;
- register struct SSAPaddr *sa;
- register struct TSAPaddr *ta;
- register struct NSAPaddr *ca;
- static int i = 0;
- static char buf1[BUFSIZ],
- buf2[BUFSIZ];
- static char *bufs[] = { buf1, buf2 };
-
- LLOG (addr_log, LLOG_DEBUG,
- ("paddr2str: pa=%x, na=%x, compact=%d", pa, na, compact));
-
- bp = cp = bufs[i++];
- i = i % 2;
-
- if (pa == NULLPA) {
-bad_pa: ;
- (void) strcpy (bp, "NULLPA");
- return bp;
- }
- sa = &pa -> pa_addr;
- ta = &sa -> sa_addr;
-
- if (na)
- n = 1;
- else
- if ((n = ta -> ta_naddr) > 0)
- na = ta -> ta_addrs;
-
- if (pa -> pa_selectlen > 0) {
- (void) sprintf (cp, "%s/",
- SEL2STR (pa -> pa_selector, pa -> pa_selectlen));
- cp += strlen (cp);
- }
- if (sa -> sa_selectlen > 0 || bp != cp) {
- (void) sprintf (cp, "%s/",
- SEL2STR (sa -> sa_selector, sa -> sa_selectlen));
- cp += strlen (cp);
- }
- if (ta -> ta_selectlen > 0 || bp != cp) {
- (void) sprintf (cp, "%s/",
- SEL2STR (ta -> ta_selector, ta -> ta_selectlen));
- cp += strlen (cp);
- }
-
- /*
- ** This may happen when a wildcard TSAP is bound over a
- ** wildcard NSAP (i.e. the address of the endpoint onto which
- ** a connection is accepted via the TLI under some implementations)
- **
- ** Should we do this or return "/"?
- */
- if (n == 0 && bp == cp)
- goto bad_pa;
-
- for (first = 1; n > 0; na++, n--) {
- register struct ts_interim *ts;
-
- if (first)
- first = 0;
- else
- *cp++ = '|';
-
- if (compact > 0) {
- if ((ca = na2norm (na)) == NULLNA)
- goto bad_pa;
-
- (void) strcpy (cp, "NS+");
- cp += strlen (cp);
-
- cp += explode (cp, (u_char *) ca -> na_address, ca -> na_addrlen);
- *cp = NULL;
- continue;
- }
-
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (ts -> ts_subnet == na -> na_community)
- break;
- if (!ts -> ts_name) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unable to find community #%d", na -> na_community));
- goto bad_pa;
- }
- if (!ts -> ts_value) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("community \"%s\" (subnet #%d) has no corresponding MACRO",
- ts -> ts_name, na -> na_community));
- goto bad_pa;
- }
- (void) strcpy (dp = cp, ts -> ts_value);
- cp += strlen (cp) - 1;
- if (*cp != '+')
- *++cp = '+', *++cp = NULL;
- else
- cp++;
-
- switch (na -> na_stack) {
- struct afi_info *a;
-
- case NA_NSAP:
- (void) strcpy (cp = dp, "NS+");
- cp += strlen (cp);
-
- cp += explode (cp, (u_char *) na -> na_address, na -> na_addrlen);
- *cp = NULL;
-
- /* Use afi_info to pretty print as AFI+IDI+DSP */
- for (cp = dp + 3, a = afi_entries; a->p_name; a++) {
- char pad, dspmark;
- char buf[BUFSIZ];
- char *dsp;
-
- if (a->p_dec0 && memcmp(a->p_dec0, cp, 2) == 0)
- (pad = a->p_dec1 ? '0' : '\0'), dspmark = 'd';
- else if (a->p_dec1 && memcmp(a->p_dec1, cp, 2) == 0)
- pad = '1', dspmark = 'd';
- else if (a->p_hex0 && memcmp(a->p_hex0, cp, 2) == 0)
- (pad = a->p_hex1 ? '0' : '\0'), dspmark = 'x';
- else if (a->p_hex1 && memcmp(a->p_hex1, cp, 2) == 0)
- pad = '1', dspmark = 'x';
- else if (a->p_ia5 && memcmp(a->p_ia5, cp, 2) == 0)
- pad = '\0', dspmark = 'l';
- else
- continue;
- cp += 2; /* skip AFI */
- dsp = cp + a->p_idi_len; /* find DSP */
- while (cp < dsp && *cp == pad)
- cp++; /* skip pad chars */
- (void) sprintf(buf, "%s+%.*s", a->p_name, dsp - cp, cp);
-
- /*
- * If we have an odd number of characters in IDI &
- * the next character is 'f' then it must be a pad
- * because a pad is only not inserted if the DSP is
- * decimal syntax in which case 'f' is illegal,
- * otherwise check for a trailing pad if decimal
- * syntax.
- */
- if ((dsp - (dp + 3)) % 2 && *dsp == 'f')
- dsp++;
- else if (dspmark == 'd' && *(cp = dsp + strlen(dsp) - 1) ==
- 'f')
- *cp = '\0';
- if (*dsp)
- (void) sprintf(buf+strlen(buf), "+%c%s", dspmark, dsp);
- (void) strcpy(dp, buf);
- cp = dp + strlen(dp);
- break;
- }
- break;
-
-
- case NA_TCP:
- (void) strcpy (cp, na -> na_domain);
- cp += strlen (cp);
- if (na -> na_port) {
- (void) sprintf (cp, "+%d", (int) ntohs (na -> na_port));
- cp += strlen (cp);
-
- if (na -> na_tset) {
- (void) sprintf (cp, "+%d", (int) na -> na_tset);
- cp += strlen (cp);
- }
- }
- break;
-
- case NA_X25:
- case NA_BRG:
- if (na -> na_community == SUBNET_INT_X25
- && na -> na_cudflen == 0
- && na -> na_pidlen == 0
- && na -> na_dte[0] != '0') {
- (void) sprintf (cp = dp, "X121+%s", na -> na_dte);
- cp += strlen (cp);
- }
- else {
- (void) strcpy (cp, na -> na_dte);
- cp += strlen (cp);
- if (na -> na_pidlen > 0) {
- (void) strcpy (cp, "+PID+");
- cp += strlen (cp);
-
- cp += explode (cp, (u_char *) na -> na_pid,
- (int) na -> na_pidlen);
- }
- else
- if (na -> na_cudflen > 0) {
- (void) strcpy (cp, "+CUDF+");
- cp += strlen (cp);
-
- cp += explode (cp, (u_char *) na -> na_cudf,
- (int) na -> na_cudflen);
- }
- *cp = NULL;
- }
- break;
-
- default:
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown address type 0x%x", na -> na_stack));
- goto bad_pa;
- }
-
- SLOG (addr_log, LLOG_DEBUG, NULLCP, ("dp = %s",dp));
-
- if (!compact && (m = value2macro (dp))) {
- char buffer[BUFSIZ];
-
- (void) sprintf (buffer, "%s=%s", m -> m_name,
- dp + strlen (m -> m_value));
- (void) strcpy (dp, buffer);
- cp = dp + strlen (dp);
- }
- }
- *cp = NULL;
-
- return bp;
-}
-
-/* */
-
-#ifdef PEP_TEST
-free_macros () {
- register int i;
- register struct macro *m,
- *p;
-
- for (i = MBUCKETS; i-- > 0; )
- for (p = Mbuckets[i]; p; p = m) {
- m = p -> m_chain;
-
- if (p -> m_name)
- free (p -> m_name);
- if (p -> m_value)
- free (p -> m_value);
-
- free (p);
- }
-}
-#endif
diff --git a/src/isode/compat/isofiles.c b/src/isode/compat/isofiles.c
deleted file mode 100644
index fcf89593d2..0000000000
--- a/src/isode/compat/isofiles.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* isofiles.c - ISODE files */
-
-/*
- * isode/compat/isofiles.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* */
-
-char *_isodefile (path, file)
-char *path,
- *file;
-{
- static char buffer[BUFSIZ];
-
- isodetailor (NULLCP, 0); /* not really recursive */
-
- if (*file == '/'
- || (*file == '.'
- && (file[1] == '/'
- || (file[1] == '.' && file[2] == '/'))))
- (void) strcpy (buffer, file);
- else
- (void) sprintf (buffer, "%s%s", path, file);
-
- return buffer;
-}
diff --git a/src/isode/compat/isohost.c b/src/isode/compat/isohost.c
deleted file mode 100644
index 3406aa0136..0000000000
--- a/src/isode/compat/isohost.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* isohost.c - getlocalhost */
-
-/*
- * isode/compat/isohost.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#ifdef TCP
-#include "internet.h"
-#endif
-#include "tailor.h"
-#ifdef SYS5
-#include <sys/utsname.h>
-#endif
-
-/* */
-
-char *getlocalhost () {
- register char *cp;
-#ifdef TCP
- register struct hostent *hp;
-#endif
-#ifdef SYS5
- struct utsname uts;
-#endif
- static char buffer[BUFSIZ];
-
- if (buffer[0])
- return buffer;
-
- isodetailor (NULLCP, 0);
- if (*isodename)
- (void) strcpy (buffer, isodename);
- else {
-#if !defined(SOCKETS) && !defined(SYS5)
- (void) strcpy (buffer, "localhost");
-#endif
-#ifdef SOCKETS
- (void) gethostname (buffer, sizeof buffer);
-#endif
-#ifdef SYS5
- (void) uname (&uts);
- (void) strcpy (buffer, uts.nodename);
-#endif
-
-#ifdef TCP
- if (hp = gethostbyname (buffer))
- (void) strcpy (buffer, hp -> h_name);
- else
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("%s: unknown host", buffer));
-#endif
-
- if (cp = index (buffer, '.'))
- *cp = NULL;
- }
-
- return buffer;
-}
diff --git a/src/isode/compat/isologs.sh b/src/isode/compat/isologs.sh
deleted file mode 100644
index 4cf9c6a703..0000000000
--- a/src/isode/compat/isologs.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-: run this script through /bin/sh
-
-x=`fgrep logpath @(ETCDIR)isotailor 2>/dev/null | awk '{ print $2 }'`
-if [ "x$x" != x ]; then
- cd $x
-else
- cd @(LOGDIR)
-fi
-
-rm -f iso.*.log ros.*.log [0-9]*.log
-
-for A in [a-z]*.log
-do
- x=2
- while [ $x -gt 0 ];
- do
- y=`expr $x - 1`
- mv $A-$y $A-$x >/dev/null 2>&1
- x=$y
- done
-
- if [ ! -f $A ];
- then
- continue
- fi
-
- if [ -s $A ];
- then
- mv $A $A-0 >/dev/null 2>&1
- fi
-
- > $A
- chmod 666 $A
-done
-
-exit 0
diff --git a/src/isode/compat/isoman.rf b/src/isode/compat/isoman.rf
deleted file mode 100644
index 1fc21935ff..0000000000
--- a/src/isode/compat/isoman.rf
+++ /dev/null
@@ -1,8 +0,0 @@
-.\" isoman.rf - include file for ISODE manual entries
-.\" Sat Nov 4 23:15:36 1989 Marshall T. Rose <mrose@cheetah.ca.psi.com>
-
-.ds BD @(BINDIR)
-.ds ED @(ETCDIR)
-.ds ID @(INCDIR)
-.ds LD @(LOGDIR)
-.ds SD @(SBINDIR)
diff --git a/src/isode/compat/isoservent.c b/src/isode/compat/isoservent.c
deleted file mode 100644
index 91e13b301e..0000000000
--- a/src/isode/compat/isoservent.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* isoservent.c - look-up ISODE services */
-
-/*
- * isode/compat/isoservent.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoservent.h"
-#include "tailor.h"
-
-/* DATA */
-
-static char *isoservices = "isoservices";
-
-static FILE *servf = NULL;
-static int stayopen = 0;
-
-static struct isoservent iss;
-
-/* */
-
-int setisoservent (f)
-int f;
-{
- if (servf == NULL)
- servf = fopen (isodefile (isoservices, 0), "r");
- else
- rewind (servf);
- stayopen |= f;
-
- return (servf != NULL);
-}
-
-
-int endisoservent () {
- if (servf && !stayopen) {
- (void) fclose (servf);
- servf = NULL;
- }
-
- return 1;
-}
-
-/* */
-
-struct isoservent *getisoservent () {
- int mask,
- vecp;
- register char *cp;
- register struct isoservent *is = &iss;
- static char buffer[BUFSIZ + 1],
- file[BUFSIZ];
- static char *vec[NVEC + NSLACK + 1];
-
- if (servf == NULL
- && (servf = fopen (isodefile (isoservices, 0), "r")) == NULL)
- return NULL;
-
- memset ((char *) is, 0, sizeof *is);
-
- while (fgets (buffer, sizeof buffer, servf) != NULL) {
- if (*buffer == '#')
- continue;
- if (cp = index (buffer, '\n'))
- *cp = NULL;
- if ((vecp = str2vecX (buffer, vec, 1 + 1, &mask, NULL, 1)) < 3)
- continue;
-
- if ((cp = index (vec[0], '/')) == NULL)
- continue;
- *cp++ = NULL;
-
- is -> is_provider = vec[0];
- is -> is_entity = cp;
- is -> is_selectlen = str2sel (vec[1], (mask & (1 << 1)) ? 1 : 0,
- is -> is_selector, ISSIZE);
-
- is -> is_vec = vec + 2;
- is -> is_tail = vec + vecp;
-
- if (strcmp (cp = is -> is_vec[0], "tsapd-bootstrap"))
- (void) strcpy (is -> is_vec[0] = file, isodefile (cp, 1));
-
- return is;
- }
-
- return NULL;
-}
-
-/* */
-
-#ifdef DEBUG
-_printsrv (is)
-register struct isoservent *is;
-{
- register int n = is -> is_tail - is -> is_vec - 1;
- register char **ap = is -> is_vec;
-
- LLOG (addr_log, LLOG_DEBUG,
- ("\tENT: \"%s\" PRV: \"%s\" SEL: %s",
- is -> is_entity, is -> is_provider,
- sel2str (is -> is_selector, is -> is_selectlen, 1)));
-
- for (; n >= 0; ap++, n--)
- LLOG (addr_log, LLOG_DEBUG,
- ("\t\t%d: \"%s\"\n", ap - is -> is_vec, *ap));
-}
-#endif
diff --git a/src/isode/compat/lexequ.c b/src/isode/compat/lexequ.c
deleted file mode 100644
index f2ef262375..0000000000
--- a/src/isode/compat/lexequ.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* lexequ.c - Compare two strings ignoring case */
-
-/*
- * isode/compat/lexequ.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-
-/* */
-
-lexequ (str1, str2)
-register char *str1,
- *str2;
-{
- if (str1 == NULL)
- if (str2 == NULL)
- return (0);
- else
- return (-1);
-
- if (str2 == NULL)
- return (1);
-
- while (chrcnv[*str1] == chrcnv[*str2]) {
- if (*str1++ == NULL)
- return (0);
- str2++;
- }
-
- if (chrcnv[*str1] > chrcnv[*str2])
- return (1);
- else
- return (-1);
-}
diff --git a/src/isode/compat/lexnequ.c b/src/isode/compat/lexnequ.c
deleted file mode 100644
index 3c11eedfc4..0000000000
--- a/src/isode/compat/lexnequ.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* lexnequ.c - Compare two strings ignoring case upto n octets */
-
-/*
- * isode/compat/lexnequ.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-
-/* */
-
-lexnequ (str1, str2, len)
-register char *str1,
- *str2;
-int len;
-{
- register int count = 1;
-
- if (str1 == NULL)
- if (str2 == NULL)
- return (0);
- else
- return (1);
-
- if (str2 == NULL)
- return (-1);
-
- while (chrcnv[*str1] == chrcnv[*str2++]) {
- if (count++ >= len)
- return (0);
- if (*str1++ == NULL)
- return (0);
- }
-
- str2--;
- if (chrcnv[*str1] > chrcnv[*str2])
- return (1);
- else
- return (-1);
-}
diff --git a/src/isode/compat/libicompat.3 b/src/isode/compat/libicompat.3
deleted file mode 100644
index 5eea8d7c50..0000000000
--- a/src/isode/compat/libicompat.3
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH LIBICOMPAT 3 "03 Jul 1986"
-.\" $Header$
-.\"
-.\"
-.\" $Log$
-.\" Revision 1.1 1994/06/10 03:27:41 eichin
-.\" autoconfed isode for kerberos work
-.\"
-Revision 1.1 94/06/10 03:16:10 eichin
-autoconfed isode for kerberos work
-
-# Revision 1.1 1994/05/31 20:34:10 eichin
-# reduced-isode release from /mit/isode/isode-subset/src
-#
-.\" Revision 8.0 91/07/17 12:18:01 isode
-.\" Release 7.0
-.\"
-.\"
-.SH NAME
-libicompat \- compatibility library
-.SH SYNOPSIS
-\fIcc\fR\0...\0\fB\-licompat\fR
-.SH DESCRIPTION
-The \fIlibicompat\fR library makes an attempt of providing an interface for
-similar services under different operating systems.
-Currently, the library works on most variants of Berkeley UNIX and AT&T UNIX.
-.SH FILES
-None
-.SH DIAGNOSTICS
-.SH AUTHOR
-Marshall T. Rose
-.SH BUGS
-To misquote M.A.\0Padlipsky,
-\*(lqsometimes when you try to make an apple look like an orange you get back
-something that smells like a lemon.\*(rq
diff --git a/src/isode/compat/log_tai.c b/src/isode/compat/log_tai.c
deleted file mode 100644
index d1b2c92cd7..0000000000
--- a/src/isode/compat/log_tai.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* log_tai.c - system tailoring routines */
-
-/*
- * isode/compat/log_tai.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "cmd_srch.h"
-#include "general.h"
-#include "manifest.h"
-#include "logger.h"
-
-/* */
-
-#define LG_FILE 1
-#define LG_SFLAGS 2
-#define LG_DFLAGS 3
-#define LG_LEVEL 4
-#define LG_SIZE 5
-#define LG_DLEVEL 6
-#define LG_SSLEVEL 7
-#define LG_DSLEVEL 8
-
-static CMD_TABLE log_tbl[] = {
- "FILE", LG_FILE,
- "SFLAGS", LG_SFLAGS,
- "DFLAGS", LG_DFLAGS,
- "LEVEL", LG_LEVEL,
- "SLEVEL", LG_LEVEL,
- "DLEVEL", LG_DLEVEL,
- "SSLEVEL", LG_SSLEVEL,
- "DSLEVEL", LG_DSLEVEL,
- "SIZE", LG_SIZE,
- 0, -1,
-};
-
-static CMD_TABLE log_lvltbl[] = {
- "NONE", LLOG_NONE,
- "FATAL", LLOG_FATAL,
- "EXCEPTIONS", LLOG_EXCEPTIONS,
- "NOTICE", LLOG_NOTICE,
- "TRACE", LLOG_TRACE,
- "DEBUG", LLOG_DEBUG,
- "PDUS", LLOG_PDUS,
- "ALL", LLOG_ALL,
- 0, -1
-};
-
-static CMD_TABLE log_flgtbl[] = {
- "CLOSE", LLOGCLS,
- "CREATE", LLOGCRT,
- "ZERO", LLOGZER,
- "TTY", LLOGTTY,
- 0, -1
-};
-
-/* */
-
-log_tai(lgptr, av, ac) /* for now only alter the level - files etc later */
-LLog *lgptr;
-char **av;
-int ac;
-{
- register int i;
- register char *p;
- int val;
-
- for(i = 0; i < ac; i++)
- {
- if((p = index(av[i], '=')) == NULLCP)
- continue;
- *p++ = NULL;
- switch(cmd_srch(av[i], log_tbl))
- {
- case LG_LEVEL:
- val = cmd_srch(p,log_lvltbl);
- if (val != -1)
- lgptr->ll_events |= val;
- break;
- case LG_DSLEVEL:
- val = cmd_srch (p, log_lvltbl);
- if (val != -1)
- lgptr -> ll_syslog &= ~val;
- break;
- case LG_SSLEVEL:
- val = cmd_srch (p, log_lvltbl);
- if (val != -1)
- lgptr -> ll_syslog |= val;
- break;
- case LG_DLEVEL:
- val = cmd_srch(p,log_lvltbl);
- if (val != -1)
- lgptr->ll_events &= ~ val;
- break;
- case LG_FILE:
- lgptr->ll_file = strdup (p);
- break;
- case LG_SFLAGS:
- val = cmd_srch(p,log_flgtbl);
- if (val != -1)
- lgptr->ll_stat |= val;
- break;
- case LG_DFLAGS:
- val = cmd_srch(p,log_flgtbl);
- if (val != -1)
- lgptr->ll_stat &= ~ val;
- break;
- case LG_SIZE:
- lgptr->ll_msize = atoi(p);
- break;
- }
- }
-}
diff --git a/src/isode/compat/logger.c b/src/isode/compat/logger.c
deleted file mode 100644
index 6b26fb8e2d..0000000000
--- a/src/isode/compat/logger.c
+++ /dev/null
@@ -1,602 +0,0 @@
-/* logger.c - system logging routines */
-
-/*
- * isode/compat/logger.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include <varargs.h>
-#include "general.h"
-#include "manifest.h"
-#include "logger.h"
-#include "tailor.h"
-
-#ifdef NULL
-#undef NULL
-#endif
-#include <sys/param.h>
-#ifndef NULL
-#define NULL 0
-#endif
-#include "sys.file.h"
-#include <sys/stat.h>
-
-#if linux
-/*
- * Linux's syslog.h includes stdargs.h, which is not compatible with
- * varargs.h.
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-#else
-#ifndef SYS5
-#include <syslog.h>
-#endif
-#endif
-
-/* */
-
-#ifndef lint
-static
-#endif
-int _ll_printf ();
-
-struct ll_private {
- int ll_checks;
-#define CHKINT 15 /* call ll_check 1 in every 15 uses... */
-};
-
-static struct ll_private *llp = NULL;
-static IFP _ll_header_routine = ll_defmhdr;
-
-long lseek ();
-
-/* */
-
-/* [eichin:19940412.1858EST] to supply getdtablesize for solaris... */
-#if defined(hpux) || defined(__svr4__)
-#include <sys/resource.h>
-int getdtablesize() {
- struct rlimit rl;
- getrlimit(RLIMIT_NOFILE, &rl);
- return rl.rlim_cur;
-}
-#endif
-
-int ll_open (lp)
-register LLog *lp;
-{
- int mask,
- mode;
- char *bp,
- buffer[BUFSIZ];
-
- if (llp == NULL
- && (llp = (struct ll_private *)
- calloc ((unsigned int) getdtablesize (),
- sizeof *llp)) == NULL)
- goto you_lose;
-
- if (lp -> ll_file == NULLCP
- || *lp -> ll_file == NULL) {
-you_lose: ;
- (void) ll_close (lp);
- lp -> ll_stat |= LLOGERR;
- return NOTOK;
- }
-
- lp -> ll_stat &= ~LLOGERR;
-
- if (lp -> ll_fd != NOTOK)
- return OK;
-
- if (strcmp (lp -> ll_file, "-") == 0) {
- lp -> ll_stat |= LLOGTTY;
- return OK;
- }
-
- (void) sprintf (bp = buffer, _isodefile (isodelogpath, lp -> ll_file),
- getpid ());
-
- mode = O_WRONLY | O_APPEND;
- if (lp -> ll_stat & LLOGCRT)
- mode |= O_CREAT;
-
- mask = umask (~0666);
- lp -> ll_fd = open (bp, mode, 0666);
- (void) umask (mask);
-
- if (ll_check (lp) == NOTOK)
- return (NOTOK);
- if (lp -> ll_fd != NOTOK)
- llp[lp -> ll_fd].ll_checks = CHKINT;
-
- return (lp -> ll_fd != NOTOK ? OK : NOTOK);
-}
-
-/* */
-
-int ll_close (lp)
-register LLog *lp;
-{
- int status;
-
- if (lp -> ll_fd == NOTOK)
- return OK;
-
- status = close (lp -> ll_fd);
- lp -> ll_fd = NOTOK;
-
- return status;
-}
-
-/* */
-
-#ifndef lint
-int ll_log (va_alist)
-va_dcl
-{
- int event,
- result;
- LLog *lp;
- va_list ap;
-
- va_start (ap);
-
- lp = va_arg (ap, LLog *);
- event = va_arg (ap, int);
-
- result = _ll_log (lp, event, ap);
-
- va_end (ap);
-
- return result;
-}
-#else
-/* VARARGS4 */
-
-int ll_log (lp, event, what, fmt)
-LLog *lp;
-int event;
-char *what,
- *fmt;
-{
- return ll_log (lp, event, what, fmt);
-}
-#endif
-
-/* */
-
-int _ll_log (lp, event, ap) /* what, fmt, args ... */
-register LLog *lp;
-int event;
-va_list ap;
-{
- int cc,
- status;
- register char *bp;
- char *what,
- buffer[BUFSIZ];
-
- if (!(lp -> ll_events & event))
- return OK;
-
- bp = buffer;
-
- /* Create header */
- (*_ll_header_routine)(bp, lp -> ll_hdr, lp -> ll_dhdr);
-
- bp += strlen (bp);
-
- what = va_arg (ap, char *);
-
- _asprintf (bp, what, ap);
-
-#ifndef SYS5
- if (lp -> ll_syslog & event) {
- int priority;
-
- switch (event) {
- case LLOG_FATAL:
- priority = LOG_ERR;
- break;
-
- case LLOG_EXCEPTIONS:
- priority = LOG_WARNING;
- break;
-
- case LLOG_NOTICE:
- priority = LOG_INFO;
- break;
-
- case LLOG_PDUS:
- case LLOG_TRACE:
- case LLOG_DEBUG:
- priority = LOG_DEBUG;
- break;
-
- default:
- priority = LOG_NOTICE;
- break;
- }
-
- (void) syslog (priority, "%s", buffer + 13);
-
- if (lp -> ll_stat & LLOGCLS)
- (void) closelog ();
- }
-#endif
-
- if (!(lp -> ll_stat & LLOGTTY)
- && lp -> ll_fd == NOTOK
- && strcmp (lp -> ll_file, "-") == 0)
- lp -> ll_stat |= LLOGTTY;
-
- if (lp -> ll_stat & LLOGTTY) {
- (void) fflush (stdout);
-
- if (lp -> ll_fd != NOTOK)
- (void) fprintf (stderr, "LOGGING: ");
- (void) fputs (bp, stderr);
- (void) fputc ('\n', stderr);
- (void) fflush (stderr);
- }
- bp += strlen (bp);
-
- if (lp -> ll_fd == NOTOK) {
- if ((lp -> ll_stat & (LLOGERR | LLOGTTY)) == (LLOGERR | LLOGTTY))
- return OK;
- if (ll_open (lp) == NOTOK)
- return NOTOK;
- }
- else
- if ((!llp || llp[lp -> ll_fd].ll_checks-- < 0)
- && ll_check (lp) == NOTOK)
- return NOTOK;
-
- *bp++ = '\n', *bp = NULL;
- cc = bp - buffer;
-
- if ((status = write (lp -> ll_fd, buffer, cc)) != cc) {
- if (status == NOTOK) {
- (void) ll_close (lp);
-error: ;
- lp -> ll_stat |= LLOGERR;
- return NOTOK;
- }
-
- status = NOTOK;
- }
- else
- status = OK;
-
- if ((lp -> ll_stat & LLOGCLS) && ll_close (lp) == NOTOK)
- goto error;
-
- return status;
-}
-
-/* */
-
-void ll_hdinit (lp, prefix)
-register LLog *lp;
-char *prefix;
-{
- register char *cp,
- *up;
- char buffer[BUFSIZ],
- user[10];
-
- if (prefix == NULLCP) {
- if ((lp -> ll_stat & LLOGHDR) && strlen (lp -> ll_hdr) == 25)
- (cp = lp -> ll_hdr)[8] = NULL;
- else
- cp = "unknown";
- }
- else {
- if ((cp = rindex (prefix, '/')))
- cp++;
- if (cp == NULL || *cp == NULL)
- cp = prefix;
- }
-
- if ((up = getenv ("USER")) == NULLCP
- && (up = getenv ("LOGNAME")) == NULLCP) {
- (void) sprintf (user, "#%d", getuid ());
- up = user;
- }
- (void) sprintf (buffer, "%-8.8s %05d (%-8.8s)",
- cp, getpid () % 100000, up);
-
- if (lp -> ll_stat & LLOGHDR)
- free (lp -> ll_hdr);
- lp -> ll_stat &= ~LLOGHDR;
-
- if ((lp -> ll_hdr = malloc ((unsigned) (strlen (buffer) + 1))) == NULLCP)
- return;
-
- (void) strcpy (lp -> ll_hdr, buffer);
- lp -> ll_stat |= LLOGHDR;
-}
-
-/* */
-
-void ll_dbinit (lp, prefix)
-register LLog *lp;
-char *prefix;
-{
- register char *cp;
- char buffer[BUFSIZ];
-
- ll_hdinit (lp, prefix);
-
- if (prefix) {
- if ((cp = rindex (prefix, '/')))
- cp++;
- if (cp == NULL || *cp == NULL)
- cp = prefix;
-
- (void) sprintf (buffer, "./%s.log", cp);
-
- if ((lp -> ll_file = malloc ((unsigned) (strlen (buffer) + 1)))
- == NULLCP)
- return;
-
- (void) strcpy (lp -> ll_file, buffer);
- }
-
- lp -> ll_events |= LLOG_ALL;
- lp -> ll_stat |= LLOGTTY;
-}
-
-/* */
-
-#ifndef lint
-int ll_printf (va_alist)
-va_dcl
-{
- int result;
- LLog *lp;
- va_list ap;
-
- va_start (ap);
-
- lp = va_arg (ap, LLog *);
-
- result = _ll_printf (lp, ap);
-
- va_end (ap);
-
- return result;
-}
-#else
-/* VARARGS2 */
-
-int ll_printf (lp, fmt)
-LLog *lp;
-char *fmt;
-{
- return ll_printf (lp, fmt);
-}
-#endif
-
-/* */
-
-#ifndef lint
-static
-#endif
-int _ll_printf (lp, ap) /* fmt, args ... */
-register LLog *lp;
-va_list ap;
-{
- int cc,
- status;
- register char *bp;
- char buffer[BUFSIZ];
- char *fmt;
- va_list fp = ap;
-
- fmt = va_arg (fp, char *);
- if (strcmp (fmt, "%s") != 0) {
- bp = buffer;
- _asprintf (bp, NULLCP, ap);
- }
- else {
- bp = NULL;
- fmt = va_arg (fp, char *);
- }
-
- if (!(lp -> ll_stat & LLOGTTY)
- && lp -> ll_fd == NOTOK
- && strcmp (lp -> ll_file, "-") == 0)
- lp -> ll_stat |= LLOGTTY;
-
- if (lp -> ll_stat & LLOGTTY) {
- (void) fflush (stdout);
-
- if (bp)
- (void) fputs (bp, stderr);
- else
- (void) fputs (fmt, stderr);
- (void) fflush (stderr);
- }
- if (bp)
- bp += strlen (bp);
-
- if (lp -> ll_fd == NOTOK) {
- if ((lp -> ll_stat & (LLOGERR | LLOGTTY)) == (LLOGERR | LLOGTTY))
- return OK;
- if (ll_open (lp) == NOTOK)
- return NOTOK;
- }
- else
- if ((!llp || llp[lp -> ll_fd].ll_checks-- < 0)
- && ll_check (lp) == NOTOK)
- return NOTOK;
-
- if (bp)
- cc = bp - buffer;
- else
- cc = strlen (fmt);
-
- if ((status = write (lp -> ll_fd, bp ? buffer : fmt, cc)) != cc) {
- if (status == NOTOK) {
- (void) ll_close (lp);
- lp -> ll_stat |= LLOGERR;
- return NOTOK;
- }
-
- status = NOTOK;
- }
- else
- status = OK;
-
- return status;
-}
-
-/* */
-
-int ll_sync (lp)
-register LLog *lp;
-{
- if (lp -> ll_stat & LLOGCLS)
- return ll_close (lp);
-
- return OK;
-}
-
-/* */
-
-#ifndef lint
-char *ll_preset (va_alist)
-va_dcl
-{
- va_list ap;
- static char buffer[BUFSIZ];
-
- va_start (ap);
-
- _asprintf (buffer, NULLCP, ap);
-
- va_end (ap);
-
- return buffer;
-}
-#else
-/* VARARGS1 */
-
-char *ll_preset (fmt)
-char *fmt;
-{
- return ll_preset (fmt);
-}
-#endif
-
-/* */
-
-int ll_check (lp)
-register LLog *lp;
-{
-#ifndef BSD42
- int fd;
- char buffer[BUFSIZ];
-#endif
- long size;
- struct stat st;
-
- if ((size = lp -> ll_msize) <= 0)
- return OK;
-
- if (llp && lp -> ll_fd != NOTOK)
- llp[lp -> ll_fd].ll_checks = CHKINT;
- if (lp -> ll_fd == NOTOK
- || (fstat (lp -> ll_fd, &st) != NOTOK
- && st.st_size < (size <<= 10)))
- return OK;
-
- if (!(lp -> ll_stat & LLOGZER)) {
- (void) ll_close (lp);
-
-#ifndef BSD42
-error: ;
-#endif
- lp -> ll_stat |= LLOGERR;
- return NOTOK;
- }
-
-#ifdef BSD42
-#ifdef SUNOS4
- (void) ftruncate (lp -> ll_fd, (off_t) 0);
-#else
- (void) ftruncate (lp -> ll_fd, 0);
-#endif
- (void) lseek (lp -> ll_fd, 0L, 0);
- return OK;
-#else
- (void) sprintf (buffer, _isodefile (isodelogpath, lp -> ll_file),
- getpid ());
- if ((fd = open (buffer, O_WRONLY | O_APPEND | O_TRUNC)) == NOTOK)
- goto error;
- (void) close (fd);
- return OK;
-#endif
-}
-
-/* */
-
-/*
- * ll_defmhdr - Default "make header" routine.
- */
-int ll_defmhdr(bufferp, headerp, dheaderp)
-char *bufferp; /* Buffer pointer */
-char *headerp; /* Static header string */
-char *dheaderp; /* Dynamic header string */
-{
- time_t clock;
- register struct tm *tm;
-
- (void) time (&clock);
- tm = localtime (&clock);
-
- (void) sprintf (bufferp, "%2d/%2d %2d:%02d:%02d %s %s ",
- tm -> tm_mon + 1, tm -> tm_mday,
- tm -> tm_hour, tm -> tm_min, tm -> tm_sec,
- headerp ? headerp : "",
- dheaderp ? dheaderp : "");
- return OK;
-}
-
-/* */
-
-/*
- * ll_setmhdr - Set "make header" routine, overriding default.
- */
-IFP ll_setmhdr (make_header_routine)
-IFP make_header_routine;
-{
- IFP result = _ll_header_routine;
-
- _ll_header_routine = make_header_routine;
-
- return result;
-
-}
diff --git a/src/isode/compat/na2norm.c b/src/isode/compat/na2norm.c
deleted file mode 100644
index 85de9fe356..0000000000
--- a/src/isode/compat/na2norm.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* na2norm.c - normalize NSAPaddr */
-
-/*
- * isode/compat/na2norm.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-#include "internet.h"
-#include "tailor.h"
-
-/* Encoding based on
-
- "An interim approach to use of Network Addresses",
- S.E. Kille, January 16, 1989
-
- */
-
-/* */
-
-struct NSAPaddr *na2norm (na)
-register struct NSAPaddr *na;
-{
- int ilen;
- register char *cp,
- *dp;
- char nsap[NASIZE * 2 + 1];
- register struct hostent *hp;
- register struct ts_interim *ts;
- static struct NSAPaddr nas;
- register struct NSAPaddr *ca = &nas;
-
- if (na -> na_stack == NA_NSAP) {
- *ca = *na; /* struct copy */
- return ca;
- }
-
- memset ((char *) ca, 0, sizeof *ca);
- ca -> na_stack = NA_NSAP;
-
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (ts -> ts_subnet == na -> na_community)
- break;
- if (!ts -> ts_name) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unable to find community #%d", na -> na_community));
- return NULLNA;
- }
-
- cp = nsap;
- switch (na -> na_stack) {
- case NA_TCP:
- if ((hp = gethostbystring (na -> na_domain)) == NULL) {
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("%s: unknown host", na -> na_domain));
- return NULLNA;
- }
-#define s2a(b) (((int) (b)) & 0xff)
- (void) sprintf (cp, "%03d%03d%03d%03d",
- s2a (hp -> h_addr[0]),
- s2a (hp -> h_addr[1]),
- s2a (hp -> h_addr[2]),
- s2a (hp -> h_addr[3]));
- cp += strlen (cp);
-#undef s2a
-
- if (na -> na_port) {
- (void) sprintf (cp, "%05d", (int) ntohs (na -> na_port));
- cp += strlen (cp);
-
- if (na -> na_tset || na -> na_tset != NA_TSET_TCP) {
- (void) sprintf (cp, "%05d", (int) na -> na_tset);
- cp += strlen (cp);
- }
- }
- break;
-
- case NA_X25:
- case NA_BRG:
- if (na -> na_community == SUBNET_INT_X25
- && na -> na_cudflen == 0
- && na -> na_pidlen == 0
- && na -> na_dte[0] != '0') { /* SEK - X121 form */
- /* should be more general */
- (void) sprintf (nsap, "36%014s", na -> na_dte);
- ts = NULL;
- break;
- }
-
- if (ilen = na -> na_pidlen & 0xff)
- *cp++ = '1', dp = na -> na_pid;
- else
- if (ilen = na -> na_cudflen & 0xff)
- *cp++ = '2', dp = na -> na_cudf;
- else
- *cp++ = '0';
- if (ilen) {
- (void) sprintf (cp, "%01d", ilen);
- cp += strlen (cp);
-
- for (; ilen-- > 0; cp += 3)
- (void) sprintf (cp, "%03d", *dp++ & 0xff);
- }
- (void) strcpy (cp, na -> na_dte);
- break;
-
- default:
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown address type 0x%x", na -> na_stack));
- return NULLNA;
- }
-
- cp = nsap, dp = ca -> na_address;
- if (ts) {
- memcpy (dp, ts -> ts_prefix, ts -> ts_length);
- dp += ts -> ts_length;
- }
- while (*cp) {
- *dp = (*cp++ - '0') << 4;
- if (*cp)
- *dp++ |= (*cp++ - '0') & 0x0f;
- else
- *dp++ |= 0x0f;
- }
- ca -> na_addrlen = dp - ca -> na_address;
-
- return ca;
-}
diff --git a/src/isode/compat/na2str.c b/src/isode/compat/na2str.c
deleted file mode 100644
index 2f3d2c6752..0000000000
--- a/src/isode/compat/na2str.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* na2str.c - pretty-print NSAPaddr */
-
-/*
- * isode/compat/na2str.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* Network Address to String */
-
-char *na2str (na)
-register struct NSAPaddr *na;
-{
- switch (na -> na_stack) {
- case NA_TCP:
- return na -> na_domain;
-
- case NA_X25:
- case NA_BRG:
- return na -> na_dte;
-
- case NA_NSAP:
- default:
- return sel2str (na -> na_address, na -> na_addrlen, 0);
- }
-}
diff --git a/src/isode/compat/nochrcnv.c b/src/isode/compat/nochrcnv.c
deleted file mode 100644
index cc0d0afc76..0000000000
--- a/src/isode/compat/nochrcnv.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* nochrcnv.c - character conversion table, no case folding */
-
-/*
- * isode/compat/nochrcnv.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-
-/* */
-
-char /* straight mapping - Non case sensive */
- /* used for consistency */
- nochrcnv[] =
-{
- '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7',
- '\10', '\11', '\12', '\13', '\14', '\15', '\16', '\17',
- '\20', '\21', '\22', '\23', '\24', '\25', '\26', '\27',
- '\30', '\31', '\32', '\33', '\34', '\35', '\36', '\37',
- '\40', '\41', '\42', '\43', '\44', '\45', '\46', '\47',
- '\50', '\51', '\52', '\53', '\54', '\55', '\56', '\57',
- '\60', '\61', '\62', '\63', '\64', '\65', '\66', '\67',
- '\70', '\71', '\72', '\73', '\74', '\75', '\77', '\77',
- '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107',
- '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117',
- '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127',
- '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137',
- '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
- '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
- '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
- '\170', '\171', '\172', '\173', '\174', '\175', '\177', '\177',
- '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7',
- '\10', '\11', '\12', '\13', '\14', '\15', '\16', '\17',
- '\20', '\21', '\22', '\23', '\24', '\25', '\26', '\27',
- '\30', '\31', '\32', '\33', '\34', '\35', '\36', '\37',
- '\40', '\41', '\42', '\43', '\44', '\45', '\46', '\47',
- '\50', '\51', '\52', '\53', '\54', '\55', '\56', '\57',
- '\60', '\61', '\62', '\63', '\64', '\65', '\66', '\67',
- '\70', '\71', '\72', '\73', '\74', '\75', '\77', '\77',
- '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107',
- '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117',
- '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127',
- '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137',
- '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
- '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
- '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
- '\170', '\171', '\172', '\173', '\174', '\175', '\177', '\177'
-};
diff --git a/src/isode/compat/norm2na.c b/src/isode/compat/norm2na.c
deleted file mode 100644
index b5ff1d2ca2..0000000000
--- a/src/isode/compat/norm2na.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/* norm2na.c - normalize NSAPaddr to NSAP struct */
-
-/*
- * isode/compat/norm2na.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "psap.h"
-#include "isoaddrs.h"
-#include "tailor.h"
-#include "internet.h"
-
-/* Encoding on "unrealNS" addresses based on
-
- "An interim approach to use of Network Addresses",
- S.E. Kille, January 16, 1989
-
- */
-
-/* */
-
-int norm2na (p, len, na)
-char *p;
-int len;
-struct NSAPaddr *na;
-{
- na -> na_stack = NA_NSAP;
-
- if ((len == 8) && ((p[0] == 0x36) || (p[0] == 0x37))) {
- int xlen; /* SEK - X121 form */
- register char *cp,
- *cp2,
- *dp;
- char nsap[14];
-
- dp = nsap;
- for (cp2 = (cp = p + 1) + 7; cp < cp2; cp++) {
- register int j;
-
- if ((j = ((*cp & 0xf0) >> 4)) > 9)
- goto concrete;
- *dp++ = j + '0';
-
- if ((j = (*cp & 0x0f)) > 9) {
- if (j != 0x0f)
- goto concrete;
- }
- else
- *dp++ = j + '0';
- }
-
- for (cp = nsap, xlen = 14; *cp == '0'; cp++, xlen--)
- continue;
- na -> na_dtelen = xlen;
- for (cp2 = na -> na_dte; xlen-- > 0; )
- *cp2++ = *cp++;
- *cp2 = NULL;
-#ifdef BRIDGE_X25
- na -> na_stack = bridgediscrim (na) ? NA_BRG : NA_X25;
-#else
- na -> na_stack = NA_X25;
-#endif
- na -> na_community = SUBNET_INT_X25;
- }
- else {
- register struct ts_interim *ts,
- *tp;
-
- tp = NULL;
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (len > ts -> ts_length
- && (tp == NULL || ts -> ts_length > tp -> ts_length)
- && memcmp (p, ts -> ts_prefix, ts -> ts_length) == 0)
- tp = ts;
- if (tp) {
- int i,
- ilen,
- rlen;
- register char *cp,
- *dp,
- *ep;
- char nsap[NASIZE * 2 + 1];
-
- if (tp -> ts_syntax == NA_NSAP)
- goto lock_and_load;
- dp = nsap;
- for (cp = p + tp -> ts_length, ep = p + len;
- cp < ep;
- cp++) {
- register int j;
-
- if ((j = ((*cp & 0xf0) >> 4)) > 9) {
-concrete: ;
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("invalid concrete encoding"));
- goto realNS;
- }
- *dp++ = j + '0';
-
- if ((j = (*cp & 0x0f)) > 9) {
- if (j != 0x0f)
- goto concrete;
- }
- else
- *dp++ = j + '0';
- }
- *dp = NULL;
-
- cp = nsap;
-lock_and_load: ;
- na -> na_community = tp -> ts_subnet;
- switch (na -> na_stack = tp -> ts_syntax) {
- case NA_NSAP:
- goto unrealNS;
-
- case NA_X25:
- if ((int)strlen (cp) < 1) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("missing DTE+CUDF indicator: %s", nsap));
- goto realNS;
- }
- (void) sscanf (cp, "%1d", &i);
- cp += 1;
- switch (i) {
- case 0: /* DTE only */
- break;
-
- case 1: /* DTE+PID */
- case 2: /* DTE+CUDF */
- if ((int)strlen (cp) < 1) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("missing DTE+CUDF indicator: %s",
- nsap));
- goto realNS;
- }
- (void) sscanf (cp, "%1d", &ilen);
- cp += 1;
- rlen = ilen * 3;
- if ((int)strlen (cp) < rlen) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("bad DTE+CUDF length: %s", nsap));
- goto realNS;
- }
- if (i == 1) {
- if (ilen > NPSIZE) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("PID too long: %s", nsap));
- goto realNS;
- }
- dp = na -> na_pid;
- na -> na_pidlen = ilen;
- }
- else {
- if (ilen > CUDFSIZE) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("CUDF too long: %s", nsap));
- goto realNS;
- }
- dp = na -> na_cudf;
- na -> na_cudflen = ilen;
- }
- for (; rlen > 0; rlen -= 3) {
- (void) sscanf (cp, "%3d", &i);
- cp += 3;
-
- if (i > 255) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("invalid PID/CUDF: %s", nsap));
- goto realNS;
- }
- *dp++ = i & 0xff;
- }
- break;
-
- default:
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("invalid DTE+CUDF indicator: %s", nsap));
- goto realNS;
- }
- (void) strcpy (na -> na_dte, cp);
- na -> na_dtelen = strlen (na -> na_dte);
-
-#ifdef BRIDGE_X25
- if (bridgediscrim (na))
- na -> na_stack = NA_BRG;
-#endif
- break;
-
- case NA_TCP:
- if ((int)strlen (cp) < 12) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("missing IP address: %s", nsap));
- goto realNS;
- }
- {
- int q[4];
-
- (void) sscanf (cp, "%3d%3d%3d%3d", q, q + 1, q + 2,
- q + 3);
- (void) sprintf (na -> na_domain,
- "%d.%d.%d.%d", q[0], q[1], q[2], q[3]);
- }
- cp += 12;
-
- if (*cp) {
- if ((int)strlen (cp) < 5) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("missing port: %s", nsap));
- goto realNS;
- }
- (void) sscanf (cp, "%5d", &i);
- cp += 5;
- na -> na_port = htons ((u_short) i);
-
- if (*cp) {
- if ((int)strlen (cp) < 5) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("missing tset: %s", nsap));
- goto realNS;
- }
- (void) sscanf (cp, "%5d", &i);
- cp += 5;
- na -> na_tset = (u_short) i;
-
- if (*cp)
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("extra TCP information: %s", nsap));
- }
- }
- break;
-
- default:
- LLOG (addr_log, LLOG_NOTICE,
- ("unknown syntax %d for DSP: %s", ts -> ts_syntax,
- nsap));
- goto realNS;
- }
- }
- else {
-realNS: ;
- na -> na_stack = NA_NSAP;
- na -> na_community = SUBNET_REALNS;
-unrealNS: ;
- if (len > sizeof na -> na_address) {
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("NSAP address too long: %d octets", len));
- return NOTOK;
- }
- memcpy (na -> na_address, p, na -> na_addrlen = len);
- }
- }
-
- return OK;
-}
diff --git a/src/isode/compat/pa2str.c b/src/isode/compat/pa2str.c
deleted file mode 100644
index b747ead11a..0000000000
--- a/src/isode/compat/pa2str.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* pa2str.c - pretty-print PSAPaddr */
-
-/*
- * isode/compat/pa2str.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* Presentation Address to String */
-
-char *pa2str (px)
-register struct PSAPaddr *px;
-{
- register char *bp;
- struct PSAPaddr pas;
- register struct PSAPaddr *pa = &pas;
- register struct TSAPaddr *ta = &pa -> pa_addr.sa_addr;
- static char buffer[BUFSIZ];
-
- bp = buffer;
-
- *pa = *px; /* struct copy */
- if (ta -> ta_selectlen > 0
- && ta -> ta_selectlen < sizeof ta -> ta_selector) {
- register char *dp,
- *ep;
- register struct TSAPaddr *tz;
- register int n, m;
-
- /* does this look like an encoded TSEL? */
- m = ta -> ta_selectlen;
- n = ta -> ta_selector[0];
- if (m > 4 &&
- ta -> ta_selector[0] == ta -> ta_selector[1] &&
- n > 2 && n <= m - 2)
- { /* encoded! */
- tz = &px -> pa_addr.sa_addr;
- memset ((char *)ta, 0, sizeof *ta);
- if ((ta -> ta_selectlen = m - n - 2) > 0)
- memcpy (ta -> ta_selector, &tz -> ta_selector[n+2],
- ta -> ta_selectlen);
- if (norm2na (&tz -> ta_selector[2], n, ta -> ta_addrs) != OK) {
- *pa = *px;
- goto normal;
- }
- ta -> ta_naddr = 1;
- goto bridge;
- }
- for (ep = (dp = ta -> ta_selector) + ta -> ta_selectlen, *ep = NULL;
- dp < ep;
- dp++)
- if (!isprint ((u_char) *dp) && *dp != ' ')
- break;
- if (dp >= ep && (tz = str2taddr (ta -> ta_selector))) {
- pa -> pa_addr.sa_addr = *tz; /* struct copy */
- bridge:
- (void) sprintf (bp, "%s through TS bridge at ",
- paddr2str (pa, NULLNA));
- bp += strlen (bp);
-
- memset ((char *) pa, 0, sizeof *pa);
- *ta = px -> pa_addr.sa_addr; /* struct copy */
- ta -> ta_selectlen = 0;
- }
- }
-normal:
- (void) strcpy (bp, paddr2str (pa, NULLNA));
-
- return buffer;
-}
diff --git a/src/isode/compat/putenv.c b/src/isode/compat/putenv.c
deleted file mode 100644
index 3c365f1a4e..0000000000
--- a/src/isode/compat/putenv.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* putenv.c - generic putenv() */
-
-/*
- * isode/compat/putenv.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* */
-
-extern char **environ;
-static nvmatch ();
-
-/* */
-
-int setenv (name, value)
-register char *name,
- *value;
-{
- register int i;
- register char **ep,
- **nep,
- *cp;
-
- if ((cp = malloc ((unsigned) (strlen (name) + strlen (value) + 2)))
- == NULL)
- return 1;
- (void) sprintf (cp, "%s=%s", name, value);
-
- for (ep = environ, i = 0; *ep; ep++, i++)
- if (nvmatch (name, *ep)) {
- *ep = cp;
- return 0;
- }
-
- if ((nep = (char **) malloc ((unsigned) ((i + 2) * sizeof *nep)))
- == NULL) {
- free (cp);
- return 1;
- }
- for (ep = environ, i = 0; *ep; nep[i++] = *ep++)
- continue;
- nep[i++] = cp;
- nep[i] = NULL;
- environ = nep;
- return 0;
-}
-
-/* */
-
-int unsetenv (name)
-char *name;
-{
- char **ep,
- **nep;
-
- for (ep = environ; *ep; ep++)
- if (nvmatch (name, *ep))
- break;
- if (*ep == NULL)
- return 1;
-
- for (nep = ep + 1; *nep; nep++)
- continue;
- *ep = *--nep;
- *nep = NULL;
- return 0;
-}
-
-/* */
-
-static nvmatch (s1, s2)
-register char *s1,
- *s2;
-{
- while (*s1 == *s2++)
- if (*s1++ == '=')
- return 1;
-
- return (*s1 == '\0' && *--s2 == '=');
-}
diff --git a/src/isode/compat/rcmd_srch.c b/src/isode/compat/rcmd_srch.c
deleted file mode 100644
index 5608bdfc03..0000000000
--- a/src/isode/compat/rcmd_srch.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* rcmd_srch.c: search a lookup table: return string value */
-
-/*
- * isode/compat/rcmd_srch.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include "manifest.h"
-#include "cmd_srch.h"
-
-/* */
-
-char *rcmd_srch(val, cmd)
-register int val;
-register CMD_TABLE *cmd;
-{
- for(;cmd->cmd_key != NULLCP; cmd++)
- if(val == cmd->cmd_value)
- return(cmd->cmd_key);
- return(NULLCP);
-}
diff --git a/src/isode/compat/saddr2str.c b/src/isode/compat/saddr2str.c
deleted file mode 100644
index 1cf2afd455..0000000000
--- a/src/isode/compat/saddr2str.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* saddr2str.c - SSAPaddr to string value */
-
-/*
- * isode/compat/saddr2str.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* */
-
-char *saddr2str (sa)
-register struct SSAPaddr *sa;
-{
- struct PSAPaddr pas;
- register struct PSAPaddr *pa = &pas;
-
- if (!sa)
- return NULL;
- memset ((char *) pa, 0, sizeof *pa);
- pa -> pa_addr = *sa; /* struct copy */
-
- return paddr2str (pa, NULLNA);
-}
diff --git a/src/isode/compat/sel2str.c b/src/isode/compat/sel2str.c
deleted file mode 100644
index 8c71d9c3fc..0000000000
--- a/src/isode/compat/sel2str.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* sel2str.c - selector to string */
-
-/*
- * isode/compat/sel2str.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* */
-
-char *sel2str (sel, len, quoted)
-char *sel;
-int len,
- quoted;
-{
- register char *cp,
- *dp,
- *ep;
- static int i = 0;
- static char buf1[NASIZE * 2 + 1],
- buf2[NASIZE * 2 + 1],
- buf3[NASIZE * 2 + 1],
- buf4[NASIZE * 2 + 1];
- static char *bufs[] = { buf1, buf2, buf3, buf4 };
-
- cp = bufs[i++];
- i = i % 4;
-
- if (quoted) {
-#ifndef NOGOSIP
- if (len == 2) {
- if (quoted < 0)
- goto ugly;
- (void) sprintf (cp, "#%d",
- (sel[0] & 0xff) << 8 | (sel[1] & 0xff));
- goto out;
- }
-#endif
-
- for (ep = (dp = sel) + len; dp < ep; dp++)
- if (!isprint ((u_char) *dp))
- goto ugly;
-
- if (len > NASIZE * 2)
- len = NASIZE * 2;
-
- (void) sprintf (cp, len ? "\"%*.*s\"" : "\"\"", len, len, sel);
- }
- else {
-ugly: ;
- if (len > NASIZE) /* XXX */
- len = NASIZE;
-
- cp[explode (cp, (u_char *) sel, len)] = NULL;
- }
-#ifndef NOGOSIP
-out: ;
-#endif
-
- return cp;
-}
diff --git a/src/isode/compat/select.c b/src/isode/compat/select.c
deleted file mode 100644
index 9433048bf3..0000000000
--- a/src/isode/compat/select.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/* select.c - select() abstractions */
-
-/*
- * isode/compat/select.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <errno.h>
-#include <stdio.h>
-#include "manifest.h"
-#include "tailor.h"
-#include <sys/stat.h>
-
-
-extern int errno;
-
-
-int xselect_blocking_on_intr = 0;
-
-/* */
-
-#if defined(SOCKETS) && !defined(TLI_POLL)
-
-#include <sys/time.h>
-
-
-/* Synchronous multiplexing:
- < 0 : block indefinately
- = 0 : poll
- > 0 : wait
- */
-
-int selsocket (nfds, rfds, wfds, efds, secs)
-int nfds;
-fd_set *rfds,
- *wfds,
- *efds;
-int secs;
-{
- int n;
- fd_set ifds,
- ofds,
- xfds;
-#if defined(masscomp) && defined(_ATT)
- int msecs;
-#else
- struct timeval tvs;
- register struct timeval *tv = &tvs;
-#endif
-
-#if defined(masscomp) && defined(_ATT)
- if (secs != NOTOK)
- msecs = secs * 1000;
- else
- msecs = -1;
-#else
- if (secs != NOTOK)
- tv -> tv_sec = secs, tv -> tv_usec = 0;
- else
- tv = NULL;
-#endif
-
- if (rfds)
- ifds = *rfds;
- if (wfds)
- ofds = *wfds;
- if (efds)
- xfds = *efds;
-#if defined(masscomp) && defined(_ATT)
- if (efds)
- FD_ZERO(efds);
-#endif
-
- for (;;) {
-#if defined(masscomp) && defined(_ATT)
- switch (n = select (nfds, rfds, wfds, msecs)) {
-#else
- switch (n = select (nfds, rfds, wfds, efds, tv)) {
-#endif
- case OK:
- if (secs == NOTOK)
- break;
- return OK;
-
- case NOTOK:
- if (xselect_blocking_on_intr
- && errno == EINTR
- && secs == NOTOK)
- continue;
- /* else fall... */
-
- default:
- return n;
- }
-
- if (rfds)
- *rfds = ifds;
- if (wfds)
- *wfds = ofds;
- if (efds)
- *efds = xfds;
- }
-}
-#endif
-
-/* */
-
-#ifdef EXOS
-
-#ifdef SYS5
-
-/* There seems to be a bug in the SYS5 EXOS select() routine when a socket can
- be read immediately (don't know about write). The bug is that select()
- returns ZERO, and the mask is zero'd as well. The code below explicitly
- checks for this case.
-*/
-
-#include "sys/soioctl.h"
-
-
-int selsocket (nfds, rfds, wfds, efds, secs)
-int nfds;
-fd_set *rfds,
- *wfds,
- *efds;
-int secs;
-{
- register int fd;
- int n;
- fd_set ifds,
- ofds;
- long nbytes,
- usecs;
-
- if (secs != NOTOK)
- usecs = secs * 1000;
- else
- usecs = 0xffff; /* used to be ~(1L << (8 * sizeof usecs - 1)) */
-
- if (rfds)
- ifds = *rfds;
- if (wfds)
- ofds = *wfds;
- if (efds)
- FD_ZERO (efds);
-
- for (;;) {
- switch (n = select (nfds + 1, rfds, wfds, usecs)) { /* +1 for UNISYS */
- case OK:
- if (rfds)
- for (fd = 0; fd < nfds; fd++)
- if (FD_ISSET (fd, &ifds)
- && ioctl (fd, FIONREAD, (char *) &nbytes)
- != NOTOK
- && nbytes > 0) {
- FD_SET (fd, rfds);
- n++;
- }
- if (n == 0 && secs == NOTOK)
- break;
- return n;
-
- case NOTOK:
- default:
- return n;
- }
-
- if (rfds)
- *rfds = ifds;
- if (wfds)
- *wfds = ofds;
- }
-}
-#endif
-#endif
-
-#if defined(TLI_TP) && defined(TLI_POLL)
-#include <poll.h>
-
-int selsocket (nfds, rfds, wfds, efds, secs)
-int nfds;
-fd_set *rfds, *wfds, *efds;
-int secs;
-{
- int i, j, n;
- struct pollfd pollfds[128];
-
- for (i = j = 0; i < nfds; i++) {
- pollfds[j].fd = NOTOK;
- pollfds[j].events = 0;
- if (rfds && FD_ISSET (i, rfds)) {
- pollfds[j].fd = i;
- pollfds[j].events |= POLLIN | POLLPRI;
- }
- if (wfds && FD_ISSET (i, wfds)) {
- pollfds[j].fd = i;
- pollfds[j].events |= POLLOUT;
- }
- if (efds && FD_ISSET(i, efds)) {
- pollfds[j].fd = i;
- /* one always gets notified of exceptions */
- }
- if (pollfds[j].fd == i)
- j ++;
-
- }
-
- if (rfds) FD_ZERO(rfds);
- if (wfds) FD_ZERO(wfds);
- if (efds) FD_ZERO(efds);
-
- if (secs != 0 && secs != NOTOK)
- secs *= 1000;
-
-again:
- n = poll (pollfds, (unsigned long)j, secs);
- if (n == NOTOK) {
- if (errno == EAGAIN)
- goto again;
- if (errno != EINTR)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("poll"));
- return NOTOK;
- }
-
- for (i = 0; i < j; i++) {
- if (rfds && (pollfds[i].revents & (POLLIN | POLLPRI)))
- FD_SET (pollfds[i].fd, rfds);
- if (wfds && (pollfds[i].revents & POLLOUT))
- FD_SET (pollfds[i].fd, wfds);
- if (efds && (pollfds[i].revents & (POLLERR | POLLHUP | POLLNVAL)))
- FD_SET (pollfds[i].fd, efds);
- }
- return n;
-}
-
-#endif
-
-/* */
-
-/* This routine used to be used for devices that didn't support real select.
- Those devices are no longer supported.
-
- Instead the routine is used to check if an I/O abstraction has some data
- buffered in user-space for reading...
- */
-
-static IFP sfnx[FD_SETSIZE] = { NULL };
-static caddr_t sdata[FD_SETSIZE] = { NULL };
-
-
-IFP set_check_fd (fd, fnx, data)
-int fd;
-IFP fnx;
-caddr_t data;
-{
- IFP ofnx;
-
- if (fd < 0 || fd >= FD_SETSIZE)
- return NULLIFP;
-
- ofnx = sfnx[fd];
- sfnx[fd] = fnx, sdata[fd] = data;
-
- return ofnx;
-}
-
-/* */
-
-int xselect (nfds, rfds, wfds, efds, secs)
-int nfds;
-fd_set *rfds,
- *wfds,
- *efds;
-int secs;
-{
- register int fd;
- int n;
- fd_set ifds,
- ofds,
- xfds;
- static int nsysfds = NOTOK;
-
- if (nsysfds == NOTOK)
- nsysfds = getdtablesize ();
- if (nfds > FD_SETSIZE)
- nfds = FD_SETSIZE;
- if (nfds > nsysfds + 1)
- nfds = nsysfds + 1;
-
- FD_ZERO (&ifds);
- n = 0;
-
- for (fd = 0; fd < nfds; fd++)
- if (sfnx[fd] != NULLIFP
- && rfds
- && FD_ISSET (fd, rfds)
- && (*sfnx[fd]) (fd, sdata[fd]) == DONE) {
- FD_SET (fd, &ifds);
- n++;
- }
-
- if (n > 0) {
- *rfds = ifds; /* struct copy */
- if (wfds)
- FD_ZERO (wfds);
- if (efds)
- FD_ZERO (efds);
-
- return n;
- }
-
- if (rfds)
- ifds = *rfds; /* struct copy */
- if (wfds)
- ofds = *wfds; /* struct copy */
- if (efds)
- xfds = *efds; /* struct copy */
-
- if ((n = selsocket (nfds, rfds, wfds, efds, secs)) != NOTOK)
- return n;
-
- if (errno == EBADF) {
- struct stat st;
-
- if (rfds)
- FD_ZERO (rfds);
- if (wfds)
- FD_ZERO (wfds);
- if (efds)
- FD_ZERO (efds);
-
- n = 0;
- for (fd = 0; fd < nfds; fd++)
- if (((rfds && FD_ISSET (fd, &ifds))
- || (wfds && FD_ISSET (fd, &ofds))
- || (efds && FD_ISSET (fd, &xfds)))
- && fstat (fd, &st) == NOTOK) {
- if (rfds && FD_ISSET (fd, &ifds))
- FD_SET (fd, rfds);
- if (wfds && FD_ISSET (fd, &ofds))
- FD_SET (fd, wfds);
- if (efds && FD_ISSET (fd, &xfds))
- FD_SET (fd, efds);
-
- SLOG (compat_log, LLOG_EXCEPTIONS, "",
- ("fd %d has gone bad", fd));
- n++;
- }
-
- if (n)
- return n;
-
- errno = EBADF;
- }
-
- return NOTOK;
-}
diff --git a/src/isode/compat/serror.c b/src/isode/compat/serror.c
deleted file mode 100644
index b86ec5f415..0000000000
--- a/src/isode/compat/serror.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* serror.c - get system error */
-
-/*
- * isode/compat/serror.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* DATA */
-
-extern int sys_nerr;
-extern char *sys_errlist[];
-
-/* */
-
-char *sys_errname (i)
-int i;
-{
- static char buffer[30];
-
- if (0 < i && i < sys_nerr)
- return sys_errlist[i];
- (void) sprintf (buffer, "Error %d", i);
-
- return buffer;
-}
diff --git a/src/isode/compat/servbyname.c b/src/isode/compat/servbyname.c
deleted file mode 100644
index 13b6da5120..0000000000
--- a/src/isode/compat/servbyname.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* servbyname.c - getisoserventbyname */
-
-/*
- * isode/compat/servbyname.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoservent.h"
-#include "tailor.h"
-
-/* */
-
-struct isoservent *getisoserventbyname (entity, provider)
-char *entity,
- *provider;
-{
- register struct isoservent *is;
-
- isodetailor (NULLCP, 0);
- DLOG (addr_log, LLOG_TRACE,
- ("getisoserventbyname \"%s\" \"%s\"", entity, provider));
-
- (void) setisoservent (0);
- while (is = getisoservent ())
- if (strcmp (entity, is -> is_entity) == 0
- && strcmp (provider, is -> is_provider) == 0)
- break;
- (void) endisoservent ();
-
- if (is) {
-#ifdef DEBUG
- if (addr_log -> ll_events & LLOG_DEBUG)
- _printsrv (is);
-#endif
- }
- else
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("lookup of local service %s/%s failed", provider, entity));
-
- return is;
-}
diff --git a/src/isode/compat/servbyport.c b/src/isode/compat/servbyport.c
deleted file mode 100644
index 41c7851284..0000000000
--- a/src/isode/compat/servbyport.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* servbyport.c - getisoserventbyport */
-
-/*
- * isode/compat/servbyport.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoservent.h"
-#include "tailor.h"
-#include "internet.h"
-
-/* */
-
-struct isoservent *getisoserventbyport (provider, port)
-char *provider;
-unsigned short port;
-{
- register struct isoservent *is;
-
- isodetailor (NULLCP, 0);
- DLOG (addr_log, LLOG_TRACE,
- ("getisoserventbyport \"%s\" %d", provider, (int) ntohs (port)));
-
- (void) setisoservent (0);
- while (is = getisoservent ())
- if (sizeof (port) == is -> is_selectlen
- && port == is -> is_port
- && strcmp (provider, is -> is_provider) == 0)
- break;
- (void) endisoservent ();
-
- if (is) {
-#ifdef DEBUG
- if (addr_log -> ll_events & LLOG_DEBUG)
- _printsrv (is);
-#endif
- }
- else
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("lookup of local service %s/%d failed",
- provider, (int) ntohs (port)));
-
- return is;
-}
diff --git a/src/isode/compat/servbysel.c b/src/isode/compat/servbysel.c
deleted file mode 100644
index 8293c44304..0000000000
--- a/src/isode/compat/servbysel.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* servbysel.c - getisoserventbyselector */
-
-/*
- * isode/compat/servbysel.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoservent.h"
-#include "tailor.h"
-
-/* */
-
-struct isoservent *getisoserventbyselector (provider, selector, selectlen)
-char *provider,
- *selector;
-int selectlen;
-{
- register struct isoservent *is;
-
- isodetailor (NULLCP, 0);
- DLOG (addr_log, LLOG_TRACE,
- ("getisoserventbyselector \"%s\" %s",
- provider, sel2str (selector, selectlen, 1)));
-
- (void) setisoservent (0);
- while (is = getisoservent ())
- if (selectlen == is -> is_selectlen
- && memcmp (selector, is -> is_selector, is -> is_selectlen) == 0
- && strcmp (provider, is -> is_provider) == 0)
- break;
- (void) endisoservent ();
-
- if (is) {
-#ifdef DEBUG
- if (addr_log -> ll_events & LLOG_DEBUG)
- _printsrv (is);
-#endif
- }
- else
- SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
- ("lookup of local service %s %s failed",
- provider, sel2str (selector, selectlen, 1)));
-
- return is;
-}
diff --git a/src/isode/compat/signals.c b/src/isode/compat/signals.c
deleted file mode 100644
index 63dcc06f38..0000000000
--- a/src/isode/compat/signals.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* signals.c - signal handling */
-
-/*
- * isode/compat/signals.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <signal.h>
-#ifndef BADSIG
-#define BADSIG ((SFP) -1)
-#endif
-#include "manifest.h"
-
-/* */
-
-int _iosignals_set = 0;
-
-/* Berkeley UNIX: 4.2 */
-
-#ifndef XOS_2
-#ifdef BSDSIGS
-
-/* Simply including <signal.h> is sufficient for everything but AIX */
-
-#ifdef AIX /* #define'd to be _signal */
-IFP signal (sig, func)
-int sig;
-IFP func;
-{
- struct sigvec sv1,
- sv2;
-
- sv1.sv_handler = func;
- sv1.sv_mask = sv1.sv_onstack = 0;
- return (sigvec (sig, &sv1, &sv2) != NOTOK ? sv2.sv_handler : BADSIG);
-}
-#endif
-
-#else
-
-/* AT&T UNIX: 5 */
-
-
-/* Probably a race condition or two in this code */
-
-
-static int blocked = 0;
-static int pending = 0;
-
-static SFP handler[NSIG];
-
-static SFD sigser (sig)
-int sig;
-{
- (void) signal (sig, sigser);
-
- pending |= sigmask (sig);
-}
-
-/* */
-#ifndef SVR4_UCB
-
-int sigblock (mask)
-int mask;
-{
- register int sig,
- smask;
- long omask = blocked;
-
- if (mask == 0)
- return blocked;
-
- for (sig = 1, smask = sigmask (sig); sig < NSIG; sig++, smask <<= 1)
- if ((smask & mask) && !(smask & blocked)) {
- pending &= ~smask;
- handler[sig] = signal (sig, sigser);
- blocked |= smask;
- }
-
- return omask;
-}
-
-#ifndef linux
-int sigsetmask (mask)
-int mask;
-{
- register int sig,
- smask;
- long omask = blocked;
-
- for (sig = 1, smask = sigmask (sig); sig < NSIG; sig++, smask <<= 1)
- if (smask & mask) {
- if (smask & blocked)
- continue;
-
- pending &= ~smask;
- handler[sig] = signal (sig, sigser);
- blocked |= smask;
- }
- else
- if (smask & blocked) {
- blocked &= ~smask;
- (void) signal (sig, handler[sig] != BADSIG ? handler[sig]
- : SIG_DFL);
- if (smask & pending) {
- pending &= ~smask;
- (void) kill (getpid (), sig);
- }
- }
-
- return omask;
-}
-#endif
-
-#endif
-#endif
-#endif
diff --git a/src/isode/compat/smalloc.c b/src/isode/compat/smalloc.c
deleted file mode 100644
index d65cccffa9..0000000000
--- a/src/isode/compat/smalloc.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* smalloc.c - error checking malloc */
-
-/*
- * isode/compat/smalloc.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* */
-
-char *
-smalloc(size)
-int size;
-{
- register char *ptr;
-
- if ((ptr = malloc((unsigned) size)) == NULL){
- LLOG (compat_log,LLOG_FATAL, ("malloc() failure"));
- abort ();
- /* NOTREACHED */
- }
-
- return(ptr);
-}
diff --git a/src/isode/compat/sprintb.c b/src/isode/compat/sprintb.c
deleted file mode 100644
index b513841e77..0000000000
--- a/src/isode/compat/sprintb.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* sprintb.c - sprintf on bits */
-
-/*
- * isode/compat/sprintb.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* */
-
-char *sprintb (v, bits)
-register int v;
-register char *bits;
-{
- register int i,
- j;
- register char c,
- *bp;
- static char buffer[BUFSIZ];
-
- (void) sprintf (buffer, bits && *bits == 010 ? "0%o" : "0x%x", v);
- bp = buffer + strlen (buffer);
-
- if (bits && *++bits) {
- j = 0;
- *bp++ = '<';
- while (i = *bits++)
- if (v & (1 << (i - 1))) {
- if (j++)
- *bp++ = ',';
- for (; (c = *bits) > 32; bits++)
- *bp++ = c;
- }
- else
- for (; *bits > 32; bits++)
- continue;
- *bp++ = '>';
- *bp = NULL;
- }
-
- return buffer;
-}
diff --git a/src/isode/compat/sstr2arg.c b/src/isode/compat/sstr2arg.c
deleted file mode 100644
index 745870393c..0000000000
--- a/src/isode/compat/sstr2arg.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* sstr2arg: convert string into argument list */
-
-/*
- * isode/compat/sstr2arg.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "manifest.h"
-#include "general.h"
-#include <errno.h>
-extern int errno;
-
-/* */
-
-/*
- stash a pointer to each field into the passed array. any common seperators
- split the words. extra white-space between fields is ignored.
-
- specially-interpreted characters:
- double-quote, backslash (preceding a special char with a backslash
- removes its interpretation. A backslash not followed by a special is
- used to preface an octal specification for one character a string begun
- with double-quote has only double-quote and backslash as special
- characters.
-
-*/
-
-
-
-
-sstr2arg (srcptr, maxpf, argv, dlmstr)
-register char *srcptr; /* source data */
-int maxpf; /* maximum number of permitted fields */
-char *argv[]; /* where to put the pointers */
-char *dlmstr; /* Delimiting character */
-{
- char gotquote; /* currently parsing quoted string */
- register int ind;
- register char *destptr;
- char idex[256];
-
- if (srcptr == 0)
- return (NOTOK);
-
- memset (idex, 0, sizeof idex);
- for (destptr = dlmstr; *destptr; destptr++)
- idex[*destptr] = 1;
-
- for (ind = 0, maxpf -= 2;; ind++) {
- if (ind >= maxpf)
- return (NOTOK);
-
- /* Skip leading white space */
- for (; *srcptr == ' ' || *srcptr == '\t'; srcptr++);
-
- argv [ind] = srcptr;
- destptr = srcptr;
-
- for (gotquote = 0; ; ) {
-
- if (idex[*srcptr])
- {
- if (gotquote) { /* don't interpret the char */
- *destptr++ = *srcptr++;
- continue;
- }
-
- srcptr++;
- *destptr = '\0';
- goto nextarg;
- } else {
- switch (*srcptr) {
- default: /* just copy it */
- *destptr++ = *srcptr++;
- break;
-
- case '\"': /* beginning or end of string */
- gotquote = (gotquote) ? 0 : 1 ;
- srcptr++; /* just toggle */
- break;
-
- case '\\': /* quote next character */
- srcptr++; /* skip the back-slash */
- switch (*srcptr) {
- /* Octal character */
- case '0': case '1':
- case '2': case '3':
- case '4': case '5':
- case '6': case '7':
- *destptr = '\0';
- do
- *destptr = (*destptr << 3) | (*srcptr++ - '0');
- while (*srcptr >= '0' && *srcptr <= '7');
- destptr++;
- break;
- /* C escape char */
- case 'b':
- *destptr++ = '\b';
- srcptr++;
- break;
- case 'n':
- *destptr++ = '\n';
- srcptr++;
- break;
- case 'r':
- *destptr++ = '\r';
- srcptr++;
- break;
- case 't':
- *destptr++ = '\t';
- srcptr++;
- break;
-
- /* Boring -- just copy ASIS */
- default:
- *destptr++ = *srcptr++;
- }
- break;
-
- case '\0':
- *destptr = '\0';
- ind++;
- argv[ind] = (char *) 0;
- return (ind);
- }
- }
- }
- nextarg:
- continue;
- }
-}
diff --git a/src/isode/compat/str2elem.c b/src/isode/compat/str2elem.c
deleted file mode 100644
index 2757f491b3..0000000000
--- a/src/isode/compat/str2elem.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* str2elem.c - string to list of integers */
-
-/*
- * isode/compat/str2elem.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-/* */
-
-int str2elem (s, elements)
-char *s;
-unsigned int elements[];
-{
- register int i;
- register unsigned int *ip;
- register char *cp,
- *dp;
-
- ip = elements, i = 0;
- for (cp = s; *cp && i <= NELEM; cp = ++dp) {
- for (dp = cp; isdigit ((u_char) *dp); dp++)
- continue;
- if ((cp == dp) || (*dp && *dp != '.'))
- break;
- *ip++ = (unsigned int) atoi (cp), i++;
- if (*dp == NULL)
- break;
- }
- if (*dp || i >= NELEM)
- return NOTOK;
- *ip = 0;
-
- return i;
-}
diff --git a/src/isode/compat/str2saddr.c b/src/isode/compat/str2saddr.c
deleted file mode 100644
index 5384520f62..0000000000
--- a/src/isode/compat/str2saddr.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* str2saddr.c - string value to SSAPaddr */
-
-/*
- * isode/compat/str2saddr.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* */
-
-struct SSAPaddr *str2saddr (str)
-char *str;
-{
- register struct PSAPaddr *pa;
-
- if (pa = str2paddr (str))
- return (&pa -> pa_addr);
-
- return NULLSA;
-}
diff --git a/src/isode/compat/str2sel.c b/src/isode/compat/str2sel.c
deleted file mode 100644
index 9b5a6678ba..0000000000
--- a/src/isode/compat/str2sel.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* str2sel.c - string to selector */
-
-/*
- * isode/compat/str2sel.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-
-#define QUOTE '\\'
-
-/* STR2SEL */
-
-int str2sel (s, quoted, sel, n)
-char *s,
- *sel;
-int quoted,
- n;
-{
- int i,
- r;
- register char *cp;
-
- if (*s == NULL)
- return 0;
-
- if (quoted <= 0) {
- for (cp = s; *cp; cp++)
- if (!isxdigit ((u_char) *cp))
- break;
-
- if (*cp == NULL && (i = (cp - s)) >= 2 && (i & 0x01) == 0) {
- if (i > (r = n * 2))
- i = r;
- i = implode ((u_char *) sel, s, i);
- if ((r = (n - i)) > 0)
- memset (sel + i, 0, r);
- return i;
- }
- if (*s == '#') { /* gosip style, network byte-order */
- i = atoi (s + 1);
- sel[0] = (i >> 8) & 0xff;
- sel[1] = i & 0xff;
-
- return 2;
- }
-
- DLOG (compat_log, LLOG_EXCEPTIONS, ("invalid selector \"%s\"", s));
- }
-
- for (cp = sel; *s && n > 0; cp++, s++, n--)
- if (*s != QUOTE)
- *cp = *s;
- else
- switch (*++s) {
- case 'b':
- *cp = '\b';
- break;
- case 'f':
- *cp = '\f';
- break;
- case 'n':
- *cp = '\n';
- break;
- case 'r':
- *cp = '\r';
- break;
- case 't':
- *cp = '\t';
- break;
-
- case 0:
- s--;
- case QUOTE:
- *cp = QUOTE;
- break;
-
- default:
- if (!isdigit ((u_char) *s)) {
- *cp++ = QUOTE;
- *cp = *s;
- break;
- }
- r = *s != '0' ? 10 : 8;
- for (i = 0; isdigit ((u_char) *s); s++)
- i = i * r + *s - '0';
- s--;
- *cp = toascii (i);
- break;
- }
- if (n > 0)
- *cp = NULL;
-
- return (cp - sel);
-}
diff --git a/src/isode/compat/str2taddr.c b/src/isode/compat/str2taddr.c
deleted file mode 100644
index 45f9f2d73c..0000000000
--- a/src/isode/compat/str2taddr.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* str2taddr.c - string value to TSAPaddr */
-
-/*
- * isode/compat/str2taddr.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* */
-
-struct TSAPaddr *str2taddr (str)
-char *str;
-{
- register struct PSAPaddr *pa;
-
- if (pa = str2paddr (str))
- return (&pa -> pa_addr.sa_addr);
-
- return NULLTA;
-}
diff --git a/src/isode/compat/str2vec.c b/src/isode/compat/str2vec.c
deleted file mode 100644
index e7951cefd3..0000000000
--- a/src/isode/compat/str2vec.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* str2vec.c - string to vector */
-
-/*
- * isode/compat/str2vec.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-
-#define QUOTE '\\'
-
-/* */
-
-int str2vecX (s, vec, nmask, mask, brk, docomma)
-register char *s,
- **vec,
- brk;
-int nmask,
- *mask,
- docomma;
-{
- register int i;
- char comma = docomma ? ',' : ' ';
-
- if (mask)
- *mask = 0;
-
- for (i = 0; i <= NVEC;) {
- vec[i] = NULL;
- if (brk > 0) {
- if (i > 0 && *s == brk)
- *s++ = NULL;
- }
- else
- while (isspace ((u_char) *s) || *s == comma)
- *s++ = NULL;
- if (*s == NULL)
- break;
-
- if (*s == '"') {
- if (i < nmask)
- *mask |= 1 << i;
- for (vec[i++] = ++s; *s != NULL && *s != '"'; s++)
- if (*s == QUOTE) {
- if (*++s == '"')
- (void) strcpy (s - 1, s);
- s--;
- }
- if (*s == '"')
- *s++ = NULL;
- continue;
- }
- if (*s == QUOTE && *++s != '"')
- s--;
- vec[i++] = s;
-
- if (brk > 0) {
- if (*s != brk)
- for (s++; *s != NULL && *s != brk; s++)
- continue;
- }
- else
- for (s++; *s != NULL && !isspace ((u_char) *s) && *s != comma; s++)
- continue;
- }
- vec[i] = NULL;
-
- return i;
-}
diff --git a/src/isode/compat/strdup.c b/src/isode/compat/strdup.c
deleted file mode 100644
index 6d37de0827..0000000000
--- a/src/isode/compat/strdup.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* strdup.c - create a duplicate copy of the given string */
-
-/*
- * isode/compat/strdup.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* */
-#if (!defined(SVR4) && !defined(linux))
-
-char *strdup (str)
-register char *str;
-{
- register char *ptr;
-
- if ((ptr = malloc((unsigned) (strlen (str) + 1))) == NULL){
- LLOG (compat_log,LLOG_FATAL, ("strdup malloc() failure"));
- abort ();
- /* NOTREACHED */
- }
-
- (void) strcpy (ptr, str);
-
- return ptr;
-}
-
-#else
-
-strdup_stub ()
-{;}
-
-#endif
diff --git a/src/isode/compat/sunlink.c b/src/isode/compat/sunlink.c
deleted file mode 100644
index 55ca24e4b7..0000000000
--- a/src/isode/compat/sunlink.c
+++ /dev/null
@@ -1,665 +0,0 @@
-/* sunlink.c - X.25 abstractions for SunLink X25 */
-
-/*
- * isode/compat/sunlink.c
- *
- * Contributed by John Pavel, Department of Trade and Industry/National
- * Physical Laboratory in the UK
- * much hacked my others since then - i.e., don't blame John!
- *
- *
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-
-/* SUN UNIX: SunLink X25 */
-
-#ifdef X25
-
-#include "x25.h"
-#include "isoaddrs.h"
-
-#ifdef SUN_X25
-
-#define CALLING 0
-#define CALLED 1
-#define PROBE (-1)
-
-/* */
-
-#ifdef DEBUG
-void print_x25_facilities ();
-static int log_x25_facilities ();
-#endif
-
-/* */
-
-/* ARGSUSED */
-
-int start_x25_client (local, priv)
-struct NSAPaddr *local;
-int priv;
-{
- int sd;
-
- if ((sd = socket (AF_X25, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK;
- }
-
- return sd;
-}
-
-/* */
-
-int start_x25_server (local, backlog, opt1, opt2)
-struct NSAPaddr *local;
-int backlog,
- opt1,
- opt2;
-{
- CONN_DB sbuf,
- xbuf;
- CONN_DB *sock = &sbuf,
- *xs = &xbuf;
- int sd, onoff;
-
- if ((sd = socket (AF_X25, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK;
- }
-
- onoff = 0;
- if (ioctl (sd, X25_CALL_ACPT_APPROVAL, (char *) &onoff) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("X25_CALL_ACPT_APPROVAL"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-
-#ifdef AEF_NSAP
- if (local -> na_stack == NA_NSAP) {
- FACILITY f;
-
- f.type = T_CALLED_AEF;
- if (nsap2if (local, &f.f_called_aef) == NOTOK)
- return NOTOK;
- if (ioctl (sd, X25_SET_FACILITY, &f) == NOTOK)
- return NOTOK;
- memset ((char *)xs, 0, sizeof *xs);
- if (bind (sd, (struct sockaddr *)xs, sizeof *xs) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
- }
- else {
-#endif
- if (ioctl (sd, X25_RD_HOSTADR, (char *) xs) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_HOSTADR"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
- /* if null DTE in /etc/x25params
- then ALWAYS use null DTE for
- listen if PID is specified */
- if (xs -> hostlen == 0 && local -> na_pidlen > 0) {
- if (local -> na_pidlen > NPSIZE)
- local -> na_pidlen = NPSIZE;
- *sock = *xs; /* struct copy */
- memset((char *) sock -> data, 0, NPSIZE);
- memcpy ((char *) sock -> data, local -> na_pid, local -> na_pidlen);
- memcpy ((char *) sock -> data + NPSIZE, local -> na_cudf,
- local -> na_cudflen);
- sock -> datalen = local -> na_pidlen + local -> na_cudflen;
- }
- else
- sock = gen2if(local, sock, ADDR_LISTEN);
-
- /* Adopt the convention that if a null DTE is given,
- we should get the one from /etc/x25params */
- if(!local->na_dtelen) {
- /* Now set the generic local address */
- local = if2gen(local, xs, ADDR_LOCAL);
- /* Modified by INRIA to avoid a null local address */
- if (!local->na_dtelen) {
- local->na_dtelen = 1;
- local->na_dte[0] = '0';
- }
- }
- if (bind (sd, (struct sockaddr *) sock, sizeof(CONN_DB)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-#ifdef AEF_NSAP
- }
-#endif
-
-#ifndef BSD43
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, NULLCP, 0);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, NULLCP, 0);
-#else
- onoff = 1;
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, (char *)&onoff, sizeof onoff);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, (char *)&onoff, sizeof onoff);
-#endif
-
- if (set_x25_facilities(sd, CALLED, "Acceptable") == NOTOK) {
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-
- (void) listen (sd, backlog);
-
- return sd;
-}
-
-/* */
-
-int join_x25_server (fd, remote)
-register int fd;
-register struct NSAPaddr *remote;
-{
- CONN_DB sbuf;
- CONN_DB *sock = &sbuf;
- register int nfd;
-
- if ((sock = gen2if (remote, sock, ADDR_REMOTE)) == NULL)
- return NOTOK;
-
- if (set_x25_facilities(fd, CALLING, "Proposed") == NOTOK)
- return NOTOK;
-#ifdef ANY_LINK
- sock -> hostlen |= ANY_LINK;
-#endif
-#ifdef AEF_NONE /* sunnet 7.0 or > */
-
- /*
- * For sunnet 7.0 - if we have a real nsap then use that. The
- * X121 should be filled in as NULL.
- */
-
- if (remote -> na_stack == NA_NSAP) {
- FACILITY f;
- f.type = T_CALLED_AEF;
- if (nsap2if (remote, &f.f_called_aef) == NOTOK)
- return NOTOK;
- if (ioctl (fd, X25_SET_FACILITY, &f) == NOTOK)
- return NOTOK;
- }
-#endif
- if ((nfd = connect (fd, (struct sockaddr *)sock, sizeof (CONN_DB)))
- == NOTOK) {
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_cause_and_diag(fd); /* Sun's documentation throwns
- no light as to whether, or
- not this will result in any
- useful information */
- }
-#ifdef DEBUG
- else
- if (compat_log -> ll_events & LLOG_DEBUG)
- (void) log_x25_facilities(fd, CALLING, "Effective Calling");
-#endif
-
- return nfd;
-}
-
-/* */
-
-int join_x25_client (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB sbuf;
- CONN_DB *sock = &sbuf;
- int len = sizeof *sock;
- int nfd;
-#ifdef AEF_NSAP
- FACILITY f;
-#endif
-
- if ((nfd = accept (fd, (struct sockaddr *) sock, &len)) == NOTOK) {
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_cause_and_diag(fd); /* Sun's documentation throwns
- no light as to whether, or
- not this will result in any
- useful information */
- }
-#ifdef DEBUG
- else
- if (compat_log -> ll_events & LLOG_DEBUG)
- (void) log_x25_facilities(fd, CALLED, "Effective Called");
-#endif
- if (nfd < 0) return nfd;
-
- /* May also need to send call accept packet if using
- * FAST_ACPT_CLR, or X25_CALL_ACPT_APPROVAL
- * there was a SUNLINK bug in this area
- *
- * May as well try it -- if it fails, so what ??
- */
- if (ioctl(nfd,X25_SEND_CALL_ACPT, NULLCP) < 0)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("X25_SEND_CALL_ACPT"));
-
-#ifdef AEF_NONE /* sunnet 7.0 or > */
-
- /*
- * For sunnet 7.0 - see if we have a real nsap and use that.
- */
-
- f.type = T_CALLING_AEF;
- if (ioctl (nfd, X25_GET_FACILITY, &f) == NOTOK ||
- if2nsap (&f.f_calling_aef, remote) == NOTOK)
-#endif
-
- remote = if2gen (remote, sock, ADDR_REMOTE);
-
- return nfd;
-}
-
-/* */
-
-/* There is a bug whereby if the thruput is set, calls fail. pb@cl.cam.ac.uk */
-
-int sun_fixed_thruput = 0;
-
-/* Set up X.25 Facilities. Note that setting even one value causes
- the default (/etc/x25params) values to be set explicitly on the
- call request (and probably also call accept). This can screw
- things up, if your /etc/x25params has not been properly
- localised as is normally the case. */
-
-/* ARGSUSED */
-int set_x25_facilities(sd, coc, caption)
-int sd, coc;
-char *caption;
-{
- FACILITY_DB facilities;
-
- memset ((char *) &facilities, 0, sizeof facilities);
-
- if (coc != CALLED
- && ioctl (sd, X25_RD_FACILITY, (char *) &facilities) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_FACILITY"));
- return NOTOK;
- }
-
- if (coc == PROBE
- || !(coc == CALLED
- || reverse_charge || recvpktsize || sendpktsize
- || recvwndsize || sendwndsize || recvthruput
- || sendthruput || cug_req /* || cug_index */
- || fast_select_type || rpoa_req /* || rpoa */)) {
- if (facilities.recvpktsize)
- recvpktsize = facilities.recvpktsize;
- if (facilities.sendpktsize)
- sendpktsize = facilities.sendpktsize;
-
- return OK;
- }
-
- if (reverse_charge)
- facilities.reverse_charge = reverse_charge;
- if (recvpktsize)
- facilities.recvpktsize = recvpktsize;
- if (sendpktsize)
- facilities.sendpktsize = sendpktsize;
- if (recvwndsize)
- facilities.recvwndsize = recvwndsize;
- if (sendwndsize)
- facilities.sendwndsize = sendwndsize;
- if (sun_fixed_thruput) { /* get round Sun bug */
- if (recvthruput)
- facilities.recvthruput = recvthruput;
- if (sendthruput)
- facilities.sendthruput = sendthruput;
- }
- else
- facilities.recvthruput = facilities.sendthruput = 0;
- if (cug_req)
- facilities.cug_req = cug_req;
- if (cug_index)
- facilities.cug_index = cug_index;
- if (fast_select_type)
- facilities.fast_select_type = fast_select_type;
- /* May as well accept FCS calls */
- else
- if (coc == CALLED)
- facilities.fast_select_type = FAST_ACPT_CLR;
- if (rpoa_req)
- facilities.rpoa_req = rpoa_req;
- if (rpoa)
- facilities.rpoa = rpoa;
-
-#undef DO_NOT_USE_FACILITIES
-#ifndef DO_NOT_USE_FACILITIES
-#ifdef DEBUG
- if (compat_log -> ll_events & LLOG_DEBUG)
- print_x25_facilities (facilities, coc, caption);
-#endif
-
- if (ioctl (sd, X25_WR_FACILITY, (char *) &facilities) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("X25_WR_FACILITY"));
- return NOTOK;
- }
-#endif
-
-#ifdef notyet
- if (facilities.recvpktsize)
- recvpktsize = facilities.recvpktsize;
- if (facilities.sendpktsize)
- sendpktsize = facilities.sendpktsize;
-#endif
-
- return OK;
-}
-
-/* */
-
-int log_cause_and_diag(fd)
-int fd;
-{
- X25_CAUSE_DIAG diag;
-
- if (ioctl(fd, X25_RD_CAUSE_DIAG, (char *) &diag) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_CAUSE_DIAG"));
- return NOTOK;
- }
-
- return elucidate_x25_err ((int) diag.flags, diag.data);
-
-}
-
-/* */
-
-#ifdef DEBUG
-
-static int log_x25_facilities (fd, coc, caption)
-int fd;
-int coc;
-char *caption;
-{
- FACILITY_DB f;
-
- if (ioctl (fd, X25_RD_FACILITY, (char *) &f) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("X25_RD_FACILITY"));
- return NOTOK;
- }
-
- print_x25_facilities (f, coc, caption);
-
- return OK;
-}
-
-/* */
-
-static void print_x25_facilities (f, coc, caption)
-FACILITY_DB f;
-int coc;
-char *caption;
-{
- int baud;
-
- DLOG (compat_log, LLOG_DEBUG, ("%s X.25 Facilities:", caption));
-
- switch (f.reverse_charge) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ((coc == CALLED)
- ? "reverse charging not requested"
- : "reverse charging not allowed"));
- break;
-
- case 1:
- DLOG (compat_log, LLOG_DEBUG, ((coc == CALLING)
- ? "reverse charging requested"
- : "reverse charging allowed"));
- break;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid reverse_charge: %d",
- f.reverse_charge));
- break;
- }
-
- switch (f.recvpktsize) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ("default recv packet size"));
- break;
-
- case 16:
- case 32:
- case 64:
- case 128:
- case 256:
- case 512:
- case 1024:
- DLOG (compat_log, LLOG_DEBUG, ("recv packet size %d",
- f.recvpktsize));
- break;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid recv packet size %d",
- f.recvpktsize));
- break;
- }
-
- switch (f.sendpktsize) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ("default send packet size"));
- break;
-
- case 16:
- case 32:
- case 64:
- case 128:
- case 256:
- case 512:
- case 1024:
- DLOG (compat_log, LLOG_DEBUG, ("send packet size %d",
- f.sendpktsize));
- break;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid send packet size %d",
- f.sendpktsize));
- break;
- }
-
- DLOG (compat_log, LLOG_DEBUG,
- (f.recvwndsize == 0 ? "default recv window size"
- : 1 <= f.recvwndsize && f.recvwndsize <= 127
- ? "recv window size %d"
- : "invalid recv window size %d",
- f.recvwndsize));
-
- DLOG (compat_log, LLOG_DEBUG,
- (f.sendwndsize == 0 ? "default send window size"
- : 1 <= f.sendwndsize && f.sendwndsize <= 127
- ? "send window size %d"
- : "invalid send window size %d",
- f.sendwndsize));
-
- switch (f.recvthruput) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ("default recv throughput"));
- break;
-
- case 3:
- baud = 75;
-print_recv: ;
- DLOG (compat_log, LLOG_DEBUG, ("recv throughput %dbps", baud));
- break;
-
- case 4:
- baud = 150;
- goto print_recv;
-
- case 5:
- baud = 300;
- goto print_recv;
-
- case 6:
- baud = 600;
- goto print_recv;
-
- case 7:
- baud = 1200;
- goto print_recv;
-
- case 8:
- baud = 2400;
- goto print_recv;
-
- case 9:
- baud = 4800;
- goto print_recv;
-
- case 10:
- baud = 9600;
- goto print_recv;
-
- case 11:
- baud = 19200;
- goto print_recv;
-
- case 12:
- baud = 48000;
- goto print_recv;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid recv throughput %d",
- f.recvthruput));
- break;
- }
-
- switch (f.sendthruput) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ("default send throughput"));
- break;
-
- case 3:
- baud = 75;
-print_send: ;
- DLOG (compat_log, LLOG_DEBUG, ("send throughput %dbps", baud));
- break;
-
- case 4:
- baud = 150;
- goto print_send;
-
- case 5:
- baud = 300;
- goto print_send;
-
- case 6:
- baud = 600;
- goto print_send;
-
- case 7:
- baud = 1200;
- goto print_send;
-
- case 8:
- baud = 2400;
- goto print_send;
-
- case 9:
- baud = 4800;
- goto print_send;
-
- case 10:
- baud = 9600;
- goto print_send;
-
- case 11:
- baud = 19200;
- goto print_send;
-
- case 12:
- baud = 48000;
- goto print_send;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid send throughput %d",
- f.sendthruput));
- break;
- }
-
- switch (f.cug_req) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ("no closed user group"));
- break;
-
- case 1:
- DLOG (compat_log, LLOG_DEBUG, ("closed user group 0x%x (BCD)",
- f.cug_req));
- break;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid closed user group %d",
- f.cug_req));
- break;
- }
-
- switch (f.fast_select_type) {
- case FAST_OFF:
- DLOG (compat_log, LLOG_DEBUG, ("don't use fast select"));
- break;
-
- case FAST_CLR_ONLY:
- DLOG (compat_log, LLOG_DEBUG, ("clear is fast select response"));
- break;
-
- case FAST_ACPT_CLR:
- DLOG (compat_log, LLOG_DEBUG,
- ("clear or call accepted is fast select response"));
- break;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid fast select type %d",
- f.fast_select_type));
- break;
- }
-
- switch (f.rpoa_req) {
- case 0:
- DLOG (compat_log, LLOG_DEBUG, ("no RPOA transit request"));
- break;
-
- case 1:
- DLOG (compat_log, LLOG_DEBUG, ("RPOA transit request 0x%x",
- f.rpoa_req));
- break;
-
- default:
- DLOG (compat_log, LLOG_DEBUG, ("invalid RPOA transit request %d",
- f.rpoa_req));
- }
-}
-#endif
-#endif
-#else
-int _sunlink_stub () {}
-#endif
diff --git a/src/isode/compat/taddr2str.c b/src/isode/compat/taddr2str.c
deleted file mode 100644
index 9ae5572fba..0000000000
--- a/src/isode/compat/taddr2str.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* taddr2str.c - TSAPaddr to string value */
-
-/*
- * isode/compat/taddr2str.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-
-/* */
-
-char *taddr2str (ta)
-register struct TSAPaddr *ta;
-{
- struct PSAPaddr pas;
- register struct PSAPaddr *pa = &pas;
-
- if (!ta)
- return NULL;
- memset ((char *) pa, 0, sizeof *pa);
- pa -> pa_addr.sa_addr = *ta; /* struct copy */
-
- return paddr2str (pa, NULLNA);
-}
diff --git a/src/isode/compat/tailor.c b/src/isode/compat/tailor.c
deleted file mode 100644
index db9a4b8903..0000000000
--- a/src/isode/compat/tailor.c
+++ /dev/null
@@ -1,939 +0,0 @@
-/* tailor.c - ISODE tailoring */
-
-/*
- * isode/compat/tailor.c
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <ctype.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "isoaddrs.h"
-#include "tailor.h"
-#include "internet.h"
-
-static int events_value ();
-
-#define SUBNET_MAX (6 + 10) /* maximum number of subnet entries */
-
-/* DATA */
-
-struct pair {
- char *p_name;
- int p_value;
-};
-
-
-static char *isotailor = "isotailor";
-
-
-char *isodename = "";
-
-char *isodebinpath = BINPATH;
-char *isodesbinpath = SBINPATH;
-char *isodetcpath = ETCPATH;
-char *isodelogpath = LOGPATH;
-
-
-static struct pair ll_pairs[] = {
- "none", LLOG_NONE,
- "fatal", LLOG_FATAL,
- "exceptions", LLOG_EXCEPTIONS,
- "notice", LLOG_NOTICE,
- "pdus", LLOG_PDUS,
- "trace", LLOG_TRACE,
- "debug", LLOG_DEBUG,
- "all", LLOG_ALL,
-
- NULL
-};
-
-static char *compatdebug = "none";
-LLog _compat_log = {
- "%d.log", NULLCP, "compat", LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *compat_log = &_compat_log;
-
-static char *addrdebug = "none";
-LLog _addr_log = {
- "%d.log", "addr", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *addr_log = &_addr_log;
-
-static char *tsapdebug = "none";
-LLog _tsap_log = {
- "%d.tpkt", "tsap", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *tsap_log = &_tsap_log;
-
-static char *ssapdebug = "none";
-LLog _ssap_log = {
- "%d.spkt", "ssap", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *ssap_log = &_ssap_log;
-
-static char *psapdebug = "none";
-LLog _psap_log = {
- "%d.pe", NULLCP, "psap", LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *psap_log = &_psap_log;
-
-static char *psap2debug = "none";
-LLog _psap2_log = {
- "%d.ppkt", "psap2", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *psap2_log = &_psap2_log;
-
-static char *acsapdebug = "none";
-LLog _acsap_log = {
- "%d.acpkt", "acsap", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *acsap_log = &_acsap_log;
-
-static char *rtsapdebug = "none";
-LLog _rtsap_log = {
- "%d.rtpkt", "rtsap", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *rtsap_log = &_rtsap_log;
-
-static char *rosapdebug = "none";
-LLog _rosap_log = {
- "%d.ropkt", "rosap", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *rosap_log = &_rosap_log;
-
-
-#define TS_MASK "\020\01TCP\02X25\03BRG\04TP4\05X2584"
-
-static struct pair ts_pairs[] = {
- "tcp", TS_TCP,
- "x25", TS_X25,
- "x25-84", TS_X2584,
- "bridge", TS_BRG,
- "tp4", TS_TP4,
- "all", TS_ALL,
-
- NULL
-};
-
-static char *_ts_stacks = "all";
-int ts_stacks = TS_ALL;
-
-static char *_ts_interim = "";
-struct ts_interim ts_interim[SUBNET_MAX + 1] = {
- "realNS", NULL, SUBNET_REALNS, NA_NSAP, "", 0,
- "Int-X25", NULL, SUBNET_INT_X25, NA_X25, "", 0,
- "Internet", NULL, SUBNET_INTERNET, NA_TCP, "", 0,
- "Janet", NULL, SUBNET_DYNAMIC - 1, NA_X25, "", 0,
- "localTCP", NULL, SUBNET_DYNAMIC - 2, NA_TCP, "", 0,
- "IXI", NULL, SUBNET_DYNAMIC - 3, NA_X25, "", 0,
-
- NULL
-};
-
-static char *_ts_communities = "all";
-int ts_communities[SUBNET_MAX + 1];
-
-static char *_ts_comm_nsap_default = "realNS";
-int ts_comm_nsap_default = SUBNET_REALNS;
-
-static char *_ts_comm_x25_default = "Int-X25";
-int ts_comm_x25_default = SUBNET_INT_X25;
-
-static char *_ts_comm_tcp_default = "Internet";
-int ts_comm_tcp_default = SUBNET_INTERNET;
-
-int tsb_communities[SUBNET_MAX + 1];
-char *tsb_addresses[SUBNET_MAX + 1];
-static char *_tsb_config = "";
-char *tsb_default_address = "undefined";
-
-
-#ifdef X25
-char *x25_local_dte = "";
-char *x25_local_pid = "";
-
-static char *x25_intl_zero_str = "off";
-char x25_intl_zero = 0;
-
-static char *x25_strip_dnic_str = "off";
-char x25_strip_dnic = 0;
-
-char *x25_dnic_prefix = "";
-
- /* 0 = don't request/allow reverse charging
- * 1 = reverse charge request/allowed
- */
-static char *reverse_charge_default = "0";
-u_char reverse_charge = 0;
-
- /* 0= default recv packet size.
- * 16, 32, 64, 128,
- * 256, 512, 1024
- * ( octets in decimal )
- */
-static char *recvpktsize_default = "0";
-u_short recvpktsize = 0;
-
- /* same as above, but for send packet size */
-static char *sendpktsize_default = "0";
-u_short sendpktsize = 0;
-
- /* 0= default recv window size.
- * 7, 127 ( in decimal )
- */
-static char *recvwndsize_default = "0";
-u_char recvwndsize = 0;
-
- /* same as above, but for send window size */
-static char *sendwndsize_default = "0";
-u_char sendwndsize = 0;
-
- /* 0= default recv throughtput.
- * 3= 75 8= 2400
- * 4= 150 9= 4800
- * 5= 300 10= 9600
- * 6= 600 11= 19200
- * 7= 1200 12= 48000
- * ( bps in decimal )
- */
-static char *recvthruput_default = "0";
-u_char recvthruput = 0;
-
- /* same as above, but for send throughput */
- /* 1 = use closed user group in cug_index */
-static char *sendthruput_default = "0";
-u_char sendthruput = 0;
-
- /* 0 = no closed user group. */
- /* 1 = use closed user group in cug_index */
-static char *cug_req_default = "0";
-u_char cug_req = 0;
-
- /* valid when cug_req= 1.
- * 0x00 ~ 0x99 ( closed user group in BCD)
- */
-static char *cug_index_default = "0";
-u_char cug_index = 0;
-
- /* 0= don't use fast select
- * 1= clear is fast select response
- * 2= clear or call accepted
- * is fast select response
- */
-static char *fast_select_type_default = "0";
-u_char fast_select_type = 0;
-
- /* 0= no RPOA transit request
- * 1= use RPOA transit request in rpoa
- */
-static char *rpoa_req_default = "0";
-u_char rpoa_req = 0;
-
- /* valid when rpoa_req= 1 */
- /* 0x0000 ~ 0x9999 (RPOA transit group in BCD) */
-static char *rpoa_default = "0";
-u_short rpoa = 0;
-
-static char *x25debug = "none";
-static LLog _x25_log = {
- "x25log", "x25", NULLCP, LLOG_NONE, LLOG_NONE, -1,
- LLOGCLS | LLOGCRT | LLOGZER, NOTOK
-};
-LLog *x25_log = &_x25_log;
-
-#ifdef CAMTEC_CCL
-static char *x25_outgoing_port_str = "A";
-char x25_outgoing_port = 'A';
-#endif
-#endif
-
-
-#ifdef BRIDGE_X25
-char *x25_bridge_host = "x25bridge";
-char *x25_bridge_addr = "000021000018";
-char *x25_bridge_listen = "";
-char *x25_bridge_pid = "";
-char *x25_bridge_discrim = "0000";
-#endif
-
-#ifdef ULTRIX_X25
-char *x25_default_filter = "Isode";
-char *x25_default_template = "Default";
-char *x25_default_class = "dte-0";
-#endif
-
-#if defined (BRIDGE_X25) || defined (X25)
-static char *x25_bridge_port_default = "146";
-u_short x25_bridge_port = 0;
-#endif
-
-
-static char *_ses_ab_timer = "30"; /* drain for 30 seconds on ABORTs */
-int ses_ab_timer = 30;
-
-static char *_ses_dn_timer = "30"; /* drain for 30 seconds on DISCONNECTs */
-int ses_dn_timer = 30;
-
-static char *_ses_rf_timer = "30"; /* drain for 30 seconds on REFUSEs */
-int ses_rf_timer = 30;
-
-
-char ns_enabled = 0;
-static char *usens = "off";
-
-char *ns_address = "undefined";
-
-/* */
-
-static struct bind {
- char *b_key;
-
- char **b_value;
- int b_dynamic;
-} binds[] = {
- "localname", &isodename, 0,
- "binpath", &isodebinpath, 0,
- "sbinpath", &isodesbinpath, 0,
- "etcpath", &isodetcpath, 0,
- "logpath", &isodelogpath, 0,
-
- "compatlevel", &compatdebug, 0,
- "compatfile", &_compat_log.ll_file, 0,
-
- "addrlevel", &addrdebug, 0,
- "addrfile", &_addr_log.ll_file, 0,
-
- "tsaplevel", &tsapdebug, 0,
- "tsapfile", &_tsap_log.ll_file, 0,
-
- "ssaplevel", &ssapdebug, 0,
- "ssapfile", &_ssap_log.ll_file, 0,
-
- "psaplevel", &psapdebug, 0,
- "psapfile", &_psap_log.ll_file, 0,
-
- "psap2level", &psap2debug, 0,
- "psap2file", &_psap2_log.ll_file, 0,
-
- "acsaplevel", &acsapdebug, 0,
- "acsapfile", &_acsap_log.ll_file, 0,
-
- "rtsaplevel", &rtsapdebug, 0,
- "rtsapfile", &_rtsap_log.ll_file, 0,
-
- "rosaplevel", &rosapdebug, 0,
- "rosapfile", &_rosap_log.ll_file, 0,
-
- "ts_stacks", &_ts_stacks, 0,
- "ts_interim", &_ts_interim, 0,
- "ts_communities", &_ts_communities, 0,
-
- "default_nsap_community", &_ts_comm_nsap_default, 0,
- "default_x25_community", &_ts_comm_x25_default, 0,
- "default_tcp_community", &_ts_comm_tcp_default, 0,
-
- "tsb_communities", &_tsb_config, 0,
- "tsb_default_address", &tsb_default_address, 0,
-
-#ifdef X25
- "x25_local_dte", &x25_local_dte, 0,
- "x25_local_pid", &x25_local_pid, 0,
- "x25_dnic_prefix", &x25_dnic_prefix, 0,
- "x25_intl_zero", &x25_intl_zero_str, 0,
- "x25_strip_dnic", &x25_strip_dnic_str, 0,
-
- "reverse_charge", &reverse_charge_default, 0,
- "recvpktsize", &recvpktsize_default, 0,
- "sendpktsize", &sendpktsize_default, 0,
- "recvwndsize", &recvwndsize_default, 0,
- "sendwndsize", &sendwndsize_default, 0,
- "recvthruput", &recvthruput_default, 0,
- "sendthruput", &sendthruput_default, 0,
- "cug_req", &cug_req_default, 0,
- "cug_index", &cug_index_default, 0,
- "fast_select_type", &fast_select_type_default, 0,
- "rpoa_req", &rpoa_req_default, 0,
- "rpoa", &rpoa_default, 0,
-
- "x25level", &x25debug, 0,
- "x25file", &_x25_log.ll_file, 0,
-
-#ifdef CAMTEC_CCL
- "x25_outgoing_port", &x25_outgoing_port_str, 0,
-#endif
-
-#ifdef ULTRIX_X25
- "x25_default_filter", &x25_default_filter ,0,
- "x25_default_template", &x25_default_template ,0,
- "x25_default_class", &x25_default_class ,0,
-#endif
-
-#endif
-
-#ifdef BRIDGE_X25
- "x25_bridge_host", &x25_bridge_host, 0,
- "x25_bridge_addr", &x25_bridge_addr, 0,
- "x25_bridge_listen", &x25_bridge_listen, 0,
- "x25_bridge_pid", &x25_bridge_pid, 0,
- "x25_bridge_discrim", &x25_bridge_discrim, 0,
-#endif
-
-
-#if defined (BRIDGE_X25) || defined (X25)
- "x25_bridge_port", &x25_bridge_port_default,0,
-#endif
-
- "ses_abort_timer", &_ses_ab_timer, 0,
- "ses_disconnect_timer", &_ses_dn_timer, 0,
- "ses_refuse_timer", &_ses_rf_timer, 0,
-
- "ns_enable", &usens, 0,
- "ns_address", &ns_address, 0,
-
- NULL
-};
-
-
-int tailor_read ();
-char *tailor_value ();
-
-/* */
-
-char *isodesetailor (file)
-char *file;
-{
- char *ofile = isotailor;
-
- if ((isotailor = file) == NULLCP)
- isotailor = "isotailor";
-
- return ofile;
-}
-
-/* */
-
-void isodetailor (myname, wantuser)
-char *myname;
-int wantuser;
-{
- register char *hp,
- *mp;
- char buffer[BUFSIZ];
- static int inited = 0;
-
- if (inited)
- return;
- inited = 1;
-
- tsb_addresses[0] = NULL;
-
- tailor_read (isodefile (isotailor, 0));
-
- if (wantuser) {
- if ((hp = getenv ("HOME")) == NULL)
- hp = ".";
- if (myname) {
- if (mp = rindex (myname, '/'))
- mp++;
- if (mp == NULL || *mp == NULL)
- mp = myname;
- }
- else
- mp = "isode";
- (void) sprintf (buffer, "%s/.%s_tailor", hp, mp);
- tailor_read (buffer);
- }
-
- isodexport (myname);
-}
-
-/* */
-
-static int tailor_read (file)
-char *file;
-{
- register char *bp,
- *cp;
- char buffer[BUFSIZ];
- register FILE *fp;
-
- if (fp = fopen (file, "r")) {
- while (fgets (buffer, sizeof buffer, fp)) {
- if ((cp = index (buffer, '\n')) == NULL) {
- (void) fprintf (stderr, "%s: line too long\n", file);
- break;
- }
- *cp = NULL;
- if (*buffer == '#' || *buffer == NULL)
- continue;
- if ((bp = index (buffer, ':')) == NULL) {
- (void) fprintf (stderr, "%s: invalid syntax in \"%s\"\n",
- file, buffer);
- break;
- }
- for (cp = bp - 1; cp >= buffer; cp--)
- if (isspace ((u_char) *cp))
- *cp = NULL;
- else
- break;
-
- *bp++ = NULL;
- while (isspace ((u_char) *bp))
- *bp++ = NULL;
-
- for (cp = bp + strlen (bp) - 1; cp >= bp; cp--)
- if (isspace ((u_char) *cp))
- *cp = NULL;
- else
- break;
-
- if ((cp = tailor_value (bp))
- && isodesetvar (buffer, cp, 1) == NOTOK)
- free (cp);
- }
-
- (void) fclose (fp);
- }
-}
-
-/* */
-
-int isodesetvar (name, value, dynamic)
-char *name,
- *value;
-int dynamic;
-{
- register struct bind *b;
-
- for (b = binds; b -> b_key; b++)
- if (strcmp (b -> b_key, name) == 0) {
- if (b -> b_dynamic && *b -> b_value)
- free (*b -> b_value);
- *b -> b_value = value, b -> b_dynamic = dynamic;
- return OK;
- }
-
- return NOTOK;
-}
-
-/* */
-
-void isodexport (myname)
-char *myname;
-{
- compat_log -> ll_events = events_value (ll_pairs, compatdebug, "compatlevel");
- addr_log -> ll_events = events_value (ll_pairs, addrdebug, "addrlevel");
- tsap_log -> ll_events = events_value (ll_pairs, tsapdebug, "tsaplevel");
- ssap_log -> ll_events = events_value (ll_pairs, ssapdebug, "ssaplevel");
- psap_log -> ll_events = events_value (ll_pairs, psapdebug, "psaplevel");
- psap2_log -> ll_events = events_value (ll_pairs, psap2debug, "psap2level");
- acsap_log -> ll_events = events_value (ll_pairs, acsapdebug, "acsaplevel");
- rtsap_log -> ll_events = events_value (ll_pairs, rtsapdebug, "rtsaplevel");
- rosap_log -> ll_events = events_value (ll_pairs, rosapdebug, "rosaplevel");
-#ifdef X25
- x25_log -> ll_events = events_value (ll_pairs, x25debug, "x25level");
-#endif
-
- ll_hdinit (compat_log, myname);
- ll_hdinit (addr_log, myname);
- ll_hdinit (tsap_log, myname);
- ll_hdinit (ssap_log, myname);
- ll_hdinit (psap_log, myname);
- ll_hdinit (psap2_log, myname);
- ll_hdinit (acsap_log, myname);
- ll_hdinit (rtsap_log, myname);
- ll_hdinit (rosap_log, myname);
-#ifdef X25
- ll_hdinit (x25_log, myname);
-#endif
-
- ts_stacks = events_value (ts_pairs, _ts_stacks, "ts_stacks");
-#ifndef TCP
- ts_stacks &= ~TS_TCP;
-#endif
-#ifndef X25
- ts_stacks &= ~(TS_X25|TS_X2584);
-#endif
-#ifndef BRIDGE_X25
- ts_stacks &= ~TS_BRG;
-#endif
-#ifndef TP4
- ts_stacks &= ~TS_TP4;
-#endif
-
- {
- register int *ip,
- *jp,
- *kp;
- int j;
- register char *cp,
- *adrp,
- **ap,
- **cpp;
- register struct ts_interim *ts;
- static struct ts_interim *te = NULL;
- char buffer[BUFSIZ],
- *vec[NVEC + NSLACK + 1];
-
- if (te)
- te -> ts_name = NULL;
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (macro2comm (ts -> ts_name, ts) == NOTOK)
- (void) fprintf (stderr, "internal error for community \"%s\"\n",
- ts -> ts_name);
- if (te == NULL)
- te = ts;
-
- (void) strcpy (buffer, _ts_interim);
- (void) str2vec (buffer, ap = vec);
- j = SUBNET_DYNAMIC;
- while (cp = *ap++) {
- register struct ts_interim *tp;
-
- ts -> ts_subnet = 0;
- if (macro2comm (cp, ts) == NOTOK) {
- (void) fprintf (stderr, "invalid community name \"%s\"\n", cp);
- break;
- }
- for (tp = ts_interim; tp < ts; tp++)
- if (tp -> ts_length == ts -> ts_length
- && memcmp (tp -> ts_prefix, ts -> ts_prefix,
- tp -> ts_length) == 0) {
- (void) fprintf (stderr,
- "duplicate prefixes for communities \"%s\" and \"%s\"\n",
- tp -> ts_name, cp);
- break;
- }
- if (tp < ts)
- continue;
-
- ts -> ts_name = strdup (cp);
- if (ts -> ts_subnet == 0)
- ts -> ts_subnet = j++;
- ts++;
- }
- ts -> ts_name = NULL;
-
- (void) strcpy (buffer, _ts_communities);
- (void) str2vec (buffer, ap = vec);
- ip = ts_communities;
- while (cp = *ap++) {
- if (strcmp (cp, "all") == 0) {
- for (ts = ts_interim; ts -> ts_name; ts++) {
- for (jp = ts_communities; jp < ip; jp++)
- if (*jp == ts -> ts_subnet)
- break;
- if (jp >= ip)
- *ip++ = ts -> ts_subnet;
- }
- break;
- }
-
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (lexequ (ts -> ts_name, cp) == 0)
- break;
- if (!ts -> ts_name) {
- (void) fprintf (stderr,
- "unknown community name \"%s\" for variable ts_communities\n",
- cp);
- continue;
- }
-
- for (jp = ts_communities; jp < ip; jp++)
- if (*jp == ts -> ts_subnet)
- break;
- if (jp >= ip)
- *ip++ = ts -> ts_subnet;
- }
- *ip = NULL;
-
- for (ap = tsb_addresses; *ap; ap++)
- free (*ap);
- (void) strcpy (buffer, _tsb_config);
- (void) str2vec (buffer, ap = vec);
- ip = tsb_communities, cpp = tsb_addresses;
- while (cp = *ap++) {
- if ((adrp = *ap++) == NULLCP) {
- (void) fprintf (stderr,
- "missing address for tsb_community \"%s\"\n", cp);
- break;
- }
-
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (lexequ (ts -> ts_name, cp) == 0)
- break;
- if (!ts -> ts_name) {
- (void) fprintf (stderr,
- "unknown community name \"%s\" for variable tsb_communities\n",
- cp);
- continue;
- }
-
- for (jp = tsb_communities; jp < ip; jp++)
- if (*jp == ts -> ts_subnet)
- break;
- if (jp >= ip) {
- *ip++ = ts -> ts_subnet, *cpp++ = strdup (adrp);
-
- for (kp = ts_communities; *kp; kp++)
- if (*kp == ts -> ts_subnet)
- break;
- if (!*kp)
- *kp++ = ts -> ts_subnet, *kp = NULL;
- }
- }
- *ip = NULL, *cpp = NULLCP;
-
- cp = _ts_comm_nsap_default;
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (lexequ (ts -> ts_name, cp) == 0)
- break;
- if (ts -> ts_name && ts -> ts_syntax == NA_NSAP)
- ts_comm_nsap_default = ts -> ts_subnet;
- else
- (void) fprintf (stderr,
- "bad community name \"%s\" for variable default_nsap_community\n",
- cp);
-
- cp = _ts_comm_x25_default;
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (lexequ (ts -> ts_name, cp) == 0)
- break;
- if (ts -> ts_name && ts -> ts_syntax == NA_X25)
- ts_comm_x25_default = ts -> ts_subnet;
- else
- (void) fprintf (stderr,
- "bad community name \"%s\" for variable default_x25_community\n",
- cp);
-
- cp = _ts_comm_tcp_default;
- for (ts = ts_interim; ts -> ts_name; ts++)
- if (lexequ (ts -> ts_name, cp) == 0)
- break;
- if (ts -> ts_name && ts -> ts_syntax == NA_TCP)
- ts_comm_tcp_default = ts -> ts_subnet;
- else
- (void) fprintf (stderr,
- "bad community name \"%s\" for variable default_tcp_community\n",
- cp);
-
- if (addr_log -> ll_events & LLOG_DEBUG) {
- LLOG (addr_log, LLOG_DEBUG,
- ("ts_stacks: %s", sprintb (ts_stacks, TS_MASK)));
-
- for (ts = ts_interim; ts -> ts_name; ts++) {
- LLOG (addr_log, LLOG_DEBUG,
- ("community %s value \"%s\" subnet %d syntax %d",
- ts -> ts_name, ts -> ts_value ? ts -> ts_value : "",
- ts -> ts_subnet, ts -> ts_syntax));
- buffer[explode(buffer, (u_char *) ts -> ts_prefix,
- ts -> ts_length)] = NULL;
- LLOG (addr_log, LLOG_DEBUG,
- (" prefix \"%s\" (%d octets)", buffer,
- ts -> ts_length));
- }
-
- for (ip = ts_communities; *ip; ip++)
- LLOG (addr_log, LLOG_DEBUG, ("community %d enabled", *ip));
-
- LLOG (addr_log, LLOG_DEBUG,
- ("default communities: nsap=%d x25=%d tcp=%d",
- ts_comm_nsap_default, ts_comm_x25_default,
- ts_comm_tcp_default));
-
- for (ip = tsb_communities, cpp = tsb_addresses; *ip; ip++, cpp++) {
- LLOG (addr_log, LLOG_DEBUG,
- ("TSB for community %d residing at %s", *ip, *cpp));
- if (str2taddr (*cpp) == NULLTA)
- LLOG (addr_log, LLOG_EXCEPTIONS,
- ("invalid address for TSB to community %d: %s",
- *ip, *cpp));
- }
- }
- }
-
-#ifdef X25
- reverse_charge = (u_char) atoi (reverse_charge_default);
- recvpktsize = (u_short) atoi (recvpktsize_default);
- sendpktsize = (u_short) atoi (sendpktsize_default);
- recvwndsize = (u_char) atoi (recvwndsize_default);
- sendwndsize = (u_char) atoi (sendwndsize_default);
- recvthruput = (u_char) atoi (recvthruput_default);
- sendthruput = (u_char) atoi (sendthruput_default);
- cug_req = (u_char) atoi (cug_req_default);
- cug_index = (u_char) atoi (cug_index_default);
- fast_select_type = (u_char) atoi (fast_select_type_default);
- rpoa_req = atoi (rpoa_req_default);
- rpoa = (u_short) atoi (rpoa_default);
-
-#ifdef CAMTEC_CCL
- x25_outgoing_port = *x25_outgoing_port_str;
-#endif
-
- x25_intl_zero = !strcmp (x25_intl_zero_str, "on");
- x25_strip_dnic = !strcmp (x25_strip_dnic_str, "on");
-#endif
-
-#if defined (BRIDGE_X25) || defined (X25)
- x25_bridge_port = htons ((u_short) atoi (x25_bridge_port_default));
-#endif
-
- ns_enabled = !strcmp (usens, "on");
-}
-
-/* */
-
-#define QUOTE '\\'
-
-
-static char *tailor_value (s)
-register char *s;
-{
- register int i,
- r;
- register char *bp;
- char buffer[BUFSIZ];
-
- for (bp = buffer; *s; bp++, s++)
- if (*s != QUOTE)
- *bp = *s;
- else
- switch (*++s) {
- case '0':
- *bp = '\0';
- break;
- case 'b':
- *bp = '\b';
- break;
- case 'f':
- *bp = '\f';
- break;
- case 'n':
- *bp = '\n';
- break;
- case 'r':
- *bp = '\r';
- break;
- case 't':
- *bp = '\t';
- break;
-
- case 0: s--;
- case QUOTE:
- *bp = QUOTE;
- break;
-
- default:
- if (!isdigit ((u_char) *s)) {
- *bp++ = QUOTE;
- *bp = *s;
- break;
- }
- r = *s != '0' ? 10 : 8;
- for (i = 0; isdigit ((u_char) *s); s++)
- i = i * r + *s - '0';
- s--;
- *bp = toascii (i);
- break;
- }
- *bp = NULL;
-
- if ((bp = malloc ((unsigned) (strlen (buffer) + 1))) != NULL)
- (void) strcpy (bp, buffer);
-
- return bp;
-}
-
-/* */
-
-static int events_value (pairs, s, var)
-struct pair *pairs;
-char *s,
- *var;
-{
- int value;
- register char *cp,
- **ap;
- register struct pair *pp;
- char buffer[BUFSIZ],
- *vec[NVEC + NSLACK + 1];
-
- value = 0;
- (void) strcpy (buffer, s);
- (void) str2vec (buffer, ap = vec);
- while (cp = *ap++) {
- for (pp = pairs; pp -> p_name; pp++)
- if (strcmp (pp -> p_name, cp) == 0) {
- value |= pp -> p_value;
- break;
- }
- if (!pp -> p_name)
- (void) fprintf (stderr, "unknown value \"%s\" for variable %s\n",
- cp, var);
- }
-
- return value;
-}
-
-/* */
-
-#ifdef PEP_TEST
-tailorfree () {
- register struct bind *b;
-
- for (b = binds; b -> b_key; b++)
- if (b -> b_dynamic && *b -> b_value) {
- free (*b -> b_value);
- *b -> b_value = NULL;
- }
-
- ll_hdfree (compat_log);
- ll_hdfree (addr_log);
- ll_hdfree (tsap_log);
- ll_hdfree (ssap_log);
- ll_hdfree (psap_log);
- ll_hdfree (psap2_log);
- ll_hdfree (acsap_log);
- ll_hdfree (rtsap_log);
- ll_hdfree (rosap_log);
-#ifdef X25
- ll_hdfree (x25_log);
-#endif
-
- free_macros ();
- free_bp ();
- free_oid ();
-}
-
-
-ll_hdfree (lp)
-register LLog *lp;
-{
- if (lp -> ll_stat & LLOGHDR)
- free (lp -> ll_hdr);
- lp -> ll_stat &= ~LLOGHDR;
-}
-#endif
diff --git a/src/isode/compat/ubcx25.c b/src/isode/compat/ubcx25.c
deleted file mode 100644
index 8c248b552a..0000000000
--- a/src/isode/compat/ubcx25.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* ubcx25.c - X.25 abstractions for UBC X25 */
-
-/*
- * isode/compat/ubcx25.c
- * Contributed by Julian Onions, Nottingham University in the UK
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-#include "tpkt.h"
-
-/* 4.[23] UNIX: UBC X25 */
-
-#ifdef X25
-#ifdef UBC_X25
-
-#include "x25.h"
-#include <sys/uio.h>
-
-#define X25_MBIT 0x40
-#define X25_QBIT 0x80
-
-/* */
-
-int start_x25_client (local)
-struct NSAPaddr *local;
-{
- int sd, pgrp;
-
- if (local != NULLNA)
- local -> na_stack = NA_X25, local -> na_community = ts_comm_x25_default;
- if ((sd = socket (AF_CCITT, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK; /* Error can be found in errno */
- }
-
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("SIOCSPGRP"));
- return NOTOK; /* Error can be found in errno */
- }
-
- return sd;
-}
-
-/* */
-
-int start_x25_server (local, backlog, opt1, opt2)
-struct NSAPaddr *local;
-int backlog,
- opt1,
- opt2;
-{
- int sd, pgrp;
-#ifdef notyet
-#ifdef BSD43
- int onoff;
-#endif
-#endif
- CONN_DB zsck;
- CONN_DB *sck = &zsck;
-
- if ((sd = socket (AF_CCITT, SOCK_STREAM, 0)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("socket"));
- return NOTOK; /* Can't get an X.25 socket */
- }
-
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("SIOCSPGRP"));
- return NOTOK; /* Error can be found in errno */
- }
-
- if (local != NULLNA) {
- local -> na_stack = NA_X25, local -> na_community = ts_comm_x25_default;
- if (local -> na_dtelen == 0) {
- (void) strcpy (local -> na_dte, x25_local_dte);
- local -> na_dtelen = strlen(x25_local_dte);
- if (local -> na_pidlen == 0 && *x25_local_pid)
- local -> na_pidlen =
- str2sel (x25_local_pid, -1, local -> na_pid, NPSIZE);
- }
- }
-
- (void) gen2if (local, sck, ADDR_LISTEN);
- if (bind (sd, sck, sizeof(CONN_DB)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("bind"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
-
-
-#ifdef notyet /* not sure if these are supported... */
-#ifndef BSD43
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, NULLCP, 0);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, NULLCP, 0);
-#else
- onoff = 1;
- if (opt1)
- (void) setsockopt (sd, SOL_SOCKET, opt1, (char *)&onoff, sizeof onoff);
- if (opt2)
- (void) setsockopt (sd, SOL_SOCKET, opt2, (char *)&onoff, sizeof onoff);
-#endif
-#endif
-
- (void) listen (sd, backlog);
-
- return sd;
-}
-
-/* */
-
-int join_x25_client (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB sck;
- int len = sizeof sck;
- int nfd;
-
- if((nfd = accept (fd, (struct sockaddr *) &sck, &len)) == NOTOK)
- return NOTOK;
- (void) if2gen (remote, &sck, ADDR_REMOTE);
- return nfd;
-}
-
-int join_x25_server (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB zsck;
- CONN_DB *sck = &zsck;
-
- if (remote == NULLNA || remote -> na_stack != NA_X25)
- {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("Invalid type na%d", remote->na_stack));
- return NOTOK;
- }
- (void) gen2if (remote, sck, ADDR_REMOTE);
- return connect (fd, sck, sizeof (CONN_DB));
-}
-
-int read_x25_socket (fd, buffer, len)
-int fd, len;
-char *buffer;
-{
- static u_char mode;
- static struct iovec iov[2] = {
- (char *)&mode, 1,
- "", 0
- };
- char *p = buffer;
- int cc, count = 0, total = len;
-
- do {
- iov[1].iov_base = p;
- iov[1].iov_len = total > X25_PACKETSIZE ? X25_PACKETSIZE : total;
-
- switch (cc = readv (fd, iov, 2)) {
- /*
- * for the -1,0 & 1 cases these returns should be ok
- * if it's the first time through, then they are valid anyway
- * later stages means the M bit is set so there must
- * be more data else someone is violating the
- * protocol badly.
- */
-
- case NOTOK:
- case 0:
- return cc;
-
- case 1:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("strange return from read_x25_socket"));
- return NOTOK;
-
- default:
- cc --; /* discount the info byte */
- count += cc;
- p += cc;
- total -= cc;
- }
- } while (len > 0 && (mode & X25_MBIT));
- DLOG (compat_log, LLOG_DEBUG, ("X25 read, total %d/%d", count, len));
-
- return count;
-}
-
-#ifdef UBC_X25_WRITEV
-/* God this all very bizarre - iovecs work on read but not write!! */
-
-/*
- * OK, this is due to a bug in UBC implementation. It may or may not
- * be fixed in later versions. If writev allows you to write single
- * bytes in the first vector then use this version. It's much more
- * efficient.
- */
-
-int write_x25_socket (fd, buffer, len)
-int fd, len;
-char *buffer;
-{
- static u_char mode;
- static struct iovec iov[2] = {
- (char *)&mode, 1,
- "", 0
- };
- int cc;
- char *p = buffer;
- int count, total = 0;
-
- do {
- count = len > X25_PACKETSIZE ? X25_PACKETSIZE : len;
- mode = len > X25_PACKETSIZE ? X25_MBIT : 0;
- iov[1].iov_base = p;
- iov[1].iov_len = count;
- switch (cc = writev (fd, iov, 2))
- {
- case NOTOK:
- case 0:
- return cc;
-
- case 1:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("strange return from write_x25_socket"));
- return NOTOK;
-
- default:
- cc --;
- len -= cc;
- p += cc;
- total += cc;
- }
- } while (len > 0);
- DLOG (compat_log, LLOG_DEBUG, ("X25 write, total %d/%d", total, len));
- return total;
-}
-#else
-int write_x25_socket (fd, buffer, len)
-int fd, len;
-char *buffer;
-{
- char mybuffer[X25_PACKETSIZE+1];
- char *p = buffer;
- int count, total = 0;
- int cc;
-
- do {
- count = len > X25_PACKETSIZE ? X25_PACKETSIZE : len;
- mybuffer[0] = len > X25_PACKETSIZE ? X25_MBIT : 0;
- memcpy (&mybuffer[1], p, count);
- switch (cc = write (fd, mybuffer, count + 1))
- {
- case NOTOK:
- case 0:
- return cc;
-
- case 1:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("strange return from write_x25_socket"));
- return NOTOK;
-
- default:
- cc --;
- len -= cc;
- p += cc;
- total += cc;
- }
- } while (len > 0);
- DLOG (compat_log, LLOG_DEBUG, ("X25 write, total %d/%d", total, len));
- return total;
-}
-#endif
-
-#else /* UBC_X25 */
-int _ubcx25_stub2 () {}
-#endif /* UBC_X25 */
-#else /* X25 */
-int _ubcx25_stub () {}
-#endif /* X25 */
diff --git a/src/isode/compat/ultrix25.c b/src/isode/compat/ultrix25.c
deleted file mode 100644
index 0d5ed369e5..0000000000
--- a/src/isode/compat/ultrix25.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/* ultrix25.c - X.25 abstractions for Ultrix X25 */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-
-/*
- * isode/compat/ultrix25.c
- * Contributed by George Michaelson, University of Queensland in Australia
- *
- * -based on the ubcx25.c and sunlink.c modules
- * by Julian Onions and John Pavel respectively,
- *
- * Using the example code for the Ultrix X.25 interface
- * written by DEC NAC here in Australia
- */
-
-/* LINTLIBRARY */
-
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-#include "tailor.h"
-#include "tpkt.h"
-
-/* Ultrix: X25 */
-
-#ifdef X25
-#ifdef ULTRIX_X25
-
-#include "x25.h"
-
-/* are these needed george? */
-#define X25_MBIT 0x40
-#define X25_QBIT 0x80
-
-/*
- * from examples/socket_incoming.c et al
- */
-
-/*
- * these routines in the Ultrix X.25 library do encoding and decoding
- * of call params. They'll probably be unused, but if I get clever
- * enough It'd be nice to use them to build up non-standard facilities
- * and other X.25 call stuff.
- *
- * I think they're varargs. should this be ansi-ized at some point???
- */
-
-extern int X25Decode();
-extern int X25Encode();
-
-/*
- * Definitions for Call
- */
-
-#define CALLING 0
-#define CALLED 1
-
-#define BACKLOG 2
-#define MAXMESSAGESIZE 4096
-
-/*
- * global structs used during decoding and encoding of call params.
- * -these are probably way oversize.
- */
-
-static char enc_buf[1024];
-static int enc_buf_len;
-
-/* */
-
-int start_x25_client (local)
-struct NSAPaddr *local;
-{
- int sd, pgrp;
-
- if (local != NULLNA)
- local -> na_stack = NA_X25, local -> na_community = ts_comm_x25_default;
- if ((sd = socket (AF_X25, SOCK_SEQPACKET, X25_ACCESS)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 socket()"));
- return NOTOK; /* Error can be found in errno */
- }
-
- /*
- * somebody tell me sometime why setting the process group on
- * the socket is such a big deal. This is getting like alchemy
- * with myself doing this 'cos its in the other fellers code...
- *
- * camtec & ubc does it, sunlink doesn't.
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 ioctl(SIOCSPGRP)"));
- return NOTOK;
- }
- */
-
- return sd;
-}
-
-/* */
-
-int start_x25_server (local, backlog, opt1, opt2)
-struct NSAPaddr *local;
-int backlog,
- /*
- * in Ultrix X.25 socket functions like turn off/on packet
- * assembly and call acceptance are done with setsockopt.
- * it looks like other X.25 socket interfaces are using
- * "traditional" features like SO_KEEPALIVE, and this
- * is being passed down in the call from tsap/tsaplisten.c
- * but I really don't think it applies here.
- *
- * thus, the following two arguments are ignored in this
- * module.
- */
- opt1,
- opt2;
-{
- int sd, pgrp;
- CONN_DB zsck;
- CONN_DB *sck = &zsck;
- sockaddr_x25 addr;
-
- if ((sd = socket (AF_X25, SOCK_SEQPACKET, X25_ACCESS)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 socket()"));
- return NOTOK; /* Can't get an X.25 socket */
- }
-
- /*
- * somebody tell me sometime why setting the process group on
- * the socket is such a big deal. This is getting like alchemy
- * with myself doing this 'cos its in the other fellers code...
- *
- * camtec & ubc does it, sunlink doesn't.
- pgrp = getpid();
- if (ioctl(sd, SIOCSPGRP, &pgrp)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 ioctl(SIOCSPGRP)"));
- return NOTOK;
- }
- */
-
- if (local != NULLNA) {
- local -> na_stack = NA_X25, local -> na_community = ts_comm_x25_default;
- if (local -> na_dtelen == 0) {
- (void) strcpy (local -> na_dte, x25_local_dte);
- local -> na_dtelen = strlen(x25_local_dte);
- if (local -> na_pidlen == 0 && *x25_local_pid)
- local -> na_pidlen =
- str2sel (x25_local_pid, -1, local -> na_pid, NPSIZE);
- }
- }
-
- (void) gen2if (local, sck, ADDR_LISTEN);
- /*
- * now munge this into DEC format.
- */
- addr.sx25_family = AF_X25;
- addr.sx25_flags = 0;
- addr.sx25_namelen = strlen(x25_default_filter);
- strcpy(addr.sx25_name, x25_default_filter);
-
- if (bind (sd, &addr, sizeof(addr)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 bind()"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
- if (listen (sd, backlog) < 0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 listen()"));
- (void) close_x25_socket (sd);
- return NOTOK;
- }
- return sd;
-}
-
-/* */
-
-int join_x25_client (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB zsck;
- CONN_DB *sck = &zsck;
- sockaddr_x25 filter;
- int len = sizeof filter;
- int stat;
- int nfd;
-
- if((nfd = accept (fd, &filter, &len)) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 accept()"));
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_call_status(fd); /* decode useful information */
- return NOTOK;
- }
- /*
- * as well as doing a socket level accept, have to accept responsibilty
- * for the X.25 incoming request as well...
- */
- enc_buf_len = sizeof(enc_buf);
- if ((stat = getsockopt(nfd,X25_ACCESS,XSO_TAKECALL,enc_buf,&enc_buf_len) < 0 ) ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Taking inbound X.25 Call"));
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_call_status(fd); /* decode useful information */
- return NOTOK;
- }
-#ifdef DEBUG
- if (compat_log -> ll_events & LLOG_DEBUG)
- (void) print_x25_facilities(fd, CALLED, "Effective Called");
-#endif
- /*
- * snarf the incoming call details. could permit some local
- * sanityclaus checks on the X.25 guff but what the hell...
- */
-
- sck->na_dtelen = sizeof(sck->na_dte);
- if ((stat = X25Decode(enc_buf, enc_buf_len, X25I_CALLINGDTE, sck->na_dte, &(sck->na_dtelen) ) ) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Getting remote DTE"));
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_call_status(fd); /* decode useful information */
- return NOTOK;
- }
-
- sck->na_cudflen = sizeof(sck->na_cudf);
- if ((stat = X25Decode(enc_buf, enc_buf_len, X25I_USERDATA, sck->na_cudf, &(sck->na_cudflen) ) ) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Getting remote CUDF"));
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_call_status(fd); /* decode useful information */
- return NOTOK;
- }
-
- (void) if2gen (remote, sck, ADDR_REMOTE);
-
- /*
- * now send the poor bozo the X.25 acceptance (at last!)
- */
- if (setsockopt(nfd,X25_ACCESS,XSO_ACCEPTCALL,(caddr_t)0, 0) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Sending Ultrix X.25 Connect Accept"));
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_call_status(fd); /* decode useful information */
- return NOTOK;
- }
- return nfd;
-}
-
-int join_x25_server (fd, remote)
-int fd;
-struct NSAPaddr *remote;
-{
- CONN_DB zsck;
- CONN_DB *sck = &zsck;
- sockaddr_x25 template;
-
- register int nfd;
-
- if (remote == NULLNA || remote -> na_stack != NA_X25)
- {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Invalid type na%d", remote->na_stack));
- return NOTOK;
- }
- (void) gen2if (remote, sck, ADDR_REMOTE);
- /*
- * now we have to re-map the generic forms of the DTE/CUDF/facil
- * into DECspeak using the X25Encode() call.
- */
- if ((enc_buf_len = X25Encode (enc_buf, 1024, X25I_NULL)) <0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Initializing Ultrix X.25 Call Template"));
- return NOTOK;
- }
- if ((enc_buf_len = X25Encode (enc_buf, 1024,
- X25I_DTECLASS,
- strlen(x25_default_class), x25_default_class,
- X25I_CALLEDDTE,
- sck->na_dtelen, sck->na_dte,
- X25I_USERDATA,
- sck->na_cudflen, sck->na_cudf,
- X25I_NULL)) < 0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Encoding Ultrix X.25 Call Template"));
- return NOTOK;
- }
- if (setsockopt(fd,X25_ACCESS,XSO_SETCONN,enc_buf,enc_buf_len) <0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Overriding Ultrix X.25 Template Values"));
- return NOTOK;
- }
- template.sx25_family = AF_X25;
- template.sx25_flags = 0;
- template.sx25_namelen = strlen(x25_default_template);
- strcpy(template.sx25_name, x25_default_template);
-
- /*
- * poached from sunlink.c
- */
- if ((nfd = connect (fd, &template, sizeof (template))) == NOTOK) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed", ("x25 connect()"));
- if (compat_log -> ll_events & LLOG_EXCEPTIONS)
- (void) log_call_status(fd); /* decode useful information */
- return NOTOK;
- }
-#ifdef DEBUG
- else
- if (compat_log -> ll_events & LLOG_DEBUG)
- (void) log_x25_facilities(fd, CALLING, "Effective Calling");
-#endif
- remote = if2gen (remote, sck, ADDR_REMOTE);
- return nfd;
-}
-
-close_x25_socket(fd)
-int fd;
-{
- struct X25ClearData cbuf;
- struct X25ClearData *cdata = &cbuf;
- int cbl = sizeof(cbuf);
- int stat;
-
- cdata->clearCause = 0; /* DTE originated */
- cdata->clearDiagnostic = 0; /* no additional information */
- cdata->clearDetailsLength = 0; /* no Clear Details information */
-
- if ((stat = setsockopt(fd, X25_ACCESS, XSO_CLEARCALL, cdata, cbl)) < 0) {
- if (errno != EACCES)
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("x25 setsockopt(XSO_CLEARCALL)"));
- }
-
- log_call_status(fd);
- close(fd);
-}
-
-log_call_status(fd)
-int fd;
-{
- struct X25PortStatus sbuf;
- struct X25PortStatus *stats = &sbuf;
- int sbl = sizeof(sbuf);
- int stat;
-
- /*
- * get X25PortStatus information
- */
- if ((stat = getsockopt(fd,X25_ACCESS,XSO_SHOWSTATUS,stats,&sbl) < 0)) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("x25 getsockopt(XSO_SHOWSTATUS)"));
- return;
- }
- switch (stats->portState) {
- case X25S_OPEN:
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_OPEN: No connection is in Progress."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_CLEARED:
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_CLEARED: The connection has been cleared."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_RUNNING:
-#ifdef DEBUG
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_RUNNING: The connection is still open."));
- log_call_clear(fd, 0);
-#endif DEBUG
- break;
-
- case X25S_CALLING: /* Connection in progress */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_CALLING: Connection in progress."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_CALLED: /* Call received and taken */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_CALLED: Call received and taken."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_SYNC: /* Unconfirmed user reset */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_SYNC: Unconfirmed user reset."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_UNSYNC: /* Unconfirmed reset indic */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_UNSYNC: Unconfirmed reset indication."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_CLEARING: /* User requested clearing */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_CLEARING: User requested clearing."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_NOCOMM: /* No communication with net */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_NOCOMM: No communication with net."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_CLEARBYDIR: /* Cleared by directive */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_CLEARBYDIR: Cleared by directive."));
- log_call_clear(fd, 0);
- break;
-
- case X25S_INCALL: /* Untaken incoming call */
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("X25S_INCALL: Untaken incoming call."));
- log_call_clear(fd, 0);
- break;
-
- default:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("unknown return from getsockopt(XSO_SHOWSTATUS)= %d [see /usr/include/netx25/x25.h]", stats->portState));
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("restricted = %d", stats->restrictedInterface));
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("Int Msg Size = %d", stats->interruptMessageSize));
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("Data Msg Size in = %d", stats->dataMessageSizeIn));
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("Data Msg Size out = %d", stats->dataMessageSizeOut));
- SLOG (compat_log, LLOG_DEBUG, NULLCP,
- ("Error BitMap = %2x", stats->errorBitMap));
- }
- return;
-}
-
-log_call_clear(fd, type)
-int fd;
-int type;
-{
- struct X25ClearData cbuf;
- struct X25ClearData *cdata = &cbuf;
- int cbl = sizeof(cbuf);
- int stat;
- int flags;
- unsigned char buf[2];
- extern void elucidate_x25_err();
- char dbuf[128];
- int dlen = sizeof(dbuf);
-
- /*
- * get X25ClearData information
- */
- if ((stat = getsockopt(fd,X25_ACCESS,XSO_CLEARDATA,cdata,&cbl) < 0) &&
- errno != ENOMSG) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("x25 getsockopt(XSO_CLEARDATA)"));
- return;
- }
- if (errno == ENOMSG)
- return;
- /*
- * set up argbuf to call elucidate_x25_err()
- */
- flags = 0;
- flags = 1 << RECV_DIAG; /* we have diagnostics */
- if (type == 0) /* diag type (clear/reset) */
- flags |= 1 << DIAG_TYPE; /* we have call clear diagnostics */
- buf[0] = cdata->clearCause;
- buf[1] = cdata->clearDiagnostic;
- elucidate_x25_err(flags, buf);
-
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("[Clear origin was %s]",
- cdata->clearOrigin == X25R_ORIGINREMOTE ? "remote" :
- cdata->clearOrigin == X25R_ORIGINLOCAL ? "local" :
- "unknown" ));
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("and %d bytes of info", cdata->clearDetailsLength));
-
- dlen = sizeof(dbuf);
- if ((stat = X25Decode(cdata->clearDetails,
- cdata->clearDetailsLength,
- X25I_CHARGEMON,
- dbuf, &dlen) ) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("X25Decode(X25I_CHARGEMON)"));
- return;
- }
- if (stat > 0)
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("%*s Money Units", stat, dlen, dlen, dbuf));
- dlen = sizeof(dbuf);
- if ((stat = X25Decode(cdata->clearDetails,
- cdata->clearDetailsLength,
- X25I_CHARGESEG,
- dbuf, &dlen) ) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("X25Decode(X25I_CHARGESEG)"));
- return;
- }
- if (stat > 0)
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("%*s Segments", dlen, dbuf));
- dlen = sizeof(dbuf);
- if ((stat = X25Decode(cdata->clearDetails,
- cdata->clearDetailsLength,
- X25I_CHARGETIME,
- dbuf, &dlen) ) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("X25Decode(X25I_CHARGETIME)"));
- return;
- }
- if (stat > 0)
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("%*s Time Units", dlen, dbuf));
- dlen = sizeof(dbuf);
- if ((stat = X25Decode(cdata->clearDetails,
- cdata->clearDetailsLength,
- X25I_USERDATA,
- dbuf, &dlen) ) <0 ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("X25Decode(X25I_USERDATA)"));
- return;
- }
- if (stat > 0)
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("%d Bytes User Data", dlen));
- return;
-}
-
-
-#ifdef DEBUG
-
-static int log_x25_facilities (fd, coc, caption)
-int fd;
-int coc;
-char *caption;
-{
- int stat;
-
- enc_buf_len = sizeof(enc_buf);
- if (coc == CALLING) {
- if ((stat = getsockopt(fd,
- X25_ACCESS,
- XSO_ACCEPTDETAILS,
- enc_buf,&enc_buf_len) < 0 ) ) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("getsockopt(XSO_ACCEPTDETAILS)"));
- return NOTOK;
- }
- }
-
- print_x25_facilities (fd, coc, caption);
-
- return OK;
-}
-
-/* */
-
-void *
-epl_prtstr (fmt, val, vallen)
-char *fmt;
-char *val;
-int vallen;
-{
- static char abuf[128];
- static char tbuf[128];
- char *c, *d;
-
- abuf[0] = 0;
- if (vallen > 0) {
- for (c = val, d = abuf; vallen; c++, vallen--) {
- if (!isprint(*c)) {
- sprintf(d, " 0x%02x ", *c & 0xff);
- d += 6;
- } else {
- sprintf(d, "%c", *c);
- d++;
- }
- }
- *d = 0;
- }
- sprintf(tbuf, fmt, abuf);
- return tbuf;
-}
-
-void *
-epl_prtbool (fmt, val, vallen)
-char *fmt;
-short *val;
-int vallen;
-{
- static char *true = "true";
- static char *false = "false";
-
- if (*val == 0)
- return (true);
- else
- return (false);
-}
-
-void *
-epl_prtint (fmt, val, vallen)
-char *fmt;
-short *val;
-int vallen;
-{
- static char tbuf[128];
-
- sprintf(tbuf, fmt, *val);
- return tbuf;
-}
-
-void *
-epl_prtlst (fmt, val, vallen)
-char *fmt;
-short *val;
-int vallen;
-{
- static char *list = "[LIST]";
-
- return list;
-}
-
-static struct {
- short code;
- char type;
-#define EPL_STR 0
-#define EPL_BOOL 1
-#define EPL_INT 2
-#define EPL_LIST 3
- char *fmt;
-} epl_tab[] = {
- X25I_CALLEDEXTISO, EPL_STR, "Address ext for dest (ISO): %s",
- X25I_CALLEDEXTNONISO, EPL_STR, "Non-ISO format: %s",
- X25I_CALLINGEXTISO, EPL_STR, "Address ext for target (ISO): %s",
- X25I_CALLINGEXTNONISO, EPL_STR, "Non-ISO format: %s",
- X25I_CHARGEMON, EPL_STR, "Call charge in monetary units: %s",
- X25I_CHARGESEG, EPL_STR, "Call charge in segment counts: %s",
- X25I_CHARGETIME, EPL_STR, "Call charge in elapsed time: %s",
- X25I_CHARGEINFO, EPL_BOOL, "Charging information request: %s",
- X25I_CUG, EPL_STR, "Closed User Group: %s",
- X25I_ETETRANSITDELAY, EPL_LIST, "End-to-end transit delay request: %s",
- X25I_EXPEDITE, EPL_BOOL, "Interrupts allowed: %s",
- X25I_NOEXPEDITE, EPL_BOOL, "Interrupts not allowed: %s",
- X25I_FASTSELECT, EPL_BOOL, "Fast select facility: %s",
- X25I_FASTSELECTRESTR, EPL_BOOL, "Fast select restricted response : %s",
- X25I_NONX25FACILITIES, EPL_STR, "Non-X.25 facilities: %s",
- X25I_CALLINGSUBADDR, EPL_STR, "Calling DTE subaddress: %s",
- X25I_MINTHRUCLSIN, EPL_INT, "Minimum throughput class incoming: %d",
- X25I_MINTHRUCLSOUT, EPL_INT, "Minimum throughput class outgoing: %d",
- X25I_NETUSERID, EPL_STR, "Network-specific user ID: %s",
- X25I_NSAPMAP, EPL_BOOL, "NSAP mapping to DTE: %s",
- X25I_PKTSIZEIN, EPL_INT, "Requested incoming packet size: %d",
- X25I_PKTSIZEOUT, EPL_INT, "Requested outgoing packet size: %d",
- X25I_PRIORITY, EPL_STR, "Connection priority: %s",
- X25I_PROTECTION, EPL_STR, "Protection: %s",
- X25I_CALLINGDTE, EPL_STR, "Calling DTE address: %s",
- X25I_RPOA, EPL_LIST, "Specify how call is to be routed: %s",
- X25I_THRUCLSIN, EPL_INT, "Maximum incoming data rate for VC: %d",
- X25I_THRUCLSOUT, EPL_INT, "Maximum outgoing data rate for VC: %d",
- X25I_TRANSITDELAY, EPL_INT, "Actual transit delay for our call: %d",
- X25I_USERDATA, EPL_STR, "User data: %s",
- X25I_WINSIZEIN, EPL_INT, "Window size for incoming call: %d",
- X25I_WINSIZEOUT, EPL_INT, "Window size for outgoing call: %d",
- X25I_DTECLASS, EPL_STR, "DTE class name: %s",
- X25I_TEMPLATE, EPL_STR, "Template for XSO_ACCEPTCALL: %s",
- X25I_BUFFPREALLOC, EPL_BOOL, "Buffer pre-allocation by gateway: %s",
- X25I_CALLEDDTE, EPL_STR, "Requested DTE address: %s",
- X25I_LOCALDTE, EPL_STR, "DTE receiving incoming call: %s",
- X25I_REDIRECTREASON, EPL_INT, "Reason for call redirection: %d",
- 0, 0, 0,
-};
-
-print_x25_facilities (fd, coc, caption)
-int fd;
-int coc;
-char *caption;
-{
- int numitems,stat,baud,i,j;
- char cbuf[128];
- int cbl = sizeof(cbuf);
- char *cptr = cbuf;
- short lbuf[128];
- int lbl;
-
- DLOG (compat_log, LLOG_DEBUG, ("%s X.25 Facilities:", caption));
-
- lbl = sizeof(lbuf);
- if ((numitems = X25GetItemList(enc_buf, enc_buf_len, lbuf, &lbl)) < 0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Getting Returned Facilities List"));
- }
- for (i=0;i < numitems; i++) {
- cbl = sizeof(cbuf);
- if ((stat = X25Decode(enc_buf, enc_buf_len,
- lbuf[i], cbuf, &cbl)) < 0) {
- SLOG (compat_log, LLOG_EXCEPTIONS, "failed",
- ("Getting Facility [%d] = X25I_%d", i, lbuf[i]));
- }
- if (stat > 0) {
- char *tptr;
- for(j=0; epl_tab[j].code != 0 && epl_tab[j].code != lbuf[i]; j++);
- if (epl_tab[j].code == 0)
- DLOG (compat_log, LLOG_DEBUG, ("unknown facility %d", lbuf[i]));
- else {
- switch (epl_tab[j].type) {
- case EPL_STR:
- tptr = epl_prtstr((epl_tab[j].fmt), cptr, cbl);
- DLOG (compat_log, LLOG_DEBUG, ("%s", tptr));
- break;
- case EPL_BOOL:
- tptr = epl_prtbool((epl_tab[j].fmt), (short *)cptr, cbl);
- DLOG (compat_log, LLOG_DEBUG, ("%s", tptr));
- break;
- case EPL_INT:
- tptr = epl_prtint((epl_tab[j].fmt), (short *)cptr, cbl);
- DLOG (compat_log, LLOG_DEBUG, ("%s", tptr));
- break;
- case EPL_LIST:
- tptr = epl_prtlst((epl_tab[j].fmt), (short *)cptr, cbl);
- DLOG (compat_log, LLOG_DEBUG, ("%s", tptr));
- break;
- default:
- DLOG (compat_log, LLOG_DEBUG,
- ("unknown type of EPL %d", epl_tab[j].code));
- break;
- }
- }
- }
- }
- return OK;
-}
-#endif
-#else /* ULTRIX_X25 */
-int _ultrix25_stub2 () {;}
-#endif /* ULTRIX_X25 */
-#else /* X25 */
-int _ultrix25_stub () {;}
-#endif /* X25 */
diff --git a/src/isode/compat/version.major b/src/isode/compat/version.major
deleted file mode 100644
index 7f8f011eb7..0000000000
--- a/src/isode/compat/version.major
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/src/isode/compat/version.minor b/src/isode/compat/version.minor
deleted file mode 100644
index 573541ac97..0000000000
--- a/src/isode/compat/version.minor
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/src/isode/compat/x25addr.c b/src/isode/compat/x25addr.c
deleted file mode 100644
index 5e349dbec4..0000000000
--- a/src/isode/compat/x25addr.c
+++ /dev/null
@@ -1,1455 +0,0 @@
-/* x25addr.c - X.25 level generic <-> interface address munging */
-
-/*
- * isode/compat/x25addr.c
- * Contributed by George Michaelson, Julian Onions, and John Pavel
- *
- */
-
-/*
- * NOTICE
- *
- * Acquisition, use, and distribution of this module and related
- * materials are subject to the restrictions of a license agreement.
- * Consult the Preface in the User's Manual for the full terms of
- * this agreement.
- *
- */
-
-
-/* LINTLIBRARY */
-
-/*
- * for *really* generic address translation
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include "general.h"
-#include "manifest.h"
-
-#ifdef X25
-#include "tailor.h"
-#include "tpkt.h"
-#include "sys.file.h"
-#include "x25.h"
-
-#ifndef DEBUG
-#define DEBUG
-#endif
-
-/* */
-
-static int char2bcd ();
-static int bcd2char ();
-
-/*
- * convert from the generic X25 structure to interface specific
- */
-/* ARGSUSED */
-CONN_DB *gen2if (generic, specific, context)
-struct NSAPaddr *generic;
-CONN_DB *specific;
-int context;
-{
- int dtelen;
- char dte[NSAP_DTELEN + 1];
-#ifdef CAMTEC_CCL
- struct iovec *iov;
-#endif
-
- if (generic == NULLNA
- || specific == (CONN_DB *) 0)
- return (CONN_DB *)0;
- if (generic -> na_stack != NA_X25) {
-#ifdef SUN_X25 /* really NSAP specific */
-#ifdef AEF_NSAP
- /* for suns, with sunnet 7.0 or >,
- * if this a real NSAP, we have a NULL X121
- * and let the routing tables do the business
- */
-
- if (generic -> na_stack == NA_NSAP) {
- memset ((char *)specific, 0, sizeof *specific);
- return specific;
- }
-#endif
-#endif
- return (CONN_DB *)0;
- }
-
- if (x25_dnic_prefix && *x25_dnic_prefix) {
- /* need DNIC on local calls? */
- register int i;
-
- if ( strncmp(generic -> na_dte, x25_dnic_prefix,
- i = strlen(x25_dnic_prefix)) == 0 )
- {
- if (x25_strip_dnic) memcpy(dte, generic -> na_dte + i,
- dtelen = generic -> na_dtelen - i);
- else memcpy(dte, generic -> na_dte, dtelen = generic -> na_dtelen);
- }
- else
- if (x25_intl_zero)
- {
- memcpy(dte + 1, generic -> na_dte, dtelen = generic-> na_dtelen);
- *dte = '0', dtelen++;
- }
- else memcpy(dte, generic -> na_dte, dtelen = generic -> na_dtelen);
-
- }
- else memcpy (dte, generic -> na_dte, dtelen = generic -> na_dtelen);
- dte[dtelen] = NULL;
-
-#ifdef SUN_X25_HACK
- /*
- * If your X.25 provider expects to receive the subaddress alone
- * on listen requests, and you are using SunLink X.25, you may need
- * to enable SUN_X25_HACK in your config file. This will allow you
- * to use x25_local_dte in isotailor to specify a dte mask to be
- * stripped when listening, and thus use full DTE strings in
- * isoentities and QUIPU EDB files. You will also have to use the
- * tsapd -a <dte> option to specify the listen address in
- * /etc/rc.local and other tsapd startups since by default this equals
- * x25_local_dte and thus will be masked to <null> unless overridden
- * with full DTE + subaddress.
- */
-
- /*
- * in ADDR_LISTEN context, it may be neccessary to only listen
- * on the sub-address, because certain PTT-provided networks
- * remove the local DTE from incoming CR packets.
- *
- * SunLink X.25 listen asserts whatever DTE it is given as a simple
- * string-compare, and will never receive inbound calls that bear
- * only the sub-address if you assert the full DTE.
- *
- * this behaviour is orthogonal to any requirements to remove DNIC
- * or add a leading 0 on outbound calls, and so needs a separate
- * test. It uses tailor variable x25_local_dte to assert the local
- * DTE *without* subaddress which should be tested for and stripped
- * when detected.
- */
-
- if ((context == ADDR_LISTEN) && x25_local_dte && *x25_local_dte)
- {
- register int i;
-
- if ( strncmp(generic -> na_dte, x25_local_dte,
- i = strlen(x25_local_dte)) == 0 )
- {
- memcpy(dte, generic -> na_dte + i, dtelen =
- generic -> na_dtelen - i);
- dte[dtelen] = NULL;
- }
- }
-#endif
-
- DLOG (x25_log, LLOG_DEBUG,
- ("gen2if %s -> %s, %d octets; PID %s",
- generic -> na_dte, dte, dtelen,
- sel2str (generic -> na_pid, (int) generic -> na_pidlen,1)));
-
-
-#if !defined(CAMTEC_CCL) && !defined(HPUX_X25)
- memset ((char *)specific, 0, sizeof *specific);
-#endif
-
-#ifdef UBC_X25
- if ((specific -> xaddr_len = dtelen) != 0) {
- memcpy (specific -> xaddr_addr, dte,
- dtelen);
- specific -> xaddr_len = dtelen;
- specific -> xaddr_facilities = 0;
- memcpy (specific -> xaddr_proto, generic -> na_pid,
- generic -> na_pidlen);
- memcpy (specific -> xaddr_userdata, generic -> na_cudf,
- generic -> na_cudflen);
- }
-#endif
-
-#ifdef HPUX_X25
- if ((dtelen != 1) || (dte [0] != '0'))
- memcpy (specific -> addr.x25_host, dte,
- specific -> addr.x25hostlen = dtelen);
-
- /* Zero PID */
- if (generic -> na_pidlen) { /* non-null PID */
- if (generic -> na_pidlen > NPSIZE) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("PID too long (%d > %d)", generic -> na_pidlen, NPSIZE));
- return (CONN_DB *)0;
- } else {
- memset((char *)specific -> addr.x25pid, 0, NPSIZE);
- memcpy ((char *)specific -> addr.x25pid, generic -> na_pid,
- specific -> addr.x25pidlen = generic -> na_pidlen);
- memcpy ((char *)specific -> cudf.x25_cu_data, generic -> na_pid,
- specific -> cudf.x25_cud_len = generic -> na_pidlen);
- }
- /* copy in CUDF */
- if (generic -> na_cudflen) {
- if (generic -> na_cudflen + specific -> cudf.x25_cud_len > X25_MAX_C
- U_LEN) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("CALL-USERDATA too long (%d > %d)",
- generic -> na_cudflen + specific -> cudf.x25_cud_len,
- X25_MAX_CU_LEN));
- return (CONN_DB *)0;
- } else {
- memcpy (&specific -> cudf.x25_cu_data [specific -> cudf.x25_cud_len],
- generic -> na_cudf,
- generic -> na_cudflen);
- specific -> cudf.x25_cud_len += generic -> na_cudflen;
- }
- }
- } else {
- /* PID ws empty, use first four Byte of cudf */
- /* CUDF has PID - I hope so */
- memcpy (specific -> addr.x25pid, generic -> na_cudf,
- specific -> addr.x25pidlen =
- (generic -> na_cudflen <= NPSIZE) ?
- generic -> na_cudflen : NPSIZE);
- if (generic -> na_cudflen > X25_MAX_CU_LEN) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("CALL-USERDATA too long (%d > %d)",
- generic -> na_cudflen - NPSIZE, X25_MAX_CU_LEN));
- return (CONN_DB *)0;
- } else
- memcpy (specific -> cudf.x25_cu_data, generic -> na_cudf,
- specific -> cudf.x25_cud_len = generic -> na_cudflen);
- }
-
-#endif
-
-#ifdef SUN_X25
- specific -> hostlen = char2bcd (dte, dtelen, specific -> host);
-
- /* Zero PID */
- if (generic -> na_pidlen) { /* non-null PID */
- if (generic -> na_pidlen > NPSIZE) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("PID too long (%d > %d)", generic -> na_pidlen, NPSIZE));
- return (CONN_DB *)0;
- } else {
- memset((char *)specific -> data, 0, NPSIZE);
- memcpy ((char *)specific -> data, generic -> na_pid,
- generic -> na_pidlen);
- memcpy ((char *) specific -> data + NPSIZE, generic -> na_cudf,
- generic -> na_cudflen);
- specific -> datalen = generic -> na_pidlen + generic -> na_cudflen;
- }
- } else { /* Null PID (just copy in CUDF, the first four octets of which
- will be the PID in any case) */
- memcpy ((char *)specific -> data, generic -> na_cudf,
- generic -> na_cudflen);
- specific -> datalen = generic -> na_cudflen;
- }
-#endif
-
-#ifdef CAMTEC_CCL
- switch (context) {
- case ADDR_REMOTE:
- iov = &(specific -> ccl_iovec[0]);
- if (x25_outgoing_port == '#') {
- char *a, *b;
- int i;
-
- iov -> iov_len = dtelen + 4;
- memset(iov -> iov_base, 0, iov -> iov_len + 1);
- a = iov -> iov_base;
- b = dte;
- *a++ = '#';
- *a++ = '[';
- for (i = 0; i < dtelen; i++) {
- if (i == 2) *a++ = ':';
- else if (i == 14) *a++ = ']';
- *a++ = *b++;
- }
- }
- else {
- iov -> iov_len = dtelen+1;
- memcpy((iov -> iov_base)+1, dte, dtelen);
- *(iov -> iov_base) = x25_outgoing_port;
- }
- break;
-
- case ADDR_LOCAL:
- iov = &(specific -> ccl_iovec[0]);
- strncpy(iov -> iov_base, generic -> na_dte, generic -> na_dtelen);
- iov -> iov_base[generic -> na_dtelen] = '\0';
- return (specific);
-
- case ADDR_LISTEN:
- iov = &(specific -> ccl_iovec[0]);
- if (generic -> na_pidlen)
- { /* listen on a PID */
- register int i;
- iov -> iov_base[0] = 'C';
- memcpy(iov -> iov_base + 1, generic -> na_pid,
- i = generic -> na_pidlen);
- iov -> iov_len = i + 1;
- }
- else
- if (generic -> na_dtelen < 6)
- { /* listen on a subaddress */
- register int i;
- iov -> iov_base[0] = 'S';
- memcpy(iov -> iov_base + 1, generic -> na_dte,
- i = generic -> na_dtelen);
- iov -> iov_len = i + 1;
- }
- else /* full DTE */
- memcpy(iov -> iov_base, dte,
- iov -> iov_len = dtelen);
- return (specific);
- }
- /*
- * CUDF & PID must be merged. malloc initailly PIDsize space
- * and zero it. this may be UK net specific action which
- * ensures we do NOT fall foul of listeners which use pid
- * to match as well as "true" cudf & DTE.
- */
-
- (iov = &(specific -> ccl_iovec[2])) -> iov_len = 0;
- if (generic -> na_faclen != 0)
- memcpy ( iov -> iov_base, generic -> na_fac,
- iov -> iov_len = min( generic -> na_faclen, FACSIZE) );
- iov++;
- if ( (iov -> iov_len = generic -> na_pidlen) != 0)
- memcpy ( iov -> iov_base, generic -> na_pid, generic -> na_pidlen);
-
- /*
- * if there is any other user data add that in now...
- * actually cudf is a variable length field so this is
- * all very suspect.
- */
-
- if (generic -> na_cudflen != 0)
- memcpy(iov -> iov_base + iov -> iov_len, generic -> na_cudf,
- generic -> na_cudflen), iov -> iov_len += generic -> na_cudflen;
-#endif
-
-#ifdef ULTRIX_X25
- if (generic -> na_dtelen != 0) {
- specific -> na_dtelen = specific -> na_pidlen
- = specific -> na_cudflen = 0;
- memcpy (specific -> na_dte,
- generic -> na_dte,
- specific -> na_dtelen = generic -> na_dtelen);
- /*
- * concatenate PID and CUDF into CUDF buffer.
- */
- if (generic -> na_pidlen > 0) {
- memcpy (specific -> na_cudf,
- generic -> na_pid,
- specific -> na_cudflen = generic -> na_pidlen);
- }
- if (generic -> na_cudflen > 0) {
- memcpy (specific -> na_cudf + specific -> na_pidlen,
- generic -> na_cudf,
- generic -> na_cudflen);
- specific -> na_cudflen += generic -> na_cudflen;
- }
- }
-#endif /* ULTRIX_X25 */
- return(specific);
-}
-
-/* */
-
-/*
- * convert from interface specific format to generic X.25 structure
- */
-/* ARGSUSED */
-struct NSAPaddr *if2gen (generic, specific, context)
-struct NSAPaddr *generic;
-CONN_DB *specific;
-int context;
-{
- int dtelen;
- char dte[NSAP_DTELEN + 1];
-#ifdef CAMTEC_CCL
- struct iovec *iov;
-#endif
-
- if (generic == NULLNA || specific == (CONN_DB *) 0)
- return NULLNA;
- memset ((char *)generic, 0, sizeof *generic);
- memset (dte, 0, sizeof dte);
- dtelen = 0;
-
- generic -> na_stack = NA_X25;
- generic -> na_community = ts_comm_x25_default;
-
-#ifdef UBC_X25
- if (specific -> xaddr_len != 0) {
- memcpy (dte, specific -> xaddr_addr, specific -> xaddr_len);
- dtelen = specific -> xaddr_len;
- memcpy (generic -> na_pid, specific -> xaddr_proto,
- sizeof(specific -> xaddr_proto));
- generic -> na_pidlen = sizeof specific -> xaddr_proto;
- memcpy (generic -> na_cudf, specific -> xaddr_userdata,
- sizeof(specific -> xaddr_userdata));
- generic -> na_cudflen = sizeof specific -> xaddr_userdata;
- }
-#endif
-
-#ifdef SUN_X25
- dtelen = bcd2char (specific -> host, dte, (int) specific -> hostlen);
-
- if (specific -> datalen > NPSIZE) { /* have some real user data after the PID */
- memcpy(generic -> na_pid, (char *)specific -> data,
- generic -> na_pidlen = NPSIZE);
- memcpy(generic -> na_cudf,
- (char *) specific -> data + generic -> na_pidlen,
- generic -> na_cudflen = specific -> datalen - generic -> na_pidlen);
- }
- else { /* PID only */
- memcpy(generic -> na_pid, (char *)specific -> data,
- generic -> na_pidlen = specific -> datalen);
- generic -> na_cudflen = 0;
- }
-
-#endif
-
-#ifdef HPUX_X25
- if (specific -> addr.x25hostlen)
- memcpy (dte, specific -> addr.x25_host,
- dtelen = specific -> addr.x25hostlen);
- else {
- dte [0] = '0';
- dte [1] = NULL;
- dtelen = 1;
- }
-
- if (specific -> addr.x25pidlen > NPSIZE) {
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("PID too long (%d > %d)", specific -> addr.x25pidlen, NPSIZE));
- specific -> addr.x25pidlen = NPSIZE;
- }
- memcpy(generic -> na_pid, (char *)specific -> addr.x25pid,
- generic -> na_pidlen = specific -> addr.x25pidlen);
-
- if (specific -> cudf.x25_cud_len) {
- memcpy (generic -> na_cudf, specific -> cudf.x25_cu_data,
- generic -> na_cudflen = specific -> cudf.x25_cud_len);
- }
-#endif
-
-
-#ifdef CAMTEC_CCL
- switch (context) {
- case ADDR_REMOTE:
-
- iov = &(specific -> ccl_iovec[1]);
- if (iov -> iov_len) {
- if (*(iov->iov_base) == '#') {
- char *a;
-
- a = iov -> iov_base;
- while (*a && iov -> iov_len) {
- if (*a == ']') {
- iov -> iov_len--;
- a++;
- break;
- }
- iov -> iov_len--;
- a++;
- }
- if (*a == 0 || iov -> iov_len == 0)
- dtelen = 0;
- else {
- dtelen = iov -> iov_len;
- memcpy (dte, a, dtelen);
- }
- }
- else {
- dtelen = iov -> iov_len - 1;
- memcpy (dte, (iov -> iov_base)+1,
- dtelen);
- }
- }
- else dtelen = 0;
- break;
-
- case ADDR_LOCAL:
- iov = &(specific -> ccl_iovec[0]);
- if (iov -> iov_len) {
- dtelen = iov -> iov_len -1;
- memcpy (dte, (iov -> iov_base)+1,
- dtelen);
- }
- else dtelen = 0;
- break;
-
- case ADDR_LISTEN:
- return NULLNA;
- }
-
- if ( (iov = &(specific -> ccl_iovec[2])) -> iov_len )
- memcpy(generic -> na_fac, iov -> iov_base,
- generic -> na_faclen = min( iov -> iov_len, FACSIZE));
-
- if ( ++iov -> iov_len)
- {
- memcpy(generic -> na_pid, iov -> iov_base,
- generic -> na_pidlen = min( iov -> iov_len, NPSIZE));
- if ( iov -> iov_len > NPSIZE)
- memcpy(generic -> na_cudf, iov -> iov_base + NPSIZE,
- generic -> na_cudflen = min(iov -> iov_len - NPSIZE, CUDFSIZE));
- }
-#endif
-
-#ifdef ULTRIX_X25
- if (specific -> na_dtelen > 0) {
- memcpy (dte, specific -> na_dte, specific -> na_dtelen);
- dtelen = specific -> na_dtelen;
-
- /*
- * if CUDF non-zero, copy up to first NPSIZE (or cufdlen if less)
- * bytes into pid field and shift remainder down.
- */
- if (specific -> na_cudflen > 0) {
- memcpy(generic -> na_pid,
- specific -> na_cudf,
- generic -> na_pidlen = (specific -> na_cudflen <= NPSIZE ?
- specific -> na_cudflen : NPSIZE));
- if (specific -> na_cudflen > NPSIZE) {
- memcpy(generic -> na_cudf,
- specific -> na_cudf + NPSIZE,
- generic -> na_cudflen = specific -> na_cudflen - NPSIZE);
- }
- } else {
- generic -> na_pidlen = 0;
- generic -> na_pid[0] = 0;
- generic -> na_cudflen = 0;
- generic -> na_cudf[0] = 0;
- }
- }
-#endif /* ULTRIX_X25 */
-
- if (x25_dnic_prefix && *x25_dnic_prefix) {
- register int i;
-
- i = 0;
- if (x25_intl_zero && dte[0] == '0' && dte[1] != '0')
- i = 1;
- else
- if (x25_dnic_prefix
- && *x25_dnic_prefix
- && x25_strip_dnic
- && dtelen < 12) /* local call... */
- memcpy (generic -> na_dte, x25_dnic_prefix,
- generic -> na_dtelen = strlen (x25_dnic_prefix));
-
- memcpy (generic -> na_dte + generic -> na_dtelen, dte + i, dtelen - i);
- generic -> na_dtelen += dtelen - i;
- }
- else
- memcpy (generic -> na_dte, dte, generic -> na_dtelen = dtelen);
-
- DLOG (x25_log, LLOG_DEBUG,
- ("if2gen %s -> %s, %d octets; PID %s",
- dte, generic -> na_dte, generic -> na_dtelen,
- sel2str (generic -> na_pid, (int) generic -> na_pidlen,1)));
-
- return(generic);
-}
-
-/* */
-
-elucidate_x25_err (flags, pkt)
-int flags;
-unsigned char * pkt;
-{
- char * cp;
-
- if (flags & (1 << RECV_DIAG)) {
-#ifdef HPUX_X25
- if (flags & (1 << DIAG_TYPE)) /* cleared */
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("cleared 0x%02x", pkt[0] ));
- else if (flags & (1 << REST_TYPE))
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("restart 0x%02x", pkt[0] ));
- else
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("reset 0x%02x", pkt[0] ));
-
-#else
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- (( flags & (1 << DIAG_TYPE) ) ?
- "cleared 0x%02x" : "reset 0x%02x",
- pkt[0] ));
-#endif
-
- if ((flags) & (1 << DIAG_TYPE)) /* cleared */
- switch(pkt[0]) {
- case 0x00:
- cp = "DTE Clearing";
- break;
-
- case 0x01:
- cp = "Number Busy";
- break;
-
- case 0x09:
- cp = "Out of Order";
- break;
-
- case 0x11:
- cp = "Remote Procedure Error";
- break;
-
- case 0x19:
- cp = "Reverse Charging not subscribed";
- break;
-
- case 0x03:
- cp = "Invalid Facility Request";
- break;
-
- case 0x0B:
- cp = "Access Barred";
- break;
-
- case 0x13:
- cp = "Local Procedure Error";
- break;
-
- case 0x05:
- cp = "Network Congestion";
- break;
-
- case 0x0D:
- cp = "Not Obtainable";
- break;
-
- case 0x21:
- cp = "DTE Incompatible Call";
- break;
-
- case 0x29:
- cp = "Fast Select Acceptance not Subscribed";
- break;
-
- default:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("clearing cause 0x2%x", pkt[0]));
- goto next;
- }
-#ifdef HPUX_X25
- else if ((flags) & (1 << REST_TYPE))
- switch((unsigned char)(pkt[0] & 0x7f)) {
- case 0x01:
- cp = "Local Procedure Error";
- break;
-
- case 0x03:
- cp = "Network Congestion";
- break;
-
- case 0x07:
- cp = "Network Operational";
- break;
-
- case 0x7f:
- cp = "Registration/Cancellation Confirmed";
- break;
-
- default:
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("restarting cause 0x2%x", pkt[0]));
- goto next;
- }
-#endif
- else /* reset */
- switch(pkt[0]) {
- case 0x00:
- cp = "DTE Reset";
- break;
-
- case 0x01:
- cp = "Out of Order (PVC Only)";
- break;
-
- case 0x03:
- cp = "Remote Procedure Error";
- break;
-
- case 0x05:
- cp = "Local Procedure Error";
- break;
-
- case 0x07:
- cp = "Network Congestion";
- break;
-
- case 0x09:
- cp = "Remote DTE Operational (PVC Only)";
- break;
-
- case 0x0F:
- cp = "Network Operational (PVC Only";
- break;
-
- default:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("resetting cause 0x%2x", pkt[0]));
- goto next;
-
- }
-#ifdef HPUX_X25
- if (flags & (1 << DIAG_TYPE)) /* cleared */
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("%sclearing cause: %s (%d)",
- (pkt[0] & 0x80) ? "Remote DTE " : "", cp, pkt [0]));
- else if (flags & (1 << REST_TYPE))
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("%srestarting cause: %s (%d)",
- (pkt[0] & 0x80) ? "Remote DTE " : "", cp, pkt [0]));
- else
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("%sresetting cause: %s (%d)",
- (pkt[0] & 0x80) ? "Remote DTE " : "", cp, pkt [0]));
-#else
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP, ("%s%s",
- ( flags & (1 << DIAG_TYPE) ) ? "clearing cause " :
- "resetting cause ", cp));
-
-#endif
-
-next: ;
- /* The following may only be applicable to PSS in the UK */
- /* In any case, if someone is keen, they can stuff it all
- into a text file and read it out */
-
- switch (pkt[1]) {
- case 0x00:
- cp = "NO ADDITIONAL INFORMATION";
- break;
-
- case 0x01:
- cp = "INVALID P(S)\tRESET";
- break;
-
- case 0x02:
- cp = "INVALID P(R)\tRESET";
- break;
-
- case 0x11:
- cp = "PACKET TYPE INVALID FOR STATE r1\tRESTART";
- break;
-
- case 0x12:
- cp = "PACKET TYPE INVALID FOR STATE r2\tRESTART";
- break;
-
- case 0x13:
- cp = "PACKET TYPE INVALID FOR STATE r3\tRESTART";
- break;
-
- case 0x14:
- cp = "PACKET TYPE INVALID FOR STATE p1\tCLEAR";
- break;
-
- case 0x15:
- cp = "PACKET TYPE INVALID FOR STATE p2\tCLEAR";
- break;
-
- case 0x16:
- cp = "PACKET TYPE INVALID FOR STATE p3\tCLEAR";
- break;
-
- case 0x17:
- cp = "PACKET TYPE INVALID FOR STATE p4\tCLEAR";
- break;
-
- case 0x18:
- cp = "PACKET TYPE INVALID FOR STATE p5\tRESET";
- break;
-
- case 0x19:
- cp = "PACKET TYPE INVALID FOR STATE p6\tCLEAR";
- break;
-
- case 0x1A:
- cp = "PACKET TYPE INVALID FOR STATE p7\tCLEAR";
- break;
-
- case 0x1B:
- cp = "PACKET TYPE INVALID FOR STATE d1\tRESET";
- break;
-
- case 0x1C:
- cp = "PACKET TYPE INVALID FOR STATE d2\tRESET";
- break;
-
- case 0x1D:
- cp = "PACKET TYPE INVALID FOR STATE d3\tRESET";
- break;
-
- case 0x20:
- cp = "PACKET NOT ALLOWED";
- break;
-
- case 0x21:
- cp = "UNIDENTIFIABLE PACKET";
- break;
-
- case 0x22:
- cp = "CALL ON ONE-WAY LOGICAL CHANNEL\tCLEAR";
- break;
-
- case 0x23:
- cp = "INVALID PACKET TYPE ON PVC\tRESET";
- break;
-
- case 0x24:
- cp = "PACKET ON UNASSIGNED LCN\tCLEAR";
- break;
-
- case 0x25:
- cp = "REJECT NOT SUBSCRIBED TO\tRESET";
- break;
-
- case 0x26:
- cp = "PACKET TOO SHORT\tRESET";
- break;
-
- case 0x27:
- cp = "PACKET TOO LONG\tRESET";
- break;
-
- case 0x28:
- cp = "INVALID GFI\tCLEAR";
- break;
-
- case 0x29:
- cp = "RESTART WITH NON-ZERO BITS 5-16";
- break;
-
- case 0x2A:
- cp = "PACKET TYPE NOT COMPATIBLE WITH FACILITY\tCLEAR";
- break;
-
- case 0x2B:
- cp = "UNAUTHORISED INTERRUPT CONF\tRESET";
- break;
-
- case 0x2C:
- cp = "UNAUTHORISED INTERRUPT\tRESET";
- break;
-
- case 0x31:
- cp = "TIMER EXPIRED; INCOMING CALL";
- break;
-
- case 0x32:
- cp = "TIMER EXPIRED;\tCLEAR INDICATION";
- break;
-
- case 0x33:
- cp = "TIMER EXPIRED;\tRESET INDICATION";
- break;
-
- case 0x34:
- cp = "TIMER EXPIRED;\tRESTART IND";
- break;
-
- case 0x40:
- cp = "UNSPECIFIED CALL SET-UP PROBLEM CLEAR";
- break;
-
- case 0x41:
- cp = "FACILITY CODE NOT ALLOWED\tCLEAR";
- break;
-
- case 0x42:
- cp = "FACILITY PARAMETER NOT ALLOWED\tCLEAR";
- break;
-
- case 0x43:
- cp = "INVALID CALLED ADDRESS\tCLEAR";
- break;
-
- case 0x44:
- cp = "INVALID CALLING ADDRESS\tCLEAR";
- break;
-
- case 0x90:
- cp = "DTE/DCE CONGESTION\tRESET";
- break;
-
- case 0x91:
- cp = "RECEIVED FAST SELECT CLEAR REQUEST";
- break;
-
- case 0x92:
- cp = "LINE RESTARTING BY INMC COMMAND\tRESTART";
- break;
-
- case 0xA0:
-#ifdef HPUX_X25
- cp = "REVERSE CHARGE REQUESTED WHEN NOT ALLOWED - RESET";
- #else
- cp = "NON-ZERO RESET CAUSE FROM DTE\tRESET";
-#endif
- break;
-
- case 0xA1:
-#ifdef HPUX_X25
- cp = "LEVEL 2 IS COMING UP - RESET";
-#else
- cp = "DATA PACKET TOO LONG\tRESET";
-#endif
- break;
-
- case 0xA2:
-#ifdef HPUX_X25
- cp = "LEVEL 2 OR 3 IS DOWN - RESET";
-#else
- cp = "INTERRUPT PACKET TOO LONG\tRESET";
-#endif
- break;
-
- case 0xA3:
-#ifdef HPUX_X25
- cp = "LACK OF MEMORY - RESET";
-#else
- cp = "INT PACKET TOO SHORT; NO USER DATA\tRESET";
-#endif
- break;
-
- case 0xA4:
-#ifdef HPUX_X25
- cp = "FAST SELECT NOT SUBSCRIBED - CLEAR";
-#else
- cp = "INT CONFIRMATION PACKET TOO LONG\tRESET";
-#endif
- break;
-
- case 0xA5:
- cp = "RR PACKET TOO LONG\tRESET";
- break;
-
- case 0xA6:
- cp = "RNR PACKET TOO LONG\tRESET";
- break;
-
- case 0xA7:
- cp = "RESET PACKET TOO LONG\tRESET";
- break;
-
- case 0xA8:
- cp = "RESET CONF PACKET TOO LONG\tRESET";
- break;
-
- case 0xA9:
- cp = "INVALID `Q' BIT IN DATA PACKET\tRESET";
- break;
-
- case 0xAA:
- cp = "PACKET WINDOW RANGE EXCEEDED\tRESET";
- break;
-
- case 0xAB:
- cp = "UNABLE TO TRANSMIT PACKET\tRESET";
- break;
-
- case 0xAC:
- cp = "diagnostic `Q' BIT SET IN NON-DATA PACKET\tRESET";
- break;
-
- case 0xAD:
- cp = "OUTSTANDING PACKET COUNT LESS THAN ZERO\tRESET";
- break;
-
- case 0xAE:
- cp = "RETRANSMISSION ERROR\tRESET";
- break;
-
- case 0xAF:
- cp = "RESET PACKET TOO SHORT (NO CAUSE)\tRESET";
- break;
-
- case 0xB0:
- cp = "REJECT PACKET TOO LONG\tRESET";
- break;
-
- case 0xB1:
- cp = "INVALID 1D PACKET\tRESET";
- break;
-
- case 0xB2:
- cp = "UNSUCCESSFUL RECONNECTION RESNC\tCLEAR";
- break;
-
- case 0xB3:
- cp = "NON-RECONNECT CALL IN STATE C1\tCLEAR";
- break;
-
- case 0xB4:
- cp = "SECOND 1D PACKET FROM DTE\tCLEAR";
- break;
-
- case 0xB5:
- cp = "BAD DATA TRANSFER STATE IN RECONNECT\tCLEAR";
- break;
-
- case 0xB6:
- cp = "PACKET FORMAT INVALID\tCLEAR";
- break;
-
- case 0xB7:
- cp = "FACILITY BYTE COUNT TOO LARGE\tCLEAR";
- break;
-
- case 0xB8:
- cp = "INVALID PACKET DETECTED\tCLEAR";
- break;
-
- case 0xB9:
- cp = "FACILITY/UTILITY FIELD BYTE COUNT > 63\tCLEAR";
- break;
-
- case 0xBA:
- cp = "OUTGOING CALLS BARRED\tCLEAR";
- break;
-
- case 0xBB:
- cp = "INCOMING CALLS BARRED\tCLEAR";
- break;
-
- case 0xBC:
- cp = "CLEARING OF PVC\tCLEAR";
- break;
-
- case 0xBD:
- cp = "CALLED ADDRESS TOO LONG\tCLEAR";
- break;
-
- case 0xBE:
- cp = "CALLED ADDRESS TOO SHORT\tCLEAR";
- break;
-
- case 0xBF:
- cp = "CALLING ADDRESS TOO LONG\tCLEAR";
- break;
-
- case 0xC0:
- cp = "CALLING ADDRESS TOO SHORT\tCLEAR";
- break;
-
- case 0xC1:
- cp = "BCD ERROR IN CALL ADDRESS\tCLEAR";
- break;
-
- case 0xC2:
- cp = "BCD ERROR IN CALLING ADDRESS\tCLEAR";
- break;
-
- case 0xC3:
- cp = "USER DATA FIELD TOO LONG\tCLEAR";
- break;
-
- case 0xC4:
- cp = "NO BUFFER AVAILABLE\tCLEAR";
- break;
-
- case 0xC5:
- cp = "LOCAL DTE IS NOT ENHANCED\tCLEAR";
- break;
-
- case 0xC6:
- cp = "FACILITY NEGOTIATION INVALID\tCLEAR";
- break;
-
- case 0xC7:
- cp = "MANDATORY UTILITY NOT INPUT\tCLEAR";
- break;
-
- case 0xC8:
- cp = "BUFFER NO AVAILABLE FOR TNIC\tCLEAR";
- break;
-
- case 0xC9:
- cp = "OVERFLOW OF TNIC IN BUFFER\tCLEAR";
- break;
-
- case 0xCA:
- cp = "DTE LINE CONGESTED\tCLEAR";
- break;
-
- case 0xCB:
- cp = "TABLE ERROR IN PACKET PROCEDURES";
- break;
-
- case 0xCC:
- cp = "INSERT TABLE OVERFLOW";
- break;
-
- case 0xCD:
- cp = "DELETE TABLE OVERFLOW";
- break;
-
- case 0xD0:
- cp = "TRUNK LINE RESTART\tRESTART";
- break;
-
- case 0xD1:
- cp = "INVALID EVENT IN STATE p2";
- break;
-
- case 0xD2:
- cp = "INVALID EVENT IN STATE p3";
- break;
-
- case 0xD3:
- cp = "INVALID 1D EVENT IN STATE d1";
- break;
-
- case 0xD4:
- cp = "CALL COLLISION ON TRUNK LINE";
- break;
-
- case 0xD5:
- cp = "NO BUFFER AVAILABLE";
- break;
-
- case 0xD6:
-
- cp = "CALL COLLISION ON DTE LINE";
- break;
-
- case 0xD7:
- cp = "DTE RESTART";
- break;
-
- case 0xD8:
- cp = "CALL REQUEST TO TRUNK LINE TIMEOUT";
- break;
-
- case 0xD9:
- cp = "RECONNECT SET-UP TIMED OUT";
- break;
-
- case 0xDA:
- cp = "INVALID OUTPUT SIDE STATE";
- break;
-
- case 0xDB:
- cp = "ERROR DETECTED IN BLINK PACKET QUEUE PROCEDURE";
- break;
-
- case 0xDC:
- cp = "RESET INDICATION RETRANSMISSION COUNT EXPIRED";
- break;
-
- case 0xDD:
- cp = "INVALID OUTPUT SIDE STATE";
- break;
-
- case 0xDE:
- cp = "BLIND BUFFER QUEUE OVERFLOW IN STATE d4";
- break;
-
- case 0xDF:
- cp = "BLIND BUFFER QUEUE OVERFLOW IN STATE c1";
- break;
-
- case 0xE0:
- cp = "BLIND BUFFER QUEUE OVERFLOW IN STATE c2";
- break;
-
- case 0xE1:
-#ifdef HPUX_X25
- cp = "DISCONNECTION (TRANSIENT CONDITION) - CLEAR";
-#else
- cp = "CLEAR PACKET BYTE COUNT TOO LARGE OR TOO SMALL";
-#endif
- break;
-
- case 0xE2:
-#ifdef HPUX_X25
- cp = "CONNECTION REJECTION (TRANSIENT CONDITION) - CLEAR";
-#else
- cp = "NON-ZERO\tCLEAR CAUSE";
-#endif
- break;
-
- case 0xE3:
- cp = "CLEAR CONF PACKET BYTE COUNT TOO SMALL OR TOO LARGE";
- break;
-
- case 0xE4:
-#ifdef HPUX_X25
- cp = "CONNECTION REJECTION (REASON UNSPECIFIED) - CLEAR";
-#else
- cp = "CALL COLLISION";
-#endif
- break;
-
- case 0xE5:
- cp = "INVALID TP LOAD REQUEST CALL PKT";
- break;
-
- case 0xE6:
- cp = "MAXIMUM HOPCOUNT EXCEEDED";
- break;
-
- case 0xE7:
-#ifdef HPUX_X25
- cp = "NSAP UNREACHABLE (TRANSIENT CONDITION) - CLEAR";
-#else
- cp = "ROUTING LOOP DETECTED";
-#endif
- break;
-
- case 0xE8:
-#ifdef HPUX_X25
- cp = "NSAP UNREACHABLE (PERMANENT CONDITION) - CLEAR";
-#else
- cp = "PVC CALL REQUEST FAILURE";
-#endif
- break;
-
- case 0xE9:
-#ifdef HPUX_X25
- cp = "RESET CAUSE UNSPECIFIED - RESET";
-#else
- cp = "RECONNECT CALL REQUEST FAILED";
-#endif
- break;
-
- case 0xEA:
- cp = "NO LC AVAILABLE ON OUTPUT SIDE";
- break;
-
- case 0xEB:
- cp = "NO BUFFER AVAILABLE";
- break;
-
- case 0xEC:
- cp = "CALL REDIRECTION CLEAR";
- break;
-
- case 0xED:
- cp = "NO PATH ROUTE CALL";
- break;
-
- case 0xEE:
- cp = "CALL ROUTED TO DTE LINE";
- break;
-
- case 0xEF:
- cp = "CALL CANNOT BE REROUTED";
- break;
-
- case 0xF0:
- cp = "ADDRESS NOT IN ROUTING TABLES";
- break;
-
- case 0xF1:
-#ifdef HPUX_X25
- cp = "NORMAL DISCONNECTION - CLEAR";
-#else
- cp = "ROUTING TABLE CHANGE DURING CALL ROUTING";
-#endif
- break;
-
- case 0xF2:
-#ifdef HPUX_X25
- cp = "ABNORMAL DISCONNECTION - CLEAR";
-#else
- cp = "NO LC AVAILABLE ON FAKE TRUNK";
-#endif
- break;
-
- case 0xF3:
- cp = "REMOTE DTE DOWN ON A PVC";
- break;
-
- case 0xF4:
- cp = "INVALID EVENT DETECTED";
- break;
-
- case 0xF5:
- cp = "INVALID PACKET RECEIVED; STATE d4";
- break;
-
- case 0xF6:
- cp = "INVALID PACKET RECEIVED; STATE d5";
- break;
-
- case 0xF7:
- cp = "INVALID PACKET RECEIVED; STATE p8";
- break;
-
- case 0xF8:
- cp = "INTERNAL PROCESSING FAILURE";
- break;
-
- case 0xF9:
- cp = "INVALID RESTART INDICATION";
- break;
-
- case 0xFA:
-#ifdef HPUX_X25
- cp = "USER SYNCHRONISATION - RESET";
-#else
- cp = "LINE STATUS CHANGE IN STATE r4";
-#endif
- break;
-
- case 0xFB:
- cp = "INVALID PACKET RECEIVED; STATE r4";
- break;
-
- case 0xFC:
- cp = "INVALID PACKET RECEIVED; STATE r3";
- break;
-
- case 0xFD:
- cp = "LINE STATUS CHANGE IN STATE r2";
- break;
-
- case 0xFE:
- cp = "LINE STATUS CHANGE IN STATE r1";
- break;
-
- case 0xFF:
- cp = "LINE STATUS CHANGE IN STATE r0";
- break;
-
- default:
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("diagnostic: 0x%2x", pkt[1]));
- goto done;
- }
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP, ("diagnostic %s", cp));
-#ifdef HPUX_X25
- if (flags & (1 << DIAG_TYPE)) /* cleared */
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("clearing source: %s (%d)",
- pkt [2] ? "X25-Level 2" : "network prov./firmware",
- pkt [2] ));
- else if (flags & (1 << REST_TYPE))
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("restart source unknown (%d)", pkt [2] ));
- else
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("resetting source: %s (%d)",
- pkt [2] ? "network provider" : "undefined", pkt [2] ));
-#endif
- }
- else /* Not RECV_DIAG */
-#ifdef HPUX_X25
- SLOG (x25_log, LLOG_EXCEPTIONS, NULLCP,
- ("cause: 0x%02x - diag code: 0x%02x", pkt [0], pkt [1]));
-#else
- if (flags)
- SLOG (compat_log, LLOG_EXCEPTIONS, NULLCP,
- ("diag flags: 0x%02x", flags));
-#endif
-
-done: ;
- return OK;
-};
-
-/* */
-
-#ifdef SUN_X25
-#ifdef AEF_NSAP
-int nsap2if (nsap, aef)
-struct NSAPaddr *nsap;
-AEF *aef;
-{
- char buf[NASIZE*2+1];
- int len;
-
- if (nsap -> na_stack != NA_NSAP)
- return NOTOK;
- aef -> aef_type = AEF_NSAP;
- len = explode (buf, (u_char *) nsap -> na_address, nsap -> na_addrlen);
- aef -> aef_len = char2bcd (buf, len, aef -> aef);
- return OK;
-}
-#endif
-
-static int char2bcd (s, n, d)
-register char *s;
-int n;
-register u_char *d;
-{
- register int c,
- i;
-
- for (i = 0; *s && n-- > 0; i++) {
- if ((c = *s++) >= 'a' && c <= 'f')
- c -= 'a' + 0x0a;
- else
- if (c >= 'A' && c <= 'F')
- c -= 'A' + 0x0a;
- else
- if (c >= '0' && c <= '9')
- c -= '0';
- else
- c = 0;
-
- if (i & 1)
- *d++ |= c & 0xf;
- else
- *d = (c & 0xf) << 4;
- }
-
- return i;
-}
-
-/* */
-#ifdef AEF_NSAP
-int if2nsap (aef, nsap)
-AEF *aef;
-struct NSAPaddr *nsap;
-{
- char buf[NASIZE*2+1];
- int len;
-
- if (aef -> aef_type != AEF_NSAP)
- return NOTOK;
-
- nsap -> na_stack = NA_NSAP;
- len = bcd2char (aef -> aef, buf, (int)aef -> aef_len);
- nsap -> na_addrlen = implode ((u_char *) nsap -> na_address, buf, len);
- return OK;
-}
-#endif
-
-static int bcd2char (s, d, len)
-register u_char *s;
-register char *d;
-int len;
-{
- register int i,
- g;
-
- for (i = 0; i < len; i++) {
- g = s[i >> 1];
- if ((i & 1) == 0)
- g >>= 4;
- g &= 0xf;
-
- if (g < 0x0a)
- *d++ = g + '0';
- else
- *d++ = g + 'a' - 0x0a;
- }
-
- *d = NULL;
-
- return len;
-}
-#endif
-#else
-int _x25addr_stub () {}
-#endif