]> arthur.barton.de Git - netatalk.git/commitdiff
Remove all Appletalk stuff
authorFrank Lahm <franklahm@googlemail.com>
Thu, 24 Feb 2011 18:25:29 +0000 (19:25 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Thu, 24 Feb 2011 18:25:29 +0000 (19:25 +0100)
305 files changed:
Makefile.am
bin/Makefile.am
bin/ad/ad.h
bin/aecho/.gitignore [deleted file]
bin/aecho/Makefile.am [deleted file]
bin/aecho/aecho.c [deleted file]
bin/afppasswd/afppasswd.c
bin/getzones/.gitignore [deleted file]
bin/getzones/Makefile.am [deleted file]
bin/getzones/getzones.c [deleted file]
bin/nbp/.gitignore [deleted file]
bin/nbp/Makefile.am [deleted file]
bin/nbp/nbplkup.c [deleted file]
bin/nbp/nbprgstr.c [deleted file]
bin/nbp/nbpunrgstr.c [deleted file]
bin/pap/.gitignore [deleted file]
bin/pap/Makefile.am [deleted file]
bin/pap/pap.c [deleted file]
bin/pap/papstatus.c [deleted file]
bin/psorder/.gitignore [deleted file]
bin/psorder/Makefile.am [deleted file]
bin/psorder/pa.c [deleted file]
bin/psorder/pa.h [deleted file]
bin/psorder/psorder.c [deleted file]
bin/psorder/psorder.h [deleted file]
bin/uniconv/iso8859_1_adapted.c
bin/uniconv/uniconv.c
config/Makefile.am
config/atalkd.conf [deleted file]
config/atalkd.conf.cobalt [deleted file]
config/papd.conf [deleted file]
configure.in
contrib/Makefile.am
contrib/printing/.gitignore [deleted file]
contrib/printing/Makefile.am [deleted file]
contrib/printing/add_netatalk_printer [deleted file]
contrib/printing/netatalk.template [deleted file]
etc/Makefile.am
etc/afpd/Makefile.am
etc/afpd/afp_asp.c [deleted file]
etc/afpd/afp_config.c
etc/afpd/afp_config.h
etc/afpd/afp_options.c
etc/afpd/auth.c
etc/afpd/desktop.c
etc/afpd/directory.h
etc/afpd/file.h
etc/afpd/fork.c
etc/afpd/fork.h
etc/afpd/globals.h
etc/afpd/main.c
etc/afpd/status.c
etc/afpd/status.h
etc/afpd/uam.c
etc/afpd/unix.h
etc/afpd/volume.c
etc/afpd/volume.h
etc/atalkd/.gitignore [deleted file]
etc/atalkd/Makefile.am [deleted file]
etc/atalkd/aep.c [deleted file]
etc/atalkd/atserv.h [deleted file]
etc/atalkd/config.c [deleted file]
etc/atalkd/gate.h [deleted file]
etc/atalkd/interface.h [deleted file]
etc/atalkd/list.h [deleted file]
etc/atalkd/main.c [deleted file]
etc/atalkd/main.h [deleted file]
etc/atalkd/multicast.c [deleted file]
etc/atalkd/multicast.h [deleted file]
etc/atalkd/nbp.c [deleted file]
etc/atalkd/nbp.h [deleted file]
etc/atalkd/route.c [deleted file]
etc/atalkd/route.h [deleted file]
etc/atalkd/rtmp.c [deleted file]
etc/atalkd/rtmp.h [deleted file]
etc/atalkd/zip.c [deleted file]
etc/atalkd/zip.h [deleted file]
etc/cnid_dbd/cmd_dbd_scanvol.c
etc/cnid_dbd/cnid_metad.c
etc/cnid_dbd/dbd.h
etc/cnid_dbd/dbd_dbcheck.c
etc/cnid_dbd/dbd_delete.c
etc/cnid_dbd/dbd_get.c
etc/cnid_dbd/dbd_getstamp.c
etc/cnid_dbd/dbd_lookup.c
etc/cnid_dbd/dbd_rebuild_add.c
etc/cnid_dbd/dbd_resolve.c
etc/cnid_dbd/dbd_search.c
etc/cnid_dbd/dbd_update.c
etc/cnid_dbd/dbif.c
etc/cnid_dbd/main.c
etc/cnid_dbd/pack.c
etc/papd/.gitignore [deleted file]
etc/papd/Makefile.am [deleted file]
etc/papd/auth.c [deleted file]
etc/papd/comment.c [deleted file]
etc/papd/comment.h [deleted file]
etc/papd/file.c [deleted file]
etc/papd/file.h [deleted file]
etc/papd/headers.c [deleted file]
etc/papd/lp.c [deleted file]
etc/papd/lp.h [deleted file]
etc/papd/magics.c [deleted file]
etc/papd/main.c [deleted file]
etc/papd/ppd.c [deleted file]
etc/papd/ppd.h [deleted file]
etc/papd/print_cups.c [deleted file]
etc/papd/print_cups.h [deleted file]
etc/papd/printcap.c [deleted file]
etc/papd/printcap.h [deleted file]
etc/papd/printer.h [deleted file]
etc/papd/queries.c [deleted file]
etc/papd/session.c [deleted file]
etc/papd/session.h [deleted file]
etc/papd/showppd.c [deleted file]
etc/papd/uam.c [deleted file]
etc/papd/uam_auth.h [deleted file]
etc/psf/.gitignore [deleted file]
etc/psf/Makefile.am [deleted file]
etc/psf/etc2ps.sh [deleted file]
etc/psf/pagecount.ps [deleted file]
etc/psf/psa.c [deleted file]
etc/psf/psf.c [deleted file]
etc/uams/uams_dhx2_passwd.c
etc/uams/uams_dhx_pam.c
etc/uams/uams_dhx_passwd.c
etc/uams/uams_gss.c
etc/uams/uams_guest.c
etc/uams/uams_pam.c
etc/uams/uams_passwd.c
etc/uams/uams_randnum.c
include/atalk/Makefile.am
include/atalk/adouble.h
include/atalk/aep.h [deleted file]
include/atalk/afp.h
include/atalk/asp.h [deleted file]
include/atalk/atp.h [deleted file]
include/atalk/ddp.h [deleted file]
include/atalk/directory.h
include/atalk/dsi.h
include/atalk/nbp.h [deleted file]
include/atalk/netddp.h [deleted file]
include/atalk/pap.h [deleted file]
include/atalk/rtmp.h [deleted file]
include/atalk/server_child.h
include/atalk/unicode.h
include/atalk/util.h
include/atalk/volume.h
libatalk/Makefile.am
libatalk/acl/uuid.c
libatalk/adouble/ad_attr.c
libatalk/adouble/ad_date.c
libatalk/adouble/ad_flush.c
libatalk/adouble/ad_open.c
libatalk/asp/.gitignore [deleted file]
libatalk/asp/Makefile.am [deleted file]
libatalk/asp/asp_attn.c [deleted file]
libatalk/asp/asp_child.h [deleted file]
libatalk/asp/asp_close.c [deleted file]
libatalk/asp/asp_cmdreply.c [deleted file]
libatalk/asp/asp_getreq.c [deleted file]
libatalk/asp/asp_getsess.c [deleted file]
libatalk/asp/asp_init.c [deleted file]
libatalk/asp/asp_shutdown.c [deleted file]
libatalk/asp/asp_tickle.c [deleted file]
libatalk/asp/asp_write.c [deleted file]
libatalk/atp/.gitignore [deleted file]
libatalk/atp/Makefile.am [deleted file]
libatalk/atp/atp_bufs.c [deleted file]
libatalk/atp/atp_close.c [deleted file]
libatalk/atp/atp_internals.h [deleted file]
libatalk/atp/atp_open.c [deleted file]
libatalk/atp/atp_packet.c [deleted file]
libatalk/atp/atp_rreq.c [deleted file]
libatalk/atp/atp_rresp.c [deleted file]
libatalk/atp/atp_rsel.c [deleted file]
libatalk/atp/atp_sreq.c [deleted file]
libatalk/atp/atp_sresp.c [deleted file]
libatalk/cnid/cdb/cnid_cdb.h
libatalk/cnid/cdb/cnid_cdb_add.c
libatalk/cnid/cdb/cnid_cdb_delete.c
libatalk/cnid/cdb/cnid_cdb_private.h
libatalk/cnid/cnid.c
libatalk/cnid/dbd/cnid_dbd.c
libatalk/cnid/dbd/cnid_dbd.h
libatalk/cnid/last/cnid_last.c
libatalk/cnid/last/cnid_last.h
libatalk/cnid/tdb/cnid_tdb.h
libatalk/dsi/dsi_attn.c
libatalk/dsi/dsi_close.c
libatalk/dsi/dsi_cmdreply.c
libatalk/dsi/dsi_getstat.c
libatalk/dsi/dsi_private.h
libatalk/dsi/dsi_stream.c
libatalk/dsi/dsi_tcp.c
libatalk/dsi/dsi_tickle.c
libatalk/dsi/dsi_write.c
libatalk/locking/Makefile.am
libatalk/locking/locking.c
libatalk/nbp/.gitignore [deleted file]
libatalk/nbp/Makefile.am [deleted file]
libatalk/nbp/nbp_conf.h [deleted file]
libatalk/nbp/nbp_lkup.c [deleted file]
libatalk/nbp/nbp_rgstr.c [deleted file]
libatalk/nbp/nbp_unrgstr.c [deleted file]
libatalk/nbp/nbp_util.c [deleted file]
libatalk/netddp/.gitignore [deleted file]
libatalk/netddp/Makefile.am [deleted file]
libatalk/netddp/netddp_open.c [deleted file]
libatalk/netddp/netddp_recvfrom.c [deleted file]
libatalk/netddp/netddp_sendto.c [deleted file]
libatalk/unicode/byteorder.h
libatalk/unicode/charcnv.c
libatalk/unicode/charsets/generic_mb.c
libatalk/unicode/charsets/mac_centraleurope.c
libatalk/unicode/charsets/mac_cyrillic.c
libatalk/unicode/charsets/mac_greek.c
libatalk/unicode/charsets/mac_hebrew.c
libatalk/unicode/charsets/mac_roman.c
libatalk/unicode/charsets/mac_turkish.c
libatalk/unicode/iconv.c
libatalk/unicode/utf8.c
libatalk/unicode/util_unistr.c
libatalk/util/Makefile.am
libatalk/util/atalk_addr.c [deleted file]
libatalk/util/unix.c
libatalk/vfs/ea_ad.c
libatalk/vfs/ea_sys.c
libatalk/vfs/extattr.c
libatalk/vfs/unix.c
libatalk/vfs/vfs.c
man/Makefile.am
man/man1/Makefile.am
man/man1/aecho.1 [deleted file]
man/man1/getzones.1 [deleted file]
man/man1/nbp.1 [deleted file]
man/man1/nbplkup.1 [deleted file]
man/man1/nbprgstr.1 [deleted file]
man/man1/nbpunrgstr.1 [deleted file]
man/man1/pap.1 [deleted file]
man/man1/papstatus.1 [deleted file]
man/man1/psorder.1 [deleted file]
man/man3/.gitignore [deleted file]
man/man3/Makefile.am [deleted file]
man/man3/atalk_aton.3 [deleted file]
man/man3/nbp_name.3 [deleted file]
man/man4/.gitignore [deleted file]
man/man4/Makefile.am [deleted file]
man/man4/atalk.4 [deleted file]
man/man5/Makefile.am
man/man5/atalkd.conf.5.tmpl [deleted file]
man/man5/papd.conf.5.tmpl [deleted file]
man/man8/Makefile.am
man/man8/atalkd.8.tmpl [deleted file]
man/man8/papd.8.tmpl [deleted file]
man/man8/papstatus.8.tmpl [deleted file]
man/man8/psf.8.tmpl [deleted file]
man/man8/timelord.8 [deleted file]
sys/.gitignore [deleted file]
sys/Makefile.am [deleted file]
sys/netatalk/.gitignore [deleted file]
sys/netatalk/Makefile.am [deleted file]
sys/netatalk/aarp.c [deleted file]
sys/netatalk/aarp.h [deleted file]
sys/netatalk/at.h [deleted file]
sys/netatalk/at_control.c [deleted file]
sys/netatalk/at_proto.c [deleted file]
sys/netatalk/at_var.h [deleted file]
sys/netatalk/ddp.h [deleted file]
sys/netatalk/ddp_input.c [deleted file]
sys/netatalk/ddp_output.c [deleted file]
sys/netatalk/ddp_usrreq.c [deleted file]
sys/netatalk/ddp_var.h [deleted file]
sys/netatalk/phase2.h [deleted file]
sys/netbsd/.gitignore [deleted file]
sys/netbsd/Makefile.am [deleted file]
sys/netbsd/netatalk/.gitignore [deleted file]
sys/netbsd/netatalk/Makefile.am [deleted file]
sys/netbsd/netatalk/endian.h [deleted file]
sys/solaris/.gitignore [deleted file]
sys/solaris/Makefile.in [deleted file]
sys/solaris/aarp.c [deleted file]
sys/solaris/ddp.c [deleted file]
sys/solaris/ddp.conf [deleted file]
sys/solaris/dlpi.c [deleted file]
sys/solaris/if.c [deleted file]
sys/solaris/if.h [deleted file]
sys/solaris/ioc.c [deleted file]
sys/solaris/ioc.h [deleted file]
sys/solaris/linkage.c [deleted file]
sys/solaris/rt.c [deleted file]
sys/solaris/rt.h [deleted file]
sys/solaris/sock.c [deleted file]
sys/solaris/sock.h [deleted file]
sys/solaris/tpi.c [deleted file]
sys/sunos/.gitignore [deleted file]
sys/sunos/Makefile.am [deleted file]
sys/sunos/Makefile.kernel [deleted file]
sys/sunos/at_sun.c [deleted file]
sys/ultrix/.gitignore [deleted file]
sys/ultrix/Makefile.am [deleted file]
sys/ultrix/Makefile.kernel [deleted file]
sys/ultrix/at_ultrix.c [deleted file]
sys/ultrix/kpatch-4.1 [deleted file]
sys/ultrix/kpatch-4.2 [deleted file]

index 646503575ec6d7253d5e31fa56abe4a6d7b0f214..b40b6d0c728a6cefa10701a3f6f10098095b412b 100644 (file)
@@ -1,7 +1,7 @@
 # Makefile.am for top level of netatalk package
 
 # libevent should be first
-SUBDIRS = libevent libatalk bin config etc man contrib distrib include sys doc macros test
+SUBDIRS = libevent libatalk bin config etc man contrib distrib include doc macros test
 
 EXTRA_DIST = CONTRIBUTORS COPYRIGHT COPYING NEWS VERSION services.atalk
 
index a857cca3d3e312b490138c61d02099639d36bf7f..1742ea6b54ead1da999d177b86cc338da4e5274e 100644 (file)
@@ -1,7 +1,3 @@
 # Makefile.am for bin/
 
 SUBDIRS = ad afppasswd cnid megatron uniconv misc
-
-if USE_APPLETALK
-SUBDIRS += aecho getzones nbp pap psorder
-endif
index 9f8fd4b5ae0dcb3692751d6d480cf71ca0fc17a0..ee4f57721e6319b5d04294cbe787037628a18649 100644 (file)
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <signal.h>
+#include <arpa/inet.h>
 
 #include <atalk/ftw.h>
 #include <atalk/volinfo.h>
 #include <atalk/cnid.h>
+#include <atalk/compat.h>
 
 #define DIR_DOT_OR_DOTDOT(a) \
         ((strcmp(a, ".") == 0) || (strcmp(a, "..") == 0))
diff --git a/bin/aecho/.gitignore b/bin/aecho/.gitignore
deleted file mode 100644 (file)
index 76402fb..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-aecho
-.deps
-.libs
-.gitignore
-aecho.o
diff --git a/bin/aecho/Makefile.am b/bin/aecho/Makefile.am
deleted file mode 100644 (file)
index d3e487e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Makefile.am for bin/aecho/
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/sys
-
-bin_PROGRAMS = aecho
-
-aecho_SOURCES = aecho.c
-aecho_LDADD = $(top_builddir)/libatalk/libatalk.la
diff --git a/bin/aecho/aecho.c b/bin/aecho/aecho.c
deleted file mode 100644 (file)
index 274421b..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * $Id: aecho.c,v 1.9 2009-10-14 01:38:28 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-/*
- * AppleTalk Echo Protocol Client
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <errno.h>
-
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif /* HAVE_NETDB_H */
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/compat.h>
-#include <atalk/aep.h>
-#include <atalk/nbp.h>
-#include <atalk/netddp.h>
-#include <atalk/ddp.h>
-#include <atalk/util.h>
-
-/* FIXME/SOCKLEN_T: socklen_t is a unix98 feature */
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
-#endif /* ! SOCKLEN_T */
-
-static struct sockaddr_at      target;
-static int                     sock;
-static unsigned int            nsent = 0, nrecv = 0;
-static time_t                  totalms = 0, minms = -1, maxms = -1;
-static unsigned int            pings = 0;
-
-static void usage(char *);
-
-static void done(int sig _U_)
-{
-    if ( nsent) {
-       printf( "\n----%d.%d AEP Statistics----\n",
-               ntohs( target.sat_addr.s_net ), target.sat_addr.s_node );
-       printf( "%d packets sent, %d packets received, %d%% packet loss\n",
-               nsent, nrecv, (( nsent - nrecv ) * 100 ) / nsent );
-       if ( nrecv ) {
-           printf( "round-trip (ms)  min/avg/max = %ld/%ld/%ld\n",
-                   minms, totalms / nrecv, maxms );
-       }       
-    }
-    exit( 0 );
-}
-  
-static void aep_send(int sig _U_)
-{
-    struct timeval     tv;
-    char               *p, buf[ 1024 ];
-    static unsigned int        seq = 0;
-
-    p = buf;
-    *p++ = DDPTYPE_AEP;
-    *p++ = AEPOP_REQUEST;
-    memcpy( p, &seq, sizeof( unsigned int ));
-    p += sizeof( unsigned int );
-    seq++;
-
-    if ( gettimeofday( &tv, (struct timezone *)0 ) < 0 ) {
-       perror( "gettimeofday" );
-       exit( 1 );
-    }
-    memcpy( p, &tv, sizeof( struct timeval ));
-    p += sizeof( struct timeval );
-
-    if ( netddp_sendto( sock, buf, p - buf, 0, (struct sockaddr *) &target,
-           sizeof( struct sockaddr_at )) < 0 ) {
-       perror( "sendto" );
-       exit( 1 );
-    }
-    nsent++;
-    if (pings && nsent > pings) done(0);
-}
-
-int main(int ac, char **av)
-{
-    struct servent     *se;
-    struct sigaction   sv;
-    struct itimerval   it;
-    struct sockaddr_at sat, saddr;
-    struct timeval     tv, atv;
-    struct nbpnve      nn;
-    char               *obj = NULL, *type = "Workstation", *zone = "*";
-    int                        cc;
-    SOCKLEN_T          satlen;
-    unsigned int       seq;
-    time_t             ms;
-    char               buf[ 1024 ], *p;
-    unsigned char      port;
-
-    extern char                *optarg;
-    extern int         optind;
-  
-    memset(&saddr, 0, sizeof(saddr));
-    while (( cc = getopt( ac, av, "c:A:" )) != EOF ) {
-       switch ( cc ) {
-       case 'A':
-           if (!atalk_aton(optarg, &saddr.sat_addr)) {
-               fprintf(stderr, "Bad address.\n");
-               exit(1);
-           }
-           break;
-
-         case 'c' :
-           pings = atoi( optarg );
-           break;
-
-       default :
-           usage( av[ 0 ] );
-           exit( 1 );
-       }
-    }
-    if ( ac - optind != 1 ) {
-       usage( av[ 0 ] );
-       exit( 1 );
-    }
-    
-    /*
-     * Save the port, since nbp_lookup calls getservbyname() to get the
-     * nbp port.
-     */
-    if (( se = getservbyname( "echo", "ddp" )) == NULL ) 
-       port = 4;
-    else
-       port = ntohs( se->s_port );
-
-    memset( &target, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    target.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    target.sat_family = AF_APPLETALK;
-    if ( !atalk_aton( av[ optind ], &target.sat_addr )) {
-       if ( nbp_name( av[ optind ], &obj, &type, &zone ) || !obj ) {
-           fprintf( stderr, "Bad name: %s\n", av[ optind ] );
-           exit( 1 );
-       }
-       if ( nbp_lookup( obj, type, zone, &nn, 1, &saddr.sat_addr) <= 0 ) {
-           fprintf( stderr, "Can't find: %s\n", av[ optind ] );
-           exit( 1 );
-       }
-       memcpy( &target, &nn.nn_sat, sizeof( struct sockaddr_at ));
-    }
-    target.sat_port = port;
-
-    if ((sock = netddp_open(saddr.sat_addr.s_net || saddr.sat_addr.s_node ? 
-                        &saddr : NULL, NULL)) < 0) {
-       perror("ddp_open");
-       exit(1);
-    }        
-
-    sv.sa_handler = aep_send;
-    sigemptyset( &sv.sa_mask );
-    sigaddset( &sv.sa_mask, SIGINT );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGALRM, &sv, (struct sigaction *)0 ) < 0 ) {
-       perror( "sigaction" );
-       exit( 1 );
-    }
-
-    sv.sa_handler = done;
-    sigemptyset( &sv.sa_mask );
-    sigaddset( &sv.sa_mask, SIGALRM );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGINT, &sv, (struct sigaction *)0 ) < 0 ) {
-       perror( "sigaction" );
-       exit( 1 );
-    }
-
-    it.it_interval.tv_sec = 1L;
-    it.it_interval.tv_usec = 0L;
-    it.it_value.tv_sec = 1L;
-    it.it_value.tv_usec = 0L;
-
-    if ( setitimer( ITIMER_REAL, &it, (struct itimerval *)0 ) < 0 ) {
-       perror( "setitimer" );
-       exit( 1 );
-    }
-
-    for (;;) {
-       satlen = sizeof( struct sockaddr_at );
-       if (( cc = netddp_recvfrom( sock, buf, sizeof( buf ), 0, 
-                                   (struct sockaddr *) &sat,
-                                   &satlen )) < 0 ) {
-           if ( errno == EINTR ) {
-               errno = 0;
-               continue;
-           } else {
-               perror( "recvfrom" );
-               exit( 1 );
-           }
-       }
-       p = buf;
-       if ( *p++ != DDPTYPE_AEP || *p++ != AEPOP_REPLY ) {
-           fprintf( stderr, "%s: bad packet!\n", av[ 0 ] );
-           continue;
-       }
-       if ( gettimeofday( &tv, (struct timezone *)0 ) < 0 ) {
-           perror( "gettimeofday" );
-           exit( 1 );
-       }
-       memcpy( &seq, p, sizeof( unsigned int ));
-       p += sizeof( unsigned int );
-       memcpy( &atv, p, sizeof( struct timeval ));
-       nrecv++;
-       ms = ( tv.tv_sec - atv.tv_sec ) * 1000 +
-               ( tv.tv_usec - atv.tv_usec ) / 1000;
-       totalms += ms;
-       if ( ms > maxms ) {
-           maxms = ms;
-       }
-       if ( ms < minms || minms == -1 ) {
-           minms = ms;
-       }
-       printf( "%d bytes from %u.%u: aep_seq=%d. time=%ld. ms\n",
-               cc, ntohs( sat.sat_addr.s_net ), sat.sat_addr.s_node,
-               seq, ms );
-        if (pings && seq + 1 >= pings) done(0);
-    }
-}
-
-static void usage( char * av0 )
-{
-    fprintf( stderr, "usage:\t%s [-A source address ] [-c count] ( addr | nbpname )\n", av0 );
-    exit( 1 );
-}
index 3125f53ffb7ddd88c04305bc37fd80a3abc3e006..2d788baa7ee34a1dff54fe1091d244c0d5343d3a 100644 (file)
@@ -35,8 +35,7 @@
 #include <sys/param.h>
 #include <fcntl.h>
 #include <pwd.h>
-
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 #include <des.h>
 
diff --git a/bin/getzones/.gitignore b/bin/getzones/.gitignore
deleted file mode 100644 (file)
index 2cbaa2c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-getzones
-.deps
-.libs
-.gitignore
-getzones.o
diff --git a/bin/getzones/Makefile.am b/bin/getzones/Makefile.am
deleted file mode 100644 (file)
index e99d41f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Makefile.am for bin/getzones/
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/sys
-
-bin_PROGRAMS = getzones
-
-getzones_SOURCES = getzones.c
-getzones_LDADD = $(top_builddir)/libatalk/libatalk.la
diff --git a/bin/getzones/getzones.c b/bin/getzones/getzones.c
deleted file mode 100644 (file)
index b175710..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * $Id: getzones.c,v 1.9 2009-10-14 01:38:28 didg Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/param.h>
-#include <sys/uio.h>
-#include <sys/time.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif /* HAVE_NETDB_H */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-#include <atalk/unicode.h>
-#include <atalk/zip.h>
-
-static void print_zones(short n, char *buf);
-
-static void usage( char *s)
-{
-    fprintf( stderr, "usage:\t%s [-m | -l] [address]\n", s );
-    exit( 1 );
-}
-
-int main( int argc, char *argv[])
-{
-    struct atp_handle  *ah;
-    struct atp_block   atpb;
-    struct sockaddr_at saddr;
-    struct servent     *se;
-    char               reqdata[4], buf[ ATP_MAXDATA ];
-    struct iovec       iov;
-    short              temp, index = 0;
-    int                        c, myzoneflg = 0, localzonesflg = 0, errflg = 0;
-    extern int         optind;
-
-    reqdata[ 0 ] = ZIPOP_GETZONELIST;
-
-    while (( c = getopt( argc, argv, "ml" )) != EOF ) {
-       switch (c) {
-       case 'm':
-           if ( localzonesflg ) {
-               ++errflg;
-           }
-           ++myzoneflg;
-           reqdata[ 0 ] = ZIPOP_GETMYZONE;
-           break;
-       case 'l':
-           if ( myzoneflg ) {
-               ++errflg;
-           }
-           ++localzonesflg;
-           reqdata[ 0 ] = ZIPOP_GETLOCALZONES;
-           break;
-       default:
-           ++errflg;
-       }
-    }
-
-    if ( errflg || argc - optind > 1 ) {
-       usage( argv[ 0 ] );
-    }
-
-    memset( &saddr, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    saddr.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    saddr.sat_family = AF_APPLETALK;
-    if (( se = getservbyname( "zip", "ddp" )) == NULL )
-       saddr.sat_port = 6;
-    else 
-        saddr.sat_port = ntohs( se->s_port );
-
-    if ( argc == optind ) {
-       saddr.sat_addr.s_net = ATADDR_ANYNET;
-       saddr.sat_addr.s_node = ATADDR_ANYNODE;
-    } else {
-       if ( !atalk_aton( argv[ optind ], &saddr.sat_addr )) {
-           fprintf( stderr, "Bad address.\n" );
-           exit( 1 );
-       }
-    }
-
-    if (( ah = atp_open( ATADDR_ANYPORT, &saddr.sat_addr )) == NULL ) {
-       perror( "atp_open" );
-       exit( 1 );
-    }
-
-    index = ( myzoneflg ? 0 : 1 );
-    reqdata[1] = 0;
-
-    do {
-       atpb.atp_saddr = &saddr;
-       temp = htons( index );
-       memcpy( reqdata + 2, &temp, 2 );
-       atpb.atp_sreqdata = reqdata;
-       atpb.atp_sreqdlen = 4;
-       atpb.atp_sreqto = 2;
-       atpb.atp_sreqtries = 5;
-
-       /* send getzone request zones (or get my zone)
-       */
-       if ( atp_sreq( ah, &atpb, 1, 0 ) < 0 ) {
-           perror( "atp_sreq" );
-           exit( 1 );
-       }
-
-       iov.iov_base = buf;
-       iov.iov_len = ATP_MAXDATA;
-       atpb.atp_rresiov = &iov;
-       atpb.atp_rresiovcnt = 1;
-
-       if ( atp_rresp( ah, &atpb ) < 0 ) {
-           perror( "atp_rresp" );
-           exit( 1 );
-       }
-
-       memcpy( &temp, (char *) iov.iov_base + 2, 2 );
-       temp = ntohs( temp );
-       print_zones( temp, (char *) iov.iov_base+4 );
-       index += temp;
-    } while ( !myzoneflg && !((char *)iov.iov_base)[ 0 ] );
-
-    if ( atp_close( ah ) != 0 ) {
-       perror( "atp_close" );
-       exit( 1 );
-    }
-
-    exit( 0 );
-}
-
-
-/*
- * n:   number of zones in this packet
- * buf: zone length/name pairs
- */
-static void print_zones( short n, char *buf )
-{
-    size_t zone_len;
-    char *zone;
-
-    for ( ; n--; buf += (*buf) + 1 ) {
-
-        if ((size_t)(-1) == (zone_len = convert_string_allocate( CH_MAC,
-                       CH_UNIX, buf+1, *buf, &zone)) ) {
-            zone_len = *buf;
-            if (( zone = strdup(buf+1)) == NULL ) {
-               perror( "strdup" );
-               exit( 1 );
-            }
-        }
-
-       printf( "%.*s\n", (int)zone_len, zone );
-
-       free(zone);
-    }
-}
diff --git a/bin/nbp/.gitignore b/bin/nbp/.gitignore
deleted file mode 100644 (file)
index e70b05a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-Makefile
-Makefile.in
-nbplkup
-nbprgstr
-nbpunrgstr
-.deps
-.libs
-.gitignore
-nbplkup.o nbprgstr.o nbpunrgstr.o
diff --git a/bin/nbp/Makefile.am b/bin/nbp/Makefile.am
deleted file mode 100644 (file)
index c369c1e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Makefile.am for bin/nbp/
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/sys
-
-bin_PROGRAMS = nbplkup nbprgstr nbpunrgstr
-
-nbplkup_SOURCES = nbplkup.c
-nbplkup_LDADD = $(top_builddir)/libatalk/libatalk.la
-
-nbprgstr_SOURCES = nbprgstr.c
-nbprgstr_LDADD = $(top_builddir)/libatalk/libatalk.la
-
-nbpunrgstr_SOURCES = nbpunrgstr.c
-nbpunrgstr_LDADD = $(top_builddir)/libatalk/libatalk.la
diff --git a/bin/nbp/nbplkup.c b/bin/nbp/nbplkup.c
deleted file mode 100644 (file)
index a43ac41..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * $Id: nbplkup.c,v 1.9 2009-10-29 11:35:57 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/nbp.h>
-#include <atalk/util.h>
-#include <string.h>
-#include <stdio.h>
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-
-#include <atalk/unicode.h>
-
-static char *Obj = "=";
-static char *Type = "=";
-static char *Zone = "*";
-
-static void Usage(char *av0)
-{
-    char       *p;
-
-    if (( p = strrchr( av0, '/' )) == NULL ) {
-       p = av0;
-    } else {
-       p++;
-    }
-
-    printf( "Usage:\t%s [ -A address ] [ -r responses] [-m Mac charset] [ obj:type@zone ]\n", p );
-    exit( 1 );
-}
-
-int main(int ac, char **av)
-{
-    struct nbpnve      *nn;
-    char               *name;
-    int                        i, c, nresp = 1000;
-    struct at_addr      addr;
-    char               *obj = NULL;
-    size_t             obj_len;
-    charset_t          chMac = CH_MAC;
-    char *             convname;
-
-    extern char                *optarg;
-    extern int         optind;
-
-    memset(&addr, 0, sizeof(addr));
-    while (( c = getopt( ac, av, "r:A:m:" )) != EOF ) {
-       switch ( c ) {
-       case 'A':
-           if (!atalk_aton(optarg, &addr)) {
-               fprintf(stderr, "Bad address.\n");
-               exit(1);
-           }
-           break;
-       case 'r' :
-           nresp = atoi( optarg );
-           break;
-        case 'm':
-            if ((charset_t)-1 == (chMac = add_charset(optarg)) ) {
-               fprintf(stderr, "Invalid Mac charset.\n");
-               exit(1);
-           }
-            break;
-
-       default :
-           Usage( av[ 0 ] );
-           exit( 1 );
-       }
-    }
-
-    if (( nn = (struct nbpnve *)malloc( nresp * sizeof( struct nbpnve )))
-           == NULL ) {
-       perror( "malloc" );
-       exit( 1 );
-    }
-
-    if ( ac - optind > 1 ) {
-       Usage( av[ 0 ] );
-       exit( 1 );
-    }
-
-    /*
-     * Get default values from the environment. We need to copy out
-     * the results, here, since nbp_name returns it's parameters
-     * in static space, and we'll clobber them when we call it again
-     * later.
-     */
-    if (( name = getenv( "NBPLKUP" )) != NULL ) {
-       if ( nbp_name( name, &Obj, &Type, &Zone )) {
-           fprintf( stderr,
-                   "Environment variable syntax error: NBPLKUP = %s\n",
-                   name );
-           exit( 1 );
-       }
-
-       if (( name = (char *)malloc( strlen( Obj ) + 1 )) == NULL ) {
-           perror( "malloc" );
-           exit( 1 );
-       }
-       strcpy( name, Obj );
-       Obj = name;
-
-       if (( name = (char *)malloc( strlen( Type ) + 1 )) == NULL ) {
-           perror( "malloc" );
-           exit( 1 );
-       }
-       strcpy( name, Type );
-       Type = name;
-
-       if (( name = (char *)malloc( strlen( Zone ) + 1 )) == NULL ) {
-           perror( "malloc" );
-           exit( 1 );
-       }
-       strcpy( name, Zone );
-       Zone = name;
-
-    }
-
-    if ( ac - optind == 1 ) {
-       if ((size_t)(-1) == convert_string_allocate( CH_UNIX, chMac,
-                           av[ optind ], -1, &convname))
-            convname = av[ optind ];
-
-       if ( nbp_name( convname, &Obj, &Type, &Zone )) {
-           Usage( av[ 0 ] );
-           exit( 1 );
-       }
-    }
-
-    if (( c = nbp_lookup( Obj, Type, Zone, nn, nresp, &addr)) < 0 ) {
-       perror( "nbp_lookup" );
-       exit( -1 );
-    }
-    for ( i = 0; i < c; i++ ) {
-       
-       if ((size_t)(-1) == (obj_len = convert_string_allocate( chMac, 
-                       CH_UNIX, nn[ i ].nn_obj, nn[ i ].nn_objlen, &obj)) ) {
-            obj_len = nn[ i ].nn_objlen;
-            if (( obj = strdup(nn[ i ].nn_obj)) == NULL ) {
-               perror( "strdup" );
-               exit( 1 );
-           }
-        }
-
-       printf( "%31.*s:%-34.*s %u.%u:%u\n",
-               (int)obj_len, obj,
-               nn[ i ].nn_typelen, nn[ i ].nn_type,
-               ntohs( nn[ i ].nn_sat.sat_addr.s_net ),
-               nn[ i ].nn_sat.sat_addr.s_node,
-               nn[ i ].nn_sat.sat_port );
-
-       free(obj);
-    }
-
-    free(nn);
-    return 0;
-}
diff --git a/bin/nbp/nbprgstr.c b/bin/nbp/nbprgstr.c
deleted file mode 100644 (file)
index bef33a1..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * $Id: nbprgstr.c,v 1.9 2009-10-29 11:35:58 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/param.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/netddp.h>
-#include <atalk/nbp.h>
-#include <atalk/util.h>
-#include <atalk/unicode.h>
-
-static void Usage(char *av0)
-{
-    char       *p;
-
-    if (( p = strrchr( av0, '/' )) == NULL ) {
-       p = av0;
-    } else {
-       p++;
-    }
-
-    fprintf( stderr, "Usage: %s [ -A address ] [-m Mac charset] [ -p port] obj:type@zone\n", p );
-    exit( 1 );
-}
-
-int main(int ac, char **av)
-{
-    struct sockaddr_at addr;
-    struct at_addr      ataddr;
-    char               *Obj = NULL, *Type = NULL, *Zone = NULL;
-    char               *convname = NULL;
-    int                        s, c, port = 0;
-    charset_t          chMac = CH_MAC;
-    
-    extern char                *optarg;
-    extern int         optind;
-
-    memset(&ataddr, 0, sizeof(ataddr));
-    while (( c = getopt( ac, av, "p:A:m:" )) != EOF ) {
-       switch ( c ) {
-       case 'A':
-           if (!atalk_aton(optarg, &ataddr)) {
-               fprintf(stderr, "Bad address.\n");
-               exit(1);
-           }
-           break;
-
-        case 'm':
-            if ((charset_t)-1 == (chMac = add_charset(optarg)) ) {
-                fprintf(stderr, "Invalid Mac charset.\n");
-                exit(1);
-            }
-            break;
-
-       case 'p' :
-           port = atoi( optarg );
-           break;
-
-       default :
-           Usage( av[ 0 ] );
-       }
-    }
-
-    if ( ac - optind != 1 ) {
-       Usage( av[ 0 ] );
-    }
-
-    /* Convert the name */
-    if ((size_t)(-1) == convert_string_allocate(CH_UNIX, chMac,
-                        av[optind], -1, &convname))
-        convname = av[optind];
-
-    /*
-     * Get the name. If Type or Obj aren't specified, error.
-     */
-    if ( nbp_name( convname, &Obj, &Type, &Zone ) || !Obj || !Type ) {
-       Usage( av[ 0 ] );
-    }
-
-    memset(&addr, 0, sizeof(addr));
-    memcpy(&addr.sat_addr, &ataddr, sizeof(addr.sat_addr));
-    if ((s = netddp_open(&addr, NULL)) < 0)
-       return( -1 );
-
-    if ( port ) {
-       addr.sat_port = port;
-    }
-
-    if ( nbp_rgstr( &addr, Obj, Type, Zone ) < 0 ) {
-       perror( "nbp_rgstr" );
-       fprintf( stderr, "Can't register %s:%s@%s\n", Obj, Type,
-               Zone ? Zone : "*" );
-       exit( 1 );
-    }
-    netddp_close(s);
-
-    return 0;
-}
diff --git a/bin/nbp/nbpunrgstr.c b/bin/nbp/nbpunrgstr.c
deleted file mode 100644 (file)
index a4a9465..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * $Id: nbpunrgstr.c,v 1.10 2009-10-29 11:35:58 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/util.h>
-#include <atalk/nbp.h>
-
-#include <atalk/unicode.h>
-
-static void Usage(char *av0)
-{
-    char       *p;
-
-    if (( p = strrchr( av0, '/' )) == NULL ) {
-       p = av0;
-    } else {
-       p++;
-    }
-
-    fprintf( stderr, "Usage: %s [ -A address ] [ -m Mac charset] obj:type@zone\n", p );
-    exit( 1 );
-}
-
-int main(int ac, char **av)
-{
-    char               *Obj = NULL, *Type = NULL, *Zone = NULL;
-    char               *convname = NULL;
-    struct at_addr      addr;
-    int                 c;
-    charset_t          chMac = CH_MAC;
-
-    extern char                *optarg;
-    extern int         optind;
-    
-    memset(&addr, 0, sizeof(addr));
-    while ((c = getopt(ac, av, "A:m:")) != EOF) {
-      switch (c) {
-      case 'A':
-       if (!atalk_aton(optarg, &addr)) {
-         fprintf(stderr, "Bad address.\n");
-         exit(1);
-       }
-       break;
-      case 'm':
-        if ((charset_t)-1 == (chMac = add_charset(optarg)) ) {
-          fprintf(stderr, "Invalid Mac charset.\n");
-          exit(1);
-        }
-        break;
-
-      default:
-       Usage(av[0]);
-       break;
-      }
-    }
-
-    if (ac - optind != 1) {
-       Usage( av[ 0 ] );
-    }
-
-    /* Convert the name */
-    if ((size_t)(-1) == convert_string_allocate(CH_UNIX, chMac, 
-                        av[optind], -1, &convname))
-        convname = av[optind]; 
-
-    /*
-     * Get the name. If Type or Obj aren't specified, error.
-     */
-    if ( nbp_name( convname, &Obj, &Type, &Zone ) || !Obj || !Type ) {
-       Usage( av[ 0 ] );
-    }
-
-    if ( nbp_unrgstr( Obj, Type, Zone, &addr ) < 0 ) {
-       fprintf( stderr, "Can't unregister %s:%s@%s\n", Obj, Type,
-               Zone ? Zone : "*" );
-       exit( 1 );
-    }
-
-    return 0;
-}
diff --git a/bin/pap/.gitignore b/bin/pap/.gitignore
deleted file mode 100644 (file)
index 850951f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-pap
-papstatus
-.deps
-.libs
-.gitignore
-pap.o papstatus.o
diff --git a/bin/pap/Makefile.am b/bin/pap/Makefile.am
deleted file mode 100644 (file)
index 344cf72..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Makefile.am for bin/pap/
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/sys
-
-bin_PROGRAMS = pap papstatus
-
-pap_SOURCES = pap.c
-pap_LDADD = $(top_builddir)/libatalk/libatalk.la
-
-papstatus_SOURCES = papstatus.c
-papstatus_LDADD = $(top_builddir)/libatalk/libatalk.la
diff --git a/bin/pap/pap.c b/bin/pap/pap.c
deleted file mode 100644 (file)
index a8c97ad..0000000
+++ /dev/null
@@ -1,870 +0,0 @@
-/*
- * $Id: pap.c,v 1.14 2009-10-16 01:10:59 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <errno.h>
-#include <atalk/atp.h>
-#include <atalk/pap.h>
-#include <atalk/nbp.h>
-#include <atalk/util.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-#include <stdio.h>
-#include <string.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define FUCKED
-
-#define _PATH_PAPRC    ".paprc"
-
-/* Forward Declarations */
-static void updatestatus(char *s, int len);
-static int send_file(int fd, ATP atp, int lastfile);
-
-static void usage(char *path)
-{
-    char       *p;
-
-    if (( p = strrchr( path, '/' )) == NULL ) {
-       p = path;
-    } else {
-       p++;
-    }
-    fprintf( stderr,
-       "Usage:\t%s [ -A address ] [ -c ] [ -d ] [ -e ] [ -E ] [ -p printer ]\n"
-       "    [ -s statusfile ] [ -w ] [ -W ] [ FILES ]\n"
-       "  -A address    - printer Appletalk address\n"
-       "  -c            - take cuts (lie about wait time)\n"
-       "  -d            - enable debug\n"
-       "  -e            - send stdout to stderr\n"
-       "  -E            - don't wait for EOF from printer\n"
-       "  -p printer    - printer name\n"
-       "  -s statusfile - put current printer status in statusfile\n"
-       "  -w            - wait for printer status = 'waiting'\n"
-       "  -W            - wait for printer status = 'idle'\n"
-       "  FILES         - send FILES to printer\n"
-       , p );
-    exit( 2 );
-}
-
-static char *
-paprc(void)
-{
-    static char        s[ 32 + 1 + 32 + 1 + 32 ];
-    char       *name = NULL;
-    FILE       *f;
-
-    if (( f = fopen( _PATH_PAPRC, "r" )) == NULL ) {
-       if ( errno == ENOENT ) {
-           return( NULL );
-       } else {
-           perror( _PATH_PAPRC );
-           exit( 2 );
-       }
-    }
-    while ( fgets( s, sizeof( s ), f ) != NULL ) {
-       s[ strlen( s ) - 1 ] = '\0';    /* remove trailing newline */
-       if ( *s == '#' ) {
-           continue;
-       }
-       name = s;
-       break;
-    }
-    fclose( f );
-    return( name );
-}
-
-static char                    *printer = NULL;
-static char                    *status = NULL;
-static int                     noeof = 0;
-static int                     waitforprinter = 0;
-
-static unsigned char           connid, quantum, oquantum = PAP_MAXQUANTUM;
-static struct sockaddr_at      sat;
-
-static char                    cbuf[ 8 ];
-static struct nbpnve           nn;
-static ATP                     satp;
-
-static char            fbuf[ PAP_MAXQUANTUM ][ 4 + PAP_MAXDATA ];
-static struct iovec    rfiov[ PAP_MAXQUANTUM ] = {
-    { fbuf[ 0 ] + 4,   0 },
-    { fbuf[ 1 ] + 4,   0 },
-    { fbuf[ 2 ] + 4,   0 },
-    { fbuf[ 3 ] + 4,   0 },
-    { fbuf[ 4 ] + 4,   0 },
-    { fbuf[ 5 ] + 4,   0 },
-    { fbuf[ 6 ] + 4,   0 },
-    { fbuf[ 7 ] + 4,   0 },
-};
-
-static struct iovec    sniov[ PAP_MAXQUANTUM ] = {
-    { fbuf[ 0 ],       0 },
-    { fbuf[ 1 ],       0 },
-    { fbuf[ 2 ],       0 },
-    { fbuf[ 3 ],       0 },
-    { fbuf[ 4 ],       0 },
-    { fbuf[ 5 ],       0 },
-    { fbuf[ 6 ],       0 },
-    { fbuf[ 7 ],       0 },
-};
-
-static char            nbuf[ PAP_MAXQUANTUM ][ 4 + PAP_MAXDATA ];
-static struct iovec    rniov[ PAP_MAXQUANTUM ] = {
-    { nbuf[ 0 ],       0 },
-    { nbuf[ 1 ],       0 },
-    { nbuf[ 2 ],       0 },
-    { nbuf[ 3 ],       0 },
-    { nbuf[ 4 ],       0 },
-    { nbuf[ 5 ],       0 },
-    { nbuf[ 6 ],       0 },
-    { nbuf[ 7 ],       0 },
-};
-
-static struct iovec    sfiov[ PAP_MAXQUANTUM ] = {
-    { nbuf[ 0 ] + 4,   0 },
-    { nbuf[ 1 ] + 4,   0 },
-    { nbuf[ 2 ] + 4,   0 },
-    { nbuf[ 3 ] + 4,   0 },
-    { nbuf[ 4 ] + 4,   0 },
-    { nbuf[ 5 ] + 4,   0 },
-    { nbuf[ 6 ] + 4,   0 },
-    { nbuf[ 7 ] + 4,   0 },
-};
-
-static int debug;
-
-int main( int ac, char **av)
-{
-    ATP                        atp;
-    struct atp_block   atpb;
-    int                        c, err = 0, fd, cuts = 0;
-    char               *obj = NULL, *type = "LaserWriter", *zone = "*";
-    struct timeval     stv, tv;
-    char               rbuf[ ATP_MAXDATA ];
-    struct iovec       iov;
-    unsigned short     waiting, result;
-    int                        connattempts = 10;
-    int                        waitforidle = 0;
-    struct at_addr      addr;
-
-    extern char                *optarg;
-    extern int         optind;
-
-    memset(&addr, 0, sizeof(addr));
-    while (( c = getopt( ac, av, "dWwcep:s:EA:" )) != EOF ) {
-       switch ( c ) {
-#ifdef FUCKED
-       case 'w' :
-           waitforprinter = 1;
-           break;
-
-       case 'W' :
-           waitforidle = 1;
-           break;
-#endif /* FUCKED */
-
-       /* enable debugging */
-       case 'd' :
-           debug++;
-           break;
-
-       case 'c' :
-           cuts++;
-           break;
-
-       case 'e' :      /* send stdout to stderr */
-           dup2( 2, 1 );
-           break;
-
-       case 'p' :
-           printer = optarg;
-           break;
-
-       case 's' :
-           status = optarg;
-           break;
-
-       case 'E' :
-           noeof = 1;
-           break;
-          
-       case 'A':
-           if (!atalk_aton(optarg, &addr)) {
-             fprintf(stderr, "Bad address.\n");
-             exit(1);
-           }
-           break;
-
-       default :
-           err++;
-       }
-    }
-    if ( err ) {
-       usage( *av );
-    }
-    if ( printer == NULL && (( printer = paprc()) == NULL )) {
-       fprintf( stderr, "No printer specified and ./.paprc not found.\n" );
-       exit( 2 );
-    }
-
-    /*
-     * Open connection.
-     */
-    if ( nbp_name( printer, &obj, &type, &zone ) < 0 ) {
-       fprintf( stderr, "%s: Bad name\n", printer );
-       exit( 2 );
-    }
-    if ( obj == NULL ) {
-       fprintf( stderr, "%s: Bad name\n", printer );
-       exit( 2 );
-    }
-
-    if ( nbp_lookup( obj, type, zone, &nn, 1, &addr ) <= 0 ) {
-       if ( errno != 0 ) {
-           perror( "nbp_lookup" );
-           exit( 2 );
-       }
-       fprintf( stderr, "%s:%s@%s: NBP Lookup failed\n", obj, type, zone );
-       exit( 1 );
-    }
-
-    if ( isatty( 1 )) {
-       printf( "Trying %u.%d:%d ...\n", ntohs( nn.nn_sat.sat_addr.s_net ),
-               nn.nn_sat.sat_addr.s_node, nn.nn_sat.sat_port );
-    }
-
-    if (( atp = atp_open( ATADDR_ANYPORT, &addr )) == NULL ) {
-       perror( "atp_open" );
-       exit( 2 );
-    }
-    if (( satp = atp_open( ATADDR_ANYPORT, &addr )) == NULL ) {
-       perror( "atp_open" );
-       exit( 2 );
-    }
-
-    while ( waitforidle ) {
-       char    st_buf[ 1024 ]; /* XXX too big */
-
-       cbuf[ 0 ] = 0;
-       cbuf[ 1 ] = PAP_SENDSTATUS;
-       cbuf[ 2 ] = cbuf[ 3 ] = 0;
-       atpb.atp_saddr = &nn.nn_sat;
-       atpb.atp_sreqdata = cbuf;
-       atpb.atp_sreqdlen = 4;  /* bytes in SendStatus request */
-       atpb.atp_sreqto = 2;            /* retry timer */
-       atpb.atp_sreqtries = 5;         /* retry count */
-       if ( atp_sreq( satp, &atpb, 1, 0 ) < 0 ) {
-           perror( "atp_sreq" );
-           exit( 1 );
-       }
-
-       if(debug){ printf( "SENDSTATUS >\n" ), fflush( stdout );}
-
-       atpb.atp_saddr = &nn.nn_sat;
-       rniov[ 0 ].iov_len = PAP_MAXDATA + 4;
-       atpb.atp_rresiov = rniov;
-       atpb.atp_rresiovcnt = 1;
-       if ( atp_rresp( satp, &atpb ) < 0 ) {
-           perror( "atp_rresp" );
-           continue;
-       }
-
-#ifndef NONZEROSTATUS
-       /*
-        * The stinking LaserWriter IINTX puts crap in this
-        * field.
-        */
-       if ( ((char *)rniov[ 0 ].iov_base)[ 0 ] != 0 ) {
-           fprintf( stderr, "Bad status response!\n" );
-           exit( 1 );
-       }
-#endif /* NONZEROSTATUS */
-
-       if ( ((char *)rniov[ 0 ].iov_base)[ 1 ] != PAP_STATUS ||
-               atpb.atp_rresiovcnt != 1 ) {
-           fprintf( stderr, "Bad status response!\n" );
-           exit( 1 );
-       }
-
-       if(debug){ printf( "< STATUS\n" ), fflush( stdout );}
-
-       memcpy( st_buf, (char *) rniov[ 0 ].iov_base + 9, 
-               ((char *)rniov[ 0 ].iov_base)[ 8 ] );
-       st_buf[ (int) ((char *)rniov[ 0 ].iov_base)[ 8 ]] = '\0';
-       if ( strstr( st_buf, "idle" ) != NULL ) {
-           waitforidle = 0;
-       } else {
-           updatestatus( (char *) rniov[ 0 ].iov_base + 9,
-                   ((char *)rniov[ 0 ].iov_base)[ 8 ] );
-           sleep( 5 );
-       }
-    }
-
-    cbuf[ 0 ] = connid = getpid() & 0xff;
-    cbuf[ 1 ] = PAP_OPEN;
-    cbuf[ 2 ] = cbuf[ 3 ] = 0;
-    cbuf[ 4 ] = atp_sockaddr( atp )->sat_port;
-    cbuf[ 5 ] = oquantum;      /* flow quantum */
-    if ( gettimeofday( &stv, NULL ) < 0 ) {
-       perror( "gettimeofday" );
-       exit( 2 );
-    }
-    for (;;) {
-       if ( cuts ) {
-           waiting = 0xffff;
-       } else {
-           if ( gettimeofday( &tv, NULL ) < 0 ) {
-               perror( "gettimeofday" );
-               exit( 2 );
-           }
-           waiting = htons( tv.tv_sec - stv.tv_sec );
-       }
-       memcpy(cbuf +  6, &waiting, sizeof( waiting ));
-
-       atpb.atp_saddr = &nn.nn_sat;
-       atpb.atp_sreqdata = cbuf;
-       atpb.atp_sreqdlen = 8;          /* bytes in OpenConn request */
-       atpb.atp_sreqto = 2;            /* retry timer */
-       atpb.atp_sreqtries = 5;         /* retry count */
-       if ( atp_sreq( atp, &atpb, 1, ATP_XO ) < 0 ) {
-           perror( "atp_sreq" );
-           exit( 1 );
-       }
-
-       if(debug){ printf( "OPEN >\n" ), fflush( stdout );}
-
-       iov.iov_base = rbuf;
-       iov.iov_len = sizeof( rbuf );
-       atpb.atp_rresiov = &iov;
-       atpb.atp_rresiovcnt = 1;
-       if ( atp_rresp( atp, &atpb ) < 0 ) {
-           perror( "atp_rresp" );
-           if ( connattempts-- <= 0 ) {
-               fprintf( stderr, "Can't connect!\n" );
-               exit( 1 );
-           }
-           continue;
-       }
-
-       /* sanity */
-       if ( iov.iov_len < 8 || (unsigned char)rbuf[ 0 ] != connid ||
-               rbuf[ 1 ] != PAP_OPENREPLY ) {
-           fprintf( stderr, "Bad response!\n" );
-           continue;   /* This is weird, since TIDs must match... */
-       }
-
-       if(debug){ printf( "< OPENREPLY\n" ), fflush( stdout );}
-
-       if ( isatty( 1 )) {
-           printf( "%.*s\n", (int)iov.iov_len - 9, (char *) iov.iov_base + 9 );
-       }
-       updatestatus( (char *) iov.iov_base + 9, iov.iov_len - 9 );
-
-       memcpy( &result, rbuf +  6,  sizeof( result ));
-       if ( result != 0 ) {
-           sleep( 2 );
-       } else {
-           memcpy( &sat, &nn.nn_sat, sizeof( struct sockaddr_at ));
-           sat.sat_port = rbuf[ 4 ];
-           quantum = rbuf[ 5 ];
-           break;
-       }
-    }
-
-    if ( isatty( 1 )) {
-       printf( "Connected to %.*s:%.*s@%.*s.\n",
-               nn.nn_objlen, nn.nn_obj,
-               nn.nn_typelen, nn.nn_type,
-               nn.nn_zonelen, nn.nn_zone );
-    }
-
-    if ( optind == ac ) {
-       send_file( 0, atp, 1 );
-    } else {
-       for (; optind < ac; optind++ ) {
-           if ( strcmp( av[ optind ], "-" ) == 0 ) {
-               fd = 0;
-           } else if (( fd = open( av[ optind ], O_RDONLY )) < 0 ) {
-               perror( av[ optind ] );
-               continue;
-           }
-           send_file( fd, atp, ( optind == ac - 1 ) ? 1 : 0 );
-           if ( fd != 0 ) {
-               close( fd );
-           }
-       }
-    }
-
-    /*
-     * Close connection.
-     */
-    cbuf[ 0 ] = connid;
-    cbuf[ 1 ] = PAP_CLOSE;
-    cbuf[ 2 ] = cbuf[ 3 ] = 0;
-
-    atpb.atp_saddr = &sat;
-    atpb.atp_sreqdata = cbuf;
-    atpb.atp_sreqdlen = 4;             /* bytes in CloseConn request */
-    atpb.atp_sreqto = 2;               /* retry timer */
-    atpb.atp_sreqtries = 5;            /* retry count */
-    if ( atp_sreq( atp, &atpb, 1, ATP_XO ) < 0 ) {
-       perror( "atp_sreq" );
-       exit( 1 );
-    }
-
-       if(debug){ printf( "CLOSE >\n" ), fflush( stdout );}
-
-    iov.iov_base = rbuf;
-    iov.iov_len = sizeof( rbuf );
-    atpb.atp_rresiov = &iov;
-    atpb.atp_rresiovcnt = 1;
-    if ( atp_rresp( atp, &atpb ) < 0 ) {
-       perror( "atp_rresp" );
-       exit( 1 );
-    }
-
-    /* sanity */
-    if ( iov.iov_len != 4 || rbuf[ 1 ] != PAP_CLOSEREPLY ) {
-       fprintf( stderr, "Bad response!\n" );
-       exit( 1 );
-    }
-
-#ifndef ZEROCONNID
-    /*
-     * The AGFA Viper Rip doesn't have the connection id in the close request.
-     */
-    if ((unsigned char)rbuf[ 0 ] != connid ) {
-       fprintf( stderr, "Bad connid in close!\n" );
-       exit( 1 );
-    }
-#endif /* ZEROCONNID */
-
-       if(debug){ printf( "< CLOSEREPLY\n" ), fflush( stdout );}
-
-    if ( isatty( 1 )) {
-       printf( "Connection closed.\n" );
-    }
-    exit( 0 );
-}
-
-static int             data = 0;
-static unsigned char   port;
-static u_int16_t       seq = 0;
-
-static int send_file( int fd, ATP atp, int lastfile)
-{
-    struct timeval     stv, tv;
-    struct sockaddr_at ssat;
-    struct atp_block   atpb;
-    fd_set             fds;
-    int                        fiovcnt = 0, eof = 0, senteof = 0, to = 0;
-    int                        cc, i;
-    unsigned short     netseq;
-
-    if ( gettimeofday( &stv, NULL ) < 0 ) {
-       perror( "gettimeofday" );
-       exit( 2 );
-    }
-
-    /*
-     * Ask for more data.
-     */
-    cbuf[ 0 ] = connid;
-    cbuf[ 1 ] = PAP_READ;
-    if ( ++seq == 0 ) seq = 1;
-    netseq = htons( seq );
-    memcpy( cbuf +  2, &netseq, sizeof( netseq ));
-    atpb.atp_saddr = &sat;
-    atpb.atp_sreqdata = cbuf;
-    atpb.atp_sreqdlen = 4;             /* bytes in SendData request */
-    atpb.atp_sreqto = 15;              /* retry timer */
-    atpb.atp_sreqtries = -1;           /* retry count */
-    if ( atp_sreq( atp, &atpb, oquantum, ATP_XO ) < 0 ) {
-       perror( "atp_sreq" );
-       exit( 1 );
-    }
-
-       if(debug){ printf( "READ %d >\n", seq ), fflush( stdout );}
-
-    for (;;) {
-       if ( gettimeofday( &tv, NULL ) < 0 ) {
-           perror( "gettimeofday" );
-           exit( 2 );
-       }
-
-       if (( tv.tv_sec - stv.tv_sec ) >= 60 ) {
-           stv = tv;
-
-           /*
-            * Send a tickle.
-            */
-           cbuf[ 0 ] = connid;
-           cbuf[ 1 ] = PAP_TICKLE;
-           cbuf[ 2 ] = cbuf[ 3 ] = 0;
-           atpb.atp_saddr = &sat;
-           atpb.atp_sreqdata = cbuf;
-           atpb.atp_sreqdlen = 4;              /* bytes in Tickle request */
-           atpb.atp_sreqto = 0;                /* retry timer */
-           atpb.atp_sreqtries = 1;             /* retry count */
-           if ( atp_sreq( satp, &atpb, 0, 0 ) < 0 ) {
-               perror( "atp_sreq" );
-               exit( 1 );
-           }
-
-       if(debug){ printf( "TICKLE >\n" ), fflush( stdout );}
-       }
-
-       tv.tv_sec = stv.tv_sec + 60 - tv.tv_sec;
-       tv.tv_usec = 0;
-
-       FD_ZERO( &fds );
-       if ( !waitforprinter && !eof && fiovcnt == 0 ) {
-           FD_SET( fd, &fds );
-       }
-       FD_SET( atp_fileno( atp ), &fds );
-
-       if (( cc = select( FD_SETSIZE, &fds, NULL, NULL, &tv )) < 0 ) {
-           perror( "select" );
-           exit( 2 );
-       }
-
-       /*
-        * A timeout has occured. Keep track of it.
-        */
-       if ( cc == 0 ) {
-           if ( to++ > 2 ) {
-               fprintf( stderr, "Connection timed out.\n" );
-               exit( 1 );
-           }
-           continue;
-       }
-
-       /*
-        * Read data.
-        */
-       if ( !fiovcnt && FD_ISSET( fd, &fds )) {
-           for ( i = 0; i < quantum; i++ ) {
-               rfiov[ i ].iov_len = PAP_MAXDATA;
-           }
-           if (( cc = readv( fd, rfiov, quantum )) < 0 ) {
-               perror( "readv" );
-               exit( 2 );
-           }
-           if ( cc == 0 ) {
-               eof = 1;
-           }
-           fiovcnt = cc / PAP_MAXDATA + ( cc % PAP_MAXDATA > 0 );
-           for ( i = 0; cc > 0; i++ ) {
-               rfiov[ i ].iov_len = ( cc > PAP_MAXDATA ) ? PAP_MAXDATA : cc;
-               cc -= ( cc > PAP_MAXDATA ) ? PAP_MAXDATA : cc;
-           }
-       }
-
-       if ( FD_ISSET( atp_fileno( atp ), &fds )) {
-           ssat = sat;
-           ssat.sat_port = ATADDR_ANYPORT;
-           switch( atp_rsel( atp, &ssat, ATP_TRESP | ATP_TREQ )) {
-           case ATP_TREQ :
-               atpb.atp_saddr = &ssat;
-               atpb.atp_rreqdata = cbuf;
-               atpb.atp_rreqdlen = sizeof( cbuf );
-               if ( atp_rreq( atp, &atpb ) < 0 ) {
-                   perror( "atp_rreq" );
-                   exit( 1 );
-               }
-
-               if ( (unsigned char)cbuf[ 0 ] != connid ) {
-                   break;
-               }
-
-               /* reset timeout counter for all valid requests */
-               to = 0;
-
-               switch ( cbuf[ 1 ] ) {
-               case PAP_READ :
-                   memcpy( cbuf +  2, &netseq, sizeof( netseq ));
-       if(debug){ printf( "< READ %d\n", ntohs( netseq )), fflush( stdout );}
-#ifdef notdef
-                   if ( netseq != 0 ) {
-                       if ( rseq != ntohs( netseq )) {
-       if(debug){ printf( "| DUP %d\n", rseq ), fflush( stdout );}
-                           break;
-                       }
-                       if ( rseq++ == 0xffff ) rseq = 1;
-                   }
-#endif /* notdef */
-
-                   data = 1;
-                   port = ssat.sat_port;
-                   break;
-
-               case PAP_CLOSE :
-
-       if(debug){ printf( "< CLOSE\n" ), fflush( stdout );}
-
-                   /*
-                    * Respond to the close request, and fail.
-                    */
-                   sniov[ 0 ].iov_len = 4;
-                   ((char *)sniov[ 0 ].iov_base)[ 0 ] = connid;
-                   ((char *)sniov[ 0 ].iov_base)[ 1 ] = PAP_CLOSEREPLY;
-                   ((char *)sniov[ 0 ].iov_base)[ 2 ] =
-                           ((char *)sniov[ 0 ].iov_base)[ 3 ] = 0;
-                   atpb.atp_sresiov = sniov;
-                   atpb.atp_sresiovcnt = 1;
-                   if ( atp_sresp( atp, &atpb ) < 0 ) {
-                       perror( "atp_sresp" );
-                       exit( 1 );
-                   }
-
-       if(debug){ printf( "CLOSEREPLY >\n" ), fflush( stdout );}
-
-                   fprintf( stderr, "Connection closed by foreign host.\n" );
-                   exit( 1 );
-
-               case PAP_TICKLE :
-
-       if(debug){ printf( "< TICKLE\n" ), fflush( stdout );}
-
-                   break;
-               default :
-                   fprintf( stderr, "Bad PAP request!\n" );
-                   exit( 1 );
-               }
-               break;
-
-           case ATP_TRESP :
-               /* reset timeout counter for all valid requests */
-               to = 0;
-
-               atpb.atp_saddr = &ssat;
-               for ( i = 0; i < oquantum; i++ ) {
-                   rniov[ i ].iov_len = PAP_MAXDATA + 4;
-               }
-               atpb.atp_rresiov = rniov;
-               atpb.atp_rresiovcnt = oquantum;
-               if ( atp_rresp( atp, &atpb ) < 0 ) {
-                   perror( "atp_rresp" );
-                   exit( 1 );
-               }
-
-#ifndef ZEROCONNID
-               /*
-                * The HP LJIIISI w/ BridgePort LocalTalk card sends
-                * zero instead of the connid.
-                */
-               if ( ((unsigned char *)rniov[ 0 ].iov_base)[ 0 ] != connid ) {
-                   fprintf( stderr, "Bad data response!\n" );
-                   exit( 1 );
-               }
-#endif /* ZEROCONNID */
-               if ( ((char *)rniov[ 0 ].iov_base)[ 1 ] != PAP_DATA ) {
-                   fprintf( stderr, "Bad data response!\n" );
-                   exit( 1 );
-               }
-
-               for ( cc = 0, i = 0; i < atpb.atp_rresiovcnt; i++ ) {
-                   sfiov[ i ].iov_len = rniov[ i ].iov_len - 4;
-                   cc += sfiov[ i ].iov_len;
-               }
-               if ( cc && writev( 1, sfiov, atpb.atp_rresiovcnt ) < cc ) {
-                   perror( "writev" );
-                   exit( 2 );
-               }
-
-               /* eof */
-               if ( ((char *)rniov[ 0 ].iov_base)[ 2 ] ) {
-
-       if(debug){ printf( "< DATA (eof)\n" ), fflush( stdout );}
-
-                   return( 0 );
-               }
-
-       if(debug){ printf( "< DATA\n" ), fflush( stdout );}
-
-
-               /*
-                * Ask for more data.
-                */
-               cbuf[ 0 ] = connid;
-               cbuf[ 1 ] = PAP_READ;
-               if ( ++seq == 0 ) seq = 1;
-               netseq = htons( seq );
-               memcpy( cbuf +  2, &netseq, sizeof( netseq ));
-               atpb.atp_saddr = &sat;
-               atpb.atp_sreqdata = cbuf;
-               atpb.atp_sreqdlen = 4;          /* bytes in SendData request */
-               atpb.atp_sreqto = 15;           /* retry timer */
-               atpb.atp_sreqtries = -1;        /* retry count */
-               if ( atp_sreq( atp, &atpb, oquantum, ATP_XO ) < 0 ) {
-                   perror( "atp_sreq" );
-                   exit( 1 );
-               }
-
-       if(debug){ printf( "READ %d >\n", seq ), fflush( stdout );}
-
-               break;
-
-           case 0:
-
-       if(debug){ printf( "| RETRANS\n" ), fflush( stdout );}
-
-               break;
-
-           default:
-               perror( "atp_rsel" );
-               exit( 1 );
-           }
-       }
-
-       /*
-        * Send whatever is pending.
-        */
-       if ( !waitforprinter && !senteof && data && ( fiovcnt || eof )) {
-           ssat.sat_port = port;
-           atpb.atp_saddr = &ssat;
-           if ( fiovcnt ) {
-               for ( i = 0; i < fiovcnt; i++ ) {
-                   sniov[ i ].iov_len = rfiov[ i ].iov_len + 4;
-                   ((char *)sniov[ i ].iov_base)[ 0 ] = connid;
-                   ((char *)sniov[ i ].iov_base)[ 1 ] = PAP_DATA;
-                   senteof = ((char *)sniov[ i ].iov_base)[ 2 ] = eof;
-                   ((char *)sniov[ i ].iov_base)[ 3 ] = 0;
-               }
-           } else {
-               sniov[ 0 ].iov_len = 4;
-               ((char *)sniov[ 0 ].iov_base)[ 0 ] = connid;
-               ((char *)sniov[ 0 ].iov_base)[ 1 ] = PAP_DATA;
-               senteof = ((char *)sniov[ 0 ].iov_base)[ 2 ] = eof;
-               ((char *)sniov[ 0 ].iov_base)[ 3 ] = 0;
-           }
-           atpb.atp_sresiov = sniov;
-           atpb.atp_sresiovcnt = fiovcnt ? fiovcnt : 1;
-           if ( atp_sresp( atp, &atpb ) < 0 ) {
-               perror( "atp_sresp" );
-               exit( 1 );
-           }
-           data = fiovcnt = 0;
-
-       if(debug){ printf( "DATA %s\n", eof ? "(eof) >" : ">" ), fflush( stdout );}
-
-           /*
-            * The Apple LaserWriter IIf, the HP LWIIISi, and IV, don't
-            * seem to send us an EOF on large jobs.  To work around
-            * this heinous protocol violation, we won't wait for their
-            * EOF before closing.
-            */
-           if ( eof && noeof && lastfile ) {
-               return( 0 );
-           }
-       } else {
-           /*
-            * If we can't send data right now, go ahead and get the
-            * status. This is cool, because we get here reliably
-            * if there is a problem.
-            */
-           cbuf[ 0 ] = 0;
-           cbuf[ 1 ] = PAP_SENDSTATUS;
-           cbuf[ 2 ] = cbuf[ 3 ] = 0;
-           atpb.atp_saddr = &nn.nn_sat;
-           atpb.atp_sreqdata = cbuf;
-           atpb.atp_sreqdlen = 4;      /* bytes in SendStatus request */
-           atpb.atp_sreqto = 2;                /* retry timer */
-           atpb.atp_sreqtries = 5;             /* retry count */
-           if ( atp_sreq( satp, &atpb, 1, 0 ) < 0 ) {
-               perror( "atp_sreq" );
-               exit( 1 );
-           }
-
-       if(debug){ printf( "SENDSTATUS >\n" ), fflush( stdout );}
-
-           atpb.atp_saddr = &nn.nn_sat;
-           rniov[ 0 ].iov_len = PAP_MAXDATA + 4;
-           atpb.atp_rresiov = rniov;
-           atpb.atp_rresiovcnt = 1;
-           if ( atp_rresp( satp, &atpb ) < 0 ) {
-               perror( "atp_rresp" );
-               continue;
-           }
-
-#ifndef NONZEROSTATUS
-           /*
-            * The stinking LaserWriter IINTX puts crap in this
-            * field.
-            */
-           if ( ((char *)rniov[ 0 ].iov_base)[ 0 ] != 0 ) {
-               fprintf( stderr, "Bad status response!\n" );
-               exit( 1 );
-           }
-#endif /* NONZEROSTATUS */
-
-           if ( ((char *)rniov[ 0 ].iov_base)[ 1 ] != PAP_STATUS ||
-                   atpb.atp_rresiovcnt != 1 ) {
-               fprintf( stderr, "Bad status response!\n" );
-               exit( 1 );
-           }
-
-       if(debug){ printf( "< STATUS\n" ), fflush( stdout );}
-
-#ifdef FUCKED
-           if ( waitforprinter ) {
-               char    st_buf[ 1024 ]; /* XXX too big */
-
-               memcpy( st_buf, (char *) rniov[ 0 ].iov_base + 9, 
-                       ((char *)rniov[ 0 ].iov_base)[ 8 ] );
-               st_buf[ (int) ((char *)rniov[ 0 ].iov_base)[ 8 ]] = '\0';
-               if ( strstr( st_buf, "waiting" ) != NULL ) {
-                   waitforprinter = 0;
-               }
-           }
-#endif /* FUCKED */
-
-           updatestatus( (char *) rniov[ 0 ].iov_base + 9,
-                   ((char *)rniov[ 0 ].iov_base)[ 8 ] );
-       }
-    }
-}
-
-static void updatestatus(char *s, int len)
-{
-    int                        fd = -1;
-    struct iovec       iov[ 3 ];
-
-    if ( status ) {
-       if (( fd = open( status, O_WRONLY|O_TRUNC )) < 0 ) {
-           perror( status );
-           status = NULL;
-       }
-    }
-
-    if ( fd < 0 ) {
-       fd = 2;
-    }
-
-    iov[ 0 ].iov_base = "%%[ ";
-    iov[ 0 ].iov_len = 4;
-    iov[ 1 ].iov_base = s;
-    iov[ 1 ].iov_len = len;
-    iov[ 2 ].iov_base = " ]%%\n";
-    iov[ 2 ].iov_len = 5;
-
-    writev( fd, iov, 3 );
-    if ( status ) {
-       close( fd );
-    }
-}
diff --git a/bin/pap/papstatus.c b/bin/pap/papstatus.c
deleted file mode 100644 (file)
index 0ada9c0..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * $Id: papstatus.c,v 1.7 2009-10-14 01:38:28 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/file.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <errno.h>
-#include <atalk/atp.h>
-#include <atalk/pap.h>
-#include <atalk/nbp.h>
-#include <atalk/util.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define _PATH_PAPRC    ".paprc"
-
-/* Forward Declaration */
-static void getstatus(ATP atp, struct sockaddr_at *sat);
-
-static void usage(char *path)
-{
-    char       *p;
-
-    if (( p = strrchr( path, '/' )) == NULL ) {
-       p = path;
-    } else {
-       p++;
-    }
-    fprintf( stderr,
-       "Usage:\t%s [ -A address ] [ -p printername ]\n", p );
-    exit( 1 );
-}
-
-static char *
-paprc(void)
-{
-    static char        s[ 32 + 1 + 32 + 1 + 32 ];
-    char       *name = NULL;
-    FILE       *f;
-
-    if (( f = fopen( _PATH_PAPRC, "r" )) == NULL ) {
-       return( NULL );
-    }
-    while ( fgets( s, sizeof( s ), f ) != NULL ) {
-       s[ strlen( s ) - 1 ] = '\0';    /* remove trailing newline */
-       if ( *s == '#' ) {
-           continue;
-       }
-       name = s;
-       break;
-    }
-    fclose( f );
-    return( name );
-}
-
-static char                    *printer = NULL;
-
-static char                    cbuf[ 8 ];
-static struct nbpnve           nn;
-
-int main( int ac, char **av)
-{
-    ATP                        atp;
-    int                        wait, c, err = 0;
-    char               *obj = NULL, *type = "LaserWriter", *zone = "*";
-    struct at_addr      addr;
-
-    extern char                *optarg;
-    extern int         optind;
-
-    memset(&addr, 0, sizeof(addr));
-    while (( c = getopt( ac, av, "p:s:A:" )) != EOF ) {
-       switch ( c ) {
-       case 'A':
-           if (!atalk_aton(optarg, &addr)) {
-             fprintf(stderr, "Bad address.\n");
-             exit(1);
-           }
-           break;
-       case 'p' :
-           printer = optarg;
-           break;
-
-       default :
-           fprintf( stderr, "Unknown option: '%c'\n", c );
-           err++;
-       }
-    }
-    if ( err ) {
-       usage( *av );
-    }
-    if ( printer == NULL && (( printer = paprc()) == NULL )) {
-       usage( *av );
-    }
-
-    /*
-     * Open connection.
-     */
-    if ( nbp_name( printer, &obj, &type, &zone ) < 0 ) {
-       fprintf( stderr, "%s: Bad name\n", printer );
-       exit( 1 );
-    }
-    if ( obj == NULL ) {
-       fprintf( stderr, "%s: Bad name\n", printer );
-       exit( 1 );
-    }
-    if ( nbp_lookup( obj, type, zone, &nn, 1, &addr ) <= 0 ) {
-       if ( errno != 0 ) {
-           perror( "nbp_lookup" );
-       } else {
-           fprintf( stderr, "%s:%s@%s: NBP Lookup failed\n", obj, type, zone );
-       }
-       exit( 1 );
-    }
-
-    if (( atp = atp_open( ATADDR_ANYPORT, &addr )) == NULL ) {
-       perror( "atp_open" );
-       exit( 1 );
-    }
-
-    if ( optind == ac ) {
-       getstatus( atp, &nn.nn_sat );
-       exit( 0 );
-    }
-    if ( optind - ac > 1 ) {
-       usage( *av );
-    }
-    wait = atoi( av[ optind ] );
-    for (;;) {
-       getstatus( atp, &nn.nn_sat );
-       sleep( wait );
-    }
-
-    return 0;
-}
-
-static void getstatus(ATP atp, struct sockaddr_at *sat)
-{
-    struct iovec       iov;
-    struct atp_block   atpb;
-    char               rbuf[ ATP_MAXDATA ];
-
-    cbuf[ 0 ] = 0;
-    cbuf[ 1 ] = PAP_SENDSTATUS;
-    cbuf[ 2 ] = cbuf[ 3 ] = 0;
-
-    atpb.atp_saddr = sat;
-    atpb.atp_sreqdata = cbuf;
-    atpb.atp_sreqdlen = 4;             /* bytes in SendStatus request */
-    atpb.atp_sreqto = 2;               /* retry timer */
-    atpb.atp_sreqtries = 5;            /* retry count */
-    if ( atp_sreq( atp, &atpb, 1, ATP_XO ) < 0 ) {
-       perror( "atp_sreq" );
-       exit( 1 );
-    }
-
-    iov.iov_base = rbuf;
-    iov.iov_len = sizeof( rbuf );
-    atpb.atp_rresiov = &iov;
-    atpb.atp_rresiovcnt = 1;
-    if ( atp_rresp( atp, &atpb ) < 0 ) {
-       perror( "atp_rresp" );
-       exit( 1 );
-    }
-
-    /* sanity */
-    if ( iov.iov_len < 8 ||
-           rbuf[ 1 ] != PAP_STATUS ) {
-       fprintf( stderr, "Bad response!\n" );
-       return; /* This is weird, since TIDs must match... */
-    }
-
-    printf( "%.*s\n", (int)iov.iov_len - 9, (char *) iov.iov_base + 9 );
-}
diff --git a/bin/psorder/.gitignore b/bin/psorder/.gitignore
deleted file mode 100644 (file)
index 379b39e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-psorder
-.deps
-.libs
-.gitignore
-pa.o psorder.o
diff --git a/bin/psorder/Makefile.am b/bin/psorder/Makefile.am
deleted file mode 100644 (file)
index b54fa36..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Makefile.am for bin/psorder
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/sys
-
-bin_PROGRAMS = psorder
-
-psorder_SOURCES = psorder.c pa.c
-psorder_LDADD = $(top_builddir)/libatalk/libatalk.la
-
-noinst_HEADERS = psorder.h pa.h
diff --git a/bin/psorder/pa.c b/bin/psorder/pa.c
deleted file mode 100644 (file)
index 8728065..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Id: pa.c,v 1.6 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-/* This is used with pa.h */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include "pa.h"
-
-pa_buf_t *pa_init(int fd)
-{
-       pa_buf_t *h;
-       int rc;
-
-       h = (pa_buf_t *) malloc( sizeof( pa_buf_t ));
-       h->buf = (char *) malloc( PA_BUFBLK * 2 );
-       h->bufsz = PA_BUFBLK * 2;
-
-       if (( rc = read( fd, h->buf, PA_BUFBLK )) < 0 ) {
-               return( NULL );
-       }
-
-       h->cur = h->buf - 1;
-       h->end = h->buf + rc - 1;
-       h->state = PA_NORMAL;
-       h->fd = fd;
-
-       return( h );
-}
-
-char *pa_gettok(pa_buf_t *h)
-{
-       h->state = PA_NORMAL;
-       h->tmp = *(h->cur);
-       *(h->cur) = 0;
-       return( h->mark );
-}
-
-char _pa_fixbuf(pa_buf_t *h)
-{
-       int rc;
-       char *t;
-
-       if ( h->state == PA_NORMAL ) {
-               *(h->buf) = *(h->cur);
-               h->cur = h->buf;
-       } else {
-               bcopy( h->mark, h->buf, h->end - h->mark + 1 );
-               h->cur = h->buf + ( h->cur - h->mark );
-               h->end = h->buf + ( h->end - h->mark );
-               h->mark = h->buf;
-       }
-
-       if ( h->bufsz - (( h->cur - h->buf ) + 1 ) < PA_BUFBLK ) {
-               t = h->buf;
-               h->buf = (char *) realloc( h->buf, h->bufsz + PA_BUFBLK );
-               h->bufsz += PA_BUFBLK;
-               h->mark = h->buf + ( h->mark - t );
-               h->cur = h->buf + ( h->cur - t );
-               h->end = h->buf + ( h->end - t );
-       }
-
-       if (( rc = read( h->fd, h->cur + 1, PA_BUFBLK )) <= 0 ) {
-               return( (char) 0 );
-       }
-
-       h->end = h->cur + rc;
-       return( *(++(h->cur)) );
-}
diff --git a/bin/psorder/pa.h b/bin/psorder/pa.h
deleted file mode 100644 (file)
index 7839970..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * $Id: pa.h,v 1.3 2009-10-13 22:55:36 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-/*
- * Functions to aid in parsing:
- *
- *     pa_init( fd )           Allocate and return a handle. Reads
- *                             from fd. Call this first, always.
- *     pa_getchar( h )         Return a single character or nul, 0,
- *                             to indicate end-of-file.
- *     pa_match( h )           Mark the character last read as the start
- *                             of a match.
- *     pa_gettok( h )          The match up to but excluding the last
- *                             character is returned.
- *     pa_cont( h )            Continue match with previous match. Call
- *                             immediately after pa_gettok() to get
- *                             correct behavior.
- *     pa_cancel( h )          Cancel previous match start.
- */
-
-#ifndef _PA_H
-#define _PA_H 1
-
-#ifndef FILE_H
-#include <stdio.h>
-#endif /* FILE_H */
-
-#define PA_BUFBLK      1024
-
-#define PA_NORMAL      0
-#define PA_MATCHING    1
-
-typedef struct pa_buf_t {
-       char *buf;
-       char *cur;
-       char *mark;
-       char *end;
-       int fd;
-       int state;
-       unsigned bufsz;
-       char tmp;
-} pa_buf_t;
-
-extern pa_buf_t *pa_init(int fd);
-extern char _pa_fixbuf(pa_buf_t *h);
-extern char *pa_gettok(pa_buf_t *h);
-
-#define pa_getchar(h)  (((h)->cur==(h)->end)?(_pa_fixbuf(h)):\
-                       (*(++((h)->cur))))
-#define pa_match(h)    ((h)->state=PA_MATCHING,(h)->mark=(h)->cur)
-#define pa_cont(h)     (*((h)->cur)=(h)->tmp,(h)->state=PA_MATCHING)
-#define pa_cancel(h)   ((h)->state=PA_NORMAL)
-#define pa_back(h)     (--((h)->cur))
-
-#endif /* _PA_H */
diff --git a/bin/psorder/psorder.c b/bin/psorder/psorder.c
deleted file mode 100644 (file)
index 4a37bab..0000000
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- * $Id: psorder.c,v 1.10 2010-04-12 14:28:47 franklahm Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <sys/file.h>
-#include <ctype.h>
-#include <limits.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-#include <stdio.h>
-#include <string.h>
-#include <dirent.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include "pa.h"
-#include "psorder.h"
-
-#include <atalk/paths.h>
-
-/*
- *                     Global Variables
- */
-
-static u_char                  psbuf[ 8192 ];
-static struct psinfo_st                psinfo;
-static int                     orderflag, forceflag;
-
-static void
-filecleanup( int errorcode, int tfd, char *tfile)
-{
-
-/*
-       Close and unlink the temporary file.
- */
-
-    if ( tfd != 0 ) {
-       if ( close( tfd ) != 0 ) {
-           perror( tfile );
-           exit( errorcode );
-       }
-       if ( unlink( tfile ) != 0 ) {
-           perror( tfile );
-           exit( errorcode );
-       }
-    }
-
-    exit( errorcode );
-}
-
-static void
-filesetup( char *inputfile, int *infd, char *tfile, int *tfd)
-{
-    struct stat                st;
-    char               *template = _PATH_TMPPAGEORDER;
-
-    if ( strcmp( inputfile, STDIN ) != 0 ) {
-       if ( stat( inputfile, &st ) < 0 ) {
-           perror( inputfile );
-           filecleanup( -1, -1, "" );
-       }
-       if ( st.st_mode & S_IFMT & S_IFDIR ) {
-           fprintf( stderr, "%s is a directory.\n", inputfile );
-           filecleanup( 0, -1, "" );
-       }
-       if (( *infd = open( inputfile, O_RDONLY, 0600 )) < 0 ) {
-           perror( inputfile );
-           filecleanup( -1, -1, "" );
-       }
-    } else {
-       *infd = 0;
-    }
-
-#if DEBUG
-    fprintf( stderr, "Input file or stdin and stdout opened.\n" );
-    fprintf( stderr, "Input file descriptor is %d .\n", *infd );
-#endif /* DEBUG */
-
-/*
-       make temporary file
- */
-
-#if defined(NAME_MAX)
-    (void *)strncpy( tfile, template, NAME_MAX );
-#else
-    (void *)strncpy( tfile, template, MAXNAMLEN );
-#endif
-    if (( *tfd = mkstemp( tfile )) == -1 ) {
-       fprintf( stderr, "can't create temporary file %s\n", tfile );
-       filecleanup( -1, -1, "" );
-    }
-
-#if DEBUG
-    fprintf( stderr, "Temporary file %s created and opened.\n", tfile );
-    fprintf( stderr, "Temporary file descriptor is %d .\n", *tfd );
-#endif /* DEBUG */
-
-    psinfo.firstpage = NULL;
-    psinfo.lastpage = NULL;
-    psinfo.trailer = 0;
-    psinfo.pages.offset = 0;
-    psinfo.pages.end = 0;
-    psinfo.pages.num[0] = '\0';
-    psinfo.pages.order[0] = '\0';
-
-    return;
-}
-
-static struct pspage_st
-*getpspage(off_t off)
-{
-    struct pspage_st   *newpspage;
-
-    newpspage = (struct pspage_st *)malloc( sizeof( struct pspage_st )); 
-    if ( newpspage != NULL ) {
-       newpspage->offset = off;
-       newpspage->nextpage = NULL;
-       *newpspage->lable = '\0';
-       *newpspage->ord = '\0';
-    }
-    return( newpspage );
-}
-
-static int
-handletok(off_t count, char *token)
-{
-    int                        incdoc = 0;
-    struct pspage_st   *newpage;
-    char               *tmp;
-
-    if (( strncmp( PENDDOC, token, strlen( PENDDOC )) == 0 ) && incdoc ) {
-       incdoc--;
-#if DEBUG
-       fprintf( stderr, "found an EndDoc\n" );
-#endif /* DEBUG */
-
-    } else if ( strncmp( PBEGINDOC, token, strlen( PBEGINDOC )) == 0 ) {
-       incdoc++;
-#if DEBUG
-       fprintf( stderr, "found a BeginDoc\n" );
-#endif /* DEBUG */
-
-    } else if ( !incdoc && 
-           ( strncmp( PPAGE, token, strlen( PPAGE )) == 0 )) {
-#if DEBUG
-       fprintf( stderr, "found a Page\n" );
-#endif /* DEBUG */
-       if (( newpage = getpspage( count )) == NULL ) {
-           return( -1 );
-       }
-       if ( psinfo.firstpage == NULL ) {
-           newpage->prevpage = NULL;
-           psinfo.firstpage = newpage;
-       } else {
-           newpage->prevpage = psinfo.lastpage;
-           psinfo.lastpage->nextpage = newpage;
-       }
-       psinfo.lastpage = newpage;
-       while ( *token++ != ':' );
-       if (( tmp = strtok( token, WHITESPACE )) != NULL ) {
-           (void)strncpy( newpage->lable, tmp, NUMLEN );
-           if (( tmp = strtok( NULL, WHITESPACE )) != NULL ) {
-               (void)strncpy( newpage->ord, tmp, ORDLEN );
-           }
-       }
-#if DEBUG
-       fprintf( stderr, "page lable %s, page ord %s\n", newpage->lable,
-               newpage->ord );
-#endif /* DEBUG */
-
-    } else if ( !incdoc && 
-           ( strncmp( PPAGES, token, strlen( PPAGES )) == 0 )) {
-#if DEBUG
-       fprintf( stderr, "found a Pages\n" );
-#endif /* DEBUG */
-       psinfo.pages.offset = count;
-       psinfo.pages.end = strlen( token ) + count;
-       while ( *token++ != ':' );
-       while ( isspace( *token )) token++;
-       if ( strncmp( ATEND, token, strlen( ATEND )) == 0 ) {
-#if DEBUG
-           fprintf( stderr, "it is a Pages: (atend)\n" );
-#endif /* DEBUG */
-           psinfo.pages.offset = 0;
-           psinfo.pages.end = 0;
-       } else {
-           if (( tmp = strtok( token, WHITESPACE )) != NULL ) {
-               (void)strncpy( psinfo.pages.num, tmp, NUMLEN );
-               if (( tmp = strtok( NULL, WHITESPACE )) != NULL ) {
-                   (void)strncpy( psinfo.pages.order, tmp, ORDERLEN );
-               }
-           }
-#if DEBUG
-           fprintf( stderr, "number of pages %s\n", psinfo.pages.num );
-           fprintf( stderr, "order control number %s\n", psinfo.pages.order );
-#endif /* DEBUG */
-       }
-
-    } else if ( !incdoc && 
-           ( strncmp( PTRAILER, token, strlen( PTRAILER )) == 0 )) {
-#if DEBUG
-       fprintf( stderr, "found the Trailer\n" );
-#endif /* DEBUG */
-       if  ( psinfo.trailer == 0 ) {
-           psinfo.trailer = count;
-       }
-    }
-
-    return( 0 );
-}
-
-static void
-readps(int inputfd, int tempfd, char *tempfile)
-{
-    off_t              ccread = 0;
-    off_t              ccmatch;
-    char               *curtok = NULL;
-    FILE               *tempstream;
-    pa_buf_t           *pb;
-    int                        n;
-    char               c = -1;
-    char               pc, cc = 0;
-
-    pb = pa_init( inputfd );
-    if (( tempstream = fdopen( tempfd, "w" )) == NULL ) {
-       perror( "fdopen fails for tempfile" );
-       filecleanup( -1, tempfd, tempfile );
-    }
-
-    if (( c = pa_getchar( pb )) != 0 ) {
-       ccread++;
-       (void)putc( c, tempstream );
-       pc = 0;
-       cc = c;
-       pa_match( pb );
-       n = strlen( PPSADOBE );
-       for ( ; ( n > 0 ) && (( c = pa_getchar( pb )) != 0 ) ; n-- ) {
-           ccread++ ;
-           (void)putc( c, tempstream );
-           pc = cc;
-           cc = c;
-       }
-       curtok = pa_gettok( pb );
-    }
-#if DEBUG
-    fprintf( stderr, "%s\n", curtok );
-#endif /* DEBUG */
-
-/*
- * not postscript
- */
-    if ( strcmp( curtok, PPSADOBE ) != 0 ) {
-#if DEBUG
-    fprintf( stderr, "in the not postscript section of readps\n" );
-#endif /* DEBUG */
-       while (( c = pa_getchar( pb )) != 0 ) {
-           ccread++;
-           (void)putc( c, tempstream );
-           pc = cc;
-           cc = c;
-       }
-
-       (void)fflush( tempstream );
-       return;
-    }
-
-/*
- * postscript
- */
-#if DEBUG
-    fprintf( stderr, "in the postscript section of readps\n" );
-#endif /* DEBUG */
-    while (( c = pa_getchar( pb )) != 0 ) {
-       ccread++;
-       (void)putc( c, tempstream );
-       pc = cc;
-       cc = c;
-       if ((( pc == '\r' ) || ( pc == '\n' )) && ( cc == '%' )) {
-#if DEBUG
-           fprintf( stderr, "supposed start of match, cc = %c\n", cc );
-#endif /* DEBUG */
-           pa_match( pb );
-           ccmatch = ccread - 1;
-           while ( ( c = pa_getchar( pb ) ) ) {
-               if ( c != 0 ) {
-                   ccread++;
-                   (void)putc( c, tempstream );
-                   pc = cc;
-                   cc = c;
-               }
-               if (( c == '\r' ) || ( c == '\n' ) || ( cc == '\0' )) {
-                   curtok = pa_gettok( pb );
-#if DEBUG
-                   fprintf( stderr, "%s\n", curtok );
-#endif /* DEBUG */
-                   if ( handletok( ccmatch, curtok ) < 0 ) {
-                       perror( "malloc died" );
-                       filecleanup( -1, tempfd, tempfile );
-                   }
-                   break;
-               }
-               if ( c == 0 ) break;
-           }
-           if ( c == 0 ) break;
-       }
-    }
-
-    (void)fflush( tempstream );
-    return;
-}
-
-static void
-temp2out(int tempfd, char *tempfile, off_t length)
-{
-    int                        ccread;
-    int                        ccwrite;
-    int                        size;
-
-    while ( length > 0 ) {
-       if ( length > sizeof( psbuf )) {
-           size = sizeof( psbuf );
-       } else size = length;
-       if (( ccread = read( tempfd, psbuf, size )) > 0 ) {
-           size = ccread;
-           while ( ccread > 0 ) {
-               ccwrite = write( 1, psbuf, ccread );
-               if ( ccwrite < 0 ) {
-                   perror( "stdout" );
-                   filecleanup( ccwrite, tempfd, tempfile );
-               } else {
-                   ccread -= ccwrite;
-               }
-           }
-       }
-       if ( ccread < 0 ) {
-           perror( "temporary file" );
-           filecleanup( ccread, tempfd, tempfile );
-       }
-       length -= size;
-    }
-}
-
-static void
-writelable(int tempfd, char *tempfile, char *lable)
-{
-    char               line[256];
-    int                        ccwrite;
-    int                        linelen;
-    char               *argone;
-    char               *argtwo;
-
-    if ( strcmp( lable, PPAGES ) == 0 ) {
-       argone = psinfo.pages.num;
-       argtwo = psinfo.pages.order;
-    } else {
-       argone = argtwo = NULL;
-    }
-    (void)sprintf( line, "%s %s %s", lable, argone, argtwo );
-    linelen = strlen( line );
-
-    ccwrite = write( 1, line, linelen );
-    if ( ccwrite < 0 ) {
-       perror( "stdout" );
-       filecleanup( ccwrite, tempfd, tempfile );
-    } else {
-       linelen -= ccwrite;
-    }
-}
-
-static void
-writeps(int tempfd, char *tempfile)
-{
-    struct stat                st;
-    off_t              endofpage;
-    int                        order;
-
-    if ( stat( tempfile, &st ) < 0 ) {
-       perror( "stat failed" );
-       filecleanup( -1, tempfd, tempfile );
-    }
-    if ( psinfo.trailer == 0 ) {
-       endofpage = st.st_size;
-    } else endofpage = psinfo.trailer;
-
-    if (( psinfo.firstpage == NULL ) || 
-           ( psinfo.firstpage == psinfo.lastpage )) {
-       order = FORWARD;
-    } else if ( psinfo.pages.offset == 0 ) {
-       order = orderflag;
-    } else if (( strncmp( psinfo.pages.order, "", ORDERLEN ) == 0 ) ||
-           ( strncmp( psinfo.pages.order, "1", ORDERLEN ) == 0 )) {
-       order = orderflag;
-       if ( order == REVERSE ) strcpy( psinfo.pages.order, "-1" );
-    } else if ( strncmp( psinfo.pages.order, "-1", ORDERLEN ) == 0 ) {
-       if ( orderflag == FORWARD ) {
-           order = REVERSE;
-           strcpy( psinfo.pages.order, "1" );
-       } else order = FORWARD;
-    } else if (( strncmp( psinfo.pages.order, "0", ORDERLEN ) == 0 ) &&
-           forceflag ) {
-       order = orderflag;
-    } else order = FORWARD;
-
-    if ( order == FORWARD ) {
-       temp2out( tempfd, tempfile, st.st_size );
-    } else {
-/*
- *     output the header stuff and rewrite the $$Pages line
- *     if it is in the header and not %%Pages: (atend)
- */
-       if ( psinfo.firstpage->offset > 0 ) {
-           if (( psinfo.firstpage->offset > psinfo.pages.offset ) &&
-                   ( psinfo.pages.offset != 0 )) {
-               temp2out( tempfd, tempfile, psinfo.pages.offset );
-               writelable( tempfd, tempfile, PPAGES );
-               if ( lseek( tempfd, psinfo.pages.end, SEEK_SET ) < 0 ) {
-                   perror( tempfile );
-                   filecleanup( -1, tempfd, tempfile );
-               }
-               temp2out( tempfd, tempfile, 
-                       psinfo.firstpage->offset - psinfo.pages.end );
-           } else temp2out( tempfd, tempfile, psinfo.firstpage->offset );
-       }
-/*
- *     output the pages, last to first
- */
-       while ( psinfo.lastpage != NULL ) {
-           if ( lseek( tempfd, psinfo.lastpage->offset, SEEK_SET ) < 0 ) {
-               perror( tempfile );
-               filecleanup( -1, tempfd, tempfile );
-           }
-           temp2out( tempfd, tempfile, endofpage - psinfo.lastpage->offset );
-           endofpage = psinfo.lastpage->offset;
-           psinfo.lastpage = psinfo.lastpage->prevpage;
-           if ( psinfo.lastpage != NULL ) {
-               (void)free( psinfo.lastpage->nextpage );
-               psinfo.lastpage->nextpage = NULL;
-           }
-       }
-/*
- *     output the trailer stuff and rewrite the $$Pages line
- *     if it is in the trailer
- */
-       if ( psinfo.trailer != 0 ) {
-           if ( lseek( tempfd, psinfo.trailer, SEEK_SET ) < 0 ) {
-               perror( tempfile );
-               filecleanup( -1, tempfd, tempfile );
-           }
-           if ( psinfo.trailer < psinfo.pages.offset ) {
-               temp2out( tempfd, tempfile,
-                       psinfo.pages.offset - psinfo.trailer );
-               writelable( tempfd, tempfile, PPAGES );
-               if ( lseek( tempfd, psinfo.pages.end, SEEK_SET ) < 0 ) {
-                   perror( tempfile );
-                   filecleanup( -1, tempfd, tempfile );
-               }
-               temp2out( tempfd, tempfile, st.st_size - psinfo.pages.end );
-           } else temp2out( tempfd, tempfile, st.st_size - psinfo.trailer );
-       }
-    }
-
-    return;
-}
-
-static int
-psorder(char *path)
-{
-    int                        tempfd;
-    int                        inputfd;
-#if defined(NAME_MAX)
-    char               tempfile[NAME_MAX];
-#else
-    char               tempfile[MAXNAMLEN];
-#endif
-
-    filesetup( path, &inputfd, tempfile, &tempfd );
-    readps( inputfd, tempfd, tempfile );
-    if ( lseek( tempfd, REWIND, SEEK_SET ) < 0 ) {
-       perror( tempfile );
-       filecleanup( -1, tempfd, tempfile );
-    }
-    writeps( tempfd, tempfile );
-    filecleanup( 0, tempfd, tempfile );
-    return( 0 );
-}
-
-int main(int argc, char **argv)
-{
-    extern int optind;
-    char       *progname;
-    int                errflag = 0;
-    int                c;
-
-    while (( c = getopt( argc, argv, OPTSTR )) != -1 ) {
-       switch ( c ) {
-       case REVCHAR:
-           if ( orderflag ) errflag++;
-           else orderflag = REVERSE;
-           break;
-       case FORWCHAR:
-           if ( orderflag ) errflag++;
-           else orderflag = FORWARD;
-           break;
-       case FORCECHAR:
-           if ( forceflag ) errflag++;
-           else forceflag++;
-           break;
-       }
-    }
-    if ( errflag ) {
-       if (( progname = strrchr( argv[ 0 ], '/' )) == NULL ) {
-           progname = argv[ 0 ];
-       } else progname++;
-       fprintf( stderr, "usage: %s [-duf] [sourcefile]\n", progname );
-       return( -1 );
-    } else if ( !orderflag ) orderflag = FORWARD;
-
-    if ( optind >= argc ) {
-       return( psorder( STDIN ));
-    }
-    return( psorder( argv[ optind ] ));
-}
-
diff --git a/bin/psorder/psorder.h b/bin/psorder/psorder.h
deleted file mode 100644 (file)
index 5d810b4..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $Id: psorder.h,v 1.3 2009-10-13 22:55:36 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef        STDIN
-#      define  STDIN   "-"
-#endif /* ! STDIN */
-#ifndef FALSE
-#      define  FALSE   0
-#      define  TRUE    1
-#endif /* ! FALSE */
-
-#define REVCHAR                'd'
-#define FORWCHAR       'u'
-#define FORCECHAR      'f'
-#define OPTSTR         "duf"
-
-#define WHITESPACE     " \t"
-#define ATEND          "(atend)"
-#define PPSADOBE       "%!PS-Adobe-"
-#define        PPAGE           "%%Page:"
-#define PPAGES         "%%Pages:"
-#define PTRAILER       "%%Trailer"
-#define PBEGINDOC      "%%BeginDocument:"
-#define PENDDOC                "%%EndDocument"
-#define PBEGINBIN      "%%BeginBinary:"
-#define PENDBIN                "%%EndBinary"
-
-#define REWIND         0L
-#define REVERSE                1
-#define FORWARD                2
-
-#define LABELLEN       32
-#define ORDLEN         4
-struct pspage_st {
-    struct pspage_st   *nextpage;
-    struct pspage_st   *prevpage;
-    off_t              offset;
-    char               lable[ LABELLEN ];
-    char               ord[ ORDLEN ];
-};
-
-#define NUMLEN         10
-#define ORDERLEN       3
-struct pages_st {
-    off_t              offset;
-    off_t              end;
-    char               num[ NUMLEN ];
-    char               order[ ORDERLEN ];
-};
-
-struct psinfo_st {
-    struct pspage_st   *firstpage;
-    struct pspage_st   *lastpage;
-    off_t              trailer;
-    struct pages_st    pages;
-};
-
index 38e7d336dc16ca5da52887e90b1358d5d0bf25c0..7cdd43c3995d31ee455910d872f9071d589085b6 100644 (file)
@@ -23,8 +23,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/unicode.h>
 #include <atalk/logger.h>
 
index 4b653521c9148f7fe9e394642881c0f166b80aad..850c45d79747d13b77a15ed1bc3ca0d488efa3bf 100644 (file)
 #include <sys/param.h>
 #include <pwd.h>
 #include <dirent.h>
+#include <arpa/inet.h>
+
 #include <atalk/afp.h>
 #include <atalk/unicode.h>
 #include <atalk/util.h>
 #include <atalk/logger.h>
+#include <atalk/compat.h>
 
 #include "atalk/cnid.h"
 #ifndef MAXPATHLEN
index 4817238a3be6ea7ab06907787dcfebe7bedff6d2..c1d96de7384f0bbf3f920e0e10a93edc0c92d97b 100644 (file)
@@ -11,9 +11,7 @@ EXTRA_DIST = \
        AppleVolumes.system \
        afp_ldap.conf \
        afpd.conf.tmpl \
-       atalkd.conf \
-       netatalk.conf \
-       papd.conf
+       netatalk.conf
 
 OVERWRITE_CONFIG = @OVERWRITE_CONFIG@
 
@@ -27,10 +25,6 @@ if HAVE_ACLS
 CONFFILES += afp_ldap.conf
 endif
 
-if USE_APPLETALK
-CONFFILES += atalkd.conf papd.conf
-endif
-
 pkgconfdir = @PKGCONFDIR@
 webminpath = @WEBMIN_PATH@
 webminuser = @WEBMIN_USER@
diff --git a/config/atalkd.conf b/config/atalkd.conf
deleted file mode 100644 (file)
index 4648e3a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Format of lines in this file:
-#
-#    interface [ -seed ] [ -router | -dontroute ] 
-#       [ -phase { 1 | 2 } ] [ -addr net.node ]
-#      [ -net first[-last] ] [ -zone ZoneName ] ...
-#
-# -seed only works if you have multi-interfaces.  Any missing arguments are
-# automatically configured from the network.  Note: lines can't actually be
-# split, tho it's a good idea.
-#
-# -router is like -seed but it allows single-interface routing. -dontroute 
-# disables routing for the specified interface.
-#
-# Some examples:
-#
-#      The simplest case is no atalkd.conf.  This works on most platforms
-#      (notably not Solaris), since atalkd can discover the local interfaces
-#      on the machine.
-#
-#      Very slightly more complicated:
-#
-#              le0
-#      or
-#              eth0
-#
-#      for Solaris/SunOS or Linux.
-#
-#      A much more complicated example:
-#
-#              le0 -phase 1
-#              le1 -seed -phase 2 -addr 66.6 -net 66-67 -zone "No Parking"
-#
-#      This turns on transition routing between the le0 and le1
-#      interfaces on a Sun.  It also causes atalkd to fail if other
-#      routers disagree about it's configuration of le1.
-#
diff --git a/config/atalkd.conf.cobalt b/config/atalkd.conf.cobalt
deleted file mode 100644 (file)
index 1363a71..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Format of lines in this file:
-#
-#    interface [ -seed ] [ -router | -dontroute ] 
-#       [ -phase { 1 | 2 } ] [ -addr net.node ]
-#      [ -net first[-last] ] [ -zone ZoneName ] ...
-#
-# -seed only works if you have multi-interfaces.  Any missing arguments are
-# automatically configured from the network.  Note: lines can't actually be
-# split, tho it's a good idea.
-#
-# -router is like -seed but it allows single-interface routing. -dontroute 
-# disables routing for the specified interface.
-#
-# Some examples:
-#
-#      The simplest case is no atalkd.conf.  This works on most platforms
-#      (notably not Solaris), since atalkd can discover the local interfaces
-#      on the machine.
-#
-#      Very slightly more complicated:
-#
-#              le0
-#      or
-#              eth0
-#
-#      for Solaris/SunOS or Linux.
-#
-#      A much more complicated example:
-#
-#              le0 -phase 1
-#              le1 -seed -phase 2 -addr 66.6 -net 66-67 -zone "No Parking"
-#
-#      This turns on transition routing between the le0 and le1
-#      interfaces on a Sun.  It also causes atalkd to fail if other
-#      routers disagree about it's configuration of le1.
-#
-eth0
diff --git a/config/papd.conf b/config/papd.conf
deleted file mode 100644 (file)
index ec36a6a..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# Attributes are:
-#
-#      Name Type Default       Description
-#      pd   str  ".ppd"        Pathname to ppd file.
-#      pr   str  "lp"          LPD printer name.
-#       pa   str  "0.0"         AppleTalk address (not usually needed).
-#      op   str  "operator"    Operator name, for LPD spooling.
-#      au   flag not-present   If present, authentication required
-#                              note that if ca and sp are both set,
-#                              ca will be tried first and then sp
-#      am   str  none          Comma separated list of uams to use
-#                              (for every printer) whenever 
-#                              authentication is on
-#      ca   str  not-present   If present, use cap-style authentication
-#                              directory to place print authentication files 
-#      sp   flag not-present   use PSSP authentication.
-#
-# Some examples:
-#
-#      On many systems (notably not Solaris), no papd.conf is required,
-#      since papd shares the same defaults as lpd.
-#
-#      A simple example:
-#
-#              terminator:\
-#                      :pr=lp:op=wes:\
-#                      :pd=/usr/share/lib/ppd/HPLJ_4M.PPD:
-#
-#      An example with authenticated printing:
-#              authprn:\
-#                      :pr=|/usr/bin/lpr -Plp:\
-#                      :pd=/usr/share/lib/ppd/HPLJ_4M.PPD:\
-#                      :sp:ca=/tmp/print:\
-#                      :am=uams_clrtxt.so:
-#
-#      Note also that papd.conf can list several printers.
-#
-#      The printer name in papd may be a full NBP-name of the form
-#      name:type@zone, for example:
-#              Printer 1:LaserWriter@Printing and Mailing:\
-#                      :pr=|/usr/bin/lpr -Plp1:
-#
-# Warning: If you are using more than 15 printers and you do not
-# specify the zone in the printer name, only some of the printers may
-# appear in the Chooser.
index cf01c8dd4e73cdc9378239d7ea574485d9f7a3af..24ad399e41f27aa28d7b83927978d64018de2d11 100644 (file)
@@ -512,7 +512,6 @@ if test x"$this_os" = "xmacosx"; then
        AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
        AC_DEFINE(HAVE_2ARG_DBTOB, 1, [Define if dbtob takes two arguments])
        dnl AC_DEFINE(NO_DLFCN_H)
-       AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
        AC_DEFINE(NO_QUOTA_SUPPORT, 1, [Define if Quota support should be disabled])
        AC_DEFINE(MACOSX_SERVER, 1, [Define if compiling for MacOS X Server])
 fi
@@ -1040,30 +1039,23 @@ AM_CONDITIONAL(USE_GENTOO, test x$sysv_style = xgentoo)
 AM_CONDITIONAL(USE_DEBIAN, test x$sysv_style = xdebian)
 AM_CONDITIONAL(USE_UNDEF, test x$sysv_style = x)
 AM_CONDITIONAL(USE_BDB, test x$bdb_required = xyes)
-AM_CONDITIONAL(USE_APPLETALK, test x$netatalk_cv_ddp_enabled = xyes)
 
 dnl --------------------- generate files
 
 AC_OUTPUT([Makefile
        bin/Makefile
        bin/ad/Makefile
-       bin/aecho/Makefile
        bin/afppasswd/Makefile
        bin/cnid/Makefile
        bin/cnid/cnid2_create
-       bin/getzones/Makefile
        bin/megatron/Makefile
     bin/misc/Makefile
-       bin/nbp/Makefile
-       bin/pap/Makefile
-       bin/psorder/Makefile
        bin/uniconv/Makefile
        config/Makefile
     config/pam/Makefile
        contrib/Makefile
        contrib/macusers/Makefile
        contrib/macusers/macusers
-       contrib/printing/Makefile
        contrib/shell_utils/Makefile
        contrib/shell_utils/afpd-mtab.pl
     contrib/shell_utils/apple_dump
@@ -1076,20 +1068,15 @@ AC_OUTPUT([Makefile
        doc/Makefile
        etc/Makefile
        etc/afpd/Makefile
-       etc/atalkd/Makefile
        etc/cnid_dbd/Makefile
        etc/netalockd/Makefile
        etc/uams/Makefile
        etc/uams/uams_krb4/Makefile
-       etc/papd/Makefile
-       etc/psf/Makefile
        include/Makefile
        include/atalk/Makefile
        libatalk/Makefile
        libatalk/acl/Makefile
        libatalk/adouble/Makefile
-       libatalk/asp/Makefile
-       libatalk/atp/Makefile
        libatalk/bstring/Makefile
        libatalk/cnid/Makefile
        libatalk/cnid/cdb/Makefile
@@ -1099,8 +1086,6 @@ AC_OUTPUT([Makefile
        libatalk/compat/Makefile
        libatalk/dsi/Makefile
        libatalk/locking/Makefile
-       libatalk/nbp/Makefile
-       libatalk/netddp/Makefile
        libatalk/rpc/Makefile
        libatalk/talloc/Makefile
        libatalk/tevent/Makefile
@@ -1113,17 +1098,8 @@ AC_OUTPUT([Makefile
        macros/Makefile
        man/Makefile
        man/man1/Makefile
-       man/man3/Makefile
-       man/man4/Makefile
        man/man5/Makefile
        man/man8/Makefile
-       sys/Makefile
-       sys/netatalk/Makefile
-       sys/netbsd/Makefile
-       sys/netbsd/netatalk/Makefile
-       sys/solaris/Makefile
-       sys/sunos/Makefile
-       sys/ultrix/Makefile
        test/Makefile
        test/afpd/Makefile
        test/netalockd/Makefile
index 7aa4378fba28b1c71c071bde4dd59fcff254d82a..3c076643be908516495c3d69a1988eba0861a5c6 100644 (file)
@@ -1,7 +1,3 @@
 # Makefile.am for contrib/
 
 SUBDIRS = macusers shell_utils
-
-if USE_APPLETALK
-SUBDIRS += printing
-endif
diff --git a/contrib/printing/.gitignore b/contrib/printing/.gitignore
deleted file mode 100644 (file)
index f2f0549..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-timeout
-.deps
-.libs
-.gitignore
-*.o
diff --git a/contrib/printing/Makefile.am b/contrib/printing/Makefile.am
deleted file mode 100644 (file)
index 649c5fb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Makefile.am for contrib/printing/
-
-bin_SCRIPTS = add_netatalk_printer
-
-EXTRA_DIST = netatalk.template add_netatalk_printer
diff --git a/contrib/printing/add_netatalk_printer b/contrib/printing/add_netatalk_printer
deleted file mode 100644 (file)
index 40de174..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-#! /bin/sh
-#
-# $Id: add_netatalk_printer,v 1.7 2003-02-23 03:16:34 srittau Exp $
-#
-# A lovely script to add netatalk printers 
-#
-#ident  "@(#)netatalk   0.5     99/06/22 job@uchicago.edu"  /* Netatalk 1.4*/
-#
-# This File is released under the Perl Artistic Licence.
-# See http://www.perl.org for details
-#
-# Or you can use it under the licence that accompanies Netatalk 1.3 =)
-#
-# This file is maintained by Job Bogan <job@uchicago.edu>
-# Please contact me at this address for bug reports, problems, etc.
-# Please do not bother the netatalk  maintainers with problems from
-# this program.
-#
-#
-#
-# Exit Codes ...  1 for missed path or user input
-# 2 for an aborted run (by not saying yes to a 'are you sure?'
-# 3 for failed lpadmin commands
-# 4 for possible security problem
-
-# make base name for temp files.
-
-TMP_STUFF="/tmp/`basename $0`.$$"
-export TMP_STUFF
-rm -rf ${TMP_STUFF}
-mkdir -m 700 ${TMP_STUFF} || exit 4
-trap 'rm -f $TMP_STUFF > /dev/null 2>&1' 0
-trap 'exit' 1 2 3
-
-# grab the pathname the script was called w/
-# if it was run by ./add...  then make the path == `pwd`
-
-RUNHOME=`dirname $0`
-
-if [ "$RUNHOME" = "." ]; then
-       RUNHOME=`pwd`
-fi
-
-# allow for the env NETATALKHOME to override the guessed one from above
-
-NETATALKHOME=${NETATALKHOME:-$RUNHOME}
-export NETATALKHOME
-
-PATH=/bin:${PATH}:${NETATALKHOME}/bin:${NETATALKHOME}/etc:${NETATALKHOME}/libexec:/usr/lib:/usr/sbin
-
-if [ ! -x ${NETATALKHOME}/bin/pap ]; then
-       echo "OOPS:     I don't see ${NETATALKHOME}/bin/pap ,"
-       echo '  Check that it is executable or set ${NETATALKHOME}'
-       echo '  so i can find pap at ${NETATALKHOME}/bin/pap'
-       echo '[We are guessing the location of the binary from the'
-       echo 'path that was used to run this script or $NETATALKHOME]'
-       exit 1
-fi
-
-# get the user to tell us where to look for things, and list things there.
-
-echo ''
-echo "Enter Appletalk zone [default: local]: \c"
-
-read ZONE
-
-echo ""
-echo "Looking for LaserWriters in Zone ${ZONE} ..."
-${NETATALKHOME}/bin/nbplkup ":LaserWriter@${ZONE}"
-
-echo ""
-echo "Enter AppleTalk printer name: \c"
-
-read DEST
-
-if [ "$DEST" = "" ]; then
-       echo "OOPS: you need to tell me a printer name"
-       exit 1
-fi
-
-echo "checking nbplkup ${DEST}:LaserWriter@${ZONE}"
-echo ""
-TestDEST=`${NETATALKHOME}/bin/nbplkup "${DEST}:LaserWriter@${ZONE}"`
-echo "${TestDEST}"
-echo ""
-
-if [ "${TestDEST}" = "" ]; then
-    echo "I don't see that printer on the network.  You may have entered an incorrect"
-    echo "printer name - if so, exit and restart."
-    echo "[You should only enter the printer name, not the :LaserWriter portion]"
-    sleep 3
-fi
-
-unset TestDEST
-
-NBPNAME="${DEST}@${ZONE}"
-
-echo ""
-echo ""
-
-# scrunch all of the whitespace and / out of the appletalk name and suggest
-# that as the unix name
-
-SUGGEST=`echo "$DEST" | cut -d: -f1 | sed 's/ //g' | sed 's#/##g` ; export SUGGEST
-
-# truncate the suggested name to 14 chars to conform to lp specs.
-
-SUGGEST1=`expr ${SUGGEST} : '\(..............\)'`
-SUGGEST=${SUGGEST1:-$SUGGEST}
-
-echo "Enter Unix printer name - [default: ${SUGGEST}] : \c"
-read UNIXPRINT
-echo ''
-if [ "${UNIXPRINT}" = "" ]; then
-       UNIXPRINT="${SUGGEST}"
-fi
-export UNIXPRINT
-
-#####
-# Here we check for legal names again. >14 chars
-#####
-
-UNIXPRINT1=`expr "${UNIXPRINT}" : '\(..............\)'`
-
-# if UNIXPRINT is shorter than 14chars, UNIXPRINT1 ends up null ("")
-# if UNIXPRINT was longer, then we get a 14char version of it.  bleah.
-
-if [ "${UNIXPRINT1}" = "" ]; then
-       UNIXPRINT1="${UNIXPRINT}"
-else
-#if [ "${UNIXPRINT1}" != "${UNIXPRINT}" ]; then
-    echo "Oops, that name was too long...  Truncating to 14 chars."
-    echo "setting printer name to '${UNIXPRINT}'"
-    UNIXPRINT="${UNIXPRINT1}"
-fi
-
-echo "Enter a description for this printer.  [The Appletalk name will"
-echo "be included by default, and must be included for the printing"
-echo "filters to work.] : \c"
-read DESC
-
-DESC="${DESC} [${NBPNAME}]"
-
-echo ""
-echo "Do you want all print jobs to print out in reversed page order?"
-echo "This is usually only desired if this printer stacks jobs"
-echo "face up in the output bin. [N/y] \c"
-read REV
-case ${REV} in         [Yy]*)  REV="Netatalk-R" ;;
-                       *)      REV="Netatalk"   ;;
-esac
-export REV
-
-if lpstat -p ${UNIXPRINT} >/dev/null 2>&1 ; then
-       echo '\a'
-       echo "OOPS:     There already exists a printer named '${UNIXPRINT}'"
-       echo "          here are the comments from /etc/lp/printers/${UNIXPRINT}/comment"
-       cat /etc/lp/printers/${UNIXPRINT}/comment
-       echo ""
-       echo "Do you still want to do this? This will flush "
-       echo "all pending jobs!  [Y/n]? \c"
-       read DOTHIS
-       case ${DOTHIS} in       [Yy]*)         ;;
-                               *)      exit 2 ;;
-       esac
-
-       echo "Rejecting all new jobs for ${UNIXPRINT}"
-       reject -r "Making ${UNIXPRINT} a netatalk printer" ${UNIXPRINT}
-       echo "Disabling and Flushing the ${UNIXPRINT} queue"
-       disable -c -r "Making ${UNIXPRINT} a netatalk printer" ${UNIXPRINT}
-fi
-
-#####
-# Check if we need to do silly tricks to share the printer... only on 5.5.1 or older
-#####
-
-if [ "`uname -r`" -lt "5.6" ]; then
-    echo ""
-    echo "Do you want to share this printer with other machines [Y/n]?\c"
-    read SHARE
-else
-    echo "You're running SunOS 5.6 or higher... skipping 'sacadm' and 'pmadm'"
-fi
-
-if nistest printers.org_dir; then
-    echo "Do you want to add this printer to your NIS printer map? [y/N]"
-    echo "(You will need to share this printer with other machines)"
-    read NIS
-    case ${NIS} in     [Yy]*)    ADD_NIS=1 ;;
-                           *)              ;;
-    esac
-fi
-
-echo "Do you want to save the error messages from pap in"
-echo "'/var/spool/lp/tmp/Netatalk/${UNIXPRINT}' [y/N]"
-echo "(If you answer N, error messages will go to /dev/null.)"
-read SAVEerr
-case ${SAVEerr} in      [Yy]*)     SAVEerr=1 ;;
-                           *)     unset SAVEerr ;;
-esac
-
-echo "Making ${UNIXPRINT} print to ${DEST} via netatalk"
-
-if [ "${SAVEerr}" = "" ]; then
-    LOCKDEV=/dev/null
-else
-    LOCKS=/var/spool/lp/tmp/Netatalk
-    if [ ! -d ${LOCKS} ]; then
-           mkdir -m 0771       ${LOCKS}
-           chown lp    ${LOCKS}
-           chgrp lp    ${LOCKS}
-    fi
-    LOCKDEV=${LOCKS}/${UNIXPRINT}
-    touch              ${LOCKDEV}
-    chown lp:lp        ${LOCKDEV}
-    chmod 600  ${LOCKDEV}
-fi
-
-echo ""
-
-if [ ! -r /etc/lp/filter.table ]; then
-        echo "Setting up the existing print filters..."
-        for i in `ls /etc/lp/fd | sed 's/.fd$//'`; do
-                lpfilter -f ${i} -F/etc/lp/fd/${i}.fd
-        done
-fi
-if lpfilter -f netatalk -l > /dev/null 2>&1 ; then
-       echo 'Looks like you have a Netatalk printer filter defined. Good!'
-else
-       echo "Humm... You need a Netatalk printer filter..."
-       echo "... making you one ..."
-       cat > /etc/lp/fd/netatalk.fd << EOF
-#ident  "@(#)netatalk.fd 0.2 97/09/04 job@uchicago.edu"      /* Netatalk 1.4 */
-
-Input types: postscript
-Output types: PS
-Printer types: Netatalk
-Printers: any
-Filter type: fast
-Command: ${NETATALKHOME}/libexec/ifpap 2>&1 > /dev/null
-EOF
-       chown lp:lp /etc/lp/fd/netatalk.fd
-       chmod 664   /etc/lp/fd/netatalk.fd
-       lpfilter -f netatalk -F /etc/lp/fd/netatalk.fd
-fi
-
-if lpfilter -f netatalk-r -l 2>&1 > /dev/null ; then
-       echo 'Looks like you have a Reverse Netatalk printer filter defined. Good!'
-else
-       echo "Humm... You need a Reverse Netatalk printer filter..."
-       echo "... making you one ..."
-       cat > /etc/lp/fd/netatalk-r.fd << EOF
-#ident  "@(#)netatalk-r.fd 0.2 97/09/04 job@uchicago.edu"      /* Netatalk 1.4 */
-
-Input types: postscript
-Output types: PS
-Printer types: Netatalk-R
-Printers: any
-Filter type: fast
-Command: "/usr/lib/lp/postscript/postreverse | ${NETATALKHOME}/libexec/ifpap 2>&1 >/dev/null"
-EOF
-       chown lp:lp /etc/lp/fd/netatalk-r.fd
-       chmod 664   /etc/lp/fd/netatalk-r.fd
-       lpfilter -f netatalk-r -F /etc/lp/fd/netatalk-r.fd
-fi
-
-if [ ! -r /usr/share/lib/terminfo/N/Netatalk ]; then
-       echo "Making a Terminfo entry for Netatalk printers"
-       cat > ${TMP_STUFF}/terminfo << EOF
-Netatalk,
-       cols#80, lines#66,
-       cpi=null, csnm=^D, lpi=null, scs=^D, slines=^D, u9=^D,
-EOF
-       tic ${TMP_STUFF}/terminfo
-       chown bin:bin /usr/share/lib/terminfo/N/Netatalk
-       chmod 644     /usr/share/lib/terminfo/N/Netatalk
-fi
-
-if [ ! -r /usr/share/lib/terminfo/N/Netatalk-R ]; then
-       echo "Making a Terminfo entry for Reversed Netatalk printers"
-       cat > ${TMP_STUFF}/terminfoR << EOF
-Netatalk-R,
-       cols#80, lines#66,
-       cpi=null, csnm=^D, lpi=null, scs=^D, slines=^D, u9=^D,
-EOF
-       tic "${TMP_STUFF}/terminfoR"
-       chown bin:bin /usr/share/lib/terminfo/N/Netatalk-R
-       chmod 644     /usr/share/lib/terminfo/N/Netatalk-R
-fi
-
-###
-# this is old cruft...  we should not have done this in the 1st place.
-# we need to edit the template interface file to point to the local netatalk bins
-#cat ${RUNHOME}/etc/netatalk.template | sed "s#DEFAULT_NETATALK_HOME#${RUNHOME}#g" \
-#      > "/etc/lp/interfaces/${UNIXPRINT}"
-#chown lp:lp   /etc/lp/interfaces/${UNIXPRINT}
-#chmod 0775    /etc/lp/interfaces/${UNIXPRINT}
-# below is the correct way.
-###
-
-echo "Setting up ${UNIXPRINT} ...  Edit options later as you see fit."
-lpadmin -p ${UNIXPRINT} -D "${DESC}" -T ${REV} \
-    -i ${RUNHOME}/netatalk.template -I PS -v ${LOCKDEV} -A none || exit 3
-accept ${UNIXPRINT} || exit 3
-enable ${UNIXPRINT} || exit 3
-
-case ${SHARE} in       [Nn]*)  exit; ;;
-                       *)            ;;
-esac
-
-echo "Setting up network sharing for ${UNIXPRINT}"
-
-# from p925 in the Solaris Administration Guide, Vol. II (2.5)
-
-echo ""
-if sacadm -l -p tcp > /dev/null; then
-   echo "already running a tcp listener"
-else
-   echo "Defining tcp listener ..."
-   sacadm -a -p tcp -t listen -c "/usr/lib/saf/listen tcp" \
-          -v `nlsadmin -V` -n 999
-fi
-
-# this is extra, but a good idea...
-
-LPD_ADDR="\\x`lpsystem -A`" ; export LPD_ADDR
-ADDR_0=`echo $LPD_ADDR | sed -e 's/\\x00020203/\\x00020ACE/g'`; export ADDR_0
-
-if pmadm -l -p tcp -s 0 > /dev/null; then
-   echo "<0> service is already defined."
-else
-   echo "Defining <0>/tcp service ..."
-   pmadm -a -p tcp -s 0 -i root \
-         -m `nlsadmin -c /usr/lib/saf/nlps_server -A ${ADDR_0}` \
-         -v `nlsadmin -V`
-fi
-
-# again from the solaris book noted above.
-
-if pmadm -l -p tcp -s lp > /dev/null; then
-   echo "<lp> service is already defined."
-else
-   echo "Defining <lp>/tcp service ..."
-   pmadm -a -p tcp -s lp -i root \
-         -m `nlsadmin -o /var/spool/lp/fifos/listenS5` \
-         -v `nlsadmin -V`
-fi
-
-if pmadm -l -p tcp -s lpd > /dev/null; then
-   echo "<lpd> service is already defined."
-else
-   echo "Defining <lpd>/tcp service ..."
-   pmadm -a -p tcp -s lpd -i root \
-         -m `nlsadmin -o /var/spool/lp/fifos/listenBSD -A ${LPD_ADDR}` \
-         -v `nlsadmin -V`
-fi
-
-if [ "${ADD_NIS}" = 1 ] ; then
-    if nistest "[printer_name=${UNIXPRINT}]printers.org_dir"; then
-       nistbladm -m    printer_host=`uname -n` \
-       "[printer_name=${UNIXPRINT}]printers.org_dir"  description="$DESC"
-    else
-       nistbladm -a    printer_name=${UNIXPRINT} \
-       description="$DESC" printer_host=`uname -n` printers.org_dir
-    fi
-fi
diff --git a/contrib/printing/netatalk.template b/contrib/printing/netatalk.template
deleted file mode 100644 (file)
index f639914..0000000
+++ /dev/null
@@ -1,610 +0,0 @@
-#ident "@(#)netatalk   0.7     99/06/22 job@uchicago.edu"  /* Netatalk 1.4*/
-
-#####
-# User configuration:
-#
-# Set timeout for pap($time) and papstatus($time2).  both are in seconds.
-# extraneous if you do not have NETATALKHOME/bin/timeout
-# set how many times to loop before we just abort entirely ($attempts)
-# what flags pap is run w/. -c makes pap claim to have been waiting forever
-#####
-
-time=1800
-time2=60
-attempts=3
-pap_flags="-c"
-
-#####
-# this should get "fixed" to something like
-# NETATALKHOME=/opt ; export NETATALKHOME
-# by the add_netatalk_printer script
-#
-# DO NOT use the user's env for this or the PATH above.
-#####
-
-NETATALKHOME=DEFAULT_NETATALK_HOME ; export NETATALKHOME
-#NETATALKHOME=/opt ; export NETATALKHOME
-
-if [ "${NETATALKHOME}" = "DEFAULT_NETATALK_HOME" ]; then
-   echo "bleah, NETATALKHOME not set, exiting..." ; exit 5
-fi
-
-#####
-# BUGS/TODO:
-# move all TMP stuff to use a directory for security reasons
-# run nbplkup to check if the reason we cannot print, is that it's not on 
-#      the net
-# move to "${foo}" from $foo and ${foo}
-# add debuging info that gets sent to "logger lpd.debug"
-# if we timeout while printing the banner page, we do not keep trying to print.
-# perhaps filter_timeout should only complain once per job; like badfile.
-# check if the timeout messages are duplicated by the lp system
-# psa will not drop in for pap to use accting.  perhaps lp does not need it?
-# make pap print all the files at once; kill for file in ($files)
-# move badfile error to printfile function
-#####
-
-# This File is released under the Perl Artistic Licence.  
-# See http://www.perl.org for details
-#
-# Or you can use it under the licence that accompanies Netatalk 1.3 =)
-
-###########
-## Netatalk printer interface.  Heavily modified from 
-## /usr/lib/lp/model/standard on Sparc Solaris 2.5.1 (May 97)
-##
-## Meant to be used w/ add_netatalk_printer
-###########
-
-#####
-# This program is invoked as
-#
-# ${SPOOLDIR}/.../printer request-id user title copies options files...
-#
-# The first three arguments are simply reprinted on the banner page,
-# the fourth (copies) is used to control the number of copies to print,
-# the fifth (options) is a blank separated list (in a single argument)
-# of user or Spooler supplied options (without the -o prefix),
-# and the last argument(s) is/are the file(s) to print.
-#####
-
-#####
-#
-# The protocol between the interface program and the Spooler
-# is fairly simple:
-#
-#      All standard error output is assumed to indicate a
-#      fault WITH THE REQUEST. The output is mailed to the
-#      user who submitted the print request and the print
-#      request is finished.
-#
-#      If the interface program sets a zero exit code,
-#      it is assumed that the file printed correctly.
-#      If the interface program sets a non-zero exit code
-#      less than 128, it is assumed that the file did not
-#      print correctly, and the user will be notified.
-#      In either case the print request is finished.
-#
-#      If the interface program sets an exit code greater
-#      than 128, it is assumed that the file did not print
-#      because of a printer fault. If an alert isn't already
-#      active (see below) one will be activated. (Exit code
-#      128 should not be used at all. The shell, which executes
-#      this program, turns SIGTERM, used to kill this program
-#      for a cancellation or disabling, into exit 128. The
-#      Spooler thus interpretes 128 as SIGTERM.)
-#
-#      A message sent to the standard input of the ${LPTELL}
-#      program is assumed to describe a fault WITH THE PRINTER.
-#      The output is used in an alert (if alerts are defined).
-#      If the fault recovery is "wait" or "begin", the printer
-#      is disabled (killing the interface program if need be),
-#      and the print request is left on the queue.
-#      If the fault recovery is "continue", the interface program
-#      is allowed to wait for the printer fault to be cleared so
-#      it can resume printing.
-#
-#####
-
-###########################################################################
-#
-# Set up the basic traps. and other important things
-#
-###########################################################################
-
-#####
-# For the time being, just exit if we are poked.
-#####
-
-# SIGTERM handler
-
-trap 'exit' 15
-
-#####
-# We can be clever about getting a hangup or interrupt, though, at least
-# until the filter runs. Do this early, even though $LPTELL
-# isn't defined, so that we're covered.
-#####
-
-trap 'catch_hangup; exit_code=129 exit 129' 1
-trap 'catch_interrupt; exit_code=129 exit 129' 2 3
-
-#####
-# VARIBLE DECLARED - put here so we don't ever run the trap below w/o
-# TMPPREFIX defined.  We hard code /tmp for the moment, but fix that later
-#
-# Use ${TMPPREFIX} as the prefix for all temporary files, so
-# that cleanup is easy. The prefix may be up to 13 characters
-# long, so you only have space for one more character to make
-# a file name. If necessary, make a directory using this prefix
-# for better management of unique temporary file names.
-#####
-
-TMPPREFIX=/tmp/`uname -n`$$
-
-#####
-# Before exiting, set ${exit_code} to the value with which to exit.
-# Otherwise, the exit from this script will be 0.
-#####
-
-trap 'rm -fr ${TMPPREFIX}*; exit ${exit_code}' 0
-
-catch_hangup () {
-       if [ -n "${LPTELL}" ]
-       then
-               echo \
-    "Humm, we got a SIGHUP.  Not sure what it means, but... we'll keep going anyway" \
-          | ${LPTELL} "${printer}"
-       fi
-       return 0
-}
-
-catch_interrupt () {
-       if [ -n "${LPTELL}" ]
-       then
-           echo \
-       "Received an interrupt from the printer.  The reason is unknown." \
-           | ${LPTELL} "${printer}"
-       fi
-       return 0
-}
-
-#####
-# Most of the time we don't want the standard error to be captured
-# by the Spooler, mainly to avoid "Terminated" messages that the
-# shell puts out when we get a SIGTERM. We'll save the standard
-# error channel under another number, so we can use it when it
-# should be captured.
-#
-# Open another channel to the printer port, for use when the
-# regular standard output won't be directed there, such as in
-# command substitution (`cmd`).
-#####
-
-exec 5>&2 2>/dev/null 3>&1
-
-###########################################################################
-#
-# Define local varibles and such
-#
-###########################################################################
-
-#####
-# There is one more varible set by the shell that execs us.
-# FILTER       The filter to run ; we ignore this directive
-#####
-
-#####
-# Use the user set env, or else default to standard values.
-#####
-
-: ${SPOOLDIR:=/usr/spool/lp}
-: ${TMPDIR:=/tmp} ; export TMPDIR
-: ${LOCALPATH:=${SPOOLDIR}/bin} ; export LOCALPATH
-
-PATH="/bin:/usr/bin:${LOCALPATH}:${NETATALKHOME}/bin:${NETATALKHOME}/etc"
-export PATH
-
-TMPPREFIX=${TMPDIR}/`uname -n`$$
-
-#####
-# Error levels for the errmsg() func.
-#####
-
-LP_ERR_LABEL="UX:lp" ; export LP_ERR_LABEL
-
-E_IP_ARGS=1
-E_IP_OPTS=2
-E_IP_UNKNOWN=5
-E_IP_BADFILE=6
-
-#####
-# Error message formatter:
-#
-# Invoke as
-#
-#      errmsg severity message-number problem help
-#
-# where severity is "ERROR" or "WARNING", message-number is
-# a unique identifier, problem is a short description of the
-# problem, and help is a short suggestion for fixing the problem.
-#####
-
-errmsg () {
-        case $1 in
-        ERROR )
-                sev="  ERROR";
-                ;;
-        WARNING )
-                sev="WARNING";
-                ;;
-        esac
-        echo "${LP_ERR_LABEL}: ${sev}: $3
-        TO FIX: $4" >&5
-}
-
-parse () {
-        echo "`expr \"$1\" : \"^[^=]*=\(.*\)\"`"
-}
-
-#####
-# die quickly if we do not have the right number of arguments.
-#####
-
-if [ $# -lt 5 ]
-then
-       errmsg ERROR ${E_IP_ARGS} \
-               "wrong number of arguments to interface program" \
-               "consult your system administrator"
-       exit 1
-fi
-
-printer=`basename $0`
-request_id=$1
-
-# this will formated be machine!username, so we want to split that up...
-
-user_name=$2
-machine=`echo $user_name | cut -d! -f1`
-user_name=`echo $user_name | cut -d! -f2`
-
-title=$3
-copies=$4
-option_list=$5
-
-shift 5
-files="$*"
-
-nobanner="yes"
-
-inlist=
-
-for i in ${option_list}
-do
-case "${inlist}${i}" in
-    nobanner )
-       nobanner="yes" ;;
-    banner )
-       nobanner="no" ;;
-#####
-#
-# If you want to add simple options (e.g. -o simple)
-# identify them here.
-#####
-#    simple )
-#      simple="yes" ;;
-
-#####
-# These get ignored, but would matter little anyway since all we see 
-# here is PS anyway.
-#####
-       cpi=* )
-#          cpi=`parse ${i}` ;;
-           true ;;
-       lpi=* )
-#          lpi=`parse ${i}` ;;
-           true ;;
-       length=* )
-#          length=`parse ${i}` ;;
-           true ;;
-       width=* )
-#          width=`parse ${i}` ;;
-           true ;;
-
-       #####
-       # If you want to add simple-value options (e.g. -o value=a)
-       # identify them here.
-       #####
-       #value=* )
-       #    value=`parse ${i}` ;;
-
-       flist=* )
-           flist=`parse ${i}` ;;
-       input* )
-           true ;;
-       * )
-           errmsg WARNING ${E_IP_OPTS} \
-           "unrecognized \"-o ${i}\" option" \
-           "check the option, resubmit if necessary
-           printing continues" ;;
-
-       esac
-done
-
-#####
-# A bit ugly, but grabs the appletalk printer name from the lp system printer
-# description, so it's right up there in admintool.  the appletalk name must 
-# be delimited by [ and ].
-#
-# eg - 'this is the printer [hp-mrsec-l114:lasershared@Research Insitutes] that i use.'
-#####
-
-PAPDEST="`lpstat -D -p "${printer}" | grep -i descrip | sed 's/.*Description:.*\[//g' | sed 's/\].*//g'`"
-
-export PAPDEST
-
-###########################################################################
-#
-# Define our local functions  (parse is declared above option parsing)
-#
-###########################################################################
-
-banner () {
-    echo "#####    User: ${user_name}"
-    echo ""
-    echo "##### Machine: ${user_name}"
-    echo ""
-
-   if [ -n "${title}" ]
-   then
-    echo "#####   Title: ${title}"
-    echo ""
-   fi
-
-    echo "#####   Files: ${flist}"
-    echo ""
-
-#####
-# this should deal w/ the year 2000 ok.  But will die in 2038. =)
-#####
-
-    YEAR=`date '+%y'`
-    YEAR=`expr 1900 + ${YEAR}`
-
-    echo "#####    Date: `date '+%a %H:%M %h %d,'` ${YEAR}"
-    echo ""
-    echo "#####     Job: ${request_id}"
-    echo ""
-
-}
-
-print_banner() {
-    if [ -x ${NETATALKHOME}/bin/timeout ]
-    then
-       banner | ${NETATALKHOME}/etc/psf \
-           | ${NETATALKHOME}/bin/timeout "${time}" ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-    else
-       banner | ${NETATALKHOME}/etc/psf \
-           | ${NETATALKHOME}/bin/pap -c -p "{PAPDEST}"
-    fi
-
-    if [ ${?} -ne 0 ]
-    then
-       filter_timeout
-    fi 
-}
-
-#####
-# ${LPTELL} is the name of a program that will send its
-# standard input to the Spooler. It is used to forward
-# the description of a printer fault to the Spooler,
-# which uses it in an alert to the administrator.
-#####
-if [ ! -x "${LPTELL:=${LOCALPATH}/lp.tell}" ]
-then
-    fake_lptell(){
-       header="no"
-       while read line
-       do
-           if [ "no" = "${header}" ]
-           then
-               errmsg ERROR ${E_IP_UNKNOWN} \
-               "unknown printer/interface failure" \
-               "consult your system administrator; \
-               reasons for failure (if any) follow:"
-               header=yes
-           fi
-           echo "${line}" >&2
-       done
-    return 1
-    }
-    LPTELL=fake_lptell
-fi
-
-
-#####
-# timeout catcher for the printing filter
-#####
-
-filter_timeout() {
-
-       cat > ${TMPPREFIX}D <<EOF
-
-The printer ${printer} either timed out at ${time} seconds or pap exited
-abnormally.  As well, we may have exceeded ${print_tries} print attempts.
-The job ${request_id} from ${user_name} on ${machine} was
-printing when this happened.
-
-It may be that the only problem is the size of the job and the speed
-of the printer.
-
-Here is what $NETATALKHOME/bin/papstatus reports as the current 
-state of the printer:
-
-EOF
-#####
-# We don't need to test for timeout, since we cannot get here w/o it.
-#####
-
-    ${NETATALKHOME}/bin/timeout ${time2} ${NETATALKHOME}/bin/papstatus -p "${PAPDEST}" 2>&1 >> ${TMPPREFIX}D 
-    paperr=${?}
-
-    errmsg WARNING ${E_IP_UNKNOWN} "`cat ${TMPPREFIX}D`" "printing continues"
-#####
-# This ought to deal w/ the problem of nonexistent appletalk names, but...
-# for the moment, it calls filter_death.  But it sends the  papstatus 
-# info to LPTELL anyhow, so you should be able to see the error.
-#####
-
-    if [ ${paperr} -ne 0 -o ${too_many} = "1" ]; then
-       paperr=
-       filter_death
-    fi
-    paperr=
-    echo "serverdict begin 0 exitserver systemdict /quit get exec" | \
-                ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-    return 0
-}
-
-#####
-# Death catcher for filter_timeout
-#####
-
-filter_death() {
-
-    cat > ${TMPPREFIX}Z <<EOF
-Excessive delays w/ the printer ${printer}!
-
-While processing on printer ${printer} the job ${request_id} 
-from ${user_name} on ${machine} timed out at ${time} seconds.  
-
-Then while cleaning that timeout, the cleanup operation failed as
-well.
-
-EOF
-    errmsg ERROR ${E_IP_UNKNOWN} "`cat ${TMPPREFIX}Z`"
-    exit 129
-#####
-# Exit and fault the printer.
-#####
-}
-
-#####
-# Print the job
-#####
-printfile() {
-    trap '' 1  # Let the filter handle a hangup
-    trap '' 2 3        # and interrupts
-#####
-# We use timeout so as to not hang the print queue indefinately.  (pap does not
-# timeout on it's own.)
-#
-# Put the 0<${files} before the "eval" to keep clever users from giving 
-# a file name that evaluates as something to execute.
-#####
-    if [ "${TERM}" == "Netatalk-R" ]; then
-       if [ -x ${NETATALKHOME}/bin/timeout ]; then
-           0<${file} /usr/lib/lp/postscript/postreverse | ${NETATALKHOME}/bin/timeout ${time} ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-       else
-           0<${file} /usr/lib/lp/postscript/postreverse | ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-       fi
-    else
-       if [ -x ${NETATALKHOME}/bin/timeout ]; then
-           0<${file} ${NETATALKHOME}/bin/timeout ${time} ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-       else
-           0<${file} ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-       fi
-    fi
-    paperr=${?}
-    print_tries=`expr "${print_tries}" + 1`
-    if [ "${paperr}" != "0" -a "${print_tries}" -gt "${attempts}" ]; then
-       too_many=1
-    fi
-    trap 'catch_hangup; exit_code=129 exit 129' 1
-    trap 'catch_interrupt; exit_code=129 exit 129' 2 3
-    return ${paperr}
-}
-
-#####
-# Some basic sanity checking:
-#####
-
-if [ ! -x $NETATALKHOME/bin/pap ]
-then
-    echo "Opps, cannot find $NETATALKHOME/bin/pap, so I don't know how to"
-    echo "print things"
-    # exit w/ less than 128 to mark an error w/ the job, and call it done
-    exit 1 
-fi
-
-###########################################################################
-#
-# Start the main section of the program.
-#
-###########################################################################
-
-#####
-# Here i should have a "job canceled" page ready in a trap in case of getting killed
-# but, alas, that would most likely muck up the PS.  So we just drop the job on the 
-# floor.
-#####
-
-#####
-# If you want a custom banner, change the code up in the functions section.
-#####
-
-if [ "no" = "${nobanner}" -a "${TERM}" != "Netatalk-R" ]
-then
-    print_banner
-fi
-
-#####
-# Print some copies of the file(s)
-#####
-
-badfileyet=
-i=1
-while [ $i -le $copies ]
-do
-    for file in ${files}
-    do
-       if [ -r "${file}" ]
-        then
-            print_tries=0
-           until printfile
-           do
-               filter_timeout;
-           done
-       else
-#####
-# Don't complain about not being able to read a file on second and
-# subsequent copies, unless we've not complained yet. This removes
-# repeated messages about the same file yet reduces the chance that the
-# user can remove a file and not know that we had trouble finding it.
-#####
-           if [ "${i}" -le 1 -o -z "${badfileyet}" ]
-           then
-               errmsg WARNING ${E_IP_BADFILE} \
-                   "cannot read file \"${file}\" " \
-                   "see if the file still exists and is readable by the user\
-                   lp (or world), or consult your system administrator; \
-                   We will keep trying to print the other files or copies"
-               badfileyet=yes
-           fi
-       fi
-    done
-    i=`expr $i + 1`
-done
-
-#####
-# print the banner page if we are a reversed queue
-#####
-if [ "no" = "${nobanner}" -a "${TERM}" == "Netatalk-R" ]
-then
-    print_banner
-fi
-
-echo "serverdict begin 0 exitserver systemdict /quit get exec" | \
-                ${NETATALKHOME}/bin/pap -c -p "${PAPDEST}"
-
-Exit_code=0 exit 0
index 95823e5199525a127b1ba7f5cf74f402e7838bd5..ddad9124eaed10e84ffd7c1ecef67c690633ac85 100644 (file)
@@ -1,7 +1,3 @@
 # Makefile.am for etc/
 
 SUBDIRS = afpd cnid_dbd uams netalockd
-
-if USE_APPLETALK
-SUBDIRS += atalkd papd psf
-endif
index 03b8e34f5dc98af0559560d5b76a98efbd90dd0d..a661a5e4c7b8facc7e8ba3f85c051c8db53d179c 100644 (file)
@@ -6,7 +6,6 @@ sbin_PROGRAMS = afpd
 noinst_PROGRAMS = hash
 
 afpd_SOURCES = \
-       afp_asp.c \
        afp_avahi.c \
        afp_config.c \
        afp_dsi.c \
diff --git a/etc/afpd/afp_asp.c b/etc/afpd/afp_asp.c
deleted file mode 100644 (file)
index 7cb4028..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * $Id: afp_asp.c,v 1.29 2010-03-09 06:55:12 franklahm Exp $
- *
- * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- *
- * modified from main.c. this handles afp over asp. 
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifndef NO_DDP
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <signal.h>
-#include <atalk/logger.h>
-#include <errno.h>
-#include <sys/time.h>
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif /* HAVE_SYS_STAT_H */
-
-#include <netatalk/endian.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-#include <atalk/compat.h>
-#include <atalk/util.h>
-
-#include "globals.h"
-#include "switch.h"
-#include "auth.h"
-#include "fork.h"
-
-#ifdef FORCE_UIDGID
-#warning UIDGID
-#include "uid.h"
-#endif /* FORCE_UIDGID */
-
-static AFPObj *child;
-
-static void afp_authprint_remove(AFPObj *);
-
-static void afp_asp_close(AFPObj *obj)
-{
-    ASP asp = obj->handle;
-
-    if (seteuid( obj->uid ) < 0) {
-        LOG(log_error, logtype_afpd, "can't seteuid back %s", strerror(errno));
-        exit(EXITERR_SYS);
-    }
-    close_all_vol();
-    if (obj->options.authprintdir) afp_authprint_remove(obj);
-
-    if (obj->logout)
-        (*obj->logout)();
-
-    LOG(log_info, logtype_afpd, "%.2fKB read, %.2fKB written",
-        asp->read_count / 1024.0, asp->write_count / 1024.0);
-    asp_close( asp );
-}
-
-/* removes the authprint trailing when appropriate */
-static void afp_authprint_remove(AFPObj *obj)
-{
-    ASP asp = obj->handle;
-    char addr_filename[256];
-    char addr_filename_buff[256];
-    struct stat cap_st;
-
-    sprintf(addr_filename, "%s/net%d.%dnode%d", obj->options.authprintdir,
-                ntohs( asp->asp_sat.sat_addr.s_net )/256,
-                ntohs( asp->asp_sat.sat_addr.s_net )%256,
-                asp->asp_sat.sat_addr.s_node );
-
-    memset( addr_filename_buff, 0, 256 );
-
-    if(lstat(addr_filename, &cap_st) == 0) {
-       if( S_ISREG(cap_st.st_mode) ) {
-           int len;
-           int capfd = open( addr_filename, O_RDONLY );
-           if ((len = read( capfd, addr_filename_buff, 256 )) > 0) {
-               int file_pid;
-               char *p_filepid;
-               close(capfd);
-               addr_filename_buff[len] = 0;
-               if ( (p_filepid = strrchr(addr_filename_buff, ':')) != NULL) {
-                   *p_filepid = '\0';
-                   p_filepid++;
-                   file_pid = atoi(p_filepid);
-                   if (file_pid == (int)getpid()) {
-                       if(unlink(addr_filename) == 0) {
-                           LOG(log_info, logtype_afpd, "removed %s", addr_filename);
-                       } else {
-                           LOG(log_info, logtype_afpd, "error removing %s: %s",
-                                   addr_filename, strerror(errno));
-                       }
-                   } else {
-                       LOG(log_info, logtype_afpd, "%s belongs to another pid %d",
-                            addr_filename, file_pid );
-                   }
-               } else { /* no pid info */
-                   if (unlink(addr_filename) == 0) {
-                       LOG(log_info, logtype_afpd, "removed %s", addr_filename );
-                   } else {
-                       LOG(log_info, logtype_afpd, "error removing %s: %s",
-                               addr_filename, strerror(errno));
-                   }
-               }
-           } else {
-               LOG(log_info, logtype_afpd, "couldn't read data from %s", addr_filename );
-           }
-       } else {
-           LOG(log_info, logtype_afpd, "%s is not a regular file", addr_filename );
-       }
-    } else {
-        LOG(log_info, logtype_afpd, "error stat'ing %s: %s",
-                   addr_filename, strerror(errno));
-    }
-}
-
-/* ------------------------
- * SIGTERM
-*/
-static void afp_asp_die(const int sig)
-{
-    ASP asp = child->handle;
-
-    asp_attention(asp, AFPATTN_SHUTDOWN);
-    if ( asp_shutdown( asp ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_die: asp_shutdown: %s", strerror(errno) );
-    }
-
-    afp_asp_close(child);
-    if (sig == SIGTERM || sig == SIGALRM)
-        exit( 0 );
-    else
-        exit(sig);
-}
-
-/* -----------------------------
- * SIGUSR1
- */
-static void afp_asp_timedown(int sig _U_)
-{
-    struct sigaction   sv;
-    struct itimerval   it;
-
-    /* shutdown and don't reconnect. server going down in 5 minutes. */
-    asp_attention(child->handle, AFPATTN_SHUTDOWN | AFPATTN_NORECONNECT |
-                  AFPATTN_TIME(5));
-
-    it.it_interval.tv_sec = 0;
-    it.it_interval.tv_usec = 0;
-    it.it_value.tv_sec = 300;
-    it.it_value.tv_usec = 0;
-    if ( setitimer( ITIMER_REAL, &it, NULL ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_timedown: setitimer: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-
-    memset(&sv, 0, sizeof(sv));
-    sv.sa_handler = afp_asp_die;
-    sigemptyset( &sv.sa_mask );
-    sigaddset(&sv.sa_mask, SIGHUP);
-    sigaddset(&sv.sa_mask, SIGTERM);
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGALRM, &sv, NULL ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_timedown: sigaction: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-
-    /* ignore myself */
-    sv.sa_handler = SIG_IGN;
-    sigemptyset( &sv.sa_mask );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGUSR1, &sv, NULL ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_timedown: sigaction SIGUSR1: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-}
-
-/* ---------------------------------
- * SIGHUP reload configuration file
-*/
-extern volatile int reload_request;
-
-static void afp_asp_reload(int sig _U_)
-{
-    reload_request = 1;
-}
-
-/* ---------------------- */
-#ifdef SERVERTEXT
-static void afp_asp_getmesg (int sig _U_)
-{
-    readmessage(child);
-    asp_attention(child->handle, AFPATTN_MESG | AFPATTN_TIME(5));
-}
-#endif /* SERVERTEXT */
-
-/* ---------------------- */
-void afp_over_asp(AFPObj *obj)
-{
-    ASP asp;
-    struct sigaction  action;
-    int                func,  reply = 0;
-#ifdef DEBUG1
-    int ccnt = 0;
-#endif    
-
-    AFPobj = obj;
-    obj->exit = afp_asp_die;
-    obj->reply = (int (*)()) asp_cmdreply;
-    obj->attention = (int (*)(void *, AFPUserBytes)) asp_attention;
-    child = obj;
-    asp = (ASP) obj->handle;
-
-    /* install signal handlers 
-     * With ASP tickle handler is done in the parent process
-    */
-    memset(&action, 0, sizeof(action));
-
-    /* install SIGHUP */
-    action.sa_handler = afp_asp_reload; 
-    sigemptyset( &action.sa_mask );
-    sigaddset(&action.sa_mask, SIGTERM);
-    sigaddset(&action.sa_mask, SIGUSR1);
-#ifdef SERVERTEXT
-    sigaddset(&action.sa_mask, SIGUSR2);
-#endif    
-    action.sa_flags = SA_RESTART;
-    if ( sigaction( SIGHUP, &action, NULL ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_over_asp: sigaction: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-
-    /*  install SIGTERM */
-    action.sa_handler = afp_asp_die;
-    sigemptyset( &action.sa_mask );
-    sigaddset(&action.sa_mask, SIGHUP);
-    sigaddset(&action.sa_mask, SIGUSR1);
-#ifdef SERVERTEXT
-    sigaddset(&action.sa_mask, SIGUSR2);
-#endif    
-    action.sa_flags = SA_RESTART;
-    if ( sigaction( SIGTERM, &action, NULL ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_over_asp: sigaction: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-
-#ifdef SERVERTEXT
-    /* Added for server message support */
-    action.sa_handler = afp_asp_getmesg;
-    sigemptyset( &action.sa_mask );
-    sigaddset(&action.sa_mask, SIGTERM);
-    sigaddset(&action.sa_mask, SIGUSR1);
-    sigaddset(&action.sa_mask, SIGHUP);
-    action.sa_flags = SA_RESTART;
-    if ( sigaction( SIGUSR2, &action, NULL) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_over_asp: sigaction: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-#endif /* SERVERTEXT */
-
-    /*  SIGUSR1 - set down in 5 minutes  */
-    action.sa_handler = afp_asp_timedown; 
-    sigemptyset( &action.sa_mask );
-    sigaddset(&action.sa_mask, SIGHUP);
-    sigaddset(&action.sa_mask, SIGTERM);
-#ifdef SERVERTEXT
-    sigaddset(&action.sa_mask, SIGUSR2);
-#endif    
-    action.sa_flags = SA_RESTART;
-    if ( sigaction( SIGUSR1, &action, NULL ) < 0 ) {
-        LOG(log_error, logtype_afpd, "afp_over_asp: sigaction: %s", strerror(errno) );
-        afp_asp_die(EXITERR_SYS);
-    }
-
-    LOG(log_info, logtype_afpd, "session from %u.%u:%u on %u.%u:%u",
-        ntohs( asp->asp_sat.sat_addr.s_net ),
-        asp->asp_sat.sat_addr.s_node, asp->asp_sat.sat_port,
-        ntohs( atp_sockaddr( asp->asp_atp )->sat_addr.s_net ),
-        atp_sockaddr( asp->asp_atp )->sat_addr.s_node,
-        atp_sockaddr( asp->asp_atp )->sat_port );
-
-    while ((reply = asp_getrequest(asp))) {
-        if (reload_request) {
-            reload_request = 0;
-            load_volumes(child);
-        }
-        switch (reply) {
-        case ASPFUNC_CLOSE :
-            afp_asp_close(obj);
-            LOG(log_info, logtype_afpd, "done" );
-
-#ifdef DEBUG1
-            if ( obj->options.flags & OPTION_DEBUG ) {
-                printf( "done\n" );
-            }
-#endif
-            return;
-            break;
-
-        case ASPFUNC_CMD :
-#ifdef AFS
-            if ( writtenfork ) {
-                if ( flushfork( writtenfork ) < 0 ) {
-                    LOG(log_error, logtype_afpd, "main flushfork: %s",
-                                               strerror(errno));
-                }
-                writtenfork = NULL;
-            }
-#endif /* AFS */
-            func = (u_char) asp->commands[0];
-#ifdef DEBUG1
-            if ( obj->options.flags & OPTION_DEBUG ) {
-                printf("command: %d (%s)\n", func, AfpNum2name(func));
-                bprint( asp->commands, asp->cmdlen );
-            }
-#endif            
-            if ( afp_switch[ func ] != NULL ) {
-                /*
-                 * The function called from afp_switch is expected to
-                 * read its parameters out of buf, put its
-                 * results in replybuf (updating rbuflen), and
-                 * return an error code.
-                */
-                asp->datalen = ASP_DATASIZ;
-                reply = (*afp_switch[ func ])(obj,
-                                              asp->commands, asp->cmdlen,
-                                              asp->data, &asp->datalen);
-#ifdef FORCE_UIDGID
-               /* bring everything back to old euid, egid */
-               if (obj->force_uid)
-                   restore_uidgid ( &obj->uidgid );
-#endif /* FORCE_UIDGID */
-            } else {
-                LOG(log_error, logtype_afpd, "bad function %X", func );
-                asp->datalen = 0;
-                reply = AFPERR_NOOP;
-            }
-#ifdef DEBUG1
-            if ( obj->options.flags & OPTION_DEBUG ) {
-                printf( "reply: %d, %d\n", reply, ccnt++ );
-                bprint( asp->data, asp->datalen );
-            }
-#endif
-            if ( asp_cmdreply( asp, reply ) < 0 ) {
-                LOG(log_error, logtype_afpd, "asp_cmdreply: %s", strerror(errno) );
-                afp_asp_die(EXITERR_CLNT);
-            }
-            break;
-
-        case ASPFUNC_WRITE :
-            func = (u_char) asp->commands[0];
-#ifdef DEBUG1
-            if ( obj->options.flags & OPTION_DEBUG ) {
-                printf( "(write) command: %d\n", func );
-                bprint( asp->commands, asp->cmdlen );
-            }
-#endif
-            if ( afp_switch[ func ] != NULL ) {
-                asp->datalen = ASP_DATASIZ;
-                reply = (*afp_switch[ func ])(obj,
-                                              asp->commands, asp->cmdlen,
-                                              asp->data, &asp->datalen);
-#ifdef FORCE_UIDGID
-               /* bring everything back to old euid, egid */
-               if (obj->force_uid)
-                   restore_uidgid ( &obj->uidgid );
-#endif /* FORCE_UIDGID */
-            } else {
-                LOG(log_error, logtype_afpd, "(write) bad function %X", func );
-                asp->datalen = 0;
-                reply = AFPERR_NOOP;
-            }
-#ifdef DEBUG1
-            if ( obj->options.flags & OPTION_DEBUG ) {
-                printf( "(write) reply code: %d, %d\n", reply, ccnt++ );
-                bprint( asp->data, asp->datalen );
-            }
-#endif
-            if ( asp_wrtreply( asp, reply ) < 0 ) {
-                LOG(log_error, logtype_afpd, "asp_wrtreply: %s", strerror(errno) );
-                afp_asp_die(EXITERR_CLNT);
-            }
-            break;
-        default:
-            /*
-               * Bad asp packet.  Probably should have asp filter them,
-               * since they are typically things like out-of-order packet.
-               */
-            LOG(log_info, logtype_afpd, "main: asp_getrequest: %d", reply );
-            break;
-        }
-#ifdef DEBUG1
-        if ( obj->options.flags & OPTION_DEBUG ) {
-#ifdef notdef
-            pdesc( stdout );
-#endif /* notdef */
-            of_pforkdesc( stdout );
-            fflush( stdout );
-        }
-#endif
-    }
-}
-
-#endif
index 52592564cb84b1d9769f68696a5f015a32a581c8..f3adf7bf05406687fc7dcf5ede83e8cc2bdee394 100644 (file)
@@ -25,9 +25,6 @@
 #include <atalk/logger.h>
 #include <atalk/util.h>
 #include <atalk/dsi.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-#include <atalk/nbp.h>
 #include <atalk/afp.h>
 #include <atalk/compat.h>
 #include <atalk/server_child.h>
@@ -64,15 +61,6 @@ void configfree(AFPConfig *configs, const AFPConfig *config)
         }
 
         switch (p->obj.proto) {
-#ifndef NO_DDP
-        case AFPPROTO_ASP:
-            free(p->obj.Obj);
-            free(p->obj.Type);
-            free(p->obj.Zone);
-            atp_close(((ASP) p->obj.handle)->asp_atp);
-            free(p->obj.handle);
-            break;
-#endif /* no afp/asp */
         case AFPPROTO_DSI:
             close(p->fd);
             free(p->obj.handle);
@@ -98,9 +86,6 @@ static char * srvloc_encode(const struct afp_options *options, const char *name)
        char *conv_name;
        unsigned char *p;
        unsigned int i = 0;
-#ifndef NO_DDP
-       char *Obj, *Type = "", *Zone = "";
-#endif
 
        /* Convert name to maccharset */
         if ((size_t)-1 ==(convert_string_allocate( options->unixcharset, options->maccharset,
@@ -129,15 +114,6 @@ static char * srvloc_encode(const struct afp_options *options, const char *name)
        }
        buf[i] = '\0';
 
-#ifndef NO_DDP
-       /* Add ZONE,  */
-        if (nbp_name(options->server, &Obj, &Type, &Zone )) {
-               LOG(log_error, logtype_afpd, "srvloc_encode: can't parse %s", options->server );
-       }
-       else {
-               snprintf( buf+i, sizeof(buf)-i-1 ,"&ZONE=%s", Zone);
-       }
-#endif
        free (conv_name);
 
        return buf;
@@ -182,38 +158,6 @@ srvloc_dereg_err:
 #endif /* USE_SRVLOC */
 }
 
-#ifndef NO_DDP
-static void asp_cleanup(const AFPConfig *config)
-{
-    /* we need to stop tickle handler */
-    asp_stop_tickle();
-    nbp_unrgstr(config->obj.Obj, config->obj.Type, config->obj.Zone,
-                &config->obj.options.ddpaddr);
-}
-
-/* these two are almost identical. it should be possible to collapse them
- * into one with minimal junk. */
-static int asp_start(AFPConfig *config, AFPConfig *configs,
-                     server_child *server_children)
-{
-    ASP asp;
-
-    if (!(asp = asp_getsession(config->obj.handle, server_children,
-                               config->obj.options.tickleval))) {
-        LOG(log_error, logtype_afpd, "main: asp_getsession: %s", strerror(errno) );
-        exit( EXITERR_CLNT );
-    }
-
-    if (asp->child) {
-        configfree(configs, config); /* free a bunch of stuff */
-        afp_over_asp(&config->obj);
-        exit (0);
-    }
-
-    return 0;
-}
-#endif /* no afp/asp */
-
 static afp_child_t *dsi_start(AFPConfig *config, AFPConfig *configs,
                               server_child *server_children)
 {
@@ -240,102 +184,6 @@ static afp_child_t *dsi_start(AFPConfig *config, AFPConfig *configs,
     return child;
 }
 
-#ifndef NO_DDP
-static AFPConfig *ASPConfigInit(const struct afp_options *options,
-                                unsigned char *refcount)
-{
-    AFPConfig *config;
-    ATP atp;
-    ASP asp;
-    char *Obj, *Type = "AFPServer", *Zone = "*";
-    char *convname = NULL;
-
-    if ((config = (AFPConfig *) calloc(1, sizeof(AFPConfig))) == NULL)
-        return NULL;
-
-    if ((atp = atp_open(ATADDR_ANYPORT, &options->ddpaddr)) == NULL)  {
-        LOG(log_error, logtype_afpd, "main: atp_open: %s", strerror(errno) );
-        free(config);
-        return NULL;
-    }
-
-    if ((asp = asp_init( atp )) == NULL) {
-        LOG(log_error, logtype_afpd, "main: asp_init: %s", strerror(errno) );
-        atp_close(atp);
-        free(config);
-        return NULL;
-    }
-
-    /* register asp server */
-    Obj = (char *) options->hostname;
-    if (options->server && (size_t)-1 ==(convert_string_allocate( options->unixcharset, options->maccharset,
-                         options->server, strlen(options->server), &convname)) ) {
-        if ((convname = strdup(options->server)) == NULL ) {
-            LOG(log_error, logtype_afpd, "malloc: %s", strerror(errno) );
-            goto serv_free_return;
-        }
-    }
-
-    if (nbp_name(convname, &Obj, &Type, &Zone )) {
-        LOG(log_error, logtype_afpd, "main: can't parse %s", options->server );
-        goto serv_free_return;
-    }
-    if (convname)
-        free (convname);
-
-    /* dup Obj, Type and Zone as they get assigned to a single internal
-     * buffer by nbp_name */
-    if ((config->obj.Obj  = strdup(Obj)) == NULL)
-        goto serv_free_return;
-
-    if ((config->obj.Type = strdup(Type)) == NULL) {
-        free(config->obj.Obj);
-        goto serv_free_return;
-    }
-
-    if ((config->obj.Zone = strdup(Zone)) == NULL) {
-        free(config->obj.Obj);
-        free(config->obj.Type);
-        goto serv_free_return;
-    }
-
-    /* make sure we're not registered */
-    nbp_unrgstr(Obj, Type, Zone, &options->ddpaddr);
-    if (nbp_rgstr( atp_sockaddr( atp ), Obj, Type, Zone ) < 0 ) {
-        LOG(log_error, logtype_afpd, "Can't register %s:%s@%s", Obj, Type, Zone );
-        free(config->obj.Obj);
-        free(config->obj.Type);
-        free(config->obj.Zone);
-        goto serv_free_return;
-    }
-
-    LOG(log_info, logtype_afpd, "%s:%s@%s started on %u.%u:%u (%s)", Obj, Type, Zone,
-        ntohs( atp_sockaddr( atp )->sat_addr.s_net ),
-        atp_sockaddr( atp )->sat_addr.s_node,
-        atp_sockaddr( atp )->sat_port, VERSION );
-
-    config->fd = atp_fileno(atp);
-    config->obj.handle = asp;
-    config->obj.config = config;
-    config->obj.proto = AFPPROTO_ASP;
-
-    memcpy(&config->obj.options, options, sizeof(struct afp_options));
-    config->optcount = refcount;
-    (*refcount)++;
-
-    config->server_start = asp_start;
-    config->server_cleanup = asp_cleanup;
-
-    return config;
-
-serv_free_return:
-                    asp_close(asp);
-    free(config);
-    return NULL;
-}
-#endif /* no afp/asp */
-
-
 static AFPConfig *DSIConfigInit(const struct afp_options *options,
                                 unsigned char *refcount,
                                 const dsi_proto protocol)
@@ -472,7 +320,7 @@ srvloc_reg_err:
 static AFPConfig *AFPConfigInit(struct afp_options *options,
                                 const struct afp_options *defoptions)
 {
-    AFPConfig *config = NULL, *next = NULL;
+    AFPConfig *next = NULL;
     unsigned char *refcount;
 
     if ((refcount = (unsigned char *)
@@ -481,14 +329,6 @@ static AFPConfig *AFPConfigInit(struct afp_options *options,
         return NULL;
     }
 
-#ifndef NO_DDP
-    /* handle asp transports */
-    if ((options->transports & AFPTRANS_DDP) &&
-            (config = ASPConfigInit(options, refcount)))
-        config->defoptions = defoptions;
-#endif /* NO_DDP */
-
-
     /* set signature */
     set_signature(options);
 
@@ -501,10 +341,11 @@ static AFPConfig *AFPConfigInit(struct afp_options *options,
      *     (next = DSIConfigInit(options, refcount, i)))
      *     next->defoptions = defoptions;
      */
-    if ((options->transports & AFPTRANS_TCP) &&
-            (((options->flags & OPTION_PROXY) == 0) ||
-             ((options->flags & OPTION_PROXY) && config))
-            && (next = DSIConfigInit(options, refcount, DSI_TCPIP)))
+    if ( (options->transports & AFPTRANS_TCP)
+         &&
+         ((options->flags & OPTION_PROXY) == 0)
+         &&
+         (next = DSIConfigInit(options, refcount, DSI_TCPIP)))
         next->defoptions = defoptions;
 
     /* load in all the authentication modules. we can load the same
@@ -516,13 +357,7 @@ static AFPConfig *AFPConfigInit(struct afp_options *options,
 
     /* this should be able to accept multiple dsi transports. i think
      * the only thing that gets affected is the net addresses. */
-    status_init(config, next, options);
-
-    /* attach dsi config to tail of asp config */
-    if (config) {
-        config->next = next;
-        return config;
-    }
+    status_init(next, options);
 
     return next;
 }
index c89a9082e473b2e5d18b5ef09513118d58224437..7a603512af2c8538896a3a05a429bded201a0ae8 100644 (file)
@@ -2,7 +2,6 @@
 #define AFPD_CONFIG_H 1
 
 #include <atalk/server_child.h>
-#include <atalk/atp.h>
 
 #include "globals.h"
 
index d89c5501e8097ded5710121685627440e727ce1c..0e44ef009a6dc667745bf5f6f27c5aeab5eeb73b 100644 (file)
@@ -407,10 +407,6 @@ int afp_options_parseline(char *buf, struct afp_options *options)
 
     if ((c = getoption(buf, "-port")))
         options->port = strdup(c);
-#ifndef NO_DDP
-    if ((c = getoption(buf, "-ddpaddr")))
-        atalk_aton(c, &options->ddpaddr);
-#endif
     if ((c = getoption(buf, "-signature")) && (opt = strdup(c)))
         options->signatureopt = opt;
 
@@ -487,13 +483,6 @@ static void show_version( void )
         printf( "        TCP/IP Support:\t" );
         puts( "Yes" );
 
-       printf( "DDP(AppleTalk) Support:\t" );
-#ifdef NO_DDP
-       puts( "No" );
-#else
-       puts( "Yes" );
-#endif
-
        printf( "         CNID backends:\t" );
 #ifdef CNID_BACKEND_CDB
        printf( "cdb ");
index ced4d2047da5d4bc078acf97c8e0bf4994c18e4a..6ff0988459dccd48763ebac847da2fc5a71a2cdf 100644 (file)
@@ -14,7 +14,8 @@
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/stat.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/afp.h>
 #include <atalk/compat.h>
 #include <atalk/util.h>
@@ -71,11 +72,6 @@ int ngroups;
  * These numbers are scattered throughout the code.
  */
 static struct afp_versions  afp_versions[] = {
-#ifndef NO_DDP
-    { "AFPVersion 1.1", 11 },
-    { "AFPVersion 2.0", 20 },
-    { "AFPVersion 2.1", 21 },
-#endif /* ! NO_DDP */
     { "AFP2.2", 22 },
     { "AFPX03", 30 },
     { "AFP3.1", 31 },
@@ -92,7 +88,7 @@ static struct uam_obj uam_changepw = {"", "", 0, {{NULL, NULL, NULL, NULL}}, &ua
 static struct uam_obj *afp_uam = NULL;
 
 
-void status_versions( char *data, const ASP asp, const DSI *dsi)
+void status_versions( char *data, const DSI *dsi)
 {
     char                *start = data;
     u_int16_t           status;
@@ -102,9 +98,6 @@ void status_versions( char *data, const ASP asp, const DSI *dsi)
     num = sizeof( afp_versions ) / sizeof( afp_versions[ 0 ] );
 
     for ( i = 0; i < num; i++ ) {
-#ifndef NO_DDP
-        if ( !asp && (afp_versions[ i ].av_number <= 21)) continue;
-#endif /* ! NO_DDP */
         if ( !dsi && (afp_versions[ i ].av_number >= 22)) continue;
         count++;
     }
@@ -112,9 +105,6 @@ void status_versions( char *data, const ASP asp, const DSI *dsi)
     *data++ = count;
 
     for ( i = 0; i < num; i++ ) {
-#ifndef NO_DDP
-        if ( !asp && (afp_versions[ i ].av_number <= 21)) continue;
-#endif /* ! NO_DDP */
         if ( !dsi && (afp_versions[ i ].av_number >= 22)) continue;
         len = strlen( afp_versions[ i ].av_name );
         *data++ = len;
@@ -266,45 +256,6 @@ static int login(AFPObj *obj, struct passwd *pwd, void (*logout)(void), int expi
     LOG(log_note, logtype_afpd, "%s Login by %s",
         afp_versions[afp_version_index].av_name, pwd->pw_name);
 
-#ifndef NO_DDP
-    if (obj->proto == AFPPROTO_ASP) {
-        ASP asp = obj->handle;
-        int addr_net = ntohs( asp->asp_sat.sat_addr.s_net );
-        int addr_node  = asp->asp_sat.sat_addr.s_node;
-
-        if (obj->options.authprintdir) {
-            if(addr_net && addr_node) { /* Do we have a valid Appletalk address? */
-                char nodename[256];
-                FILE *fp;
-                int mypid = getpid();
-                struct stat stat_buf;
-
-                sprintf(nodename, "%s/net%d.%dnode%d", obj->options.authprintdir,
-                        addr_net / 256, addr_net % 256, addr_node);
-                LOG(log_info, logtype_afpd, "registering %s (uid %d) on %u.%u as %s",
-                    pwd->pw_name, pwd->pw_uid, addr_net, addr_node, nodename);
-
-                if (stat(nodename, &stat_buf) == 0) { /* file exists */
-                    if (S_ISREG(stat_buf.st_mode)) { /* normal file */
-                        unlink(nodename);
-                        fp = fopen(nodename, "w");
-                        fprintf(fp, "%s:%d\n", pwd->pw_name, mypid);
-                        fclose(fp);
-                        chown( nodename, pwd->pw_uid, -1 );
-                    } else { /* somebody is messing with us */
-                        LOG(log_error, logtype_afpd, "print authfile %s is not a normal file, it will not be modified", nodename );
-                    }
-                } else { /* file 'nodename' does not exist */
-                    fp = fopen(nodename, "w");
-                    fprintf(fp, "%s:%d\n", pwd->pw_name, mypid);
-                    fclose(fp);
-                    chown( nodename, pwd->pw_uid, -1 );
-                }
-            } /* if (addr_net && addr_node ) */
-        } /* if (options->authprintdir) */
-    } /* if (obj->proto == AFPPROTO_ASP) */
-#endif
-
     if (initgroups( pwd->pw_name, pwd->pw_gid ) < 0) {
 #ifdef RUN_AS_USER
         LOG(log_info, logtype_afpd, "running with uid %d", geteuid());
index 955efc165f975d2427b9f6e2079b04992b9ae0e6..043c4737b90ffcc60882c138d6f5395ad51dfe89 100644 (file)
 #include <sys/uio.h>
 #include <sys/param.h>
 #include <sys/socket.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/dsi.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
 #include <atalk/afp.h>
 #include <atalk/util.h>
 #include <atalk/logger.h>
@@ -116,9 +114,6 @@ static int iconopen(struct vol *vol, u_char creator[ 4 ], int flags, int mode)
 int afp_addicon(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
-#ifndef NO_DDP
-    struct iovec       iov[ 2 ];
-#endif
     u_char             fcreator[ 4 ], imh[ 12 ], irh[ 12 ], *p;
     int                        itype, cc = AFP_OK, iovcnt = 0;
     size_t             buflen;
@@ -217,37 +212,6 @@ addicon_err:
     }
 
     switch (obj->proto) {
-#ifndef NO_DDP
-    case AFPPROTO_ASP:
-        buflen = bsize;
-        if ((asp_wrtcont(obj->handle, rbuf, &buflen) < 0) || buflen != bsize)
-            return( AFPERR_PARAM );
-
-        /*
-         * We're at the end of the file, add the headers, etc.  */
-        if ( cc == 0 ) {
-            iov[ 0 ].iov_base = (caddr_t)imh;
-            iov[ 0 ].iov_len = sizeof( imh );
-            iov[ 1 ].iov_base = rbuf;
-            iov[ 1 ].iov_len = bsize;
-            iovcnt = 2;
-        }
-
-        /*
-         * We found an icon to replace.
-         */
-        if ( cc > 0 ) {
-            iov[ 0 ].iov_base = rbuf;
-            iov[ 0 ].iov_len = bsize;
-            iovcnt = 1;
-        }
-
-        if ( writev( si.sdt_fd, iov, iovcnt ) < 0 ) {
-            LOG(log_error, logtype_afpd, "afp_addicon(%s): writev: %s", icon_dtfile(vol, fcreator), strerror(errno) );
-            return( AFPERR_PARAM );
-        }
-        break;
-#endif /* no afp/asp */      
     case AFPPROTO_DSI:
         {
             DSI *dsi = obj->handle;
index 5bc922b59c8db37e0c6a57e8f2cd8526f7c979af..731140ababecd7140946c7572b8b392615a7525e 100644 (file)
@@ -25,8 +25,7 @@
 #define AFPD_DIRECTORY_H 1
 
 #include <sys/types.h>
-/*#include <sys/stat.h>*/ /* including it here causes some confusion */
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 #include <dirent.h>
 
 /* sys/types.h usually snarfs in major/minor macros. if they don't
index 5839084688a0641d54ca194fdd5116577a2fe74d..bd9f77645eb29f9d7e73f52b3724053fa14c83e8 100644 (file)
@@ -26,7 +26,7 @@
 
 /*#include <sys/stat.h>*/ /* including it here causes some confusion */
 #include <sys/param.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 #include <atalk/adouble.h>
 
 #include "globals.h"
index 0c9ccef9c3c6f5e318532cce3f653c0cbd425276..4133eebdbe40544bee0f1d77810f617ee8fb865a 100644 (file)
@@ -18,8 +18,6 @@
 
 #include <netatalk/at.h>
 #include <atalk/dsi.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
 #include <atalk/afp.h>
 #include <atalk/adouble.h>
 #include <atalk/logger.h>
@@ -1246,24 +1244,6 @@ static int write_fork(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, s
 
     /* this is yucky, but dsi can stream i/o and asp can't */
     switch (obj->proto) {
-#ifndef NO_DDP
-    case AFPPROTO_ASP:
-        if (asp_wrtcont(obj->handle, rbuf, rbuflen) < 0) {
-            *rbuflen = 0;
-            LOG(log_error, logtype_afpd, "afp_write: asp_wrtcont: %s", strerror(errno) );
-            return( AFPERR_PARAM );
-        }
-
-        if ((cc = write_file(ofork, eid, offset, rbuf, *rbuflen,
-                             xlate)) < 0) {
-            *rbuflen = 0;
-            ad_tmplock(ofork->of_ad, eid, ADLOCK_CLR, saveoff, reqcount, ofork->of_refnum);
-            return cc;
-        }
-        offset += cc;
-        break;
-#endif /* no afp/asp */
-
     case AFPPROTO_DSI:
     {
         DSI *dsi = obj->handle;
index d534ef5149c666fe5aeaf5f92edc08dcd20a34bb..c1060dbe3492f569f57a28b0c296e436a85ceb84 100644 (file)
@@ -7,8 +7,8 @@
 #define AFPD_FORK_H 1
 
 #include <stdio.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/adouble.h>
 #include "volume.h"
 #include "directory.h"
index af622f6a62fc56cd067447bfacd488f87b511e07..dc64fb15d40775b4657f5c5f3d55ea94d908b345 100644 (file)
@@ -53,7 +53,6 @@ struct afp_options {
     unsigned char passwdbits, passwdminlen, loginmaxfail;
     u_int32_t server_quantum;
     char hostname[MAXHOSTNAMELEN + 1], *server, *ipaddr, *port, *configfile;
-    struct at_addr ddpaddr;
     char *uampath, *fqdn;
     char *pidfile;
     char *sigconffile;
@@ -138,9 +137,6 @@ extern const char *AfpErr2name(int err);
 /* directory.c */
 extern struct dir rootParent;
 
-#ifndef NO_DDP
-extern void afp_over_asp (AFPObj *);
-#endif /* NO_DDP */
 extern void afp_over_dsi (AFPObj *);
 
 #endif /* globals.h */
index 84ca41274936e01eee6d3d457214ce596ccfbf5c..c926c36899ebeaa529e0d8ec81bc752057c41b64 100644 (file)
@@ -24,8 +24,6 @@
 #include <netatalk/at.h>
 #include <atalk/compat.h>
 #include <atalk/dsi.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
 #include <atalk/afp.h>
 #include <atalk/paths.h>
 #include <atalk/util.h>
@@ -115,11 +113,6 @@ static void fd_reset_listening_sockets(void)
 /* ------------------ */
 static void afp_goaway(int sig)
 {
-
-#ifndef NO_DDP
-    asp_kill(sig);
-#endif /* ! NO_DDP */
-
     if (server_children)
         server_child_kill(server_children, CHILD_DSIFORK, sig);
 
@@ -320,7 +313,7 @@ int main(int ac, char **av)
 
     /* Initialize */
     cnid_init();
-    if (locktable_init() != 0)
+    if (locktable_init("XXX") != 0)
         exit(EXITERR_SYS);
 #if 0
     if (rpc_init("127.0.0.1", 4701) != 0)
index 1b848c5fde90f2f37ab022c36e21721ec7755d90..d6d3dfd9cda014e90277db822166623c0fc93e66 100644 (file)
 #endif /* BSD4_4 */
 #endif
 
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/dsi.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-#include <atalk/nbp.h>
 #include <atalk/unicode.h>
 #include <atalk/util.h>
 
@@ -91,9 +88,6 @@ static int status_server(char *data, const char *server, const struct afp_option
 
     /* extract the obj part of the server */
     Obj = (char *) server;
-#ifndef NO_DDP
-    nbp_name(server, &Obj, &Type, &Zone);
-#endif
     if ((size_t)-1 == (len = convert_string( 
                            options->unixcharset, options->maccharset, 
                            Obj, -1, buf, sizeof(buf))) ) {
@@ -181,7 +175,7 @@ static u_int16_t status_signature(char *data, int *servoffset,
 }
 
 static size_t status_netaddress(char *data, int *servoffset,
-                             const ASP asp, const DSI *dsi,
+                             const DSI *dsi,
                              const struct afp_options *options)
 {
     char               *begin;
@@ -205,7 +199,7 @@ static size_t status_netaddress(char *data, int *servoffset,
     /* number of addresses. this currently screws up if we have a dsi
        connection, but we don't have the ip address. to get around this,
        we turn off the status flag for tcp/ip. */
-    *data++ = ((options->fqdn && dsi)? 1 : 0) + (dsi ? 1 : 0) + (asp ? 1 : 0) +
+    *data++ = ((options->fqdn && dsi)? 1 : 0) + (dsi ? 1 : 0) +
               (((options->flags & OPTION_ANNOUNCESSH) && options->fqdn && dsi)? 1 : 0);
 
     /* ip address */
@@ -279,23 +273,6 @@ static size_t status_netaddress(char *data, int *servoffset,
         }
     }
 
-#ifndef NO_DDP
-    if (asp) {
-        const struct sockaddr_at *ddpaddr = atp_sockaddr(asp->asp_atp);
-
-        /* ddp address */
-        *data++ = 6;
-        *data++ = 0x03; /* ddp address */
-        memcpy(data, &ddpaddr->sat_addr.s_net, sizeof(ddpaddr->sat_addr.s_net));
-        data += sizeof(ddpaddr->sat_addr.s_net);
-        memcpy(data, &ddpaddr->sat_addr.s_node,
-               sizeof(ddpaddr->sat_addr.s_node));
-        data += sizeof(ddpaddr->sat_addr.s_node);
-        memcpy(data, &ddpaddr->sat_port, sizeof(ddpaddr->sat_port));
-        data += sizeof(ddpaddr->sat_port);
-    }
-#endif /* ! NO_DDP */
-
     /* calculate/store Directory Services Names offset */
     offset = htons(data - begin); 
     *servoffset += sizeof(offset);
@@ -382,9 +359,6 @@ static size_t status_utf8servername(char *data, int *nameoffset,
 
     /* extract the obj part of the server */
     Obj = (char *) (options->server ? options->server : options->hostname);
-#ifndef NO_DDP
-    nbp_name(options->server ? options->server : options->hostname, &Obj, &Type, &Zone);
-#endif
     if ((size_t) -1 == (len = convert_string (
                             options->unixcharset, CH_UTF8_MAC, 
                             Obj, -1, data+sizeof(namelen), maxstatuslen-offset )) ) {
@@ -440,24 +414,16 @@ static void status_icon(char *data, const unsigned char *icondata,
 
 /* ---------------------
  */
-void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig,
+void status_init(AFPConfig *dsiconfig,
                  const struct afp_options *options)
 {
-    ASP asp;
     DSI *dsi;
     char *status = NULL;
     size_t statuslen;
     int c, sigoff, ipok;
 
-    if (!(aspconfig || dsiconfig) || !options)
+    if (!dsiconfig || !options)
         return;
-
-    if (aspconfig) {
-        status = aspconfig->status;
-        maxstatuslen=sizeof(aspconfig->status);
-        asp = aspconfig->obj.handle;
-    } else
-        asp = NULL;
        
     ipok = 0;
     if (dsiconfig) {
@@ -509,7 +475,7 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig,
     c = status_server(status, options->server ? options->server :
                       options->hostname, options);
     status_machine(status);
-    status_versions(status, asp, dsi);
+    status_versions(status, dsi);
     status_uams(status, options->uamlist);
     if (options->flags & OPTION_CUSTOMICON)
         status_icon(status, icon, sizeof(icon), c);
@@ -519,7 +485,7 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig,
     sigoff = status_signature(status, &c, options);
     /* c now contains the offset where the netaddress offset lives */
 
-    status_netaddress(status, &c, asp, dsi, options);
+    status_netaddress(status, &c, dsi, options);
     /* c now contains the offset where the Directory Names Count offset lives */
 
     statuslen = status_directorynames(status, &c, dsi, options);
@@ -528,16 +494,6 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig,
     if ( statuslen < maxstatuslen) 
         statuslen = status_utf8servername(status, &c, dsi, options);
 
-#ifndef NO_DDP
-    if (aspconfig) {
-        if (dsiconfig) /* status is dsiconfig->status */
-            memcpy(aspconfig->status, status, statuslen);
-        asp_setstatus(asp, status, statuslen);
-        aspconfig->signature = status + sigoff;
-        aspconfig->statuslen = statuslen;
-    }
-#endif /* ! NO_DDP */
-
     if (dsiconfig) {
         if ((options->flags & OPTION_CUSTOMICON) == 0) {
             status_icon(status, apple_tcp_icon, sizeof(apple_tcp_icon), 0);
index 0db90fd5d3434748c48c3b76d49d9ff79256e7e9..260ca852a1dbaec6ba6aec606a4fd5250e81852e 100644 (file)
@@ -2,7 +2,6 @@
 #define AFPD_STATUS_H 1
 
 #include <atalk/dsi.h>
-#include <atalk/asp.h>
 #include "globals.h"
 #include "afp_config.h"
 
 #define PASSWD_NOSAVE  (1 << 1)
 #define PASSWD_ALL     (PASSWD_SET | PASSWD_NOSAVE)
 
-extern void status_versions (char * /*status*/, const ASP, const DSI *);
+extern void status_versions (char * /*status*/, const DSI *);
 extern void status_uams (char * /*status*/, const char * /*authlist*/);
-extern void status_init (AFPConfig *, AFPConfig *,
-                                 const struct afp_options *);
+extern void status_init (AFPConfig *, const struct afp_options *);
 extern void set_signature(struct afp_options *);
 
 /* FP functions */
index b9045743a8abaab5dd132bc3e82645d1d7833415..5ebf617cf84ab3933944cc0262eeae1d0a8e7312 100644 (file)
@@ -26,8 +26,6 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-#include <netatalk/endian.h>
-#include <atalk/asp.h>
 #include <atalk/dsi.h>
 #include <atalk/afp.h>
 #include <atalk/util.h>
@@ -468,16 +466,6 @@ int uam_afp_read(void *handle, char *buf, size_t *buflen,
     if (!obj)
         return AFPERR_PARAM;
 
-#ifndef NO_DDP
-    switch (obj->proto) {
-    case AFPPROTO_ASP:
-        if ((len = asp_wrtcont(obj->handle, buf, buflen )) < 0)
-            goto uam_afp_read_err;
-        return action(handle, buf, *buflen);
-        break;
-
-    case AFPPROTO_DSI:
-#endif
         len = dsi_writeinit(obj->handle, buf, *buflen);
         if (!len || ((len = action(handle, buf, len)) < 0)) {
             dsi_writeflush(obj->handle);
@@ -490,10 +478,6 @@ int uam_afp_read(void *handle, char *buf, size_t *buflen,
                 goto uam_afp_read_err;
             }
         }
-#ifndef NO_DDP
-        break;
-    }
-#endif
     return 0;
 
 uam_afp_read_err:
index a47f562adb82e6a37e5cc948fafd161e8f8a2daf..d2987706e3b8beaffdd11c00f06fd27548b15081 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef AFPD_UNIX_H
 #define AFPD_UNIX_H
 
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include "config.h"
 #include "volume.h"
 
index 76c6f5d244452f129b3eae6c1198e5532bec2418..2970bcc3b25e4ae343491f83951d7b0d4c302ec3 100644 (file)
@@ -20,7 +20,6 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-#include <atalk/asp.h>
 #include <atalk/dsi.h>
 #include <atalk/adouble.h>
 #include <atalk/afp.h>
@@ -240,22 +239,12 @@ static char *volxlate(AFPObj *obj,
         } else if (is_var(p, "$c")) {
             if (afpmaster && xlatevolname)
                 return NULL;
-            if (obj->proto == AFPPROTO_ASP) {
-                ASP asp = obj->handle;
-
-                len = sprintf(dest, "%u.%u", ntohs(asp->asp_sat.sat_addr.s_net),
-                              asp->asp_sat.sat_addr.s_node);
-                dest += len;
-                destlen -= len;
-
-            } else if (obj->proto == AFPPROTO_DSI) {
-                DSI *dsi = obj->handle;
-                len = sprintf(dest, "%s:%u",
-                              getip_string((struct sockaddr *)&dsi->client),
-                              getip_port((struct sockaddr *)&dsi->client));
-                dest += len;
-                destlen -= len;
-            }
+            DSI *dsi = obj->handle;
+            len = sprintf(dest, "%s:%u",
+                          getip_string((struct sockaddr *)&dsi->client),
+                          getip_port((struct sockaddr *)&dsi->client));
+            dest += len;
+            destlen -= len;
         } else if (is_var(p, "$d")) {
             if (afpmaster && xlatevolname)
                 return NULL;
@@ -277,17 +266,8 @@ static char *volxlate(AFPObj *obj,
         } else if (is_var(p, "$i")) {
             if (afpmaster && xlatevolname)
                 return NULL;
-            if (obj->proto == AFPPROTO_ASP) {
-                ASP asp = obj->handle;
-
-                len = sprintf(dest, "%u", ntohs(asp->asp_sat.sat_addr.s_net));
-                dest += len;
-                destlen -= len;
-
-            } else if (obj->proto == AFPPROTO_DSI) {
-                DSI *dsi = obj->handle;
-                q = getip_string((struct sockaddr *)&dsi->client);
-            }
+            DSI *dsi = obj->handle;
+            q = getip_string((struct sockaddr *)&dsi->client);
         } else if (is_var(p, "$s")) {
             if (obj->Obj)
                 q = obj->Obj;
index 2b689faf570bdb17154bc9aa3a3747ffe2c51261..883b1d56729a526bfe84ed48395a7b843a44de01 100644 (file)
@@ -7,7 +7,7 @@
 #define AFPD_VOLUME_H 1
 
 #include <sys/types.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 #include <atalk/volume.h>
 #include <atalk/cnid.h>
diff --git a/etc/atalkd/.gitignore b/etc/atalkd/.gitignore
deleted file mode 100644 (file)
index 681f201..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-atalkd
-.deps
-.libs
-.gitignore
-aep.o config.o main.o multicast.o nbp.o route.o rtmp.o zip.o
diff --git a/etc/atalkd/Makefile.am b/etc/atalkd/Makefile.am
deleted file mode 100644 (file)
index 098a529..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# Makefile.am for etc/atalkd/
-
-pkgconfdir = @PKGCONFDIR@
-
-sbin_PROGRAMS = atalkd
-
-atalkd_SOURCES = aep.c config.c main.c multicast.c nbp.c route.c rtmp.c zip.c 
-atalkd_LDADD = $(top_builddir)/libatalk/libatalk.la
-
-noinst_HEADERS =       \
-       atserv.h        \
-       gate.h          \
-       interface.h     \
-       list.h          \
-       main.h          \
-       multicast.h     \
-       nbp.h           \
-       route.h         \
-       rtmp.h          \
-       zip.h
-
-AM_CFLAGS = -D_PATH_ATALKDCONF=\"$(pkgconfdir)/atalkd.conf\"
diff --git a/etc/atalkd/aep.c b/etc/atalkd/aep.c
deleted file mode 100644 (file)
index 6d3ace9..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * $Id: aep.c,v 1.9 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <errno.h>
-
-#include <atalk/logger.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netatalk/at.h>
-#include <atalk/aep.h>
-#include <atalk/ddp.h>
-
-#include "atserv.h"
-
-int aep_packet(
-    struct atport      *ap,
-    struct sockaddr_at *from,
-    char               *data,
-    int                        len)
-{
-    char               *end;
-
-    end = data + len;
-    if ( data + 2 > end || *data != DDPTYPE_AEP ||
-           *( data + 1 ) != AEPOP_REQUEST ) {
-       LOG(log_info, logtype_atalkd, "aep_packet malformed packet" );
-       return 1;
-    }
-
-    *( data + 1 ) = AEPOP_REPLY;
-    if ( sendto( ap->ap_fd, data, len, 0, (struct sockaddr *)from,
-           sizeof( struct sockaddr_at )) < 0 ) {
-       LOG(log_error, logtype_atalkd, "aep sendto: %s", strerror(errno) );
-       return 1;
-    }
-
-    return 0;
-}
diff --git a/etc/atalkd/atserv.h b/etc/atalkd/atserv.h
deleted file mode 100644 (file)
index 9052ab3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * $Id: atserv.h,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1992 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-#ifndef ATALKD_ATSERV_H
-#define ATALKD_ATSERV_H 1
-
-struct atport {
-    int                        ap_fd;
-    struct atport      *ap_next;
-    struct interface   *ap_iface;
-    u_char             ap_port;
-    int                        (*ap_packet)(struct atport *ap, struct sockaddr_at *from, char *data, int len);
-};
-
-struct atserv {
-    char       *as_name;
-    u_char     as_port;                /* Used as a fall back */
-    int                (*as_packet)(struct atport *ap, struct sockaddr_at *from, char *data, int len);
-};
-
-#endif
diff --git a/etc/atalkd/config.c b/etc/atalkd/config.c
deleted file mode 100644 (file)
index 957c18a..0000000
+++ /dev/null
@@ -1,878 +0,0 @@
-/*
- * $Id: config.c,v 1.20 2009-10-29 11:35:58 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <atalk/logger.h>
-#include <sys/param.h>
-#ifdef TRU64
-#include <sys/mbuf.h>
-#include <net/route.h>
-#endif /* TRU64 */
-#include <net/if.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <atalk/paths.h>
-#include <atalk/util.h>
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-
-/* STDC check */
-#if STDC_HEADERS
-#include <string.h>
-#else /* STDC_HEADERS */
-#ifndef HAVE_STRCHR
-#define strchr index
-#define strrchr index
-#endif /* HAVE_STRCHR */
-char *strchr (), *strrchr ();
-#ifndef HAVE_MEMCPY
-#define memcpy(d,s,n) bcopy ((s), (d), (n))
-#define memmove(d,s,n) bcopy ((s), (d), (n))
-#endif /* ! HAVE_MEMCPY */
-#endif /* STDC_HEADERS */
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-
-#ifdef __svr4__
-#include <sys/sockio.h>
-#include <sys/stropts.h>
-#endif /* __svr4__ */
-
-#include <atalk/unicode.h>
-#include "interface.h"
-#include "multicast.h"
-#include "rtmp.h"
-#include "zip.h"
-#include "list.h"
-#include "main.h"
-
-#ifndef IFF_SLAVE /* a little backward compatibility */
-#define IFF_SLAVE 0
-#endif /* IFF_SLAVE */
-
-int router(struct interface *iface, char **av);
-int dontroute(struct interface *iface, char **av);
-int seed(struct interface *iface, char **av);
-int phase(struct interface *iface, char **av); 
-int net(struct interface *iface, char **av);
-int addr(struct interface *iface, char **av); 
-int zone(struct interface *iface, char **av);
-int noallmulti(struct interface *iface, char **av);
-
-static const struct param {
-    char       *p_name;
-    int                (*p_func)(struct interface *iface, char **av);
-} params[] = {
-    { "router", router },
-    { "dontroute", dontroute },
-    { "seed",  seed },
-    { "phase", phase },
-    { "net",   net },
-    { "addr",  addr },
-    { "zone",  zone },
-    { "noallmulti", noallmulti }
-};
-
-#define ARGV_CHUNK_SIZE 128
-#define MAXLINELEN 2048
-static char **parseline(const char *line)
-{
-    const char  *p;
-    int                  argc = 0;
-    char        *buffer, *tmpbuf;
-    char       **argv;
-
-    /* Ignore empty lines and lines with leading hash marks. */
-    p = line;
-    while ( isspace( *p ) ) {
-       p++;
-    }
-    if ( *p == '#' || *p == '\0' ) {
-       return NULL;
-    }
-
-    buffer = (char *) malloc( strlen( p ) + 1 );
-    if ( !buffer ) {
-       /* FIXME: error handling */
-       return NULL;
-    }
-    strcpy( buffer, p );
-    tmpbuf = buffer;
-
-    argv = (char **) malloc( ARGV_CHUNK_SIZE * sizeof( char * ) );
-    if ( !argv ) {
-       /* FIXME: error handling */
-       free( buffer );
-       return NULL;
-    }
-
-    /*
-     * This parser should be made more powerful -- it should
-     * handle various escapes, e.g. \" and \031.
-     */
-    do {
-       if ( *tmpbuf == '"' ) {
-           argv[ argc++ ] = ++tmpbuf;
-           while ( *tmpbuf != '\0' && *tmpbuf != '"' ) {
-               tmpbuf++;
-           }
-           if ( *tmpbuf == '"' ) {
-               /* FIXME: error handling */
-           }
-       } else {
-           argv[ argc++ ] = tmpbuf;
-           while ( *tmpbuf != '\0' && !isspace( *tmpbuf )) {
-               tmpbuf++;
-           }
-       }
-       *tmpbuf++ = '\0';
-
-       /* Make room for a NULL pointer and our special pointer (s.b.) */
-       if ( (argc + 1) % ARGV_CHUNK_SIZE == 0 ) {
-           char **tmp;
-           tmp = (char **) realloc( argv, argc + 1 + ARGV_CHUNK_SIZE * sizeof( char * ) );
-           if ( !tmp ) {
-               /* FIXME: error handling */
-               free( argv );
-               free( buffer );
-               return NULL;
-           }
-           argv = tmp;
-       }
-
-       /* Skip white spaces. */
-        while ( isspace( *tmpbuf ) ) {
-            tmpbuf++;
-        }
-    } while ( *tmpbuf != '\0' );
-
-    argv[ argc++ ] = NULL;
-    /* We store our buffer pointer in argv, too, so we can free it later.
-     * (But don't tell anyone.)
-     */
-    argv[ argc ] = buffer;
-
-    return argv;
-}
-
-static void freeline( char **argv )
-{
-    char **tmp = argv;
-
-    if ( argv ) {
-       while ( *tmp ) {
-           tmp++;
-       }
-       free( *++tmp );
-       free( argv );
-    }
-}
-
-int writeconf(char *cf)
-{
-    struct stat                st;
-    char               *path, *p, newpath[ MAXPATHLEN ], line[ MAXLINELEN ];
-    char               **argv;
-    FILE               *conf, *newconf;
-    struct interface   *iface;
-    struct list                *l;
-    int                        mode = 0644, fd;
-    size_t             len;
-    char               *zonename;
-
-    if ( cf == NULL ) {
-       path = _PATH_ATALKDCONF;
-    } else {
-       path = cf;
-    }
-
-    /* check if old conf is writable */
-    if ( stat( path, &st ) == 0 ) {
-       if (( st.st_mode & S_IWUSR ) == 0 ) {
-           LOG(log_info, logtype_atalkd, "%s not writable, won't rewrite", path );
-           return( -1 );
-       }
-        mode = st.st_mode;
-    }
-
-    if (( p = strrchr( path, '/' )) == NULL ) {
-       strcpy( newpath, _PATH_ATALKDTMP );
-    } else {
-       sprintf( newpath, "%.*s/%s", (int)(p - path), path, _PATH_ATALKDTMP );
-    }
-    if (( fd = open( newpath, O_WRONLY|O_CREAT|O_TRUNC, mode )) < 0 ) {
-       LOG(log_error, logtype_atalkd, "%s: %s", newpath, strerror(errno) );
-       return( -1 );
-    }
-    if (( newconf = fdopen( fd, "w" )) == NULL ) {
-       LOG(log_error, logtype_atalkd, "fdreopen %s: %s", newpath, strerror(errno) );
-       return( -1 );
-    }
-
-    if (( conf = fopen( path, "r" )) == NULL && cf ) {
-       LOG(log_error, logtype_atalkd, "%s: %s", path, strerror(errno) );
-       return( -1 );
-    }
-
-    iface = interfaces->i_next;
-
-    while ( conf == NULL || fgets( line, sizeof( line ), conf ) != NULL ) {
-       if ( conf != NULL && ( argv = parseline( line )) == NULL ) {
-           if ( fputs( line, newconf ) == EOF ) {
-               LOG(log_error, logtype_atalkd, "fputs: %s", strerror(errno) );
-               return( -1 );
-           }
-           freeline( argv );
-           continue;
-       }
-
-       /* write real lines */
-       if ( iface ) {
-           fprintf( newconf, "%s", iface->i_name );
-           if ( iface->i_flags & IFACE_RSEED ) {
-               fprintf( newconf, " -router" );
-           } else if ( iface->i_flags & IFACE_SEED ) {
-               fprintf( newconf, " -seed" );
-           }
-           if ( iface->i_flags & IFACE_DONTROUTE) {
-               fprintf( newconf, " -dontroute");
-           }
-#ifdef linux
-            if ( !(iface->i_flags & IFACE_ALLMULTI)) {
-               fprintf( newconf, " -noallmulti");
-            }
-#endif
-
-           fprintf( newconf, " -phase %d",
-                   ( iface->i_flags & IFACE_PHASE1 ) ? 1 : 2 );
-           fprintf( newconf, " -net %d", ntohs( iface->i_rt->rt_firstnet ));
-           if ( iface->i_rt->rt_lastnet != iface->i_rt->rt_firstnet ) {
-               fprintf( newconf, "-%d", ntohs( iface->i_rt->rt_lastnet ));
-           }
-           fprintf( newconf, " -addr %u.%u",
-                   ntohs( iface->i_addr.sat_addr.s_net ),
-                   iface->i_addr.sat_addr.s_node );
-           for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) {
-                /* codepage conversion */
-                if ((size_t)(-1) == (len = convert_string_allocate(CH_MAC, CH_UNIX, 
-                                      ((struct ziptab *)l->l_data)->zt_name,
-                                      ((struct ziptab *)l->l_data)->zt_len,
-                                      &zonename)) ) {
-                    if ( NULL == 
-                      (zonename = strdup(((struct ziptab *)l->l_data)->zt_name))) {
-                       LOG(log_error, logtype_atalkd, "malloc: %s",  strerror(errno) );
-                       return( -1 );
-                    }
-                    len = ((struct ziptab *)l->l_data)->zt_len;
-                } 
-               fprintf( newconf, " -zone \"%.*s\"", (int)len, zonename);
-                free(zonename);
-           }
-           fprintf( newconf, "\n" );
-
-           iface = iface->i_next;
-           if ( conf == NULL && iface == NULL ) {
-               break;
-           }
-       }
-    }
-    if ( conf != NULL ) {
-       fclose( conf );
-    }
-    fclose( newconf );
-
-    if ( rename( newpath, path ) < 0 ) {
-       LOG(log_error, logtype_atalkd, "rename %s to %s: %s", newpath, path, strerror(errno) );
-       return( -1 );
-    }
-    return( 0 );
-}
-
-/*
- * Read our config file. If it's not there, return -1. If it is there,
- * but has syntax errors, exit. Format of the file is as follows:
- *
- *     interface [ -seed ] [ -phase number ] [ -net net-range ]
- *     [ -addr net.node ] [ -zone zonename ]...
- * e.g.
- *     le0 -phase 1 -net 7938 -zone Argus
- * or
- *     le0 -phase 2 -net 8043-8044 -zone Argus -zone "Research Systems"
- *     le0 -phase 1 -net 7938 -zone Argus
- *
- * Pretty much everything is optional. Anything that is unspecified is
- * searched for on the network.  If -seed is not specified, the
- * configuration is assumed to be soft, i.e. it can be overridden by
- * another router. If -seed is specified, atalkd will exit if another
- * router disagrees.  If the phase is unspecified, it defaults to phase
- * 2 (the default can be overridden on the command line).  -addr can
- * replace -net, if the network in question isn't a range.  The default
- * zone for an interface is the first zone encountered for that
- * interface.
- */
-int readconf(char *cf)
-{
-    struct ifreq       ifr;
-    struct interface   *iface, *niface;
-    char               line[ MAXLINELEN ], **argv, *p;
-    unsigned int       i, j;
-    int                        s, cc = 0;
-    FILE               *conf;
-
-    if ( cf == NULL ) {
-       p = _PATH_ATALKDCONF;
-    } else {
-       p = cf;
-    }
-    if (( conf = fopen( p, "r" )) == NULL ) {
-        return( -1 );
-    }
-
-#ifndef __svr4__
-    if (( s = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0 ) {
-       perror( "socket" );
-       fclose(conf);
-       return -1;
-    }
-#endif /* __svr4__ */
-
-    while ( fgets( line, sizeof( line ), conf ) != NULL ) {
-       if (( argv = parseline( line )) == NULL ) {
-           continue;
-       }
-
-#ifndef __svr4__
-       /*
-        * Check that av[ 0 ] is a valid interface.
-        * Not possible under sysV.
-        */
-       strlcpy( ifr.ifr_name, argv[ 0 ], sizeof(ifr.ifr_name) );
-
-       /* for devices that don't support appletalk */
-       if ((ioctl(s, SIOCGIFADDR, &ifr) < 0) && (errno == ENODEV)) {
-         perror(argv[0]);
-         goto read_conf_err;
-       }
-
-       if ( ioctl( s, SIOCGIFFLAGS, &ifr ) < 0 ) {
-           perror( argv[ 0 ] );
-           goto read_conf_err;
-       }
-
-       if (ifr.ifr_flags & (IFF_LOOPBACK | IFF_POINTOPOINT |IFF_SLAVE)) {
-           fprintf( stderr, "%s: can't configure.\n", ifr.ifr_name );
-           goto read_conf_err;
-       }
-
-#ifdef IFF_MULTICAST
-       if ((ifr.ifr_flags & IFF_MULTICAST) == 0)
-           fprintf(stderr, "%s: multicast may not work properly.\n",
-                   ifr.ifr_name);
-#endif /* IFF_MULTICAST */
-
-       /* configure hw multicast for this interface. */
-       if (addmulti(ifr.ifr_name, NULL) < 0) {
-         perror(ifr.ifr_name);
-         fprintf(stderr, "Can't configure multicast.\n");
-         goto read_conf_err;
-       }
-
-#endif /* __svr4__ */
-
-       if (( niface = newiface( argv[ 0 ] )) == NULL ) {
-           perror( "newiface" );
-           goto read_conf_err;
-       }
-
-       for ( i = 1; argv[ i ]; i += cc ) {
-           if ( argv[ i ][ 0 ] == '-' ) {
-               argv[ i ]++;
-           }
-           for ( j = 0; j < sizeof( params ) / sizeof( params[ 0 ] ); j++ ) {
-               if ( strcmp( argv[ i ], params[ j ].p_name ) == 0 ) {
-                   if ( params[ j ].p_func != NULL ) {
-                       cc = (*params[ j ].p_func)( niface, &argv[ i + 1 ] );
-                       if (cc < 0) 
-                         goto read_conf_err;
-                       break;
-                   }
-               }
-           }
-           if ( j >= sizeof( params ) / sizeof( params[ 0 ] )) {
-               fprintf( stderr, "%s: attribute not found.\n", argv[ i ] );
-               goto read_conf_err;
-           }
-       }
-
-       for ( iface = interfaces; iface; iface = iface->i_next ) {
-           if ( strcmp( niface->i_name, iface->i_name ) == 0 &&
-                   ((( niface->i_flags & iface->i_flags &
-                   ( IFACE_PHASE1|IFACE_PHASE2 )) != 0 ) ||
-                   niface->i_flags == 0 || iface->i_flags == 0 )) {
-               break;
-           }
-       }
-       if ( iface ) {  /* Already have this interface and phase */
-           fprintf( stderr, "%s already configured!\n", niface->i_name );
-           goto read_conf_err;
-       }
-
-#ifdef linux
-       /* Don't set interface to allmulti if it already is, or -noallmulti was given */
-       if ((ifr.ifr_flags & IFF_ALLMULTI))
-               niface->i_flags |= IFACE_WASALLMULTI; 
-
-       if ((niface->i_flags & IFACE_ALLMULTI) && !(niface->i_flags & IFACE_WASALLMULTI))
-               ifsetallmulti(ifr.ifr_name, 1);
-#endif
-
-       if ( interfaces == NULL ) {
-           interfaces = niface;
-       } else {
-           for ( iface = interfaces; iface->i_next; iface = iface->i_next )
-               ;
-           iface->i_next = niface;
-       }
-       niface->i_next = NULL;
-    }
-
-#ifndef __svr4__
-    close( s );
-#endif /* __svr4__ */
-
-    fclose( conf );
-
-    /*
-     * Note: we've added lo0 to the interface list previously, so we must
-     * have configured more than one interface...
-     */
-    for ( iface = interfaces, cc = 0; iface; iface = iface->i_next, cc++ )
-       ;
-    if ( cc >= IFBASE ) {
-       return( 0 );
-    } else {
-       return( -1 );
-    }
-
-read_conf_err:
-#ifndef __svr4__
-    close(s);
-#endif /* __svr4__ */
-    fclose(conf);
-    return -1;
-}
-
-int noallmulti( struct interface *iface, char **av _U_)
-{
-    /* Linux specific, no effect on other platforms */
-    iface->i_flags &= !IFACE_ALLMULTI;
-
-    return (1);
-}
-       
-/*ARGSUSED*/
-int router(struct interface *iface, char **av _U_)
-{
-    /* make sure "-router" and "-dontroute" aren't both on the same line. */
-    if (iface->i_flags & IFACE_DONTROUTE) {
-       fprintf( stderr, "Can't specify both -router and -dontroute.\n");
-       return -1;
-    }
-
-    /*
-     * Check to be sure "-router" is before "-zone".
-     */
-    if ( iface->i_czt ) {
-       fprintf( stderr, "Must specify -router before -zone.\n");
-       return -1;
-    }
-
-    /* -router also implies -seed */
-    iface->i_flags |= IFACE_RSEED | IFACE_SEED | IFACE_ISROUTER;
-    return( 1 );
-}
-
-/*ARGSUSED*/
-int dontroute(struct interface *iface, char **av _U_)
-{
-    /* make sure "-router" and "-dontroute" aren't both on the same line. */
-    if (iface->i_flags & IFACE_RSEED) {
-       fprintf( stderr, "Can't specify both -router and -dontroute.\n");
-       return -1;
-    }
-
-    iface->i_flags |= IFACE_DONTROUTE;
-    return( 1 );
-}
-
-/*ARGSUSED*/
-int seed( struct interface *iface, char **av _U_)
-{
-    /*
-     * Check to be sure "-seed" is before "-zone". we keep the old
-     * semantics of just ignoring this in a routerless world.
-     */
-    if ( iface->i_czt ) {
-       fprintf( stderr, "Must specify -seed before -zone(%s).\n",
-                iface->i_czt->zt_name);
-       return -1;
-    }
-
-    iface->i_flags |= IFACE_SEED;
-    return( 1 );
-}
-
-int phase(struct interface *iface, char **av)
-{
-    int                        n;
-    char               *pnum;
-
-    if (( pnum = av[ 0 ] ) == NULL ) {
-       fprintf( stderr, "No phase.\n" );
-       return -1;
-    }
-
-    switch ( n = atoi( pnum )) {
-    case 1 :
-       iface->i_flags |= IFACE_PHASE1;
-       break;
-
-    case 2 :
-       iface->i_flags |= IFACE_PHASE2;
-       break;
-
-    default :
-       fprintf( stderr, "No phase %d.\n", n );
-       return -1;
-    }
-    return( 2 );
-}
-
-int net(struct interface *iface, char **av)
-{
-    char               *nrange;
-    char               *stop;
-    int                        net;
-
-    if (( nrange = av[ 0 ] ) == NULL ) {
-       fprintf( stderr, "No network.\n" );
-       return -1;
-    }
-
-    if (( stop = strchr( nrange, '-' )) != NULL ) {
-       stop++;
-    }
-    net = atoi( nrange );
-    if ( net < 0 || net >= 0xffff ) {
-       fprintf( stderr, "Bad network: %d\n", net );
-       return -1;
-    }
-
-    if ( iface->i_rt == NULL && ( iface->i_rt = newrt(iface)) == NULL ) {
-       perror( "newrt" );
-       return -1;
-    }
-
-    if ( iface->i_flags & IFACE_PHASE1 ) {
-       if ( stop != NULL ) {
-           fprintf( stderr, "Phase 1 doesn't use an address range.\n" );
-           return -1;
-       }
-       if ( iface->i_caddr.sat_addr.s_net != ATADDR_ANYNET &&
-               ntohs( iface->i_caddr.sat_addr.s_net ) != net ) {
-           fprintf( stderr, "Net-range (%u) doesn't match net %u.\n",
-                   net, ntohs( iface->i_caddr.sat_addr.s_net ));
-           return -1;
-       }
-       iface->i_rt->rt_firstnet = iface->i_rt->rt_lastnet = htons( net );
-    } else if ( iface->i_flags & IFACE_PHASE2 ) {
-       iface->i_rt->rt_firstnet = htons( net );
-       if ( stop != NULL ) {
-           net = atoi( stop );
-           if ( net < 0 || net >= 0xffff ) {
-               fprintf( stderr, "Bad network: %d\n", net );
-               return -1;
-           }
-       }
-       iface->i_rt->rt_lastnet = htons( net );
-       if ( iface->i_caddr.sat_addr.s_net != ATADDR_ANYNET &&
-               ( ntohs( iface->i_rt->rt_firstnet ) >
-               ntohs( iface->i_caddr.sat_addr.s_net ) ||
-               ntohs( iface->i_rt->rt_lastnet ) <
-               ntohs( iface->i_caddr.sat_addr.s_net ))) {
-           fprintf( stderr, "Net-range (%u-%u) doesn't contain net (%u).\n",
-                   ntohs( iface->i_rt->rt_firstnet ),
-                   ntohs( iface->i_rt->rt_lastnet ),
-                   ntohs( iface->i_caddr.sat_addr.s_net ));
-           return -1;
-       }
-       if ( iface->i_rt->rt_firstnet != iface->i_rt->rt_lastnet ) {
-           iface->i_rt->rt_flags |= RTMPTAB_EXTENDED;
-       }
-    } else {
-       fprintf( stderr, "Must specify phase before networks.\n" );
-       return -1;
-    }
-    return( 2 );
-}
-
-int addr(struct interface *iface, char **av)
-{
-    if ( av[ 0 ] == NULL ) {
-       fprintf( stderr, "No address.\n" );
-       return -1;
-    }
-    if ( atalk_aton( av[ 0 ], &iface->i_caddr.sat_addr ) == 0 ) {
-       fprintf( stderr, "Bad address, %s\n", av[ 0 ] );
-       return -1;
-    }
-
-    if ( iface->i_rt ) {
-       if ( ntohs( iface->i_rt->rt_firstnet ) >
-               ntohs( iface->i_caddr.sat_addr.s_net ) ||
-               ntohs( iface->i_rt->rt_lastnet ) <
-               ntohs( iface->i_caddr.sat_addr.s_net )) {
-           fprintf( stderr, "Net (%u) not in net-range (%u-%u).\n",
-                   ntohs( iface->i_caddr.sat_addr.s_net ),
-                   ntohs( iface->i_rt->rt_firstnet ),
-                   ntohs( iface->i_rt->rt_lastnet ));
-           return -1;
-       }
-    } else {
-       if (( iface->i_rt = newrt(iface)) == NULL ) {
-           perror( "newrt" );
-           return -1;
-       }
-       iface->i_rt->rt_firstnet = iface->i_rt->rt_lastnet =
-               iface->i_caddr.sat_addr.s_net;
-    }
-
-    return( 2 );
-}
-
-int zone(struct interface *iface, char **av)
-{
-    struct ziptab      *zt;
-    char               *zname;
-
-    if ( av[ 0 ]  == NULL ) {
-       fprintf( stderr, "No zone.\n" );
-       return -1;
-    }
-
-    /* codepage conversion */
-    if ((size_t)(-1) == convert_string_allocate(CH_UNIX, CH_MAC, av[0], -1, &zname)) {
-       zname = strdup(av[0]);
-    }
-
-    /*
-     * Only process "-zone" if this interface has "-seed".  We keep our
-     * list of configured zones in the interface structure.  Then we can
-     * check that the network has given us good zones.
-     */
-    if ( iface->i_flags & IFACE_SEED ) {
-        if ( iface->i_rt == NULL ) {
-           fprintf( stderr, "Must specify net-range before zones.\n" );
-           return -1;
-        }
-
-       if (( zt = newzt( strlen( zname ), zname )) == NULL ) {
-           perror( "newzt" );
-           return -1;
-       }
-       if ( iface->i_czt == NULL ) {
-           iface->i_czt = zt;
-       } else {
-           zt->zt_next = iface->i_czt->zt_next;
-           iface->i_czt->zt_next = zt;
-       }
-    }
-    free(zname);
-
-    return( 2 );
-}
-
-/*
- * Get the configuration from the kernel. Only called if there's no
- * configuration.
- */
-int getifconf(void)
-{
-    struct interface   *iface, *niface;
-    struct ifreq        ifr;
-    char                **start, **list;
-    int                        s;
-
-    if (( s = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0 ) {
-       perror( "socket" );
-       return -1;
-    }
-
-    start = list = getifacelist();
-    while (list && *list) {
-        strlcpy(ifr.ifr_name, *list, sizeof(ifr.ifr_name));
-       list++;
-
-       if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0)
-         continue;
-
-       if (ifr.ifr_flags & (IFF_LOOPBACK | IFF_POINTOPOINT | IFF_SLAVE))
-         continue;
-
-       if ((ifr.ifr_flags & IFF_UP) == 0)
-         continue;
-
-       /* for devices that don't support appletalk */
-       if (ioctl(s, SIOCGIFADDR, &ifr) < 0 && (errno == ENODEV))
-         continue;
-
-       for ( iface = interfaces; iface; iface = iface->i_next ) {
-           if ( strcmp( iface->i_name, ifr.ifr_name ) == 0 ) {
-               break;
-           }
-       }
-       if ( iface ) {  /* Already have this interface name */
-           continue;
-       }
-
-
-#ifdef IFF_MULTICAST
-       if ((ifr.ifr_flags & IFF_MULTICAST) == 0)
-         fprintf(stderr, "%s: multicast may not work correctly.\n",
-                 ifr.ifr_name);
-#endif /* IFF_MULTICAST */
-
-       if (addmulti(ifr.ifr_name, NULL) < 0) {
-         fprintf(stderr, "%s: disabled.\n", ifr.ifr_name);
-         continue;
-       }
-       
-       if (( niface = newiface( ifr.ifr_name )) == NULL ) {
-           perror( "newiface" );
-           close(s);
-           freeifacelist(start);
-           return -1;
-       }
-       /*
-        * Could try to get the address from the kernel...
-        */
-
-       if ( interfaces == NULL ) {
-           interfaces = niface;
-       } else {
-           for ( iface = interfaces; iface->i_next; iface = iface->i_next )
-               ;
-           iface->i_next = niface;
-       }
-       niface->i_next = NULL;
-    }
-    freeifacelist(start);
-    (void)close( s );
-    return( 0 );
-}
-
-/*
- * Allocate a new interface structure.  Centralized here so we can change
- * the interface structure and have it updated nicely.
- */
-
-struct interface *newiface( const char *name)
-{
-    struct interface   *niface;
-
-    if (( niface = (struct interface *)calloc(1, sizeof( struct interface )))
-           == NULL ) {
-       return( NULL );
-    }
-    strlcpy( niface->i_name, name, sizeof(niface->i_name));
-#ifdef BSD4_4
-    niface->i_addr.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    niface->i_addr.sat_family = AF_APPLETALK;
-#ifdef BSD4_4
-    niface->i_caddr.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    niface->i_caddr.sat_family = AF_APPLETALK;
-#ifdef linux
-    niface->i_flags = IFACE_ALLMULTI;
-#endif
-    return( niface );
-}
-
-#ifdef __svr4__
-int plumb(void)
-{
-    struct interface   *iface;
-    char               device[ MAXPATHLEN + 1], *p, *t;
-    int                        fd, ppa;
-    int                        digits = 0;
-
-    for ( iface = interfaces; iface != NULL; iface = iface->i_next ) {
-       if ( strcmp( iface->i_name, LOOPIFACE ) == 0 ) {
-           continue;
-       }
-
-       strcpy( device, "/dev/" );
-       strcat( device, iface->i_name );
-       for (t = device; *t != '\0' ; ++t) {
-           if (isdigit(*t) == 0) {
-               p = t + 1;
-           }
-           else {
-               digits++;
-           }
-       }
-
-       if (digits == 0) {
-           LOG(log_error, logtype_atalkd, "plumb: invalid device: %s", device );
-           return -1;
-       }
-       ppa = atoi( p );
-       *p = '\0';
-
-       if (( fd = open( device, O_RDWR, 0 )) < 0 ) {
-           LOG(log_error, logtype_atalkd, "%s: %s", device, strerror(errno) );
-           return -1;
-       }
-       if ( ioctl( fd, I_PUSH, "ddp" ) < 0 ) {
-           LOG(log_error, logtype_atalkd, "I_PUSH: %s", strerror(errno) );
-           close(fd);
-           return -1;
-       }
-       if ( ioctl( fd, IF_UNITSEL, ppa ) < 0 ) {
-           LOG(log_error, logtype_atalkd, "IF_UNITSEL: %s", strerror(errno) );
-           close(fd);
-           return -1;
-       }
-
-       /* configure multicast. */
-       if (addmulti(iface->i_name, NULL) < 0) {
-         perror(iface->i_name);
-         fprintf(stderr,"Can't configure multicast.\n");
-         close(fd);
-         return -1;
-       }
-
-       LOG(log_info, logtype_atalkd, "plumbed %s%d", device, ppa );
-    }
-
-    return( 0 );
-}
-#endif /* __svr4__ */
diff --git a/etc/atalkd/gate.h b/etc/atalkd/gate.h
deleted file mode 100644 (file)
index 9d2869f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * $Id: gate.h,v 1.2 2001-06-25 20:13:45 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-struct gate {
-    struct gate                *g_next,
-                       *g_prev;
-    int                        g_state;
-    struct interface   *g_iface;
-    struct rtmptab     *g_rt;
-    struct sockaddr_at g_sat;
-};
diff --git a/etc/atalkd/interface.h b/etc/atalkd/interface.h
deleted file mode 100644 (file)
index eaefae5..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $Id: interface.h,v 1.6 2009-12-13 02:21:47 didg Exp $
- * Copyright (c) 1990,1992 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifndef ATALKD_INTERFACE_H
-#define ATALKD_INTERFACE_H 1
-
-#include <sys/cdefs.h>
-
-struct interface {
-    struct interface   *i_next;
-    char               i_name[ IFNAMSIZ ];
-    int                        i_flags;
-    int                        i_time;
-    int                 i_group; /* for isolated appletalk domains */
-    struct sockaddr_at i_addr;
-    struct sockaddr_at i_caddr;
-    struct ziptab      *i_czt;
-    struct rtmptab     *i_rt;
-    struct gate                *i_gate;
-    struct atport      *i_ports;
-};
-
-#define IFACE_PHASE1   0x001
-#define IFACE_PHASE2   0x002
-#define IFACE_LOOPBACK 0x004           /* is the loopback interface */
-#define IFACE_SEED     0x008           /* act as seed */
-#define IFACE_ADDR     0x010           /* has an address set */
-#define IFACE_CONFIG   0x020           /* has been configured */
-#define IFACE_NOROUTER 0x040           /* no router on interface */
-#define IFACE_LOOP     0x080           /* has a loopback route */
-#define IFACE_RSEED     0x100           /* almost the same as seed. RSEED
-                                          says that we should try to 
-                                          do routing. */
-#define IFACE_DONTROUTE 0x200           /* don't route this interface */
-#define IFACE_ISROUTER  0x400           /* act as a router. */
-#define IFACE_ALLMULTI  0x800          /* set allmulti on this interface, linux only */
-#define IFACE_WASALLMULTI 0x1000       /* don't unset allmulti on this interface on shutdown, linux only */
-#define IFACE_ERROR    0x2000          /* sendto returned an error */
-
-#define UNSTABLE       2
-#define STABLE         0
-#define STABLEANYWAY   -2
-
-#define IFBASE         2       /* base number of interfaces */
-
-#ifdef linux
-#define LOOPIFACE      "lo"
-#else /* !linux */
-#define LOOPIFACE      "lo0"
-#endif /* linux */
-
-extern struct interface        *interfaces;
-extern struct interface        *ciface;
-struct interface       *newiface (const char *);
-
-#endif /* ATALKD_INTERFACE_H */
diff --git a/etc/atalkd/list.h b/etc/atalkd/list.h
deleted file mode 100644 (file)
index 17b7cce..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * $Id: list.h,v 1.2 2001-06-25 20:13:45 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1992 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-struct list {
-    void       *l_data;
-    struct list        *l_next,
-               *l_prev;
-};
diff --git a/etc/atalkd/main.c b/etc/atalkd/main.c
deleted file mode 100644 (file)
index 469678d..0000000
+++ /dev/null
@@ -1,1559 +0,0 @@
-/*
- * $Id: main.c,v 1.25 2009-12-13 02:21:47 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/ioctl.h>
-
-/* POSIX.1 check */
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif /* HAVE_SYS_WAIT_H */
-#ifndef WEXITSTATUS 
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif /* ! WEXITSTATUS */
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif /* ! WIFEXITED */
-#ifndef WIFSTOPPED
-#define WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
-#endif
-
-#include <errno.h>
-#ifdef TRU64
-#include <sys/mbuf.h>
-#include <net/route.h>
-#endif /* TRU64 */
-#include <net/if.h>
-#include <net/route.h>
-
-#include <netinet/in.h>
-
-#include <signal.h>
-#include <atalk/logger.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netdb.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/compat.h>
-#include <atalk/zip.h>
-#include <atalk/rtmp.h>
-#include <atalk/nbp.h>
-#include <atalk/ddp.h>
-#include <atalk/atp.h>
-#include <atalk/paths.h>
-#include <atalk/util.h>
-
-#ifdef __svr4__
-#include <sys/sockio.h>
-#include <termios.h>
-#endif /* __svr4__ */
-
-#include "interface.h"
-#include "gate.h"
-#include "list.h"
-#include "rtmp.h"
-#include "zip.h"
-#include "nbp.h"
-#include "atserv.h"
-#include "main.h"
-
-/* Forward Declarations */
-int ifconfig(const char *iname, unsigned long cmd, struct sockaddr_at *sa);
-
-/* FIXME/SOCKLEN_T: socklen_t is a unix98 feature */
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
-#endif /* SOCKLEN_T */
-
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(x) ((x).w_retcode)
-#endif /* WEXITSTATUS */
-
-/* linux has a special ioctl for appletalk device destruction.  as of
- * 2.1.57, SIOCDIFADDR works w/ linux. okay, we need to deal with the
- * fact that SIOCDIFADDR may be defined on linux despite the fact that
- * it doesn't work. */
-#if !defined(SIOCDIFADDR) && defined(SIOCATALKDIFADDR)
-#define SIOCDIFADDR SIOCATALKDIFADDR
-#endif
-
-#define elements(a)    (sizeof(a)/sizeof((a)[0]))
-
-#define PKTSZ  1024
-
-extern int aep_packet(struct atport *ap, struct sockaddr_at *from, char *data, int len);
-
-int            rtfd;
-int            transition = 0;
-int            stabletimer, newrtmpdata = 0;
-
-static struct atserv   atserv[] = {
-    { "rtmp",          1,      rtmp_packet },          /* 0 */
-    { "nbp",           2,      nbp_packet },           /* 1 */
-    { "echo",          4,      aep_packet },           /* 2 */
-    { "zip",           6,      zip_packet },           /* 3 */
-};
-static int             atservNATSERV = elements( atserv );
-
-struct interface       *interfaces = NULL, *ciface = NULL;
-
-static int             debug = 0, quiet = 0, chatty = 0;
-static char            *configfile = NULL;
-static int             ziptimeout = 0;
-static int             stable = 0, noparent = 0;
-static int             ninterfaces;
-static int             defphase = IFACE_PHASE2;
-static int             nfds = 0;
-static fd_set          fds;
-static char            Packet[ PKTSZ ];
-static char            *version = VERSION;
-static char            *pidfile = _PATH_ATALKDLOCK;
-
-
-/* from config.c */
-
-int readconf( char * );
-int getifconf( void );
-int writeconf( char * );
-
-/* this is the messiest of the bunch as atalkd can exit pretty much
- * everywhere. we delete interfaces here instead of in as_down. */
-static void atalkd_exit(const int i)
-{
-#ifdef SIOCDIFADDR
-  struct interface *iface;
-
-  for (iface = interfaces; iface; iface = iface->i_next) {
-    if (ifconfig( iface->i_name, SIOCDIFADDR, &iface->i_addr)) {
-#ifdef SIOCATALKDIFADDR
-#if (SIOCDIFADDR != SIOCATALKDIFADDR)
-      if (!ifconfig(iface->i_name, SIOCATALKDIFADDR, &iface->i_addr)) 
-       continue;
-#endif /* SIOCDIFADDR != SIOCATALKDIFADDR */
-#endif /* SIOCATALKIFADDR */
-      LOG(log_error, logtype_atalkd, "difaddr(%u.%u): %s", 
-             ntohs(iface->i_addr.sat_addr.s_net), 
-             iface->i_addr.sat_addr.s_node, strerror(errno));
-    }
-#ifdef linux
-    if (!(iface->i_flags & IFACE_WASALLMULTI) && (iface->i_flags & IFACE_ALLMULTI))
-        ifsetallmulti(iface->i_name, 0);
-#endif /* linux */
-  }
-#endif /* SOPCDOFADDR */
-
-  server_unlock(pidfile);
-  exit(i);
-}
-
-/* XXX need better error handling for gone interfaces, delete routes and so on 
- * moreover there's no way to put an interface back short of restarting atalkd
- * thus after the first time, silently fail
-*/
-static ssize_t sendto_iface(struct interface *iface, int sockfd, const void *buf, size_t len, 
-                       const struct sockaddr_at         *dest_addr)
-{
-    ssize_t ret = sendto( sockfd, buf, len, 0, (struct sockaddr *)dest_addr, sizeof( struct sockaddr_at ));
-
-    if (ret < 0 ) {
-        if (!(iface->i_flags & IFACE_ERROR)) {
-            LOG(log_error, logtype_atalkd, "as_timer sendto %u.%u (%u): %s",
-                                   ntohs( dest_addr->sat_addr.s_net ),
-                                   dest_addr->sat_addr.s_node,
-                                   ntohs( iface->i_rt->rt_firstnet ),
-                                   strerror(errno) );
-        }
-        iface->i_flags |= IFACE_ERROR;
-    }
-    else {
-        iface->i_flags &= ~IFACE_ERROR;
-    }
-    return ret;
-}
-
-static void as_timer(int sig _U_)
-{
-    struct sockaddr_at sat;
-    struct ziphdr      zh;
-    struct rtmp_head   rh;
-    struct rtmp_tuple  rt;
-    struct atport      *ap, *zap, *rap;
-    struct interface   *iface, *iface2;
-    struct gate                *gate, *fgate = NULL;
-    struct rtmptab     *rtmp, *frtmp;
-    struct ziptab      *zt;
-    char               *data, *end, packet[ ATP_BUFSIZ ];
-    int                        sentzipq = 0;
-    int                        n, cc;
-
-    ap=zap=rap=NULL;
-
-    memset(&sat, 0, sizeof( struct sockaddr_at ));
-
-    for ( iface = interfaces; iface; iface = iface->i_next ) {
-       if ( iface->i_flags & IFACE_LOOPBACK ) {
-           continue;
-       }
-       for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-           if ( ap->ap_packet == zip_packet ) {
-               zap = ap;
-           }
-           if ( ap->ap_packet == rtmp_packet ) {
-               rap = ap;
-           }
-       }
-
-       if (( iface->i_flags & ( IFACE_ADDR|IFACE_CONFIG|IFACE_NOROUTER )) == IFACE_ADDR ) {
-           if ( iface->i_time < 3 ) {
-               if ( iface->i_flags & IFACE_PHASE1 ) {
-                 if (rtmp_request( iface ) < 0) {
-                     LOG(log_error, logtype_atalkd, "rtmp_request: %s", strerror(errno));
-                     atalkd_exit(1);
-                 }
-                   newrtmpdata = 1;
-               } else {
-                 if (zip_getnetinfo( iface ) < 0) {
-                   LOG(log_error, logtype_atalkd, "zip_getnetinfo: %s", strerror(errno));
-                   atalkd_exit(1);
-                 }
-                 sentzipq = 1;
-               }
-               iface->i_time++;
-           } else {
-               iface->i_flags |= IFACE_NOROUTER;
-               if ((iface->i_flags & IFACE_ISROUTER)) {
-                   if (( iface->i_flags & IFACE_SEED ) == 0 ) {
-                       /*
-                        * No seed info, and we've got multiple interfaces.
-                        * Wait forever.
-                        */
-                       LOG(log_info, logtype_atalkd, "as_timer multiple interfaces, no seed" );
-                       LOG(log_info, logtype_atalkd, "as_timer can't configure %s", iface->i_name );
-                       LOG(log_info, logtype_atalkd, "as_timer waiting for router" );
-                       iface->i_time = 0;
-                       continue;
-                   } else {
-                       /*
-                        * Complete configuration for iface, and boot next
-                        * interface.
-                        */
-                       iface->i_flags |= IFACE_CONFIG;
-                       for ( zt = iface->i_czt; zt; zt = zt->zt_next ) {
-                           if (addzone( iface->i_rt, zt->zt_len, zt->zt_name) < 0) {
-                             LOG(log_error, logtype_atalkd, "addzone: %s", strerror(errno));
-                             atalkd_exit(1);
-                           }
-                       }
-                       if ( iface->i_rt->rt_zt ) {
-                           iface->i_rt->rt_flags &= ~RTMPTAB_ZIPQUERY;
-                           iface->i_rt->rt_flags |= RTMPTAB_HASZONES;
-                       }
-                       if ( iface->i_flags & IFACE_PHASE1 ) {
-                           LOG(log_info, logtype_atalkd, "as_timer configured %s phase 1 from seed", iface->i_name );
-                           setaddr( iface, IFACE_PHASE1,
-                                   iface->i_caddr.sat_addr.s_net,
-                                   iface->i_addr.sat_addr.s_node,
-                                   iface->i_caddr.sat_addr.s_net,
-                                   iface->i_caddr.sat_addr.s_net );
-                       } else {
-                           LOG(log_info, logtype_atalkd, "as_timer configured %s phase 2 from seed", iface->i_name );
-                       }
-
-                       if ( looproute( iface, RTMP_ADD )) { /* -1 or 1 */
-                           LOG(log_error, logtype_atalkd, "as_timer: can't route %u.%u to loop: %s", 
-                                   ntohs( iface->i_addr.sat_addr.s_net ),
-                                   iface->i_addr.sat_addr.s_node, strerror(errno) );
-                           atalkd_exit( 1 );
-                       }
-                       if ( iface == ciface ) {
-                           ciface = ciface->i_next;
-                           bootaddr( ciface );
-                       }
-                   }
-               } else {
-                   /*
-                    * Configure for no router operation.  Wait for a route
-                    * to become available in rtmp_packet().
-                    */
-                   LOG(log_info, logtype_atalkd, "config for no router" );
-                     
-                   if ( iface->i_flags & IFACE_PHASE2 ) {
-                       iface->i_rt->rt_firstnet = 0;
-                       iface->i_rt->rt_lastnet = htons( STARTUP_LASTNET );
-                       setaddr( iface, IFACE_PHASE2, iface->i_addr.sat_addr.s_net, iface->i_addr.sat_addr.s_node,
-                               0, htons( STARTUP_LASTNET ));
-                   }
-                   if ( looproute( iface, RTMP_ADD ) ) { /* -1 or 1 */
-                       LOG(log_error, logtype_atalkd, "as_timer: can't route %u.%u to loopback: %s",
-                               ntohs( iface->i_addr.sat_addr.s_net ), iface->i_addr.sat_addr.s_node,
-                               strerror(errno) );
-                       atalkd_exit( 1 );
-                   }
-
-                   if ( iface == ciface ) {
-                     ciface = ciface->i_next;
-                     bootaddr( ciface );
-                   }
-               }
-           }
-       }
-
-       for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-           if ( fgate ) {
-               free( (caddr_t)fgate );
-               fgate = NULL;
-           }
-
-           n = 0;
-           data = packet + 1 + sizeof( struct ziphdr );
-           end = packet + sizeof( packet );
-
-           sat = gate->g_sat;
-           sat.sat_port = zap->ap_port;
-
-           /*
-            * Perform timeouts on routers.  If we've only got one
-            * interface, we'll use these timeouts to decide that
-            * our zone has gone away.
-            */
-           if ( ++gate->g_state >= RTMPTAB_BAD ) {
-               LOG(log_info, logtype_atalkd, "as_timer gateway %u.%u down", ntohs( gate->g_sat.sat_addr.s_net ),
-                       gate->g_sat.sat_addr.s_node );
-               rtmp = gate->g_rt;
-               while ( rtmp ) {
-                   frtmp = rtmp->rt_next;
-                   if ( rtmp->rt_hops == RTMPHOPS_POISON || rtmp->rt_iprev == NULL ) {
-                       rtmp_free( rtmp );
-                   } else {
-                       rtmp->rt_hops = RTMPHOPS_POISON;
-                       if ((cc = rtmp_replace( rtmp )) < 0) {
-                         LOG(log_error, logtype_atalkd, "rtmp_replace: %s", strerror(errno));
-                         atalkd_exit(1);
-                       }
-                       if (cc) {
-                           gate->g_state = rtmp->rt_state = RTMPTAB_GOOD;
-                       }
-                   }
-                   rtmp = frtmp;
-               }
-               if ( gate->g_rt == NULL ) {
-                   if ( gate->g_prev == NULL ) {
-                       gate->g_iface->i_gate = gate->g_next;
-                   } else {
-                       gate->g_prev->g_next = gate->g_next;
-                   }
-                   if ( gate->g_next != NULL ) {
-                       gate->g_next->g_prev = gate->g_prev;
-                   }
-                   fgate = gate;       /* can't free here, just mark it */
-               }
-               /*
-                * If this is the last router on the only interface,
-                * reconfigure our netrange.  By marking the interface
-                * as having no router, we will notice when a router
-                * comes back up.
-                *
-                * XXX: actually, we always reconfigure an interface
-                * if we're not a seed router.
-                */
-
-               if ( gate->g_iface->i_gate == NULL && ((iface->i_flags & IFACE_SEED) == 0)) {
-                   gate->g_iface->i_flags |= IFACE_NOROUTER;
-                   gate->g_iface->i_flags &= ~IFACE_CONFIG;
-
-                   /* get rid of any zones associated with this iface */
-                   if (gate->g_iface->i_rt->rt_zt) {
-                     rtmp_delzonemap(gate->g_iface->i_rt);
-                     gate->g_iface->i_rt->rt_flags &= ~RTMPTAB_HASZONES;
-                   }
-
-                   LOG(log_info, logtype_atalkd, "as_timer last gateway down" );
-
-                   /* Set netrange to 0-fffe.  */
-                   if ( gate->g_iface->i_flags & IFACE_PHASE2 ) {
-                       gate->g_iface->i_rt->rt_firstnet = 0;
-                       gate->g_iface->i_rt->rt_lastnet =
-                               htons( STARTUP_LASTNET );
-                       setaddr( iface, IFACE_PHASE2,
-                               iface->i_addr.sat_addr.s_net,
-                               iface->i_addr.sat_addr.s_node,
-                               0, htons( STARTUP_LASTNET ));
-                   }
-               }
-               continue;
-           }
-
-           /*
-            * If we don't have a zone for our interface yet, ask for
-            * it from any router (all routers) on the interface.
-            */
-           if (( iface->i_rt->rt_flags & RTMPTAB_HASZONES ) == 0 ) {
-               iface->i_rt->rt_flags |= RTMPTAB_ZIPQUERY;
-               memcpy( data, &iface->i_rt->rt_firstnet, sizeof( u_short ));
-               data += sizeof( u_short );
-               n++;
-           }
-
-           rtmp = gate->g_rt;
-           while ( rtmp ) {
-               /*
-                * Delete old routing tuples.
-                */
-               if ( rtmp->rt_state != RTMPTAB_PERM ) {
-                   rtmp->rt_state++;
-               }
-
-               /*
-                * We've not been updated for this route in a while.  If
-                * it's not in use, go ahead and remove it.  If it is in
-                * use, mark the route as down (POISON), and look for a
-                * better route.  If one is found, delete this route and use
-                * the new one.  If it's not found, mark the route as GOOD
-                * (so we'll propogate our poison) and delete it the next
-                * time it becomes BAD.
-                */
-               if ( rtmp->rt_state >= RTMPTAB_BAD ) {
-                   frtmp = rtmp->rt_next;
-                   if ( rtmp->rt_iprev == NULL ) {     /* not in use */
-                       rtmp_free( rtmp );
-                   } else {                            /* in use */
-                       if ( rtmp->rt_hops == RTMPHOPS_POISON ) {
-                           rtmp_free( rtmp );
-                       } else {
-                           rtmp->rt_hops = RTMPHOPS_POISON;
-                           if ((cc = rtmp_replace( rtmp )) < 0) {
-                               LOG(log_error, logtype_atalkd, "rtmp_replace: %s", strerror(errno));
-                               atalkd_exit(1);
-                           }
-                           if (cc)
-                               rtmp->rt_state = RTMPTAB_GOOD;
-                       }
-                   }
-                   rtmp = frtmp;
-                   continue;
-               }
-
-               /*
-                * Do ZIP lookups.
-                */
-               if ( rtmp->rt_iprev && ( rtmp->rt_flags & RTMPTAB_HASZONES ) == 0 ) {
-                   if ( data + sizeof( u_short ) > end || n == 255 ) {
-                       /* send what we've got */
-                       zh.zh_op = ZIPOP_QUERY;
-                       zh.zh_count = n;
-                       cc = data - packet;
-                       data = packet;
-                       *data++ = DDPTYPE_ZIP;
-                       memcpy( data, &zh, sizeof( struct ziphdr ));
-
-                       sendto_iface(iface,  zap->ap_fd, packet, cc, &sat);
-                       sentzipq = 1;
-
-                       n = 0;
-                       data = packet + 1 + sizeof( struct ziphdr );
-                       end = packet + sizeof( packet );
-                   }
-
-                   /*
-                    * rt_nzq is number of ZIP Queries we've issued for a
-                    * given netrange.  If we've got ziptimeout on, we
-                    * will only ask 3 times for any given netrange.
-                    * Interestingly enough, since rt_nzq is a u_char,
-                    * it will overflow after a while.  This means we will
-                    * periodically ask for nets that we've decided not to
-                    * ask about, and warn that we can't get it's zone.
-                    */
-                   if ( rtmp->rt_nzq++ == 3 ) {
-                       LOG(log_info, logtype_atalkd, "as_timer can't get zone for %u", ntohs( rtmp->rt_firstnet ));
-                   }
-                   if ( rtmp->rt_nzq > 3 ) {
-                       if ( ziptimeout ) {
-                           rtmp = rtmp->rt_next;
-                           continue;
-                       }
-                   } else {
-                       sentzipq = 1;
-                   }
-                   rtmp->rt_flags |= RTMPTAB_ZIPQUERY;
-                   memcpy( data, &rtmp->rt_firstnet, sizeof( u_short ));
-                   data += sizeof( u_short );
-                   n++;
-               }
-               rtmp = rtmp->rt_next;
-           }
-
-           /* send what we've got */
-           if ( n > 0 ) {
-               zh.zh_op = ZIPOP_QUERY;
-               zh.zh_count = n;
-               cc = data - packet;
-               data = packet;
-               *data++ = DDPTYPE_ZIP;
-               memcpy( data, &zh, sizeof( struct ziphdr ));
-
-               sendto_iface( iface, zap->ap_fd, packet, cc, &sat);
-           }
-       }
-       if ( fgate ) {
-           free( (caddr_t)fgate );
-           fgate = NULL;
-       }
-
-       /*
-        * Send RTMP broadcasts if we have multiple interfaces or our 
-        * interface is configured as a router.  
-        */
-       if ((iface->i_flags & IFACE_ISROUTER)) {
-#ifdef BSD4_4
-           sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-           sat.sat_family = AF_APPLETALK;
-           sat.sat_addr.s_net = ATADDR_ANYNET;
-           sat.sat_addr.s_node = ATADDR_BCAST;
-           sat.sat_port = rap->ap_port;
-
-           data = packet;
-           end = data + sizeof( packet );
-           *data++ = DDPTYPE_RTMPRD;
-           rh.rh_net = iface->i_addr.sat_addr.s_net;
-           rh.rh_nodelen = 8;
-           rh.rh_node = iface->i_addr.sat_addr.s_node;
-           memcpy( data, &rh, sizeof( struct rtmp_head ));
-           data += sizeof( struct rtmp_head );
-           n = 0;
-
-
-           if ( iface->i_flags & IFACE_PHASE1 ) {
-               rt.rt_net = 0;
-               rt.rt_dist = 0x82;
-               memcpy( data, &rt, SZ_RTMPTUPLE );
-               data += SZ_RTMPTUPLE;
-           } else {
-               rt.rt_net = iface->i_rt->rt_firstnet;
-               rt.rt_dist = 0x80;
-               memcpy( data, &rt, SZ_RTMPTUPLE );
-               data += SZ_RTMPTUPLE;
-
-               rt.rt_net = iface->i_rt->rt_lastnet;
-               rt.rt_dist = 0x82;
-               memcpy( data, &rt, SZ_RTMPTUPLE );
-               data += SZ_RTMPTUPLE;
-           }
-
-           for ( iface2 = interfaces; iface2; iface2 = iface2->i_next ) {
-
-             /* XXX: there used to be a bit checking against iface ==
-                iface2. also, we don't want to send an rtmp broadcast
-                to an interface that doesn't want it.  */
-               if ((( iface2->i_flags & IFACE_CONFIG ) == 0) ||
-                   ((iface2->i_flags & IFACE_ISROUTER) == 0)) {
-                   continue;
-               }
-               /*
-                * Fill in tuples.  Always send the same thing, regardless
-                * of the phase of the destination.  Routers who don't
-                * understand extended rtmp packets will toss extended
-                * tuples because their distance will have the high bit set.
-                */
-               for ( rtmp = iface2->i_rt; rtmp; rtmp = rtmp->rt_inext ) {
-                   /* don't broadcast routes we have no zone for */
-                   if ( rtmp->rt_zt == NULL ||
-                           ( rtmp->rt_flags & RTMPTAB_ZIPQUERY ) ||
-                           ( rtmp->rt_flags & RTMPTAB_HASZONES ) == 0 ) {
-                       continue;
-                   }
-
-                   /* split horizon */
-                   if (rtmp->rt_iface == iface) {
-                       continue;
-                   }
-
-                   if ((( rtmp->rt_flags & RTMPTAB_EXTENDED ) &&
-                           data + 2 * SZ_RTMPTUPLE > end ) ||
-                           data + SZ_RTMPTUPLE > end ) {
-
-                       sendto_iface(iface,rap->ap_fd, packet, data - packet, &sat);
-
-                       if ( iface->i_flags & IFACE_PHASE2 ) {
-                           data = packet + 1 + sizeof( struct rtmp_head ) + 2 * SZ_RTMPTUPLE;
-                       } else {
-                           data = packet + 1 + sizeof( struct rtmp_head ) + SZ_RTMPTUPLE;
-                       }
-                       n = 0;
-                   }
-
-                   rt.rt_net = rtmp->rt_firstnet;
-                   rt.rt_dist = rtmp->rt_hops;
-                   if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
-                       rt.rt_dist |= 0x80;
-                   }
-                   memcpy( data, &rt, SZ_RTMPTUPLE );
-                   data += SZ_RTMPTUPLE;
-
-                   if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
-                       rt.rt_net = rtmp->rt_lastnet;
-                       rt.rt_dist = 0x82;
-                       memcpy( data, &rt, SZ_RTMPTUPLE );
-                       data += SZ_RTMPTUPLE;
-                   }
-                   n++;
-               }
-           }
-
-           /* send rest */
-           if ( n ) {
-               sendto_iface(iface, rap->ap_fd, packet, data - packet, &sat);
-           }
-       }
-    }
-
-    /*
-     * Check if we're stable.  Each time we configure an interface, we
-     * sent stabletimer to UNSTABLE.  If stabletimer ever gets to
-     * STABLEANYWAY, we give up and decide to "be" stable anyway.
-     * Normally, we wait for stabletimer get <= STABLE with no new rtmp
-     * data and all zip data complete.
-     */
-    if ( !stable ) {
-       if ( stabletimer <= STABLE && !newrtmpdata && !sentzipq ) {
-           /* write out config file */
-           stable = 1;
-           writeconf( configfile );
-       } else {
-           if ( stabletimer-- <= STABLEANYWAY ) {
-               stable = 1;
-           }
-       }
-       newrtmpdata = 0;
-
-       if ( stable && !noparent ) {
-           noparent = 1;
-           LOG(log_info, logtype_atalkd, "ready %d/%d/%d", stabletimer, newrtmpdata,
-                   sentzipq );
-           if ( !debug ) {
-               /*
-                * Seems like we could get here more than once...
-                */
-               if ( kill( getpid(), SIGSTOP ) < 0 ) {
-                   LOG(log_error, logtype_atalkd, "as_timer: kill-self failed!" );
-                   atalkd_exit( 1 );
-               }
-           }
-       }
-    }
-
-#ifdef DEBUG
-    consistency();
-#endif /* DEBUG */
-}
-
-#ifdef DEBUG
-/*
-* Consistency check...
-*/
-consistency()
-{
-    struct rtmptab     *rtmp;
-    struct list                *lr, *lz;
-    struct ziptab      *zt;
-
-    for ( zt = ziptab; zt; zt = zt->zt_next ) {
-       for ( lr = zt->zt_rt; lr; lr = lr->l_next ) {
-           rtmp = (struct rtmptab *)lr->l_data;
-           if ( rtmp->rt_iprev == 0 && rtmp->rt_gate != 0 ) {
-               LOG(log_error, logtype_atalkd, "%.*s has %u-%u (unused)",
-                       zt->zt_len, zt->zt_name, ntohs( rtmp->rt_firstnet ),
-                       ntohs( rtmp->rt_lastnet ));
-               atalkd_exit(1);
-           }
-           for ( lz = rtmp->rt_zt; lz; lz = lz->l_next ) {
-               if ( zt == (struct ziptab *)lz->l_data ) {
-                   break;
-               }
-           }
-           if ( lz == 0 ) {
-               LOG(log_error, logtype_atalkd, "no map from %u-%u to %.*s", 
-                       ntohs( rtmp->rt_firstnet ),
-                       ntohs( rtmp->rt_lastnet ),
-                       zt->zt_len, zt->zt_name );
-               atalkd_exit(1);
-           }
-       }
-    }
-}
-#endif /* DEBUG */
-
-static void
-as_debug(int sig _U_)
-{
-    struct interface   *iface;
-    struct list                *l;
-    struct ziptab      *zt;
-    struct gate                *gate;
-    struct rtmptab     *rt;
-    FILE               *rtmpdebug;
-
-    if (( rtmpdebug = fopen( _PATH_ATALKDEBUG, "w" )) == NULL ) {
-       LOG(log_error, logtype_atalkd, "rtmp: %s", strerror(errno) );
-    }
-
-    for ( iface = interfaces; iface; iface = iface->i_next ) {
-       fprintf( rtmpdebug, "interface %s %u.%u ", iface->i_name,
-               ntohs( iface->i_addr.sat_addr.s_net ),
-               iface->i_addr.sat_addr.s_node );
-       if ( iface->i_flags & IFACE_PHASE1 ) {
-           putc( '1', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_PHASE2 ) {
-           putc( '2', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_RSEED ) {
-           putc( 'R', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_SEED ) {
-           putc( 'S', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_DONTROUTE ) {
-           putc( 'D', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_ADDR ) {
-           putc( 'A', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_CONFIG ) {
-           putc( 'C', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_NOROUTER ) {
-           putc( 'N', rtmpdebug );
-       }
-       if ( iface->i_flags & IFACE_LOOP ) {
-           putc( 'L', rtmpdebug );
-       }
-       putc( '\n', rtmpdebug );
-
-       if ( iface->i_rt ) {
-           fprintf( rtmpdebug, "\t%u-%u ",
-                   ntohs( iface->i_rt->rt_firstnet ),
-                   ntohs( iface->i_rt->rt_lastnet ));
-           if ( iface->i_rt->rt_flags & RTMPTAB_ZIPQUERY ) {
-               putc( 'q', rtmpdebug );
-           }
-           if ( iface->i_rt->rt_flags & RTMPTAB_HASZONES ) {
-               putc( 'z', rtmpdebug );
-           }
-           if ( iface->i_rt->rt_flags & RTMPTAB_EXTENDED ) {
-               putc( 'x', rtmpdebug );
-           }
-           putc( 'i', rtmpdebug );
-           for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) {
-               zt = (struct ziptab *)l->l_data;
-               fprintf( rtmpdebug, " '%.*s'", zt->zt_len, zt->zt_name );
-           }
-           fprintf( rtmpdebug, "\n" );
-       }
-
-       for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-           fprintf( rtmpdebug, "gate %u.%u %X\n",
-                   ntohs( gate->g_sat.sat_addr.s_net ),
-                   gate->g_sat.sat_addr.s_node, gate->g_state );
-           for ( rt = gate->g_rt; rt; rt = rt->rt_next ) {
-               fprintf( rtmpdebug, "\t%u-%u ", ntohs( rt->rt_firstnet ),
-                       ntohs( rt->rt_lastnet ));
-               if ( rt->rt_flags & RTMPTAB_ZIPQUERY ) {
-                   putc( 'q', rtmpdebug );
-               }
-               if ( rt->rt_flags & RTMPTAB_HASZONES ) {
-                   putc( 'z', rtmpdebug );
-               }
-               if ( rt->rt_flags & RTMPTAB_EXTENDED ) {
-                   putc( 'x', rtmpdebug );
-               }
-               if ( rt->rt_iprev ) {
-                   putc( 'i', rtmpdebug );
-               }
-               for ( l = rt->rt_zt; l; l = l->l_next ) {
-                   zt = (struct ziptab *)l->l_data;
-                   fprintf( rtmpdebug, " '%.*s'", zt->zt_len, zt->zt_name );
-               }
-               fprintf( rtmpdebug, "\n" );
-           }
-       }
-    }
-
-    fclose( rtmpdebug );
-}
-
-/*
- * Called when SIGTERM is recieved.  Remove all routes and then exit.
- */
-static void
-as_down(int sig _U_)
-{
-    struct interface   *iface;
-    struct gate                *gate;
-    struct rtmptab     *rt;
-
-    for ( iface = interfaces; iface; iface = iface->i_next ) {
-       for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-           for ( rt = gate->g_rt; rt; rt = rt->rt_next ) {
-               if ( rt->rt_iprev ) {
-                   if ( gateroute( RTMP_DEL, rt ) < 0 ) {
-                       LOG(log_error, logtype_atalkd, "as_down remove %u-%u failed: %s",
-                               ntohs( rt->rt_firstnet ),
-                               ntohs( rt->rt_lastnet ),
-                               strerror(errno) );
-                   }
-               }
-           }
-       }
-       if ( iface->i_flags & IFACE_LOOP ) {
-         if (looproute( iface, RTMP_DEL )) {
-           LOG(log_error, logtype_atalkd, "as_down remove %s %u.%u failed: %s",
-                   iface->i_name, ntohs( iface->i_addr.sat_addr.s_net ),
-                   iface->i_addr.sat_addr.s_node,
-                   strerror(errno) );
-         }
-       }
-    }
-
-    LOG(log_info, logtype_atalkd, "done" );
-    atalkd_exit( 0 );
-}
-
-int main( int ac, char **av)
-{
-    extern char         *optarg;
-    extern int          optind;
-
-    struct sockaddr_at sat;
-    struct sigaction   sv;
-    struct itimerval   it;
-    sigset_t            signal_set, old_set;
-    
-    struct interface   *iface;
-    int                        status;
-    struct atport      *ap;
-    fd_set             readfds;
-    int                        i, c;
-    SOCKLEN_T          fromlen;
-    char               *prog;
-
-    while (( c = getopt( ac, av, "12qsdtf:P:v" )) != EOF ) {
-       switch ( c ) {
-       case '1' :
-           defphase = IFACE_PHASE1;
-           break;
-
-       case '2' :
-           defphase = IFACE_PHASE2;
-           break;
-
-       case 'd' :
-           debug++;
-           break;
-
-       case 'f' :
-           configfile = optarg;
-           break;
-
-       case 'q' :      /* don't seed */
-           quiet++;
-           break;
-
-       case 's' :      /* seed */
-           chatty++;
-           break;
-
-       case 't' :      /* transition */
-           transition++;
-           break;
-
-       case 'P' :      /* pid file */
-           pidfile = optarg;
-           break;
-
-       case 'v' :      /* version */
-           printf( "atalkd (version %s)\n", version );
-           exit ( 1 );
-           break;
-
-       default :
-           fprintf( stderr, "Unknown option -- '%c'\n", c );
-           exit( 1 );
-       }
-    }
-    if ( optind != ac ) {
-       fprintf( stderr, "Too many arguments.\n" );
-       exit( 1 );
-    }
-
-    if (( prog = strrchr( av[ 0 ], '/' )) == NULL ) {
-       prog = av[ 0 ];
-    } else {
-       prog++;
-    }
-
-    /*
-     * Configure loop back address first, so appearances of "lo0" in
-     * the config file fail.  Also insures that lo0 gets configured,
-     * even if there's some hangup during configuration of some
-     * other interface.
-     */
-    if (( interfaces = newiface( LOOPIFACE )) == NULL ) {
-       perror( "newiface" );
-       exit( 1 );
-    }
-    interfaces->i_flags |= IFACE_PHASE2 | IFACE_LOOPBACK;
-
-    /*
-     * Check our initial configuration before we fork. This way we can
-     * complain about syntax errors on stdout.
-     *
-     * Basically, if we're going to read our config file, we should read
-     * it and initialize our data structures. If we're not going to read
-     * our config file, use GIFCONF to initialize our data structures.
-     */
-    if ( readconf( configfile ) < 0 && getifconf() < 0 ) {
-       fprintf( stderr, "%s: can't get interfaces, exiting.\n", prog );
-       exit( 1 );
-    }
-
-    /* we need to count up our interfaces so that we can simplify things
-     * later. we also need to figure out if we have more than one interface
-     * that is routing. */
-    for (i = 0, ninterfaces = 0, iface = interfaces; iface;
-        iface=iface->i_next) {
-      if (iface->i_flags & IFACE_DONTROUTE)
-       i++;
-      ninterfaces++;
-    }
-    i = ninterfaces - i; /* number of routable interfaces */
-
-    /*
-     * At this point, we have (at least partially) initialized data
-     * structures. Fill in what we can and verify that nothing is obviously
-     * broken.
-     */
-    for (iface = interfaces; iface; iface = iface->i_next) {
-       /* Apply the default phase */
-       if (( iface->i_flags & IFACE_PHASE1 ) == 0 &&
-               ( iface->i_flags & IFACE_PHASE2 ) == 0 ) {
-           iface->i_flags |= defphase;
-       }
-
-        /* set up router flag information. if we have multiple interfaces
-        * and DONTROUTE isn't set, set up ROUTER. i is the number of 
-        * interfaces that don't have the DONTROUTE flag set. */
-       if ((i > IFBASE) && ((iface->i_flags & IFACE_DONTROUTE) == 0)) {
-         iface->i_flags |= IFACE_ISROUTER;
-       }
-
-       /* Set default addresses */
-       if ( iface->i_rt == NULL ) {
-           if (( iface->i_rt = newrt(iface)) == NULL ) {
-               perror( "newrt" );
-               exit( 1 );
-           }
-
-           if ( iface->i_flags & IFACE_PHASE1 ) {
-               iface->i_rt->rt_firstnet = iface->i_rt->rt_lastnet =
-                       iface->i_caddr.sat_addr.s_net;
-           } else {
-               if ( iface->i_caddr.sat_addr.s_net != ATADDR_ANYNET ||
-                       ( iface->i_flags & IFACE_LOOPBACK )) {
-                   iface->i_rt->rt_firstnet = iface->i_rt->rt_lastnet =
-                           iface->i_caddr.sat_addr.s_net;
-               } else {
-                   iface->i_rt->rt_firstnet = htons( STARTUP_FIRSTNET );
-                   iface->i_rt->rt_lastnet = htons( STARTUP_LASTNET );
-               }
-           }
-       }
-       
-       if (( iface->i_flags & IFACE_PHASE1 ) == 0 ) {
-           iface->i_rt->rt_flags |= RTMPTAB_EXTENDED;
-       }
-
-       if ( iface->i_caddr.sat_addr.s_net == ATADDR_ANYNET ) {
-           iface->i_caddr.sat_addr.s_net = iface->i_rt->rt_firstnet;
-       }
-
-       if ( debug ) {
-           dumpconfig( iface );        /* probably needs args */
-       }
-    }
-
-    /*
-     * A little consistency check...
-     */
-    if ( ninterfaces < IFBASE ) {
-       fprintf( stderr, "%s: zero interfaces, exiting.\n", prog );
-       exit( 1 );
-    }
-
-    /*
-     * Set process name for logging
-     */
-
-    set_processname("atalkd");
-
-    /* do this here so that we can use ifconfig */
-#ifdef __svr4__
-    if ( plumb() < 0 ) {
-       fprintf(stderr, "can't establish STREAMS plumbing, exiting.\n" );
-       atalkd_exit( 1 );
-    }
-#endif /* __svr4__ */
-
-    /* delete pre-existing interface addresses. */
-#ifdef SIOCDIFADDR
-    for (iface = interfaces; iface; iface = iface->i_next) {
-      if (ifconfig(iface->i_name, SIOCDIFADDR, &iface->i_addr)) {
-#ifdef SIOCATALKDIFADDR
-#if (SIOCDIFADDR != SIOCATALKDIFADDR)
-       ifconfig(iface->i_name, SIOCATALKDIFADDR, &iface->i_addr);
-#endif /* SIOCDIFADDR != SIOCATALKDIFADDR */
-#endif /* SIOCATALKDIFADDR */
-      }
-    }
-#endif /* SIOCDIFADDR */
-
-    /*
-     * Disassociate. The child will send itself a signal when it is
-     * stable. This indicates that other processes may begin using
-     * AppleTalk.
-     */
-    switch (i = server_lock("atalkd", pidfile, debug)) {
-    case -1:
-      exit(1);
-    case 0: /* child */
-      break;
-    default: /* parent */
-      /*
-       * Wait for the child to send itself a SIGSTOP, after which
-       * we send it a SIGCONT and exit ourself.
-       */
-      if ( wait3( &status, WUNTRACED, (struct rusage *)0 ) != i) {
-       perror( "wait3" );      /* Child died? */
-       atalkd_exit( 1 );
-      }
-      if ( !WIFSTOPPED( status )) {
-       fprintf( stderr, "AppleTalk not up! Check your syslog for the reason." );
-       if ( WIFEXITED( status )) {
-         fprintf( stderr, " Child exited with %d.\n",
-                  WEXITSTATUS( status ));
-       } else {
-         fprintf( stderr, " Child died.\n" );
-       }
-       atalkd_exit( 1 );
-      }
-      if ( kill(i, SIGCONT ) < 0 ) {
-       perror( "kill" );
-       atalkd_exit( 1 );
-      }
-      exit( 0 );
-    }
-
-#ifdef ultrix
-    openlog( prog, LOG_PID );
-#else /* ultrix */
-    set_processname(prog);
-    syslog_setup(log_debug, logtype_default, logoption_pid, logfacility_daemon );
-#endif /* ultrix */
-
-    LOG(log_info, logtype_atalkd, "restart (%s)", version );
-
-    /*
-     * Socket for use in routing ioctl()s. Can't add routes to our
-     * interfaces until we have our routing socket.
-     */
-#ifdef BSD4_4
-    if (( rtfd = socket( PF_ROUTE, SOCK_RAW, AF_APPLETALK )) < 0 ) {
-       LOG(log_error, logtype_atalkd, "route socket: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-    if ( shutdown( rtfd, 0 ) < 0 ) {
-       LOG(log_error, logtype_atalkd, "route shutdown: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-#else /* BSD4_4 */
-    if (( rtfd = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0 ) {
-       LOG(log_error, logtype_atalkd, "route socket: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-#endif /* BSD4_4 */
-
-    ciface = interfaces;
-    bootaddr( ciface );
-
-    memset(&sv, 0, sizeof(sv));
-    sv.sa_handler = as_down;
-    sigemptyset( &sv.sa_mask );
-    sigaddset( &sv.sa_mask, SIGUSR1 );
-    sigaddset( &sv.sa_mask, SIGALRM );
-    sigaddset( &sv.sa_mask, SIGTERM );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGTERM, &sv, NULL) < 0 ) {
-       LOG(log_error, logtype_atalkd, "sigterm: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-
-    sv.sa_handler = as_debug;
-    sigemptyset( &sv.sa_mask );
-    sigaddset( &sv.sa_mask, SIGUSR1 );
-    sigaddset( &sv.sa_mask, SIGALRM );
-    sigaddset( &sv.sa_mask, SIGTERM );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGUSR1, &sv, NULL) < 0 ) {
-       LOG(log_error, logtype_atalkd, "sigusr1: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-
-    sv.sa_handler = as_timer;
-    sigemptyset( &sv.sa_mask );
-    sigaddset( &sv.sa_mask, SIGUSR1 );
-    sigaddset( &sv.sa_mask, SIGALRM );
-    sigaddset( &sv.sa_mask, SIGTERM );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGALRM, &sv, NULL) < 0 ) {
-       LOG(log_error, logtype_atalkd, "sigalrm: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-
-    it.it_interval.tv_sec = 10L;
-    it.it_interval.tv_usec = 0L;
-    it.it_value.tv_sec = 10L;
-    it.it_value.tv_usec = 0L;
-    if ( setitimer( ITIMER_REAL, &it, NULL) < 0 ) {
-       LOG(log_error, logtype_atalkd, "setitimer: %s", strerror(errno) );
-       atalkd_exit( 1 );
-    }
-
-    sigemptyset( &signal_set );
-    sigaddset(&signal_set, SIGALRM);
-#if 0
-    /* don't block SIGTERM */
-    sigaddset(&signal_set, SIGTERM);
-#endif
-    sigaddset(&signal_set, SIGUSR1);
-
-    for (;;) {
-       readfds = fds;
-       if ( select( nfds, &readfds, NULL, NULL, NULL) < 0 ) {
-           if ( errno == EINTR ) {
-               errno = 0;
-               continue;
-           } else {
-               LOG(log_error, logtype_atalkd, "select: %s", strerror(errno) );
-               atalkd_exit( 1 );
-           }
-       }
-
-       for ( iface = interfaces; iface; iface = iface->i_next ) {
-           for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-               if ( FD_ISSET( ap->ap_fd, &readfds )) {
-                   if ( ap->ap_packet ) {
-                       fromlen = sizeof( struct sockaddr_at );
-                       if (( c = recvfrom( ap->ap_fd, Packet, sizeof( Packet ),
-                               0, (struct sockaddr *)&sat, &fromlen )) < 0 ) {
-                           LOG(log_error, logtype_atalkd, "recvfrom: %s", strerror(errno) );
-                           continue;
-                       }
-#ifdef DEBUG1
-                       if ( debug ) {
-                           printf( "packet from %u.%u on %s (%x) %d (%d)\n",
-                                   ntohs( sat.sat_addr.s_net ),
-                                   sat.sat_addr.s_node, iface->i_name,
-                                   iface->i_flags, ap->ap_port, ap->ap_fd );
-                           bprint( Packet, c );
-                       }
-#endif 
-                       if (sigprocmask(SIG_BLOCK, &signal_set, &old_set) < 0) {
-                           LOG(log_error, logtype_atalkd, "sigprocmask: %s", strerror(errno) );
-                           atalkd_exit( 1 );
-                       }
-
-                       if (( *ap->ap_packet )( ap, &sat, Packet, c ) < 0) {
-                         LOG(log_error, logtype_atalkd, "ap->ap_packet: %s", strerror(errno));
-                         atalkd_exit(1);
-                       }
-
-#ifdef DEBUG
-                       consistency();
-#endif 
-                       if (sigprocmask(SIG_SETMASK, &old_set, NULL) < 0) {
-                           LOG(log_error, logtype_atalkd, "sigprocmask old set: %s", strerror(errno) );
-                           atalkd_exit( 1 );
-                       }
-
-                   }
-               }
-           }
-       }
-    }
-}
-
-/*
- * This code is called (from main(), as_timer(), zip_packet(),
- * and rtmp_packet()) to set the initial "bootstrapping" address
- * on an interface.
- */
-void bootaddr(struct interface *iface)
-{
-    if ( iface == NULL ) {
-       return;
-    }
-
-    /* consistency */
-    if ( iface->i_flags & IFACE_ADDR ) {
-       LOG(log_error, logtype_atalkd, "bootaddr OOPS!" );
-       atalkd_exit(1);
-    }
-
-    if ( iface->i_flags & IFACE_PHASE1 ) {
-       setaddr( iface, IFACE_PHASE1, 0,
-               iface->i_caddr.sat_addr.s_node, 0, 0 );
-
-       if ( iface->i_flags & IFACE_LOOPBACK ) {
-           iface->i_flags |= IFACE_CONFIG | IFACE_ADDR;
-           if ( ciface == iface ) {
-               ciface = ciface->i_next;
-               bootaddr( ciface );
-           }
-
-       } else if (rtmp_request( iface ) < 0) {
-         LOG(log_error, logtype_atalkd, "bootaddr (rtmp_request): %s", strerror(errno));
-         atalkd_exit(1);
-       }
-
-    } else {
-       setaddr( iface, IFACE_PHASE2, iface->i_caddr.sat_addr.s_net,
-               iface->i_caddr.sat_addr.s_node,
-               iface->i_rt->rt_firstnet, iface->i_rt->rt_lastnet );
-
-       if ( iface->i_flags & IFACE_LOOPBACK ) {
-           iface->i_flags |= IFACE_CONFIG | IFACE_ADDR;
-           if ( ciface == iface ) {
-               ciface = ciface->i_next;
-               bootaddr( ciface );
-           }
-           
-       } else if (zip_getnetinfo( iface ) < 0) {
-         LOG(log_error, logtype_atalkd, "bootaddr (zip_getnetinfo): %s", strerror(errno));
-         atalkd_exit(1);
-       }
-    }
-    ++iface->i_time;
-    iface->i_flags |= IFACE_ADDR;
-    stabletimer = UNSTABLE;
-}
-
-
-/*
- * Change setaddr()
- * to manage the i_ports field and the fds for select().
- */
-void setaddr(struct interface *iface,
-             u_int8_t  phase, u_int16_t net, u_int8_t node,
-            u_int16_t first, u_int16_t last)
-{
-    int                        i;
-    struct atserv      *as;
-    struct atport      *ap;
-    struct servent     *se;
-    struct sockaddr_at sat;
-    struct netrange    nr;
-
-    if ( iface->i_ports == NULL ) {    /* allocate port structures */
-       for ( i = 0, as = atserv; i < atservNATSERV; i++, as++ ) {
-           if (( se = getservbyname( as->as_name, "ddp" )) == NULL ) {
-               LOG(log_info, logtype_atalkd, "%s: service unknown", as->as_name );
-           } else {
-               as->as_port = ntohs( se->s_port );
-           }
-           if (( ap = (struct atport *)malloc( sizeof( struct atport ))) ==
-                   NULL ) {
-               LOG(log_error, logtype_atalkd, "malloc: %s", strerror(errno) );
-               atalkd_exit( 1 );
-           }
-           ap->ap_fd = 0;
-           ap->ap_next = iface->i_ports;
-           ap->ap_iface = iface;
-           ap->ap_port = as->as_port;
-           ap->ap_packet = as->as_packet;
-
-           iface->i_ports = ap;
-       }
-    } else {                           /* close ports */
-       for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-           (void)close( ap->ap_fd );
-       }
-    }
-
-#ifdef BSD4_4
-    iface->i_addr.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    iface->i_addr.sat_family = AF_APPLETALK;
-    iface->i_addr.sat_addr.s_net = net;
-    iface->i_addr.sat_addr.s_node = node;
-
-    nr.nr_phase = phase;
-    nr.nr_firstnet = first;
-    nr.nr_lastnet = last;
-    memcpy( iface->i_addr.sat_zero, &nr, sizeof( struct netrange ));
-
-    if ( ifconfig( iface->i_name, SIOCSIFADDR, &iface->i_addr )) {
-      LOG(log_error, logtype_atalkd, "setifaddr: %s (%u-%u): %s. try specifying a \
-smaller net range.", iface->i_name, ntohs(first), ntohs(last), strerror(errno));
-       atalkd_exit( 1 );
-    }
-    if ( ifconfig( iface->i_name, SIOCGIFADDR, &iface->i_addr )) {
-       LOG(log_error, logtype_atalkd, "getifaddr: %s: %s", iface->i_name, strerror(errno) );
-       atalkd_exit( 1 );
-    }
-
-    /* open ports */
-    i = 1; /* enable broadcasts */
-#if 0
-    /* useless message, no? */
-    LOG(log_info, logtype_atalkd, "setsockopt incompatible w/ Solaris STREAMS module.");
-#endif /* __svr4__ */
-    for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-       if (( ap->ap_fd = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0 ) {
-           LOG(log_error, logtype_atalkd, "socket: %s", strerror(errno) );
-           atalkd_exit( 1 );
-       }
-#ifndef __svr4__
-       setsockopt(ap->ap_fd, SOL_SOCKET, SO_BROADCAST, &i, sizeof(i));
-#endif /* ! __svr4 */
-
-       memset( &sat, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-       sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-       sat.sat_family = AF_APPLETALK;
-       sat.sat_addr.s_net = iface->i_addr.sat_addr.s_net;
-       sat.sat_addr.s_node = iface->i_addr.sat_addr.s_node;
-       sat.sat_port = ap->ap_port;
-
-       if ( bind( ap->ap_fd, (struct sockaddr *)&sat,
-               sizeof( struct sockaddr_at )) < 0 ) {
-           LOG(log_error, logtype_atalkd, "bind %u.%u:%u: %s",
-                   ntohs( sat.sat_addr.s_net ),
-                   sat.sat_addr.s_node, sat.sat_port, strerror(errno) );
-#ifdef SIOCDIFADDR
-           /* remove all interfaces if we have a problem with bind */
-           for (iface = interfaces; iface; iface = iface->i_next) {
-             if (ifconfig( iface->i_name, SIOCDIFADDR, &iface->i_addr )) {
-#ifdef SIOCATALKDIFADDR
-#if (SIOCDIFADDR != SIOCATALKDIFADDR)
-               ifconfig( iface->i_name, SIOCATALKDIFADDR, &iface->i_addr );
-#endif /* SIOCDIFADDR != SIOCATALKDIFADDR */
-#endif /* SIOCATALKDIFADDR */
-             }
-           }
-#endif /* SIOCDIFADDR */
-           atalkd_exit( 1 );
-       }
-    }
-
-    /* recalculate nfds and fds */
-    FD_ZERO( &fds );
-    for ( nfds = 0, iface = interfaces; iface; iface = iface->i_next ) {
-       for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-           FD_SET( ap->ap_fd, &fds );
-           if ( ap->ap_fd > nfds ) {
-               nfds = ap->ap_fd;
-           }
-       }
-    }
-    nfds++;
-}
-
-int ifsetallmulti (const char *iname, int set)
-{
-    int sock;
-    struct ifreq ifr;
-
-    memset(&ifr, 0, sizeof(ifr));
-
-    if (( sock = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0 ) {
-        return( -1 );
-    }
-
-    /* get interface config */
-    strlcpy(ifr.ifr_name, iname, sizeof(ifr.ifr_name));
-    if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {
-        close(sock);
-        return (-1);
-    }
-
-    /* should we set or unset IFF_ALLMULTI */
-    if (set)
-           ifr.ifr_flags |= IFF_ALLMULTI;
-    else
-           ifr.ifr_flags &= ~IFF_ALLMULTI;
-
-    /* set interface config */
-    strlcpy(ifr.ifr_name, iname, sizeof(ifr.ifr_name));
-    if (ioctl(sock, SIOCSIFFLAGS, &ifr) < 0) {
-        close(sock);   
-        return -1;
-    }
-
-    close(sock);
-    return (0);
-}
-
-int ifconfig( const char *iname, unsigned long cmd, struct sockaddr_at *sa)
-{
-    struct ifreq       ifr;
-    int                        s;
-
-    memset(&ifr, 0, sizeof(ifr));
-    strcpy( ifr.ifr_name, iname );
-    ifr.ifr_addr = *(struct sockaddr *)sa;
-
-    if (( s = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0 ) {
-       return( 1 );
-    }
-    if ( ioctl( s, cmd, &ifr ) < 0 ) {
-       close(s);
-       return( 1 );
-    }
-    close( s );
-    if ( cmd == SIOCGIFADDR ) {
-       *(struct sockaddr *)sa = ifr.ifr_addr;
-    }
-    return( 0 );
-}
-
-void dumpconfig( struct interface *iface)
-{
-    struct list                *l;
-
-    printf( "%s", iface->i_name );
-    if ( iface->i_flags & IFACE_RSEED ) {
-       printf( " -router" );
-    } else if ( iface->i_flags & IFACE_SEED ) {
-       printf( " -seed" );
-    }
-
-    if ( iface->i_flags & IFACE_DONTROUTE) 
-        printf( " -dontroute");
-
-    printf( " -phase" );
-    if ( iface->i_flags & IFACE_PHASE1 ) {
-       printf( " 1" );
-    } else {
-       printf( " 2" );
-    }
-    printf( " -net %d", ntohs( iface->i_rt->rt_firstnet ));
-    if ( iface->i_rt->rt_lastnet != iface->i_rt->rt_firstnet ) {
-       printf( "-%d", ntohs( iface->i_rt->rt_lastnet ));
-    }
-    printf( " -addr %u.%u", ntohs( iface->i_addr.sat_addr.s_net ),
-           iface->i_addr.sat_addr.s_node );
-    printf( " -caddr %u.%u", ntohs( iface->i_caddr.sat_addr.s_net ),
-           iface->i_caddr.sat_addr.s_node );
-    for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) {
-       printf( " -zone %.*s", ((struct ziptab *)l->l_data)->zt_len,
-               ((struct ziptab *)l->l_data)->zt_name );
-    }
-    printf( "\n" );
-}
-
-#ifdef DEBUG
-void dumproutes(void)
-{
-    struct interface   *iface;
-    struct rtmptab     *rtmp;
-    struct list                *l;
-    struct ziptab      *zt;
-
-    for ( iface = interfaces; iface; iface = iface->i_next ) {
-       for ( rtmp = iface->i_rt; rtmp; rtmp = rtmp->rt_inext ) {
-           if ( rtmp->rt_gate == 0 ) {
-               if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
-                   printf( "%u-%u", ntohs( rtmp->rt_firstnet ),
-                           ntohs( rtmp->rt_lastnet ));
-               } else {
-                   printf( "%u", ntohs( rtmp->rt_firstnet ));
-               }
-           } else {
-               if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
-                   printf( "%u.%u for %u-%u",
-                           ntohs( rtmp->rt_gate->g_sat.sat_addr.s_net ),
-                           rtmp->rt_gate->g_sat.sat_addr.s_node,
-                           ntohs( rtmp->rt_firstnet ),
-                           ntohs( rtmp->rt_lastnet ));
-               } else {
-                   printf( "%u.%u for %u",
-                           ntohs( rtmp->rt_gate->g_sat.sat_addr.s_net ),
-                           rtmp->rt_gate->g_sat.sat_addr.s_node,
-                           ntohs( rtmp->rt_firstnet ));
-               }
-           }
-
-           if ( rtmp->rt_iprev == 0 && rtmp != iface->i_rt ) {
-               printf( " *" );
-           }
-
-           for ( l = rtmp->rt_zt; l; l = l->l_next ) {
-               zt = (struct ziptab *)l->l_data;
-               printf( " %.*s", zt->zt_len, zt->zt_name );
-           }
-
-           printf( "\n" );
-       }
-    }
-
-    printf( "\n" );
-    fflush( stdout );
-}
-
-void dumpzones(void)
-{
-    struct interface   *iface;
-    struct rtmptab     *rtmp;
-    struct list                *l;
-    struct ziptab      *zt;
-
-    for ( zt = ziptab; zt; zt = zt->zt_next ) {
-       printf( "%.*s", zt->zt_len, zt->zt_name );
-       for ( l = zt->zt_rt; l; l = l->l_next ) {
-           rtmp = (struct rtmptab *)l->l_data;
-           if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
-               printf( " %u-%u", ntohs( rtmp->rt_firstnet ),
-                       ntohs( rtmp->rt_lastnet ));
-           } else {
-               printf( " %u", ntohs( rtmp->rt_firstnet ));
-           }
-           if ( rtmp->rt_iprev == 0 && rtmp->rt_gate != 0 ) {
-               printf( "*" );
-           }
-       }
-       printf( "\n" );
-    }
-
-    printf( "\n" );
-    fflush( stdout );
-}
-#endif /* DEBUG */
diff --git a/etc/atalkd/main.h b/etc/atalkd/main.h
deleted file mode 100644 (file)
index 39e6b52..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * $Id: main.h,v 1.6 2009-10-14 01:38:28 didg Exp $
- */
-
-#ifndef ATALKD_MAIN_H
-#define ATALKD_MAIN_H
-
-#include <sys/cdefs.h>
-#include "config.h"
-
-extern int transition;
-extern int stabletimer, newrtmpdata;
-
-int ifconfig ( const char *, unsigned long, struct sockaddr_at * );
-void setaddr ( struct interface *, u_int8_t, u_int16_t,
-        u_int8_t, u_int16_t, u_int16_t );
-void bootaddr ( struct interface * );
-void dumpconfig ( struct interface * );
-
-#ifdef linux
-int ifsetallmulti ( const char *, int);
-#endif
-
-#endif /* ATALKD_MAIN_H */
diff --git a/etc/atalkd/multicast.c b/etc/atalkd/multicast.c
deleted file mode 100644 (file)
index 3b7785c..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * $Id: multicast.c,v 1.13 2009-10-14 01:38:28 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#ifdef TRU64
-#include <sys/mbuf.h>
-#include <net/route.h>
-#endif /* TRU64 */
-#include <net/if.h>
-#include <atalk/logger.h>
-
-/* work around for FreeBSD */
-#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
-#include <osreldate.h>
-#if __FreeBSD_version >= 300000
-#include <net/if_dl.h>
-#define NO_DATA_LINK_PASSTHROUGH
-#endif /* __FreeBSD_version >= 300000 */
-#endif /* __FreeBSD__ */
-
-#ifdef __svr4__
-#include <sys/sockio.h>
-#endif /* __svr4__ */
-
-#include <atalk/util.h>
-#include <netatalk/endian.h>
-#include "rtmp.h"
-#include "zip.h"
-#include "main.h"
-#include "multicast.h"
-
-
-static const unsigned char     ethermulti[ 6 ] = {
-    0x09, 0x00, 0x07, 0xff, 0xff, 0xff,
-};
-
-static const unsigned char     ethermultitab[ 253 ][ 6 ] = {
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x00, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x01, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x02, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x03, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x04, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x05, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x06, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x07, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x08, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x09, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x0a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x0b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x0c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x0d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x0e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x0f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x10, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x11, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x12, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x13, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x14, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x15, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x16, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x17, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x18, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x19, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x1a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x1b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x1c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x1d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x1e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x1f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x20, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x21, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x22, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x23, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x24, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x25, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x26, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x27, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x28, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x29, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x2a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x2b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x2c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x2d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x2e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x2f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x30, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x31, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x32, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x33, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x34, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x35, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x36, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x37, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x38, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x39, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x3a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x3b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x3c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x3d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x3e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x3f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x40, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x41, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x42, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x43, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x44, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x45, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x46, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x47, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x48, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x49, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x4a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x4b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x4c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x4d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x4e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x4f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x50, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x51, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x52, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x53, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x54, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x55, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x56, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x57, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x58, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x59, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x5a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x5b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x5c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x5d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x5e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x5f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x60, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x61, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x62, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x63, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x64, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x65, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x66, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x67, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x68, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x69, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x6a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x6b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x6c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x6d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x6e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x6f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x70, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x71, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x72, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x73, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x74, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x75, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x76, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x77, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x78, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x79, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x7a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x7b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x7c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x7d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x7e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x7f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x80, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x81, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x82, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x83, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x84, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x85, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x86, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x87, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x88, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x89, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x8a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x8b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x8c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x8d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x8e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x8f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x90, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x91, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x92, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x93, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x94, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x95, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x96, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x97, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x98, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x99, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x9a, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x9b, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x9c, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x9d, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x9e, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0x9f, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa0, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa1, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa2, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa3, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa4, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa5, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa6, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa7, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa8, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xa9, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xaa, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xab, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xac, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xad, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xae, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xaf, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb0, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb1, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb2, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb3, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb4, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb5, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb6, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb7, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb8, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xb9, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xba, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xbb, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xbc, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xbd, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xbe, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xbf, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc0, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc1, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc2, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc3, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc4, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc5, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc6, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc7, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc8, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xc9, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xca, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xcb, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xcc, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xcd, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xce, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xcf, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd0, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd1, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd2, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd3, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd4, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd5, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd6, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd7, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd8, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xd9, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xda, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xdb, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xdc, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xdd, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xde, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xdf, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe0, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe1, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe2, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe3, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe4, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe5, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe6, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe7, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe8, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xe9, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xea, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xeb, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xec, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xed, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xee, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xef, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf0, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf1, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf2, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf3, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf4, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf5, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf6, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf7, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf8, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xf9, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xfa, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xfb, },
-    { 0x09, 0x00, 0x07, 0x00, 0x00, 0xfc, },
-};
-
-
-
-/* configure multicast for a given named interface */
-int addmulti(const char *name, const unsigned char *data)
-{
-#ifdef NO_DATA_LINK_PASSTHROUGH
-    struct sockaddr_dl sa;
-#else /* NO_DATA_LINK_PASSTHROUGH */
-    struct sockaddr sa;
-#endif /* NO_DATA_LINK_PASSTHROUGH */
-
-    memset(&sa, 0, sizeof(sa));
-#ifdef NO_DATA_LINK_PASSTHROUGH
-    sa.sdl_family = AF_LINK;
-    memcpy(LLADDR(&sa), data ? data : ethermulti, sizeof(ethermulti));
-    sa.sdl_alen = sizeof(ethermulti);
-    sa.sdl_len = sizeof(sa);
-#else /* NO_DATA_LINK_PASSTHROUGH */
-    memcpy(sa.sa_data, data ? data : ethermulti, sizeof(ethermulti));
-#endif /* NO_DATA_LINK_PASSTHROUGH */
-    if (ifconfig(name, SIOCADDMULTI, (struct sockaddr_at *)&sa))
-      return -1;
-
-    return 0;
-}
-
-static u_int16_t
-atalk_cksum( u_char *data, int len)
-{
-    u_char     *end;
-    u_int32_t  cksum = 0;
-
-    for ( end = data + len; data < end; data++ ) {
-       cksum = ( cksum + *data ) << 1;
-       if ( cksum & 0x00010000 ) {
-           cksum++;
-       }
-       cksum &= 0x0000ffff;
-    }
-
-    if ( cksum == 0 ) {
-       cksum = 0x0000ffff;
-    }
-
-    return( (u_int16_t) cksum );
-}
-
-/*
- * Fill in multicast for zone.  There is a general issue here:  how can
- * we tell the type of interface we're configuring for?  E.g.  Is it
- * ethernet, tokenring, or FDDI?  (Of course, FDDI and Ethernet look just
- * alike.)
- */
-int
-zone_bcast( struct ziptab *zt)
-{
-    u_char             uname[ 32 ];
-    u_int16_t          cksum;
-    int                        i;
-
-    if (!zt->zt_bcast &&
-       (zt->zt_bcast = (u_char *) malloc(sizeof( ethermulti ))) == NULL) {
-       LOG(log_error, logtype_atalkd, "zone_bcast malloc: %s", strerror(errno) );
-       return -1;
-     }
-
-    for ( i = 0; i < zt->zt_len; i++ ) {
-       uname[ i ] = diatoupper((int) zt->zt_name[ i ]);
-    }
-    cksum = atalk_cksum( uname, zt->zt_len );
-#define elements(a)   (sizeof(a)/sizeof((a)[0]))
-    memcpy(zt->zt_bcast, ethermultitab[ cksum % elements( ethermultitab ) ],
-          sizeof( ethermulti ));
-    return 0;
-}
diff --git a/etc/atalkd/multicast.h b/etc/atalkd/multicast.h
deleted file mode 100644 (file)
index 988b189..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * $Id: multicast.h,v 1.5 2009-10-14 01:38:28 didg Exp $
- *
- * Copyright (c) 1990,1997 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifndef ATALKD_MULTICAST_H
-#define ATALKD_MULTICAST_H 1
-
-#include <sys/cdefs.h>
-#include "zip.h"
-
-int addmulti (const char *, const unsigned char *);
-int zone_bcast (struct ziptab *);
-
-#endif /* atalkd/multicast.h */
diff --git a/etc/atalkd/nbp.c b/etc/atalkd/nbp.c
deleted file mode 100644 (file)
index 2d2e5b0..0000000
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- * $Id: nbp.c,v 1.13 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <atalk/logger.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#ifdef TRU64
-#include <sys/mbuf.h>
-#include <net/route.h>
-#endif /* TRU64 */
-#include <net/if.h>
-#include <netatalk/at.h>
-#include <atalk/ddp.h>
-#include <atalk/atp.h>
-#include <atalk/nbp.h>
-#include <atalk/util.h>
-
-#ifdef __svr4__
-#include <sys/sockio.h>
-#endif /* __svr4__ */
-
-#include "atserv.h"
-#include "interface.h"
-#include "list.h"
-#include "rtmp.h"
-#include "gate.h"
-#include "zip.h"
-#include "nbp.h"
-#include "multicast.h"
-
-extern int  transition;
-
-struct nbptab   *nbptab = NULL;
-
-static
-void nbp_ack( int fd, int nh_op, int nh_id, struct sockaddr_at *to)
-{
-    struct nbphdr   nh;
-    char        *data, packet[ SZ_NBPHDR + 1 ];
-
-    nh.nh_op = nh_op;
-    nh.nh_cnt = 0;
-    nh.nh_id = nh_id;
-    data = packet;
-    *data++ = DDPTYPE_NBP;
-    memcpy( data, &nh, SZ_NBPHDR );
-    data += SZ_NBPHDR;
-    if ( sendto( fd, packet, data - packet, 0, (struct sockaddr *)to,
-                 sizeof( struct sockaddr_at )) < 0 ) {
-        LOG(log_error, logtype_atalkd, "sendto: %s", strerror(errno) );
-    }
-}
-
-int nbp_packet(struct atport *ap, struct sockaddr_at *from, char *data, int len)
-{
-    struct nbphdr   nh;
-    struct nbptuple nt;
-    struct nbpnve   nn;
-    struct sockaddr_at  sat;
-    struct nbptab   *ntab;
-    struct ziptab   *zt=NULL;
-    struct interface    *iface;
-    struct list     *l;
-    struct rtmptab  *rtmp;
-    char        *end, *nbpop, *zonep, packet[ ATP_BUFSIZ ];
-    int         n, i, cc, locallkup;
-    u_char      tmplen;
-
-    end = data + len;
-    if ( data >= end ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet malformed packet" );
-        return 1;
-    }
-    if ( *data++ != DDPTYPE_NBP ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet bad ddp type" );
-        return 1;
-    }
-
-    if ( data + SZ_NBPHDR + SZ_NBPTUPLE > end ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet: malformed packet" );
-        return 1;
-    }
-    memcpy( &nh, data, SZ_NBPHDR );
-    nbpop = data;           /* remember for fwd and brrq */
-    data += SZ_NBPHDR;
-    if ( nh.nh_cnt != 1 ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet: bad tuple count (%d/%d)", nh.nh_cnt,
-            nh.nh_op );
-        return 1;
-    }
-
-    memcpy( &nt, data, SZ_NBPTUPLE );
-    data += SZ_NBPTUPLE;
-
-    memset( &nn.nn_sat, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    nn.nn_sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    nn.nn_sat.sat_family = AF_APPLETALK;
-    nn.nn_sat.sat_addr.s_net = nt.nt_net;
-    nn.nn_sat.sat_addr.s_node = nt.nt_node;
-    nn.nn_sat.sat_port = nt.nt_port;
-
-    /* object */
-    tmplen = (u_char) *data;
-    if ( data >= end || tmplen > 32 || data + tmplen > end ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet: malformed packet" );
-        return 1;
-    }
-    nn.nn_objlen = tmplen;
-    data++;
-    memcpy( nn.nn_obj, data, nn.nn_objlen );
-    data += nn.nn_objlen;
-
-    /* type */
-    tmplen = (u_char) *data;
-    if ( data >= end || tmplen > 32 || data + tmplen > end ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet: malformed packet" );
-        return 1;
-    }
-    nn.nn_typelen = tmplen;
-    data++;
-    memcpy( nn.nn_type, data, nn.nn_typelen );
-    data += nn.nn_typelen;
-
-    /* zone */
-    tmplen = (u_char) *data;
-    if ( data >= end || tmplen > 32 || data + tmplen > end ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet: malformed packet" );
-        return 1;
-    }
-    zonep = data;           /* remember for fwd */
-    nn.nn_zonelen = tmplen;
-    data++;
-    memcpy( nn.nn_zone, data, nn.nn_zonelen );
-    data += nn.nn_zonelen;
-
-    if ( data != end ) {
-        LOG(log_info, logtype_atalkd, "nbp_packet: malformed packet" );
-        return 1;
-    }
-
-    locallkup = 0;
-    switch ( nh.nh_op ) {
-
-    case NBPOP_RGSTR :
-        /*
-         * Find the ziptab entry for the zone we're trying to register in.
-         */
-        if ( nn.nn_zonelen == 0 ||
-             ( nn.nn_zonelen == 1 && *nn.nn_zone == '*' )) {
-            if ( interfaces->i_next->i_rt->rt_zt ) {
-                zt = (struct ziptab *)interfaces->i_next->i_rt->rt_zt->l_data;
-            } else {
-                zt = NULL;
-            }
-        } else {
-            for ( zt = ziptab; zt; zt = zt->zt_next ) {
-                if ( zt->zt_len == nn.nn_zonelen && strndiacasecmp( zt->zt_name,
-                                                                    nn.nn_zone, zt->zt_len ) == 0 ) {
-                    break;
-                }
-            }
-            if ( zt == NULL ) {
-                nbp_ack( ap->ap_fd, NBPOP_ERROR, (int)nh.nh_id, from );
-                return 0;
-            }
-        }
-
-        /*
-         * Observe that we don't have to do any local-zone verification
-         * if the zone aleady has a multicast address set.
-         */
-        if ( zt != NULL && zt->zt_bcast == NULL ) {
-            /*
-             * Check if zone is associated with any of our local interfaces.
-             */
-            for ( iface = interfaces; iface; iface = iface->i_next ) {
-                for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) {
-                    if ( zt == (struct ziptab *)l->l_data ) {
-                        break;
-                    }
-                }
-                if ( l != NULL ) {
-                    break;
-                }
-            }
-            if ( iface == NULL ) {
-                nbp_ack( ap->ap_fd, NBPOP_ERROR, (int)nh.nh_id, from );
-                return 0;
-            }
-
-            /* calculate and save multicast address */
-            if (zone_bcast(zt) < 0) {
-                LOG(log_error, logtype_atalkd, "nbp_packet: zone_bcast");
-                return -1;
-            }
-
-            for ( iface = interfaces; iface; iface = iface->i_next ) {
-                if (( iface->i_flags & IFACE_PHASE2 ) == 0 ) {
-                    continue;
-                }
-                for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) {
-                    if ( zt == (struct ziptab *)l->l_data ) {
-                        /* add multicast */
-                        if (addmulti(iface->i_name, zt->zt_bcast) < 0) {
-                            LOG(log_error, logtype_atalkd, "nbp_packet: addmulti: %s",
-                                strerror(errno) );
-                            return -1;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (( ntab = (struct nbptab *)malloc( sizeof( struct nbptab )))
-            == NULL ) {
-            LOG(log_error, logtype_atalkd, "nbp_packet: malloc: %s", strerror(errno) );
-            return -1;
-        }
-        memcpy( &ntab->nt_nve, &nn, sizeof( struct nbpnve ));
-        ntab->nt_iface = ap->ap_iface;
-        ntab->nt_next = nbptab;
-        ntab->nt_prev = NULL;
-        if ( nbptab ) {
-            nbptab->nt_prev = ntab;
-        }
-        nbptab = ntab;
-
-        nbp_ack( ap->ap_fd, NBPOP_OK, (int)nh.nh_id, from );
-        break;
-
-    case NBPOP_UNRGSTR :
-        /* deal with local zone info */
-        if (( nn.nn_zonelen == 1 && *nn.nn_zone == '*' ) ||
-            ( nn.nn_zonelen == 0 )) {
-            locallkup = 1;
-            if ( interfaces->i_next->i_rt->rt_zt ) {
-                zt = (struct ziptab *)interfaces->i_next->i_rt->rt_zt->l_data;
-            } else {
-                zt = NULL;
-            }
-        }
-
-        /* remove from our data, perhaps removing a multicast address */
-        for ( ntab = nbptab; ntab; ntab = ntab->nt_next ) {
-            if ( ntab->nt_nve.nn_objlen != nn.nn_objlen ||
-                 strndiacasecmp( ntab->nt_nve.nn_obj, nn.nn_obj,
-                                 nn.nn_objlen )) {
-                continue;
-            }
-            if ( ntab->nt_nve.nn_typelen != nn.nn_typelen ||
-                 strndiacasecmp( ntab->nt_nve.nn_type, nn.nn_type,
-                                 nn.nn_typelen )) {
-                continue;
-            }
-            /*
-             * I *think* we really do check the zone, here.
-             *
-             * i changed it to better handle local zone cases as well.
-             * -- asun
-             */
-
-            /* match local zones */
-            if (locallkup) {
-                /* ntab is also local zone */
-                if (( ntab->nt_nve.nn_zonelen == 1 &&
-                      *ntab->nt_nve.nn_zone == '*' ) ||
-                    (ntab->nt_nve.nn_zonelen == 0))
-                    break;
-
-                /* ntab is default zone */
-                if (zt && (zt->zt_len == ntab->nt_nve.nn_zonelen) &&
-                    (strndiacasecmp(ntab->nt_nve.nn_zone, zt->zt_name,
-                                    zt->zt_len) == 0)) {
-                    break;
-                }
-            }
-
-            /* match particular zone */
-            if ((ntab->nt_nve.nn_zonelen == nn.nn_zonelen) &&
-                (strndiacasecmp( ntab->nt_nve.nn_zone, nn.nn_zone,
-                                 nn.nn_zonelen ) == 0)) {
-                break;
-            }
-        }
-        if ( ntab == NULL ) {
-            nbp_ack( ap->ap_fd, NBPOP_ERROR, (int)nh.nh_id, from );
-            return 0;
-        }
-
-        if ( ntab->nt_next != NULL ) {
-            ntab->nt_next->nt_prev = ntab->nt_prev;
-        }
-        if ( ntab->nt_prev != NULL ) {
-            ntab->nt_prev->nt_next = ntab->nt_next;
-        }
-        if ( ntab == nbptab ) {
-            nbptab = ntab->nt_next;
-        }
-
-        /*
-         * Check for another nbptab entry with the same zone.  If
-         * there isn't one, find the ziptab entry for the zone and
-         * remove the multicast address from the appropriate interfaces.
-         * XXX
-         */
-
-        nbp_ack( ap->ap_fd, NBPOP_OK, (int)nh.nh_id, from );
-        break;
-
-    case NBPOP_BRRQ :
-        /*
-         * Couple of things:  1. Unless we have the -t flag (which is sort
-         * of a misnomer, since you need it if you're doing any phase 1
-         * work), always send NBPOP_FWD.  2. If we get a zone of '*',
-         * and we know what the sender meant by '*', we copy the real
-         * zone into the packet.
-         */
-        if ( nn.nn_zonelen == 0 ||
-             ( nn.nn_zonelen == 1 && *nn.nn_zone == '*' )) {
-            iface = ap->ap_iface;
-            if ( iface && iface->i_rt->rt_zt ) {
-                zt = (struct ziptab *)iface->i_rt->rt_zt->l_data;
-            } else if ( interfaces->i_next->i_rt->rt_zt ) {
-                zt = (struct ziptab *)interfaces->i_next->i_rt->rt_zt->l_data;
-            } else {
-                zt = NULL;
-            }
-
-            /*
-             * Copy zone into packet.  Note that we're changing len, data, and
-             * nbpop.  Later, we'll use ( data - len ) to mean the beginning
-             * of this packet.
-             */
-            if ( zt ) {
-                memcpy( packet, data - len, len );
-                nbpop = packet + ( len - ( data - nbpop ));
-                data = packet + ( len - ( data - zonep ));
-                *data++ = zt->zt_len;
-                memcpy( data, zt->zt_name, zt->zt_len );
-                data += zt->zt_len;
-                len = data - packet;
-            }
-        } else {
-            for ( zt = ziptab; zt; zt = zt->zt_next ) {
-                if ( zt->zt_len == nn.nn_zonelen && strndiacasecmp( zt->zt_name,
-                                                                    nn.nn_zone, zt->zt_len ) == 0 ) {
-                    break;
-                }
-            }
-            if ( zt == NULL ) {
-                nbp_ack( ap->ap_fd, NBPOP_ERROR, (int)nh.nh_id, from );
-                return 0;
-            }
-        }
-
-        /*
-         * If we've got no zones, send out LKUP on the local net.
-         * Otherwise, look through the zone table.
-         */
-        if ( zt == NULL ) {
-#ifdef BSD4_4
-            sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-            sat.sat_family = AF_APPLETALK;
-            sat.sat_port = ap->ap_port;
-
-            nh.nh_op = NBPOP_LKUP;
-            memcpy( nbpop, &nh, SZ_NBPHDR );
-            sat.sat_addr.s_net = 0;         /* XXX */
-            sat.sat_addr.s_node = ATADDR_BCAST;
-
-            /* Find the first non-loopback ap */
-            for ( iface = interfaces; iface; iface = iface->i_next ) {
-                if ((( iface->i_flags & IFACE_LOOPBACK ) == 0) &&
-                    (iface == ap->ap_iface ||
-                     (iface->i_flags & IFACE_ISROUTER))) {
-                    break;
-                }
-            }
-            if ( iface == NULL ) {
-                return 0;
-            }
-            for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-                if ( ap->ap_packet == nbp_packet ) {
-                    break;
-                }
-            }
-            if (ap == NULL)
-                return 0;
-
-            if ( sendto( ap->ap_fd, data - len, len, 0, (struct sockaddr *)&sat,
-                         sizeof( struct sockaddr_at )) < 0 ) {
-                LOG(log_error, logtype_atalkd, "nbp brrq sendto: %s", strerror(errno) );
-            }
-
-            locallkup = 1;
-        } else {
-#ifdef BSD4_4
-            sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-            sat.sat_family = AF_APPLETALK;
-            sat.sat_port = ap->ap_port;
-            for ( l = zt->zt_rt; l; l = l->l_next ) {
-                rtmp = (struct rtmptab *)l->l_data;
-
-                if ( rtmp->rt_gate == NULL ) {
-                    for ( iface = interfaces; iface;
-                          iface = iface->i_next ) {
-                        if ( iface->i_rt == rtmp ) {
-                            break;
-                        }
-                    }
-                    if ( !iface ) {
-                        LOG(log_error, logtype_atalkd, "nbp_packet: \
-Can't find route's interface!" );
-                        return -1;
-                    }
-                    ap = iface->i_ports;
-                } else {
-                    ap = rtmp->rt_gate->g_iface->i_ports;
-                }
-                for ( ; ap; ap = ap->ap_next ) {
-                    if ( ap->ap_packet == nbp_packet ) {
-                        break;
-                    }
-                }
-                if ( !ap ) {
-                    LOG(log_error, logtype_atalkd, "nbp_packet: Can't find port!" );
-                    return -1;
-                }
-
-                if ( transition &&
-                     ( rtmp->rt_flags & RTMPTAB_EXTENDED ) == 0 ) {
-                    if ( rtmp->rt_gate == NULL ) {
-                        locallkup = 1;
-                    }
-                    nh.nh_op = NBPOP_LKUP;
-                    memcpy( nbpop, &nh, SZ_NBPHDR );
-                    sat.sat_addr.s_net = rtmp->rt_firstnet;
-                    sat.sat_addr.s_node = ATADDR_BCAST;
-                } else {
-                    if ( rtmp->rt_gate == NULL ) {
-                        nh.nh_op = NBPOP_LKUP;
-                        memcpy( nbpop, &nh, SZ_NBPHDR );
-                        sat.sat_addr.s_net = 0;
-                        sat.sat_addr.s_node = ATADDR_BCAST;
-                        locallkup = 1;
-                    } else {
-                        nh.nh_op = NBPOP_FWD;
-                        memcpy( nbpop, &nh, SZ_NBPHDR );
-                        sat.sat_addr.s_net = rtmp->rt_firstnet;
-                        sat.sat_addr.s_node = 0;
-                    }
-                }
-
-                if ( sendto( ap->ap_fd, data - len, len, 0,
-                             (struct sockaddr *)&sat,
-                             sizeof( struct sockaddr_at )) < 0 ) {
-                    LOG(log_error, logtype_atalkd, "nbp brrq sendto %u.%u: %s",
-                        ntohs( sat.sat_addr.s_net ), sat.sat_addr.s_node,
-                        strerror(errno) );
-                    continue;
-                }
-            }
-        }
-
-        if ( !locallkup ) {
-            break;
-        }
-        /*FALL THROUGH*/
-
-    case NBPOP_FWD :
-        /* send lkup on net. we need to make sure we're a router. */
-        if ( !locallkup && (ap->ap_iface->i_flags & IFACE_ISROUTER)) {
-            nh.nh_op = NBPOP_LKUP;
-            memcpy( nbpop, &nh, SZ_NBPHDR );
-            from->sat_addr.s_net = 0;
-            from->sat_addr.s_node = ATADDR_BCAST;
-            if ( sendto( ap->ap_fd, data - len, len, 0, (struct sockaddr *)from,
-                         sizeof( struct sockaddr_at )) < 0 ) {
-                LOG(log_error, logtype_atalkd, "nbp fwd sendto %u.%u: %s",
-                    ntohs( from->sat_addr.s_net ), from->sat_addr.s_node,
-                    strerror(errno) );
-                return 0;
-            }
-        }
-        /*FALL THROUGH*/
-
-    case NBPOP_LKUP :
-        /* search our data */
-        n = i = 0;
-        data = packet + 1 + SZ_NBPHDR;
-        end = packet + sizeof( packet );
-
-        for ( ntab = nbptab; ntab; ntab = ntab->nt_next ) {
-            /* don't send out entries if we don't want to route. */
-            if ((ap->ap_iface != ntab->nt_iface) &&
-                (ntab->nt_iface->i_flags & IFACE_ISROUTER) == 0) {
-                continue;
-            }
-
-            if ( nn.nn_objlen != 1 || *nn.nn_obj != '=' ) {
-                if ( ntab->nt_nve.nn_objlen != nn.nn_objlen ||
-                     strndiacasecmp( ntab->nt_nve.nn_obj, nn.nn_obj,
-                                     nn.nn_objlen )) {
-                    continue;
-                }
-            }
-
-            if ( nn.nn_typelen != 1 || *nn.nn_type != '=' ) {
-                if ( ntab->nt_nve.nn_typelen != nn.nn_typelen ||
-                     strndiacasecmp( ntab->nt_nve.nn_type, nn.nn_type,
-                                     nn.nn_typelen )) {
-                    continue;
-                }
-            }
-
-            if ( nn.nn_zonelen != 0 &&
-                 ( nn.nn_zonelen != 1 || *nn.nn_zone != '*' )) {
-                if ( ntab->nt_nve.nn_zonelen == 0 ||
-                     ( ntab->nt_nve.nn_zonelen == 1 &&
-                       *ntab->nt_nve.nn_zone == '*' )) {
-                    if ( interfaces->i_next->i_rt->rt_zt ) {
-                        zt = (struct ziptab *)interfaces->i_next->i_rt->
-                            rt_zt->l_data;
-                        if ( zt->zt_len != nn.nn_zonelen ||
-                             strndiacasecmp( zt->zt_name, nn.nn_zone,
-                                             zt->zt_len )) {
-                            continue;
-                        }
-                    }
-                } else {
-                    if ( ntab->nt_nve.nn_zonelen != nn.nn_zonelen ||
-                         strndiacasecmp( ntab->nt_nve.nn_zone, nn.nn_zone,
-                                         nn.nn_zonelen )) {
-                        continue;
-                    }
-                }
-            }
-
-            /*
-             * Another tuple won't fit. Send what we've already
-             * got, and start the next packet.
-             */
-            if ( n > 14 || data + SZ_NBPTUPLE + 3 + ntab->nt_nve.nn_objlen +
-                 ntab->nt_nve.nn_typelen + ntab->nt_nve.nn_zonelen > end ) {
-                nh.nh_op = NBPOP_LKUPREPLY;
-                nh.nh_cnt = n;
-                cc = data - packet;
-                data = packet;
-                *data++ = DDPTYPE_NBP;
-                memcpy( data, &nh, SZ_NBPHDR );
-
-                if ( sendto( ap->ap_fd, packet, cc, 0,
-                             (struct sockaddr *)&nn.nn_sat,
-                             sizeof( struct sockaddr_at )) < 0 ) {
-                    LOG(log_error, logtype_atalkd, "nbp lkup sendto %u.%u: %s",
-                        ntohs( nn.nn_sat.sat_addr.s_net ),
-                        nn.nn_sat.sat_addr.s_node,
-                        strerror(errno) );
-                    return 0;
-                }
-
-                n = 0;
-                data = packet + 1 + SZ_NBPHDR;
-                end = packet + sizeof( packet );
-            }
-
-            nt.nt_net = ntab->nt_nve.nn_sat.sat_addr.s_net;
-            nt.nt_node = ntab->nt_nve.nn_sat.sat_addr.s_node;
-            nt.nt_port = ntab->nt_nve.nn_sat.sat_port;
-            /*
-             * Right now, we'll just give each name a unique enum.  In
-             * the future, we might need to actually assign and save
-             * an enum, based on the associated address.  For the moment,
-             * the enums will be unique and constant, since the order
-             * is fixed.
-             */
-            nt.nt_enum = i++;
-
-            memcpy( data, &nt, SZ_NBPTUPLE );
-            data += SZ_NBPTUPLE;
-
-            *data++ = ntab->nt_nve.nn_objlen;
-            memcpy( data, ntab->nt_nve.nn_obj, ntab->nt_nve.nn_objlen );
-            data += ntab->nt_nve.nn_objlen;
-
-            *data++ = ntab->nt_nve.nn_typelen;
-            memcpy(data, ntab->nt_nve.nn_type, ntab->nt_nve.nn_typelen );
-            data += ntab->nt_nve.nn_typelen;
-
-            /*
-             * Macs won't see something with a zone of 0 length.  We
-             * will always return '*' instead.  Perhaps we should
-             * unconditionally return the real zone?
-             */
-            if ( ntab->nt_nve.nn_zonelen ) {
-                *data++ = ntab->nt_nve.nn_zonelen;
-                memcpy( data, ntab->nt_nve.nn_zone, ntab->nt_nve.nn_zonelen );
-                data += ntab->nt_nve.nn_zonelen;
-            } else {
-                *data++ = 1;
-                *data++ = '*';
-            }
-
-            n++;
-        }
-
-        if ( n != 0 ) {
-            nh.nh_op = NBPOP_LKUPREPLY;
-            nh.nh_cnt = n;
-            cc = data - packet;
-            data = packet;
-            *data++ = DDPTYPE_NBP;
-            memcpy( data, &nh, SZ_NBPHDR );
-
-            if ( sendto( ap->ap_fd, packet, cc, 0,
-                         (struct sockaddr *)&nn.nn_sat,
-                         sizeof( struct sockaddr_at )) < 0 ) {
-                LOG(log_error, logtype_atalkd, "nbp lkup sendto %u.%u: %s",
-                    ntohs( nn.nn_sat.sat_addr.s_net ),
-                    nn.nn_sat.sat_addr.s_node,
-                    strerror(errno) );
-                return 0;
-            }
-        }
-        break;
-
-    default :
-        LOG(log_info, logtype_atalkd, "nbp_packet: bad op (%d)", nh.nh_op );
-        return 1;
-    }
-
-    return 0;
-}
diff --git a/etc/atalkd/nbp.h b/etc/atalkd/nbp.h
deleted file mode 100644 (file)
index 13f511d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * $Id: nbp.h,v 1.3 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifndef ATALKD_NBP_H
-#define ATALKD_NBP_H 1
-
-struct nbptab {
-    struct nbptab      *nt_prev, *nt_next;
-    struct nbpnve      nt_nve;
-    struct interface    *nt_iface;
-};
-
-extern struct nbptab   *nbptab;
-
-int nbp_packet(struct atport *ap, struct sockaddr_at *from, char *data, int len);
-
-#endif
diff --git a/etc/atalkd/route.c b/etc/atalkd/route.c
deleted file mode 100644 (file)
index 4e7dfac..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Id: route.c,v 1.8 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1996 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <string.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/route.h>
-#include <sys/ioctl.h>
-#include <netatalk/at.h>
-
-#include "rtmp.h"
-#include "route.h"
-
-#ifndef BSD4_4
-int route( int message, struct sockaddr *dst, struct sockaddr *gate, int flags)
-{
-#ifdef TRU64
-    struct ortentry    rtent;
-#else /* TRU64 */
-    struct rtentry     rtent;
-#endif /* TRU64 */
-
-    memset( &rtent, 0, sizeof( struct rtentry ));
-    rtent.rt_dst = *dst;
-    rtent.rt_gateway = *gate;
-    rtent.rt_flags = flags;
-    return( ioctl( rtfd, message, &rtent ));
-}
-
-#else /* BSD4_4 */
-
-struct sockaddr_m {
-    u_char     sam_len;
-    u_char     sam_family;
-    u_short    sam_pad;
-    u_short    sam_mask;
-    u_short    sam_pad2;
-} mask = { sizeof( struct sockaddr_m ), 0, 0, 0xffff, 0 };
-
-struct rt_msg_at {
-    struct rt_msghdr   rtma_rtm;
-    struct sockaddr_at rtma_dst;
-    struct sockaddr_at rtma_gate;
-    struct sockaddr_m  rtma_mask;
-} rtma;
-
-route( int message, struct sockaddr_at *dst, struct sockaddr_at *gate, int flags)
-{
-    int                        rc;
-
-    memset( &rtma, 0, sizeof( struct rt_msg_at ));
-    rtma.rtma_rtm.rtm_msglen = sizeof( struct rt_msg_at );
-    rtma.rtma_rtm.rtm_version = RTM_VERSION;
-    rtma.rtma_rtm.rtm_type = message;
-    rtma.rtma_rtm.rtm_pid = getpid();
-    rtma.rtma_rtm.rtm_addrs = RTA_DST|RTA_GATEWAY;
-    if ( flags & RTF_HOST ) {
-       rtma.rtma_rtm.rtm_msglen = sizeof( struct rt_msg_at ) -
-               sizeof( struct sockaddr_m );
-    } else {
-       rtma.rtma_rtm.rtm_msglen = sizeof( struct rt_msg_at );
-       rtma.rtma_rtm.rtm_addrs |= RTA_NETMASK;
-       rtma.rtma_mask = mask;
-    }
-
-    rtma.rtma_rtm.rtm_flags = flags;
-    rtma.rtma_dst = *dst;
-    rtma.rtma_gate = *gate;
-    if (( rc = write( rtfd, &rtma, rtma.rtma_rtm.rtm_msglen )) !=
-           rtma.rtma_rtm.rtm_msglen ) {
-       return( -1 );
-    }
-    return( 0 );
-}
-#endif /* BSD4_4 */
diff --git a/etc/atalkd/route.h b/etc/atalkd/route.h
deleted file mode 100644 (file)
index 5f3c0f9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * $Id: route.h,v 1.3 2009-10-13 22:55:37 didg Exp $
- */
-
-#ifndef ATALKD_ROUTE_H
-#define ATALKD_ROUTE_H 1
-
-#include <sys/cdefs.h>
-
-#ifndef BSD4_4
-int route ( int, struct sockaddr *, struct sockaddr *, int );
-#else /* BSD4_4 */
-int route ( int, struct sockaddr_at *, struct sockaddr_at *, int);
-#endif /* BSD4_4 */
-
-#endif /* ATALKD_ROUTE_H */
diff --git a/etc/atalkd/rtmp.c b/etc/atalkd/rtmp.c
deleted file mode 100644 (file)
index 727562b..0000000
+++ /dev/null
@@ -1,997 +0,0 @@
-/*
- * $Id: rtmp.c,v 1.17 2009-12-08 03:21:16 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <atalk/logger.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#ifdef TRU64
-#include <sys/mbuf.h>
-#include <net/route.h>
-#endif /* TRU64 */
-#include <net/if.h>
-#include <net/route.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-
-#ifdef __svr4__
-#include <sys/sockio.h>
-#endif /* __svr4__ */
-
-#include <atalk/ddp.h>
-#include <atalk/atp.h>
-#include <atalk/rtmp.h>
-
-#include "interface.h"
-#include "gate.h"
-#include "rtmp.h"
-#include "zip.h"
-#include "list.h"
-#include "atserv.h"
-#include "route.h"
-#include "main.h"
-
-void rtmp_delzonemap(struct rtmptab *rtmp)
-{
-    struct list                *lz, *flz, *lr, *flr;
-    struct ziptab      *zt;
-
-    lz = rtmp->rt_zt;
-    while ( lz ) {                                     /* for each zone */
-       zt = (struct ziptab *)lz->l_data;
-       lr = zt->zt_rt;
-       while ( lr ) {                                  /* for each route */
-           if ( (struct rtmptab *)lr->l_data == rtmp ) {
-               if ( lr->l_prev == NULL ) {             /* head */
-                   if ( lr->l_next == NULL ) {         /* last route in zone */
-                       if ( zt->zt_prev == NULL ) {
-                           ziptab = zt->zt_next;
-                       } else {
-                           zt->zt_prev->zt_next = zt->zt_next;
-                       }
-                       if ( zt->zt_next == NULL ) {
-                           ziplast = zt->zt_prev;
-                       } else {
-                           zt->zt_next->zt_prev = zt->zt_prev;
-                       }
-                       free( zt->zt_bcast );
-                       free( zt->zt_name );
-                       free( zt );
-                   } else {
-                       zt->zt_rt = lr->l_next;
-                   }
-               } else {
-                   lr->l_prev->l_next = lr->l_next;
-               }
-               if ( lr->l_next != NULL ) {
-                   lr->l_next->l_prev = lr->l_prev;
-               }
-               flr = lr;
-               lr = lr->l_next;
-               free( flr );
-           } else {
-               lr = lr->l_next;
-           }
-       }
-       flz = lz;
-       lz = lz->l_next;
-       free( flz );
-    }
-    rtmp->rt_zt = NULL;
-}
-
-
-/*
- * Complete configuration for phase 1 interface using RTMP information.
- */
-static int rtmp_config( struct rtmp_head *rh, struct interface *iface)
-{
-    extern int         stabletimer;
-    int cc;
-
-    /*
-     * If we're configuring a phase 2 interface, don't complete
-     * configuration with RTMP.
-     */
-    if ( iface->i_flags & IFACE_PHASE2 ) {
-       LOG(log_info, logtype_atalkd, "rtmp_config ignoring data" );
-       return 0;
-    }
-
-    /*
-     * Check our seed information, and reconfigure.
-     */
-    if ( rh->rh_net != iface->i_addr.sat_addr.s_net ) {
-       if (( iface->i_flags & IFACE_SEED ) &&
-               rh->rh_net != iface->i_caddr.sat_addr.s_net) {
-           LOG(log_error, logtype_atalkd, "rtmp_config net mismatch %u != %u",
-                   ntohs( rh->rh_net ),
-                   ntohs( iface->i_addr.sat_addr.s_net ));
-           return 1;
-       }
-       iface->i_addr.sat_addr.s_net = rh->rh_net;
-
-       /*
-        * It is possible that we will corrupt our route database
-        * by just forcing this change.  XXX
-        */
-       iface->i_rt->rt_firstnet = iface->i_rt->rt_lastnet = rh->rh_net;
-
-       setaddr( iface, IFACE_PHASE1, iface->i_addr.sat_addr.s_net,
-               iface->i_addr.sat_addr.s_node, rh->rh_net, rh->rh_net );
-       stabletimer = UNSTABLE;
-    }
-
-    /* add addr to loopback route */
-    if ((cc = looproute( iface, RTMP_ADD )) < 0 )
-      return -1;
-
-    if (cc) {
-       LOG(log_error, logtype_atalkd, "rtmp_config: can't route %u.%u to loopback: %s",
-               ntohs( iface->i_addr.sat_addr.s_net ),
-               iface->i_addr.sat_addr.s_node,
-               strerror(errno) );
-    }
-
-    LOG(log_info, logtype_atalkd, "rtmp_config configured %s", iface->i_name );
-    iface->i_flags |= IFACE_CONFIG;
-    if ( iface == ciface ) {
-       ciface = ciface->i_next;
-       bootaddr( ciface );
-    }
-
-    return 0;
-}
-
-/*
- * Delete rtmp from the per-interface in-use table, remove all
- * zone references, and remove the route from the kernel.
- */
-static void rtmp_delinuse(struct rtmptab *rtmp)
-{
-    struct rtmptab     *irt;
-
-    irt = rtmp->rt_gate->g_iface->i_rt;
-    if ( irt->rt_inext == rtmp ) {                     /* first */
-       if ( rtmp->rt_iprev == rtmp ) {                 /* only */
-           irt->rt_inext = NULL;
-       } else {
-           irt->rt_inext = rtmp->rt_inext;
-           rtmp->rt_inext->rt_iprev = rtmp->rt_iprev;
-       }
-    } else {
-       if ( rtmp->rt_inext == NULL ) {                 /* last */
-           rtmp->rt_iprev->rt_inext = NULL;
-           irt->rt_inext->rt_iprev = rtmp->rt_iprev;
-       } else {
-           rtmp->rt_iprev->rt_inext = rtmp->rt_inext;
-           rtmp->rt_inext->rt_iprev = rtmp->rt_iprev;
-       }
-    }
-    rtmp->rt_iprev = NULL;
-    rtmp->rt_inext = NULL;
-
-    /* remove zone map */
-    rtmp_delzonemap(rtmp);
-
-    /* remove old route */
-    gateroute( RTMP_DEL, rtmp );
-}
-
-/*
- * Add rtmp to the per-interface in-use table.  No verification is done...
- */
-static void rtmp_addinuse( struct rtmptab *rtmp)
-{
-    struct rtmptab     *irt;
-
-    gateroute( RTMP_ADD, rtmp );
-
-    irt = rtmp->rt_gate->g_iface->i_rt;
-    if ( irt->rt_inext == NULL ) {     /* empty list */
-       rtmp->rt_inext = NULL;
-       rtmp->rt_iprev = rtmp;
-       irt->rt_inext = rtmp;
-    } else {
-       rtmp->rt_inext = irt->rt_inext;
-       rtmp->rt_iprev = irt->rt_inext->rt_iprev;
-       irt->rt_inext->rt_iprev = rtmp;
-       irt->rt_inext = rtmp;
-    }
-}
-
-
-/*
- * Change the zone mapping to replace "from" with "to".  This code assumes
- * the consistency of both the route -> zone map and the zone -> route map.
- * This is probably a bad idea.  How can we insure that the data is good
- * at this point?  What do we do if we get several copies of a route in
- * an RTMP packet?
- */
-static int rtmp_copyzones( struct rtmptab *to,struct rtmptab *from)
-{
-    struct list                *lz, *lr;
-
-    to->rt_zt = from->rt_zt;
-    from->rt_zt = NULL;
-    if ( from->rt_flags & RTMPTAB_HASZONES ) {
-       to->rt_flags |= RTMPTAB_HASZONES;
-    }
-    for ( lz = to->rt_zt; lz; lz = lz->l_next ) {
-       for ( lr = ((struct ziptab *)lz->l_data)->zt_rt; lr; lr = lr->l_next ) {
-           if ( (struct rtmptab *)lr->l_data == from ) {
-               lr->l_data = (void *)to;        /* cast BS */
-               break;
-           }
-       }
-       if ( lr == NULL ) {
-           LOG(log_error, logtype_atalkd, "rtmp_copyzones z -> r without r -> z, abort" );
-           return -1;
-       }
-    }
-
-    return 0;
-}
-
-
-/*
- * Remove rtmp from the in-use table and the per-gate table.
- * Free any associated space.
- */
-void rtmp_free( struct rtmptab *rtmp)
-{
-    struct gate                *gate;
-
-    LOG(log_info, logtype_atalkd, "rtmp_free: %u-%u", ntohs(rtmp->rt_firstnet),
-          ntohs(rtmp->rt_lastnet));
-    if ( rtmp->rt_iprev ) {
-       rtmp_delinuse( rtmp );
-    }
-
-    /* remove from per-gate */
-    gate = rtmp->rt_gate;
-    if ( gate->g_rt == rtmp ) {                                /* first */
-       if ( rtmp->rt_prev == rtmp ) {                  /* only */
-           gate->g_rt = NULL;
-       } else {
-           gate->g_rt = rtmp->rt_next;
-           rtmp->rt_next->rt_prev = rtmp->rt_prev;
-       }
-    } else {
-       if ( rtmp->rt_next == NULL ) {                  /* last */
-           rtmp->rt_prev->rt_next = NULL;
-           gate->g_rt->rt_prev = rtmp->rt_prev;
-       } else {
-           rtmp->rt_prev->rt_next = rtmp->rt_next;
-           rtmp->rt_next->rt_prev = rtmp->rt_prev;
-       }
-    }
-
-    free( rtmp );
-}
-
-
-/*
- * Find a replacement for "replace".  If we can't find a replacement,
- * return 1.  If we do find a replacement, return 0. -1 on error.
- */
-int rtmp_replace(struct rtmptab *replace)
-{
-    struct interface   *iface;
-    struct gate                *gate;
-    struct rtmptab     *rtmp, *found = NULL;
-
-    LOG(log_info, logtype_atalkd, "rtmp_replace %u-%u", ntohs(replace->rt_firstnet),
-          ntohs(replace->rt_lastnet));
-    for ( iface = interfaces; iface; iface = iface->i_next ) {
-        if ((replace->rt_iface != iface) && 
-           ((iface->i_flags & IFACE_ISROUTER) == 0))
-         continue;
-
-       for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-           for ( rtmp = gate->g_rt; rtmp; rtmp = rtmp->rt_next ) {
-               if ( rtmp->rt_firstnet == replace->rt_firstnet &&
-                       rtmp->rt_lastnet == replace->rt_lastnet ) {
-                   if ( found == NULL || rtmp->rt_hops < found->rt_hops ) {
-                       found = rtmp;
-                   }
-                   break;
-               }
-           }
-       }
-    }
-
-    if ( found != replace ) {
-       if (rtmp_copyzones( found, replace ) < 0)
-         return -1;
-       rtmp_delinuse( replace );
-       rtmp_addinuse( found );
-       if ( replace->rt_state == RTMPTAB_BAD ) {
-           rtmp_free( replace );
-       }
-       return( 0 );
-    } else {
-       if ( replace->rt_hops == RTMPHOPS_POISON ) {
-           gateroute( RTMP_DEL, replace );
-       }
-       return( 1 );
-    }
-}
-
-
-static int rtmp_new(struct rtmptab *rtmp)
-{
-    struct interface   *i;
-    struct rtmptab     *r;
-    extern int         newrtmpdata;
-
-    newrtmpdata = 1;
-
-    /*
-     * Do we already have a gateway for this route?
-     */
-    for ( i = interfaces; i; i = i->i_next ) {
-        if ((rtmp->rt_iface != i) && 
-           ((i->i_flags & IFACE_ISROUTER) == 0))
-         continue;
-
-       for ( r = i->i_rt; r; r = r->rt_inext ) {
-           /* Should check RTMPTAB_EXTENDED here. XXX */
-           if (( ntohs( r->rt_firstnet ) <= ntohs( rtmp->rt_firstnet ) &&
-                   ntohs( r->rt_lastnet ) >= ntohs( rtmp->rt_firstnet )) ||
-                   ( ntohs( r->rt_firstnet ) <= ntohs( rtmp->rt_lastnet ) &&
-                   ntohs( r->rt_lastnet ) >= ntohs( rtmp->rt_lastnet ))) {
-               break;
-           }
-       }
-       if ( r ) {
-           break;
-       }
-    }
-
-    /*
-     * This part of this routine is almost never run.
-     */
-    if ( i ) { /* can we get here without r being set? */
-       if ( r->rt_firstnet != rtmp->rt_firstnet ||
-               r->rt_lastnet != rtmp->rt_lastnet ) {
-           LOG(log_info, logtype_atalkd, "rtmp_new netrange mismatch %u-%u != %u-%u",
-                   ntohs( r->rt_firstnet ), ntohs( r->rt_lastnet ),
-                   ntohs( rtmp->rt_firstnet ), ntohs( rtmp->rt_lastnet ));
-           return 1;
-       }
-
-       /*
-        * Note that our whole methodology is wrong, if we want to do
-        * route "load balancing."  This entails changing our route
-        * each time we receive a tuple of equal value.  In fact, we can't
-        * do this, using our method, since we only check against in-use
-        * routes when a tuple is new from a router.
-        */
-       if ( r->rt_hops < rtmp->rt_hops ) {
-           return 1;
-       }
-
-       if (rtmp_copyzones( rtmp, r ) < 0)
-         return -1;
-       rtmp_delinuse( r );
-    }
-
-    rtmp_addinuse( rtmp );
-    return 0;
-}
-
-
-int rtmp_packet(struct atport *ap, struct sockaddr_at *from, char *data, int len)
-{
-    struct rtmp_head   rh;
-    struct rtmp_tuple  rt, xrt;
-    struct gate                *gate;
-    struct interface   *iface;
-    struct interface   *iface2;
-    struct rtmptab     *rtmp;
-    char               *end, packet[ ATP_BUFSIZ ];
-    int                 cc;
-
-    end = data + len;
-
-    if ( data >= end ) {
-       LOG(log_info, logtype_atalkd, "rtmp_packet no data" );
-       return 1;
-    }
-
-    iface = ap->ap_iface;
-
-    /* linux 2.6 sends broadcast queries to the first available socket 
-       (in our case the last configured) 
-       try to find the right one.
-       Note: now a misconfigured or plugged router can broadcast
-       a wrong route
-    */
-    for ( iface2 = interfaces; iface2; iface2 = iface2->i_next ) {
-        if ( iface2->i_rt && from->sat_addr.s_net >= iface2->i_rt->rt_firstnet && 
-                from->sat_addr.s_net <= iface2->i_rt->rt_lastnet) 
-        {
-              iface = iface2;
-        }
-    }
-    /* end of linux 2.6 workaround */
-    
-    /* ignore our own packets */
-    if ( from->sat_addr.s_net == iface->i_addr.sat_addr.s_net &&
-           from->sat_addr.s_node == iface->i_addr.sat_addr.s_node  ) {
-       return 0;
-    }
-
-    switch( *data++ ) {
-    case DDPTYPE_RTMPRD :
-       /*
-        * Response and Data.
-        */
-       if ( data + sizeof( struct rtmprdhdr ) > end ) {
-           LOG(log_info, logtype_atalkd, "rtmp_packet no data header" );
-           return 1;
-       }
-       memcpy( &rh, data, sizeof( struct rtmprdhdr ));
-       data += sizeof( struct rtmprdhdr );
-
-       /* check rh address against from address */
-       if ( rh.rh_nodelen != 8 ) {
-           LOG(log_info, logtype_atalkd, "rtmp_packet bad node len (%d)", rh.rh_nodelen );
-           return 1;
-       }
-       if (( from->sat_addr.s_net != 0 && 
-             from->sat_addr.s_net != rh.rh_net ) ||
-             from->sat_addr.s_node != rh.rh_node ) {
-           LOG(log_info, logtype_atalkd, "rtmp_packet address mismatch" );
-           return 1;
-       }
-
-       if (( iface->i_flags & ( IFACE_ADDR|IFACE_CONFIG )) == IFACE_ADDR ) {
-           if ( iface->i_flags & IFACE_NOROUTER ) {
-               /* remove addr to loopback route */
-               if ((cc = looproute( iface, RTMP_DEL )) < 0) {
-                 LOG(log_error, logtype_atalkd, "rtmp_packet: looproute");
-                 return -1;
-               } 
-
-               if (cc)
-                 LOG(log_error, logtype_atalkd, "rtmp_packet: can't remove loopback: %s",
-                         strerror(errno) );
-
-               iface->i_flags &= ~IFACE_NOROUTER;
-               iface->i_time = 0;
-               LOG(log_info, logtype_atalkd, "rtmp_packet router has become available" );
-           }
-           if ( iface->i_flags & IFACE_PHASE1 ) {
-             if (rtmp_config( &rh, iface ) < 0) {
-                 LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_config");
-                 return -1;
-             }
-           } else if (zip_getnetinfo( iface ) < 0) {
-             LOG(log_error, logtype_atalkd, "rtmp_packet: zip_getnetinfo");
-             return -1;
-           }
-           return 0;
-       }
-
-       if (( iface->i_flags & IFACE_CONFIG ) == 0 ) {
-           return 0;
-       }
-
-       /*
-        * Parse first tuple.  For phase 2, verify that net is correct.
-        */
-       if ( data + SZ_RTMPTUPLE > end ) {
-           LOG(log_info, logtype_atalkd, "rtmp_packet missing first tuple" );
-           return 1;
-       }
-       memcpy( &rt, data, SZ_RTMPTUPLE );
-       data += SZ_RTMPTUPLE;
-
-       if ( rt.rt_net == 0 ) {
-           if ( rt.rt_dist != 0x82 ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet bad phase 1 version" );
-               return 1;
-           }
-
-           /*
-            * Grab the next tuple, since we don't want to pass the version
-            * number to the parsing code.  We're assuming that there are
-            * no extended tuples in this packet.
-            */
-           if ( data + SZ_RTMPTUPLE > end ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet missing second tuple" );
-               return 1;
-           }
-           memcpy( &rt, data, SZ_RTMPTUPLE );
-           data += SZ_RTMPTUPLE;
-       } else if ( rt.rt_dist & 0x80 ) {
-           if ( data + SZ_RTMPTUPLE > end ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet missing first range-end" );
-               return 1;
-           }
-           memcpy( &xrt, data, SZ_RTMPTUPLE );
-           data += SZ_RTMPTUPLE;
-
-           if ( xrt.rt_dist != 0x82 ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet bad phase 2 version" );
-               return 1;
-           }
-
-           /*
-            * Check for net range conflict.
-            */
-           if ( rt.rt_net != iface->i_rt->rt_firstnet ||
-                   xrt.rt_net != iface->i_rt->rt_lastnet ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet interface mismatch" );
-               return 1;
-           }
-       } else {
-#ifdef PHASE1NET
-           /*
-            * Gatorboxes put a net number in the first tuple, even on
-            * phase 1 nets.  This is wrong, but since we've got it, we
-            * might just as well check it.
-           if ( rt.rt_net != iface->i_rt->rt_firstnet ||
-                   rt.rt_net != iface->i_rt->rt_lastnet ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet phase 1 interface mismatch" );
-               return 1;
-           }
-            */
-#else /* PHASE1NET */
-           LOG(log_info, logtype_atalkd, "rtmp_packet bad first tuple" );
-           return 1;
-#endif /* PHASE1NET */
-       }
-
-       /*
-        * Find gateway.
-        */
-       for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-           if ( gate->g_sat.sat_addr.s_net == from->sat_addr.s_net &&
-                   gate->g_sat.sat_addr.s_node == from->sat_addr.s_node ) {
-               break;
-           }
-       }
-       if ( !gate ) {  /* new gateway */
-           if (( gate = (struct gate *)malloc( sizeof( struct gate ))) == NULL ) {
-               LOG(log_error, logtype_atalkd, "rtmp_packet: malloc: %s", strerror(errno) );
-               return -1;
-           }
-           gate->g_next = iface->i_gate;
-           gate->g_prev = NULL;
-           gate->g_rt = NULL;
-           gate->g_iface = iface;      /* need this? */
-           gate->g_sat = *from;
-           if ( iface->i_gate ) {
-               iface->i_gate->g_prev = gate;
-           }
-           iface->i_gate = gate;
-           LOG(log_info, logtype_atalkd, "rtmp_packet gateway %u.%u up",
-                   ntohs( gate->g_sat.sat_addr.s_net ),
-                   gate->g_sat.sat_addr.s_node );
-       }
-
-       /*
-        * Reset the timeout on this gateway.  We'll remove the gateway
-        * entry, if the timeout gets to RTMPTAB_BAD.
-        */
-       gate->g_state = RTMPTAB_GOOD;
-
-       /*
-        * Parse remaining tuples.
-        */
-       for (;;) {
-           /*
-            * Is route on this gateway?
-            */
-           for ( rtmp = gate->g_rt; rtmp; rtmp = rtmp->rt_next ) {
-               if ( ntohs( rtmp->rt_firstnet ) <= ntohs( rt.rt_net ) &&
-                       ntohs( rtmp->rt_lastnet ) >= ntohs( rt.rt_net )) {
-                   break;
-               }
-               if (( rt.rt_dist & 0x80 ) &&
-                       ntohs( rtmp->rt_firstnet ) <= ntohs( xrt.rt_net ) &&
-                       ntohs( rtmp->rt_lastnet ) >= ntohs( xrt.rt_net )) {
-                   break;
-               }
-           }
-
-           if ( rtmp ) {       /* found it */
-               /*
-                * Check for range conflicts.  (This is getting a little
-                * ugly.)
-                */
-               if ( rtmp->rt_firstnet != rt.rt_net ) {
-                   LOG(log_info, logtype_atalkd, "rtmp_packet firstnet mismatch %u!=%u",
-                           ntohs( rtmp->rt_firstnet ), ntohs( rt.rt_net ));
-                   return 1;
-               }
-               if ( rt.rt_dist & 0x80 ) {
-                   if (( rtmp->rt_flags & RTMPTAB_EXTENDED ) == 0 ) {
-                       LOG(log_info, logtype_atalkd, "rtmp_packet extended mismatch %u",
-                               ntohs( rtmp->rt_firstnet ));
-                       return 1;
-                   }
-                   if ( rtmp->rt_lastnet != xrt.rt_net ) {
-                       LOG(log_info, logtype_atalkd, "rtmp_packet lastnet mismatch %u!=%u",
-                           ntohs( rtmp->rt_lastnet ), ntohs( xrt.rt_net ));
-                       return 1;
-                   }
-               } else {
-                   if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
-                       LOG(log_info, logtype_atalkd, "rtmp_packet !extended mismatch %u",
-                               ntohs( rtmp->rt_firstnet ));
-                       return 1;
-                   }
-                   if ( rtmp->rt_lastnet != rt.rt_net ) {
-                       LOG(log_info, logtype_atalkd, "rtmp_packet lastnet mismatch %u!=%u",
-                           ntohs( rtmp->rt_lastnet ), ntohs( rt.rt_net ));
-                       return 1;
-                   }
-               }
-
-               rtmp->rt_state = RTMPTAB_GOOD;
-
-               /*
-                * Check hop count.  If the count has changed, update
-                * the routing database.
-                */
-               if (( rtmp->rt_hops != ( rt.rt_dist & 0x7f ) + 1 ) &&
-                       ( rtmp->rt_hops != RTMPHOPS_POISON ||
-                       ( rt.rt_dist & 0x7f ) + 1 <= RTMPHOPS_MAX )) {
-                   if ( rtmp->rt_iprev ) {     /* route is in use */
-                       if ( rtmp->rt_hops > ( rt.rt_dist & 0x7f ) + 1 ) {
-                           /*
-                            * If this was POISON, we've deleted it from
-                            * the kernel.  Add it back in.
-                            */
-                           if ( rtmp->rt_hops == RTMPHOPS_POISON ) {
-                               gateroute( RTMP_ADD, rtmp );
-                           }
-                           rtmp->rt_hops = ( rt.rt_dist & 0x7f ) + 1;
-                       } else {
-                           /*
-                            * Hop count has gone up for this route.
-                            * Search for a new best route.  If we can't
-                            * find one, just keep this route.  "poison"
-                            * route are deleted in as_timer().
-                            */
-                           if (( rt.rt_dist & 0x7f ) + 1 > RTMPHOPS_MAX ) {
-                               rtmp->rt_hops = RTMPHOPS_POISON;
-                           } else {
-                               rtmp->rt_hops = ( rt.rt_dist & 0x7f ) + 1;
-                           }
-                           if (rtmp_replace( rtmp ) < 0) {
-                             LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_replace");
-                             return -1;
-                           }
-                       }
-                   } else {                    /* route not in use */
-                       rtmp->rt_hops = ( rt.rt_dist & 0x7f ) + 1;
-                       if ( rtmp->rt_hops > ( rt.rt_dist & 0x7f ) + 1 ) {
-                         if (rtmp_new( rtmp ) < 0) {
-                             LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_new");
-                             return -1;
-                         }
-                       }
-                   }
-               }
-
-               /*
-                * Make the *next* node the head, since
-                * we're not likely to be asked for the same tuple twice
-                * in a row.
-                */
-               if ( rtmp->rt_next != NULL ) {
-                   gate->g_rt->rt_prev->rt_next = gate->g_rt;
-                   gate->g_rt = rtmp->rt_next;
-                   rtmp->rt_next = NULL;
-               }
-           } else if (( rt.rt_dist & 0x7f ) + 1 > RTMPHOPS_MAX ) {
-               LOG(log_info, logtype_atalkd, "rtmp_packet bad hop count from %u.%u for %u",
-                       ntohs( from->sat_addr.s_net ), from->sat_addr.s_node,
-                       ntohs( rt.rt_net ));
-           } else {            /* new for router */
-               if (( rtmp = newrt(iface)) == NULL ) {
-                   LOG(log_error, logtype_atalkd, "rtmp_packet: newrt: %s", strerror(errno) );
-                   return -1;
-               }
-               rtmp->rt_firstnet = rt.rt_net;
-               if ( rt.rt_dist & 0x80 ) {
-                   rtmp->rt_lastnet = xrt.rt_net;
-                   rtmp->rt_flags = RTMPTAB_EXTENDED;
-               } else {
-                   rtmp->rt_lastnet = rt.rt_net;
-               }
-               rtmp->rt_hops = ( rt.rt_dist & 0x7f ) + 1;
-               rtmp->rt_state = RTMPTAB_GOOD;
-               rtmp->rt_gate = gate;
-
-               /*
-                * Add rtmptab entry to end of list (leave head alone).
-                */
-               if ( gate->g_rt == NULL ) {
-                   rtmp->rt_prev = rtmp;
-                   gate->g_rt = rtmp;
-               } else {
-                   rtmp->rt_prev = gate->g_rt->rt_prev;
-                   gate->g_rt->rt_prev->rt_next = rtmp;
-                   gate->g_rt->rt_prev = rtmp;
-               }
-               
-               if (rtmp_new( rtmp ) < 0) {
-                   LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_new");
-                   return -1;
-               }
-           }
-
-           if ( data + SZ_RTMPTUPLE > end ) {
-               break;
-           }
-           memcpy( &rt, data, SZ_RTMPTUPLE );
-           data += SZ_RTMPTUPLE;
-           if ( rt.rt_dist & 0x80 ) {
-               if ( data + SZ_RTMPTUPLE > end ) {
-                   LOG(log_info, logtype_atalkd, "rtmp_packet missing range-end" );
-                   return 1;
-               }
-               memcpy( &xrt, data, SZ_RTMPTUPLE );
-               data += SZ_RTMPTUPLE;
-           }
-       }
-
-       /*
-        * Make sure we've processed the whole packet.
-        */
-       if ( data != end ) {
-           LOG(log_info, logtype_atalkd, "rtmp_packet length and count mismatch" );
-       }
-       break;
-
-    case DDPTYPE_RTMPR :
-       /*
-        * Request and RDR.
-        */
-        if (((iface->i_flags & IFACE_ISROUTER) == 0) ||
-           iface->i_rt->rt_zt == NULL ||
-           ( iface->i_flags & IFACE_CONFIG ) == 0 ) {
-           return 0;
-       }
-       if ( *data == 1 ) {
-           data = packet;
-           *data++ = DDPTYPE_RTMPRD;
-           rh.rh_net = iface->i_addr.sat_addr.s_net;
-           rh.rh_nodelen = 8;
-           rh.rh_node = iface->i_addr.sat_addr.s_node;
-           memcpy( data, &rh, sizeof( struct rtmp_head ));
-           data += sizeof( struct rtmp_head );
-
-           if ( iface->i_flags & IFACE_PHASE2 ) {
-               rt.rt_net = iface->i_rt->rt_firstnet;
-               rt.rt_dist = 0x80;
-               memcpy( data, &rt, SZ_RTMPTUPLE );
-               data += SZ_RTMPTUPLE;
-
-               rt.rt_net = iface->i_rt->rt_lastnet;
-               rt.rt_dist = 0x82;
-               memcpy( data, &rt, SZ_RTMPTUPLE );
-               data += SZ_RTMPTUPLE;
-           }
-           if ( sendto( ap->ap_fd, packet, data - packet, 0,
-                   (struct sockaddr *)from,
-                   sizeof( struct sockaddr_at )) < 0 ) {
-               LOG(log_error, logtype_atalkd, "as_timer sendto: %s", strerror(errno) );
-           }
-       } else if ( *data == 2 || *data == 3 ) {
-#ifdef DEBUG
-           printf( "rtmp_packet rdr (%d) from %u.%u\n",
-                   *data, ntohs( from->sat_addr.s_net ),
-                   from->sat_addr.s_node );
-#endif /* DEBUG */
-       } else {
-           LOG(log_info, logtype_atalkd, "rtmp_packet unknown request from %u.%u",
-                   ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
-       }
-       break;
-
-    default :
-       LOG(log_info, logtype_atalkd, "rtmp_packet bad ddp type from %u.%u",
-                   ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
-       return 0;
-    }
-
-    return 0;
-}
-
-int rtmp_request( struct interface *iface)
-{
-    struct sockaddr_at sat;
-    struct atport      *ap;
-    char               *data, packet[ 2 ];
-
-    LOG(log_info, logtype_atalkd, "rtmp_request for %s", iface->i_name );
-
-    for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-       if ( ap->ap_packet == rtmp_packet ) {
-           break;
-       }
-    }
-    if ( ap == NULL ) {
-       LOG(log_error, logtype_atalkd, "rtmp_request can't find rtmp socket!" );
-       return -1;
-    }
-
-    data = packet;
-    *data++ = DDPTYPE_RTMPR;
-    *data++ = RTMPROP_REQUEST;
-
-    /*
-     * There is a problem with the net zero "hint" hack.
-     */
-    memset( &sat, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    sat.sat_family = AF_APPLETALK;
-    sat.sat_addr.s_net = iface->i_addr.sat_addr.s_net;
-    sat.sat_addr.s_node = ATADDR_BCAST;
-    sat.sat_port = ap->ap_port;
-    if ( sendto( ap->ap_fd, packet, data - packet, 0, (struct sockaddr *)&sat,
-           sizeof( struct sockaddr_at )) < 0 ) {
-       LOG(log_error, logtype_atalkd, "rtmp_request sendto: %s", strerror(errno) );
-       return -1;
-    }
-    return 0;
-}
-
-
-int looproute(struct interface *iface, unsigned int cmd)
-{
-    struct sockaddr_at dst, loop;
-
-    if ( cmd == RTMP_DEL && ( iface->i_flags & IFACE_LOOP ) == 0 ) {
-       LOG(log_error, logtype_atalkd, "looproute panic no route" );
-       return -1;
-    }
-
-    if ( cmd == RTMP_ADD && ( iface->i_flags & IFACE_LOOP )) {
-       LOG(log_error, logtype_atalkd, "looproute panic two routes" );
-       return -1;
-    }
-
-    memset( &dst, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    dst.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    dst.sat_family = AF_APPLETALK;
-    dst.sat_addr.s_net = iface->i_addr.sat_addr.s_net;
-    dst.sat_addr.s_node = iface->i_addr.sat_addr.s_node;
-    memset( &loop, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    loop.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    loop.sat_family = AF_APPLETALK;
-    loop.sat_addr.s_net = htons( ATADDR_ANYNET );
-    loop.sat_addr.s_node = ATADDR_ANYNODE;
-
-#ifndef BSD4_4
-    if ( route( cmd,
-               (struct sockaddr *) &dst,
-               (struct sockaddr *) &loop,
-               RTF_UP | RTF_HOST ) ) {
-       return( 1 );
-    }
-#else /* ! BSD4_4 */
-    if ( route( cmd,
-               (struct sockaddr_at *) &dst,
-               (struct sockaddr_at *) &loop,
-               RTF_UP | RTF_HOST ) ) {
-       return ( 1);
-    }
-#endif /* BSD4_4 */
-    if ( cmd == RTMP_ADD ) {
-       iface->i_flags |= IFACE_LOOP;
-    }
-    if ( cmd == RTMP_DEL ) {
-       iface->i_flags &= ~IFACE_LOOP;
-    }
-    return( 0 );
-}
-
-int gateroute(unsigned int command, struct rtmptab *rtmp)
-{
-    struct sockaddr_at dst, gate;
-    unsigned short     net;
-
-    if ( command == RTMP_DEL && ( rtmp->rt_flags & RTMPTAB_ROUTE ) == 0 ) {
-       return( -1 );
-    }
-    if ( command == RTMP_ADD && ( rtmp->rt_flags & RTMPTAB_ROUTE )) {
-       return( -1 );
-    }
-
-    net = ntohs( rtmp->rt_firstnet );
-    /*
-     * Since we will accept routes from gateways who advertise their
-     * address as 0.YY, we must munge the gateway address we give to
-     * the kernel.  Otherwise, we'll get a bunch of routes to the loop
-     * back interface, and who wants that?
-     */
-    memset( &gate, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    gate.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    gate.sat_family = AF_APPLETALK;
-    gate.sat_addr.s_net = rtmp->rt_gate->g_sat.sat_addr.s_net;
-    gate.sat_addr.s_node = rtmp->rt_gate->g_sat.sat_addr.s_node;
-    if ( gate.sat_addr.s_net == 0 ) {
-       gate.sat_addr.s_net = net;
-    }
-
-    memset( &dst, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    dst.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    dst.sat_family = AF_APPLETALK;
-    dst.sat_addr.s_node = ATADDR_ANYNODE;
-
-    do {
-       dst.sat_addr.s_net = htons( net );
-#ifndef BSD4_4
-       if ( route( command,
-                   (struct sockaddr *) &dst,
-                   (struct sockaddr *) &gate,
-                   RTF_UP | RTF_GATEWAY )) {
-           LOG(log_error, logtype_atalkd, "route: %u -> %u.%u: %s", net,
-                   ntohs( gate.sat_addr.s_net ), gate.sat_addr.s_node,
-                   strerror(errno) );
-           continue;
-       }
-#else /* ! BSD4_4 */
-       if ( route( command,
-                   (struct sockaddr_at *) &dst,
-                   (struct sockaddr_at *) &gate,
-                   RTF_UP | RTF_GATEWAY )) {
-           LOG(log_error, logtype_atalkd, "route: %u -> %u.%u: %s", net,
-                   ntohs( gate.sat_addr.s_net ), gate.sat_addr.s_node, strerror(errno) );
-           continue;
-       }
-#endif /* ! BSD4_4 */
-    } while ( net++ < ntohs( rtmp->rt_lastnet ));
-
-    if ( command == RTMP_ADD ) {
-       rtmp->rt_flags |= RTMPTAB_ROUTE;
-    }
-    if ( command == RTMP_DEL ) {
-       rtmp->rt_flags &= ~RTMPTAB_ROUTE;
-    }
-
-    return( 0 );
-}
-
-    struct rtmptab *
-newrt(const struct interface *iface)
-{
-    struct rtmptab     *rtmp;
-
-    if (( rtmp = (struct rtmptab *)calloc(1, sizeof(struct rtmptab))) == NULL ) {
-       return( NULL );
-    }
-
-    rtmp->rt_iface = iface;
-    return( rtmp );
-}
diff --git a/etc/atalkd/rtmp.h b/etc/atalkd/rtmp.h
deleted file mode 100644 (file)
index 99e15db..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Id: rtmp.h,v 1.5 2009-10-13 22:55:37 didg Exp $
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- * We have an rtmptab circular linked list for each gateway.  Entries
- * are inserted in the order we get them.  The expectation is that
- * we will get a complexity of N for the stable case.  If we have N
- * existing entries, and M new entries, we'll have on the order of
- * N + ( M * N ) complexity (really it will be something more than
- * that, maybe N + ( M * ( N + 1/2 M )).  Note that having a list to
- * search is superior to a hash table if you are expecting bad data:
- * you have the opportunity to range-check the incoming data.
- *
- * We keep several ZIP related flags and counters here.  For ZIP Extended
- * Replies, we must keep a flag indicating that the zone is up or down.
- * This flag is necessary for ZIP Extended Replies which cross packet
- * boundaries: even tho the rtmptab entry has data, it is not yet
- * complete.  For ZIP in general, we keep a flag indicating that we've
- * asked for a ZIP (E)Reply.  If this flag is not set, we won't process
- * ZIP Reply data for given rtmptab entries.  Lastly, we keep a count of
- * the number of times we've asked for ZIP Reply data.  When this value
- * reaches some value (3?), we can optionally stop asking.
- */
-
-#ifndef ATALKD_RTMP_H
-#define ATALKD_RTMP_H 1
-
-#include <sys/cdefs.h>
-
-struct rtmptab {
-    struct rtmptab     *rt_next,
-                       *rt_prev;
-    struct rtmptab     *rt_inext,
-                       *rt_iprev;
-    u_short            rt_firstnet, rt_lastnet;
-    u_char             rt_hops;
-    u_char             rt_state;
-    u_char             rt_flags;
-    u_char             rt_nzq;         /* number of zip queries issued */
-    struct gate                *rt_gate;       /* gate is NULL for interfaces */
-    struct list                *rt_zt;
-    const struct interface    *rt_iface;
-};
-
-struct rtmp_head {
-    u_short    rh_net;
-    u_char     rh_nodelen;
-    u_char     rh_node;
-};
-
-struct rtmp_tuple {
-    u_short    rt_net;
-    u_char     rt_dist;
-};
-#define SZ_RTMPTUPLE   3
-
-#define RTMPTAB_PERM   0
-#define RTMPTAB_GOOD   1
-#define RTMPTAB_SUSP1  2
-#define RTMPTAB_SUSP2  3
-#define RTMPTAB_BAD    4
-
-#define RTMPTAB_ZIPQUERY       0x01
-#define RTMPTAB_HASZONES       0x02
-#define RTMPTAB_EXTENDED       0x04
-#define RTMPTAB_ROUTE          0x08
-
-#ifndef BSD4_4
-#define RTMP_ADD       SIOCADDRT
-#define RTMP_DEL       SIOCDELRT
-#else /* BSD4_4 */
-#define RTMP_ADD       RTM_ADD
-#define RTMP_DEL       RTM_DELETE
-#endif /* BSD4_4 */
-
-#define STARTUP_FIRSTNET       0xff00
-#define STARTUP_LASTNET                0xfffe
-
-extern int     rtfd;
-struct rtmptab *newrt (const struct interface *);
-void rtmp_delzonemap  (struct rtmptab *);
-
-int rtmp_request ( struct interface * );
-void rtmp_free ( struct rtmptab * );
-int rtmp_replace ( struct rtmptab * );
-int looproute ( struct interface *, unsigned int );
-int gateroute ( unsigned int, struct rtmptab * );
-
-struct atport;
-
-int rtmp_packet(struct atport *ap, struct sockaddr_at *from, char *data, int len);
-
-#endif /* atalkd/rtmp.h */
diff --git a/etc/atalkd/zip.c b/etc/atalkd/zip.c
deleted file mode 100644 (file)
index 23d8188..0000000
+++ /dev/null
@@ -1,1055 +0,0 @@
-/*
- * $Id: zip.c,v 1.15 2009-12-13 00:31:50 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <atalk/logger.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#ifdef TRU64
-#include <sys/mbuf.h>
-#include <net/route.h>
-#endif /* TRU64 */
-#include <net/if.h>
-#include <net/route.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-
-#ifdef __svr4__
-#include <sys/sockio.h>
-#endif /* __svr4__ */
-
-#include <atalk/ddp.h>
-#include <atalk/zip.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-
-#include "atserv.h"
-#include "interface.h"
-#include "gate.h"
-#include "zip.h"
-#include "rtmp.h"
-#include "list.h"
-#include "multicast.h"
-#include "main.h"
-
-struct ziptab  *ziptab = NULL, *ziplast = NULL;
-
-
-static int zonecheck(struct rtmptab *rtmp, struct interface *iface)
-{
-    struct list                *l;
-    struct ziptab      *czt, *zt;
-    int                        cztcnt, ztcnt;
-
-    if (( iface->i_flags & IFACE_SEED ) == 0 ) {
-       return( 0 );
-    }
-
-    for ( cztcnt = 0, czt = iface->i_czt; czt; czt = czt->zt_next, cztcnt++ ) {
-       for ( l = rtmp->rt_zt; l; l = l->l_next ) {
-           zt = (struct ziptab *)l->l_data;
-           if ( czt->zt_len == zt->zt_len &&
-                   !strndiacasecmp( czt->zt_name, zt->zt_name, czt->zt_len )) {
-               break;
-           }
-       }
-       if ( l == NULL ) {
-           LOG(log_error, logtype_atalkd, "zonecheck: %.*s not in zone list", czt->zt_len,
-                   czt->zt_name );
-           return( -1 );       /* configured zone not found in net zones */
-       }
-    }
-
-    for ( ztcnt = 0, l = rtmp->rt_zt; l; l = l->l_next, ztcnt++ )
-       ;
-
-    if ( cztcnt != ztcnt ) {
-       LOG(log_error, logtype_atalkd, "zonecheck: %d configured zones, %d zones found",
-               cztcnt, ztcnt );
-       return( -1 );           /* more net zones than configured zones */
-    }
-
-    return( 0 );
-}
-
-
-int zip_packet(struct atport *ap,struct sockaddr_at *from, char *data, int len)
-{
-    struct ziphdr      zh;
-    struct atphdr      ah;
-    struct interface   *iface;
-    struct gate                *gate;
-    struct rtmptab     *rtmp = NULL;
-    struct list                *l;
-    struct ziptab      *zt;
-    u_short            firstnet, lastnet, index, nz;
-    char               *end, zname[ 32 ], packet[ ATP_BUFSIZ ], *nzones, *lastflag;
-    char               *reply, *rend, *ziphdr;
-    int                        zlen, n, zipop, rcnt, qcnt, zcnt, zsz;
-    extern int         stabletimer;
-
-    end = data + len;
-
-    if ( data >= end ) {
-       LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-       return 1;
-    }
-
-    /* get interface */
-    iface = ap->ap_iface;
-
-    switch( *data++ ) {
-    case DDPTYPE_ZIP :
-       if ( data + sizeof( struct ziphdr ) > end ) {
-           LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-           return 1;
-       }
-       memcpy( &zh, data, sizeof( struct ziphdr ));
-       data += sizeof( struct ziphdr );
-
-       switch ( zh.zh_op ) {
-       case ZIPOP_QUERY :
-           /* set up reply */
-           reply = packet;
-           rend = packet + sizeof( packet );
-           *reply++ = DDPTYPE_ZIP;
-           ziphdr = reply;
-           reply += 2;
-           rcnt = 0;
-
-           qcnt = zh.zh_count;
-
-           while ( data + sizeof( u_short ) <= end && qcnt-- > 0 ) {
-               memcpy( &firstnet, data, sizeof( u_short ));
-               data += sizeof( u_short );
-
-               /*
-                * Look for the given network number (firstnet).
-                * Perhaps we could do better than brute force?
-                */
-               for ( iface = interfaces; iface; iface = iface->i_next ) {
-                   for ( rtmp = iface->i_rt; rtmp; rtmp = rtmp->rt_inext ) {
-                       if ( firstnet == rtmp->rt_firstnet ) {
-                           break;
-                       }
-                   }
-                   if ( rtmp ) {
-                       break;
-                   }
-               }
-               if ( rtmp == NULL ) {
-                   continue;
-               }
-
-               /*
-                * Count the number of zones in this list, and the
-                * number of byte it will consume in a reply.
-                */
-               for ( zsz = 0, zcnt = 0, l = rtmp->rt_zt; l; l = l->l_next ) {
-                   zcnt++;
-                   zt = (struct ziptab *)l->l_data;
-                   zsz += sizeof( u_short ) + 1 + zt->zt_len;
-               }
-
-               /*
-                * We might send this list in the current reply, as the
-                * first thing in the next reply, or as an extended packet.
-                */
-               if ( reply + zsz > rend ) {
-                   if ( rcnt > 0 ) {
-                       zh.zh_op = ZIPOP_REPLY;
-                       zh.zh_cnt = rcnt;
-                       memcpy( ziphdr, &zh, sizeof( struct ziphdr ));
-                       if ( sendto( ap->ap_fd, packet, reply - packet, 0,
-                               (struct sockaddr *)from,
-                               sizeof( struct sockaddr_at )) < 0 ) {
-                           LOG(log_error, logtype_atalkd, "zip reply sendto: %s",
-                                   strerror(errno) );
-                       }
-
-                       reply = packet + 3;
-                       rcnt = 0;
-                   }
-
-                   if ( reply + zsz > rend ) {
-                       /* ereply */
-                       for ( l = rtmp->rt_zt; l; l = l->l_next, rcnt++ ) {
-                           zt = (struct ziptab *)l->l_data;
-                           if ( reply + sizeof( u_short ) + 1 + zt->zt_len >
-                                   rend ) {
-                               zh.zh_op = ZIPOP_EREPLY;
-                               zh.zh_cnt = zcnt;
-                               memcpy( ziphdr, &zh, sizeof( struct ziphdr ));
-                               if ( sendto( ap->ap_fd, packet, reply - packet,
-                                       0, (struct sockaddr *)from,
-                                       sizeof( struct sockaddr_at )) < 0 ) {
-                                   LOG(log_error, logtype_atalkd, "zip reply sendto: %s",
-                                           strerror(errno) );
-                               }
-
-                               reply = packet + 3;
-                               rcnt = 0;
-                           }
-
-                           memcpy( reply, &firstnet, sizeof( u_short ));
-                           reply += sizeof( u_short );
-                           *reply++ = zt->zt_len;
-                           memcpy( reply, zt->zt_name, zt->zt_len );
-                           reply += zt->zt_len;
-                       }
-
-                       if ( rcnt > 0 ) {
-                           zh.zh_op = ZIPOP_EREPLY;
-                           zh.zh_cnt = zcnt;
-                           memcpy( ziphdr, &zh, sizeof( struct ziphdr ));
-                           if ( sendto( ap->ap_fd, packet, reply - packet, 0,
-                                   (struct sockaddr *)from,
-                                   sizeof( struct sockaddr_at )) < 0 ) {
-                               LOG(log_error, logtype_atalkd, "zip reply sendto: %s",
-                                       strerror(errno) );
-                           }
-
-                           reply = packet + 3;
-                           rcnt = 0;
-                       }
-                       continue;
-                   }
-               }
-
-               for ( l = rtmp->rt_zt; l; l = l->l_next, rcnt++ ) {
-                   zt = (struct ziptab *)l->l_data;
-                   memcpy( reply, &firstnet, sizeof( u_short ));
-                   reply += sizeof( u_short );
-                   *reply++ = zt->zt_len;
-                   memcpy( reply, zt->zt_name, zt->zt_len );
-                   reply += zt->zt_len;
-               }
-           }
-
-           if ( rcnt > 0 ) {
-               zh.zh_op = ZIPOP_REPLY;
-               zh.zh_cnt = rcnt;
-               memcpy( ziphdr, &zh, sizeof( struct ziphdr ));
-               if ( sendto( ap->ap_fd, packet, reply - packet, 0,
-                       (struct sockaddr *)from,
-                       sizeof( struct sockaddr_at )) < 0 ) {
-                   LOG(log_error, logtype_atalkd, "zip reply sendto: %s",
-                           strerror(errno) );
-               }
-           }
-           break;
-
-       case ZIPOP_REPLY :
-           for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-               if (( from->sat_addr.s_net == 0 ||
-                       gate->g_sat.sat_addr.s_net == from->sat_addr.s_net ) &&
-                       gate->g_sat.sat_addr.s_node == from->sat_addr.s_node ) {
-                   break;
-               }
-           }
-           if ( gate == NULL ) {
-               LOG(log_info, logtype_atalkd, "zip reply from non-gateway %u.%u", 
-                   ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
-               return 1;
-           }
-
-           rtmp = NULL;
-
-           do {
-               if ( data + sizeof( u_short ) + 1 > end ) {     /* + strlen */
-                   LOG(log_info, logtype_atalkd, "zip reply short (%d)", len );
-                   return 1;
-               }
-               memcpy( &firstnet, data, sizeof( u_short ));
-               data += sizeof( u_short );
-
-               if ( rtmp && rtmp->rt_firstnet != firstnet ) {
-                   /* XXX */
-                   if ( rtmp->rt_gate == NULL &&
-                           zonecheck( rtmp, gate->g_iface ) != 0 ) {
-                       LOG(log_error, logtype_atalkd, "zip_packet seed zonelist mismatch" );
-                       return -1;
-                   }
-                   rtmp->rt_flags &= ~RTMPTAB_ZIPQUERY;
-               }
-
-               /* Check if this is the interface's route. */
-               if ( firstnet == gate->g_iface->i_rt->rt_firstnet ) {
-                   rtmp = gate->g_iface->i_rt;
-               } else {
-                   for ( rtmp = gate->g_rt; rtmp; rtmp = rtmp->rt_next ) {
-                       if ( rtmp->rt_firstnet == firstnet ) {
-                           break;
-                       }
-                   }
-
-                   /*
-                    * Update head to this rtmp entry.
-                    */
-                   if ( rtmp != NULL && gate->g_rt != rtmp ) {
-                       gate->g_rt->rt_prev->rt_next = gate->g_rt;
-                       gate->g_rt = rtmp;
-                       rtmp->rt_prev->rt_next = NULL;
-                   }
-               }
-
-               zlen = *data++;
-               if ( zlen > 32 || zlen <= 0 ) {
-                   LOG(log_info, logtype_atalkd, "zip reply bad packet" );
-                   return 1;
-               }
-               if ( data + zlen > end ) {
-                   LOG(log_info, logtype_atalkd, "zip reply short (%d)", len );
-                   return 1;
-               }
-               memcpy( zname, data, zlen );
-               data += zlen;
-
-               /*
-                * We won't find any rtmp entry if the gateway is no longer
-                * telling us about the entry.
-                */
-               if ( rtmp == NULL ) {
-                   LOG(log_info, logtype_atalkd, "zip skip reply %u from %u.%u (no rtmp)",
-                           ntohs( firstnet ), ntohs( from->sat_addr.s_net ),
-                           from->sat_addr.s_node );
-               /*
-                * Check if the route is still in use (the iprev check is
-                * no good if rtmp is the interface's route).
-                */
-               } else if ( rtmp->rt_iprev == NULL && rtmp->rt_prev != NULL ) {
-                   LOG(log_info, logtype_atalkd,
-                           "zip skip reply %u-%u from %u.%u (rtmp not in use)",
-                           ntohs( rtmp->rt_firstnet ),
-                           ntohs( rtmp->rt_lastnet ),
-                           ntohs( from->sat_addr.s_net ),
-                           from->sat_addr.s_node );
-               /*
-                * Check if we've got an outstanding query for this route.
-                * We will often get this, since we ask every router on a
-                * net to verify our interface's zone(s).
-                */
-               } else if (( rtmp->rt_flags & RTMPTAB_ZIPQUERY ) == 0 ) {
-                   LOG(log_info, logtype_atalkd,
-                           "zip skip reply %u-%u from %u.%u (no query)",
-                           ntohs( rtmp->rt_firstnet ),
-                           ntohs( rtmp->rt_lastnet ),
-                           ntohs( from->sat_addr.s_net ),
-                           from->sat_addr.s_node );
-               } else {
-                   if (addzone( rtmp, zlen, zname ) < 0) {
-                       LOG(log_error, logtype_atalkd, "zip_packet: addzone");
-                       return -1;
-                   }
-                   rtmp->rt_flags |= RTMPTAB_HASZONES;
-               }
-           } while ( data < end );
-
-           if ( rtmp && rtmp->rt_flags & RTMPTAB_HASZONES ) {
-               /* XXX */
-               if ( rtmp->rt_gate == NULL &&
-                       zonecheck( rtmp, gate->g_iface ) != 0 ) {
-                   LOG(log_error, logtype_atalkd, "zip_packet seed zonelist mismatch" );
-                   return -1;
-               }
-               rtmp->rt_flags &= ~RTMPTAB_ZIPQUERY;
-           }
-           break;
-
-       case ZIPOP_EREPLY :
-           for ( gate = iface->i_gate; gate; gate = gate->g_next ) {
-               if (( from->sat_addr.s_net == 0 ||
-                       gate->g_sat.sat_addr.s_net == from->sat_addr.s_net ) &&
-                       gate->g_sat.sat_addr.s_node == from->sat_addr.s_node ) {
-                   break;
-               }
-           }
-           if ( gate == NULL ) {
-               LOG(log_info, logtype_atalkd, "zip ereply from non-gateway %u.%u", 
-                   ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
-               return 1;
-           }
-
-           /*
-            * Note that we're not advancing "data" here.  We do that
-            * at the top of the do-while loop, below.
-            */
-           if ( data + sizeof( u_short ) + 1 > end ) { /* + strlen */
-               LOG(log_info, logtype_atalkd, "zip ereply short (%d)", len );
-               return 1;
-           }
-           memcpy( &firstnet, data, sizeof( u_short ));
-
-           /* Check if this is the interface's route. */
-           if ( firstnet == gate->g_iface->i_rt->rt_firstnet ) {
-               rtmp = gate->g_iface->i_rt;
-           } else {
-               for ( rtmp = gate->g_rt; rtmp; rtmp = rtmp->rt_next ) {
-                   if ( rtmp->rt_firstnet == firstnet ) {
-                       break;
-                   }
-               }
-               if ( rtmp == NULL ) {
-                   LOG(log_info, logtype_atalkd, "zip ereply %u from %u.%u (no rtmp)",
-                           ntohs( firstnet ), ntohs( from->sat_addr.s_net ),
-                           from->sat_addr.s_node );
-                   return 1;
-               }
-               if ( rtmp->rt_iprev == NULL ) {
-                   LOG(log_info, logtype_atalkd,
-                           "zip ereply %u-%u from %u.%u (rtmp not in use)",
-                           ntohs( rtmp->rt_firstnet ),
-                           ntohs( rtmp->rt_lastnet ),
-                           ntohs( from->sat_addr.s_net ),
-                           from->sat_addr.s_node );
-               }
-
-               /* update head to *next* rtmp entry */
-               if ( rtmp->rt_next != NULL ) {
-                   gate->g_rt->rt_prev->rt_next = gate->g_rt;
-                   gate->g_rt = rtmp->rt_next;
-                   rtmp->rt_next = NULL;
-               }
-           }
-
-           if (( rtmp->rt_flags & RTMPTAB_ZIPQUERY ) == 0 ) {
-               LOG(log_info, logtype_atalkd, "zip ereply %u-%u from %u.%u (no query)",
-                       ntohs( rtmp->rt_firstnet ),
-                       ntohs( rtmp->rt_lastnet ),
-                       ntohs( from->sat_addr.s_net ),
-                       from->sat_addr.s_node );
-               return 0;
-           }
-
-           do {
-               /*
-                * We copy out firstnet, twice (see above).  Not
-                * a big deal, and it makes the end condition cleaner.
-                */
-               if ( data + sizeof( u_short ) + 1 > end ) {     /* + strlen */
-                   LOG(log_info, logtype_atalkd, "zip ereply short (%d)", len );
-                   return 1;
-               }
-               memcpy( &firstnet, data, sizeof( u_short ));
-               data += sizeof( u_short );
-
-               /* check route */
-               if ( firstnet != rtmp->rt_firstnet ) {
-                   LOG(log_info, logtype_atalkd, "zip ereply with multiple nets" );
-                   return 1;
-               }
-
-               zlen = *data++;
-               if ( zlen > 32 || zlen <= 0 ) {
-                   LOG(log_info, logtype_atalkd, "zip ereply bad zone length (%d)", zlen );
-                   return 1;
-               }
-               if ( data + zlen > end ) {
-                   LOG(log_info, logtype_atalkd, "zip ereply short (%d)", len );
-                   return 1;
-               }
-               memcpy( zname, data, zlen );
-               data += zlen;
-               if (addzone( rtmp, zlen, zname ) < 0) {
-                   LOG(log_error, logtype_atalkd, "zip_packet: addzone");
-                   return -1;
-               }
-           } while ( data < end );
-
-           if ( rtmp ) {
-               /*
-                * Count zones for rtmptab entry.
-                */
-               for ( n = 0, l = rtmp->rt_zt; l; l = l->l_next, n++ )
-                   ;
-               if ( n == zh.zh_count ) {
-                   rtmp->rt_flags |= RTMPTAB_HASZONES;
-                   /* XXX */
-                   if ( rtmp->rt_gate == NULL &&
-                           zonecheck( rtmp, gate->g_iface ) != 0 ) {
-                       LOG(log_error, logtype_atalkd, "zip_packet seed zonelist mismatch" );
-                       return -1;
-                   }
-                   rtmp->rt_flags &= ~RTMPTAB_ZIPQUERY;
-               }
-           }
-           break;
-
-       case ZIPOP_GNI :
-           /*
-            * Don't answer with bogus information.
-            */
-           if (((iface->i_flags & IFACE_ISROUTER) == 0) ||
-               iface->i_rt->rt_zt == NULL ||
-               ( iface->i_flags & IFACE_CONFIG ) == 0 ) {
-               return 0;
-           }
-
-           if ( zh.zh_zero != 0 || data + 2 * sizeof( u_short ) > end ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-
-           memcpy( &firstnet, data, sizeof( u_short ));
-           data += sizeof( u_short );
-           memcpy( &lastnet, data, sizeof( u_short ));
-           data += sizeof( u_short );
-           if ( firstnet != 0 || lastnet != 0 || data >= end ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-
-           zlen = *data++;
-           if ( zlen < 0 || zlen > 32 ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-           memcpy( zname, data, zlen );
-
-           data = packet;
-           end = data + sizeof( packet );
-           zh.zh_op = ZIPOP_GNIREPLY;
-           zh.zh_flags = 0;
-
-           /*
-            * Skip to the nets.  Fill in header when we're done.
-            */
-           data += 1 + sizeof( struct ziphdr );
-           memcpy( data, &iface->i_rt->rt_firstnet, sizeof( u_short ));
-           data += sizeof( u_short );
-           memcpy( data, &iface->i_rt->rt_lastnet, sizeof( u_short ));
-           data += sizeof( u_short );
-
-           *data++ = zlen;
-           memcpy( data, zname, zlen );
-           data += zlen;
-
-           /*
-            * Check if the given zone is valid.  If it's valid, just fill in
-            * the multicast address.  If it's not, fill the multicast address
-            * in with the default zone and return the default zone.
-            */
-           for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) {
-               zt = (struct ziptab *)l->l_data;
-               if ( zt->zt_len == zlen &&
-                       strndiacasecmp( zname, zt->zt_name, zlen ) == 0 ) {
-                   break;
-               }
-           }
-           if ( l == NULL ) {
-               zt = (struct ziptab *)iface->i_rt->rt_zt->l_data;
-               zh.zh_flags |= ZIPGNI_INVALID;
-           }
-
-           for ( n = 0, l = iface->i_rt->rt_zt; l; l = l->l_next, n++ )
-               ;
-           if ( n == 1 ) {
-               zh.zh_flags |= ZIPGNI_ONEZONE;
-           }
-
-           /* multicast */
-           *data++ = 6;        /* sizeof ??? */
-           if (zone_bcast(zt) < 0) {
-             LOG(log_error, logtype_atalkd, "zip_packet: zone_bcast");
-             return -1;
-           }
-           memcpy(data, zt->zt_bcast, 6);
-           data += 6;
-
-           /*
-            * Add default zone.
-            */
-           if ( zh.zh_flags & ZIPGNI_INVALID ) {
-               *data++ = zt->zt_len;
-               memcpy( data, zt->zt_name, zt->zt_len );
-               data += zt->zt_len;
-           }
-
-           /* fill in header */
-           *packet = DDPTYPE_ZIP;
-           memcpy( packet + 1, &zh, sizeof( struct ziphdr ));
-
-           /*
-            * If the address we received this request from isn't correct
-            * for the net we received it on, send a broadcast.
-            */
-           if ( ntohs( from->sat_addr.s_net ) <
-                   ntohs( iface->i_rt->rt_firstnet ) ||
-                   ntohs( from->sat_addr.s_net ) >
-                   ntohs( iface->i_rt->rt_lastnet )) {
-               from->sat_addr.s_net = 0;
-               from->sat_addr.s_node = ATADDR_BCAST;
-           }
-
-           if ( sendto( ap->ap_fd, packet, data - packet, 0,
-                   (struct sockaddr *)from,
-                   sizeof( struct sockaddr_at )) < 0 ) {
-               LOG(log_error, logtype_atalkd, "zip gni sendto %u.%u: %s",
-                       ntohs( from->sat_addr.s_net ), from->sat_addr.s_node,
-                       strerror(errno) );
-               return 1;
-           }
-           break;
-
-       case ZIPOP_GNIREPLY :
-           /*
-            * Ignore ZIP GNIReplys which are either late or unsolicited.
-            */
-           LOG(log_debug, logtype_atalkd, "zip gnireply from %u.%u (%s %x)",
-                   ntohs( from->sat_addr.s_net ), from->sat_addr.s_node,
-                   iface->i_name, iface->i_flags );
-
-           if (( iface->i_flags & ( IFACE_CONFIG|IFACE_PHASE1 )) ||
-                   ( iface->i_flags & IFACE_ADDR ) == 0 ) {
-               LOG(log_debug, logtype_atalkd, "zip ignoring gnireply" );
-               return 1;
-           }
-
-           if ( data + 2 * sizeof( u_short ) > end ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-           memcpy( &firstnet, data, sizeof( u_short ));
-           data += sizeof( u_short );
-           memcpy( &lastnet, data, sizeof( u_short ));
-           data += sizeof( u_short );
-
-           /*
-            * We never ask for a zone, so we can get back what the
-            * default zone is.
-            */
-           if ( data >= end || data + *data > end ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-           if ( *data++ != 0 ) {
-               LOG(log_info, logtype_atalkd, "zip_packet unsolicited zone" );
-               return 1;
-           }
-
-           /* skip multicast (should really check it) */
-           if ( data >= end || data + *data > end ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-           data += *data + 1;
-
-           if ( data >= end || data + *data > end ) {
-               LOG(log_info, logtype_atalkd, "zip_packet malformed packet" );
-               return 1;
-           }
-
-           /*
-            * First, if we're not seed, we always get our zone information
-            * from the net -- we don't even save what was in the file.
-            * Second, if we are seed, we keep our zone list in the
-            * interface structure, not in the zone table.  This allows us
-            * to check that the net is giving us good zones.
-            */
-           if ( (iface->i_flags & IFACE_SEED) && iface->i_czt) {
-               if ( iface->i_czt->zt_len != *data ||
-                       strndiacasecmp( iface->i_czt->zt_name,
-                       data + 1, *data ) != 0 ) {
-                   LOG(log_error, logtype_atalkd, "default zone mismatch on %s",
-                           iface->i_name );
-                   LOG(log_error, logtype_atalkd, "%.*s != %.*s",
-                           iface->i_czt->zt_len, iface->i_czt->zt_name,
-                           *data, data + 1 );
-                   LOG(log_error, logtype_atalkd, "Seed error! Exiting!" );
-                   return -1;
-               }
-           }
-
-           if (addzone( iface->i_rt, *data, data + 1 ) < 0) {
-               LOG(log_error, logtype_atalkd, "zip_packet: addzone");
-               return -1;
-           }
-           
-           /*
-            * The netrange we received from the router doesn't match the
-            * range we have locally. This is not a problem, unless we
-            * have seed information.
-            */
-           if ( firstnet != iface->i_rt->rt_firstnet ||
-                   lastnet != iface->i_rt->rt_lastnet ) {
-               if ( iface->i_flags & IFACE_SEED ) {
-                   LOG(log_error, logtype_atalkd, "netrange mismatch on %s",
-                           iface->i_name );
-                   LOG(log_error, logtype_atalkd, "%u-%u != %u-%u",
-                           ntohs( firstnet ), ntohs( lastnet ),
-                           ntohs( iface->i_rt->rt_firstnet ),
-                           ntohs( iface->i_rt->rt_lastnet ));
-                   LOG(log_error, logtype_atalkd, "Seed error! Exiting!" );
-                   return -1;
-               }
-
-
-               /*
-                * It is possible that we will corrupt our route database
-                * by just forcing this change.  A better solution would
-                * be to search all of our current routes, looking for
-                * this new route, and delete any old versions.  Also, we
-                * would call rtmp_delete() on the old net range, in case
-                * there is some other net which actually had that range.  XXX
-                */
-               iface->i_rt->rt_firstnet = firstnet;
-               iface->i_rt->rt_lastnet = lastnet;
-
-               if ( ntohs( iface->i_addr.sat_addr.s_net ) <
-                       ntohs( firstnet ) ||
-                       ntohs( iface->i_addr.sat_addr.s_net ) >
-                       ntohs( lastnet )) {
-                   iface->i_addr.sat_addr.s_net = 0;   /* ATADDR_ANYNET? */
-               }
-               setaddr( iface, IFACE_PHASE2, iface->i_addr.sat_addr.s_net,
-                       iface->i_addr.sat_addr.s_node, firstnet, lastnet );
-               stabletimer = UNSTABLE;
-           }
-
-           /* add addr to loopback route */
-           if ( looproute( iface, RTMP_ADD )) { /* -1 or 1 */
-               LOG(log_error, logtype_atalkd,
-                       "zip_packet: can't route %u.%u to loopback: %s",
-                       ntohs( iface->i_addr.sat_addr.s_net ),
-                       iface->i_addr.sat_addr.s_node,
-                       strerror(errno) );
-               return -1;
-           }
-
-           LOG(log_info, logtype_atalkd, "zip_packet configured %s from %u.%u",
-                   iface->i_name, ntohs( from->sat_addr.s_net ),
-                   from->sat_addr.s_node );
-           iface->i_flags |= IFACE_CONFIG;
-           if ( iface == ciface ) {
-               ciface = ciface->i_next;
-               bootaddr( ciface );
-           }
-           break;
-
-       case ZIPOP_NOTIFY :
-#ifdef DEBUG
-           printf( "zip notify from %u.%u\n", ntohs( from->sat_addr.s_net ),
-                   from->sat_addr.s_node );
-#endif /* DEBUG */
-           break;
-
-       default :
-           LOG(log_info, logtype_atalkd, "zip_packet bad zip op from %u.%u",
-                   ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
-       }
-       break;
-
-    case DDPTYPE_ATP :
-       if ( data + sizeof( struct atphdr ) > end ) {
-           LOG(log_info, logtype_atalkd, "zip atp malformed packet" );
-           return 1;
-       }
-       memcpy( &ah, data, sizeof( struct atphdr ));
-       data += sizeof( struct atphdr );
-       if ( ah.atphd_ctrlinfo != ATP_TREQ ) {
-           LOG(log_info, logtype_atalkd, "zip atp bad control" );
-           return 1;
-       }
-       ah.atphd_ctrlinfo = ATP_TRESP | ATP_EOM;
-       if ( ah.atphd_bitmap != 1 ) {
-           LOG(log_error, logtype_atalkd, "zip atp bad bitmap" );
-           return 1;
-       }
-       ah.atphd_bitmap = 0;
-
-       zipop = *data++;
-       data++;
-       memcpy( &index, data, sizeof( u_short ));
-       data += sizeof( u_short );
-       index = ntohs( index );
-       if ( data != end ) {
-           LOG(log_info, logtype_atalkd, "zip atp malformed packet" );
-           return 1;
-       }
-
-       data = packet;
-       end = data + sizeof( packet );
-       *data++ = DDPTYPE_ATP;
-       memcpy( data, &ah, sizeof( struct atphdr ));
-       data += sizeof( struct atphdr );
-       lastflag = data++;              /* mark and space for last flag */
-       *data++ = 0;
-       nzones = data;                  /* mark and space for zone count */
-       data += sizeof( u_short );
-
-       switch ( zipop ) {
-       case ZIPOP_GETMYZONE :
-           if ( index != 0 ) {
-               LOG(log_info, logtype_atalkd, "zip atp gmz bad index" );
-               return 1;
-           }
-
-           if ( iface->i_flags & IFACE_LOOPBACK ) {
-               iface = interfaces->i_next;     /* first interface */
-           } else if ( ntohs( iface->i_rt->rt_firstnet ) >
-                   ntohs( from->sat_addr.s_net ) ||
-                   ntohs( iface->i_rt->rt_lastnet ) <
-                   ntohs( from->sat_addr.s_net )) {
-               return 0;
-           }
-
-           if ( iface->i_rt->rt_zt == NULL ) {
-               return 0;
-           }
-           zt = (struct ziptab *)iface->i_rt->rt_zt->l_data;
-           if ( data + 1 + zt->zt_len > end ) {
-               LOG(log_info, logtype_atalkd, "zip atp gmz reply too long" );
-               return 1;
-           }
-           *data++ = zt->zt_len;
-           memcpy( data, zt->zt_name, zt->zt_len );
-           data += zt->zt_len;
-
-           *lastflag = 0;
-           nz = 1;
-           break;
-
-       case ZIPOP_GETZONELIST :
-           for ( zt = ziptab; zt && ( index > 1 ); zt = zt->zt_next, index-- )
-               ;
-           for ( nz = 0; zt; zt = zt->zt_next, nz++ ) {
-               if ( data + 1 + zt->zt_len > end ) {
-                   break;
-               }
-               *data++ = zt->zt_len;
-               memcpy( data, zt->zt_name, zt->zt_len );
-               data += zt->zt_len;
-           }
-
-           *lastflag = ( zt == NULL );         /* Too clever? */
-           break;
-
-       case ZIPOP_GETLOCALZONES :
-           if ( iface->i_flags & IFACE_LOOPBACK ) {
-               iface = interfaces->i_next;     /* first interface */
-           } else if ( ntohs( iface->i_rt->rt_firstnet ) >
-                   ntohs( from->sat_addr.s_net ) ||
-                   ntohs( iface->i_rt->rt_lastnet ) <
-                   ntohs( from->sat_addr.s_net )) {
-               return 0;
-           }
-
-           for ( l = iface->i_rt->rt_zt; l && ( index > 1 );
-                   l = l->l_next, index-- )
-               ;
-           for ( nz = 0; l; l = l->l_next, nz++ ) {
-               zt = (struct ziptab *)l->l_data;
-               if ( data + 1 + zt->zt_len > end ) {
-                   break;
-               }
-               *data++ = zt->zt_len;
-               memcpy( data, zt->zt_name, zt->zt_len );
-               data += zt->zt_len;
-           }
-
-           *lastflag = ( l == NULL );
-           break;
-
-       default :
-           LOG(log_info, logtype_atalkd, "zip atp bad option" );
-           return 1;
-       }
-
-       /* send reply */
-       if ( nz > 0 ) {
-           nz = htons( nz );
-           memcpy( nzones, &nz, sizeof( u_short ));
-           if ( sendto( ap->ap_fd, packet, data - packet, 0,
-                   (struct sockaddr *)from,
-                   sizeof( struct sockaddr_at )) < 0 ) {
-               LOG(log_error, logtype_atalkd, "zip atp sendto %u.%u: %s",
-                       ntohs( from->sat_addr.s_net ), from->sat_addr.s_node,
-                       strerror(errno) );
-               return 1;
-           }
-       }
-       break;
-
-    default :
-       LOG(log_info, logtype_atalkd, "zip_packet bad ddp type from %u.%u",
-               ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
-       return 1;
-    }
-
-    return 0;
-}
-
-int zip_getnetinfo(struct interface *iface)
-{
-    struct atport      *ap;
-    struct ziphdr      zh;
-    struct sockaddr_at sat;
-    char               *data, packet[ 40 ];
-    u_short            net;
-
-    LOG(log_info, logtype_atalkd, "zip_getnetinfo for %s", iface->i_name );
-
-    for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
-       if ( ap->ap_packet == zip_packet ) {
-           break;
-       }
-    }
-    if ( ap == NULL ) {
-       LOG(log_error, logtype_atalkd, "zip_getnetinfo can't find zip socket!" );
-       return -1;
-    }
-
-    data = packet;
-
-    *data++ = DDPTYPE_ZIP;
-
-    zh.zh_op = ZIPOP_GNI;
-    zh.zh_zero = 0;
-    memcpy( data, &zh, sizeof( struct ziphdr ));
-    data += sizeof( struct ziphdr );
-    net = 0;
-    memcpy( data, &net, sizeof( u_short ));
-    data += sizeof( u_short );
-    memcpy( data, &net, sizeof( u_short ));
-    data += sizeof( u_short );
-
-    /*
-     * Set our requesting zone to NULL, so the response will contain
-     * the default zone.
-     */
-    *data++ = 0;
-
-#ifdef BSD4_4
-    sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    sat.sat_family = AF_APPLETALK;
-    sat.sat_addr.s_net = 0;
-    sat.sat_addr.s_node = ATADDR_BCAST;
-    sat.sat_port = ap->ap_port;
-
-    if ( sendto( ap->ap_fd, packet, data - packet, 0, (struct sockaddr *)&sat,
-           sizeof( struct sockaddr_at )) < 0 ) {
-       LOG(log_error, logtype_atalkd, "zip_getnetinfo sendto: %s", strerror(errno) );
-       return -1;
-    }
-    return 0;
-}
-
-struct ziptab *newzt(const int len, const char *name)
-{
-    struct ziptab      *zt;
-
-    if (( zt = (struct ziptab *)calloc(1, sizeof( struct ziptab ))) == NULL ) {
-       return( NULL );
-    }
-
-    zt->zt_len = len;
-    if (( zt->zt_name = (char *)malloc( len )) == NULL ) {
-       free(zt);
-       return( NULL );
-    }
-
-    memcpy( zt->zt_name, name, len );
-    return( zt );
-}
-
-
-/*
- * Insert at the end.  Return 1 if a mapping already exists, 0 otherwise.
- * -1 on error.
- */
-static int add_list(struct list **head, void *data)
-{
-    struct list        *l, *l2;
-
-    for ( l = *head; l; l = l->l_next ) {
-       if ( l->l_data == data ) {
-           return( 1 );
-       }
-    }
-    if (( l = (struct list *)malloc( sizeof( struct list ))) == NULL ) {
-       LOG(log_error, logtype_atalkd, "add_list malloc: %s", strerror(errno) );
-       return -1;
-    }
-
-    l->l_data = data;
-    l->l_next = NULL;
-    if ( *head == NULL ) {
-       l->l_prev = NULL;
-       *head = l;
-    } else {
-       /* find end of list */
-       for ( l2 = *head; l2->l_next; l2 = l2->l_next )
-           ;
-       l->l_prev = l2;
-       l2->l_next = l;
-    }
-    return( 0 );
-}
-
-int addzone(struct rtmptab *rt, int len, char *zone)
-{
-    struct ziptab      *zt;
-    int                        cc, exists = 0;
-
-    for ( zt = ziptab; zt; zt = zt->zt_next ) {
-       if ( zt->zt_len == len &&
-               strndiacasecmp( zt->zt_name, zone, len ) == 0 ) {
-           break;
-       }
-    }
-    if ( zt == NULL ) {
-       if (( zt = newzt( len, zone )) == NULL ) {
-           LOG(log_error, logtype_atalkd, "addzone newzt: %s", strerror(errno) );
-           return -1;
-       }
-       if ( ziptab == NULL ) {
-           zt->zt_prev = NULL;
-           ziptab = zt;
-       } else {
-           zt->zt_prev = ziplast;
-           ziplast->zt_next = zt;
-       }
-       ziplast = zt;
-    }
-
-    if ((cc = add_list( &zt->zt_rt, rt )) < 0) 
-      return -1;
-
-    if (cc)
-      exists++;
-
-    if ((cc = add_list( &rt->rt_zt, zt )) < 0 )
-      return -1;
-
-    if (cc) {
-        if ( !exists ) {
-           LOG(log_error, logtype_atalkd, "addzone corrupted route/zone mapping" );
-           return -1;
-       }
-       /*
-        * We get the repeat for local nets which have zone information
-        * already: we ask anyway, just to make sure.
-        */
-       
-       return 0;
-    }
-    if ( exists ) {
-       LOG(log_error, logtype_atalkd, "addzone corrupted zone/route mapping" );
-       return -1;
-    }
-    return 0;
-}
diff --git a/etc/atalkd/zip.h b/etc/atalkd/zip.h
deleted file mode 100644 (file)
index e8bf1db..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * $Id: zip.h,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifndef ATALKD_ZIP_H
-#define ATALKD_ZIP_H 1
-
-#include <sys/cdefs.h>
-
-struct ziptab {
-    struct ziptab      *zt_next,
-                       *zt_prev;
-    u_char             zt_len;
-    char               *zt_name;
-    u_char             *zt_bcast;
-    struct list                *zt_rt;
-};
-
-extern struct ziptab   *ziptab, *ziplast;
-struct ziptab  *newzt (const int, const char *);
-
-int addzone ( struct rtmptab *, int, char * );
-int zip_getnetinfo ( struct interface * );
-int zip_packet(struct atport *ap,struct sockaddr_at *from, char *data, int len);
-
-#endif /* atalkd/zip.h */
index 7883268f2ced87ff12116cedf385d14b260cdf4c..f4122d84ccf71af47d23531bfc4204e69191ec97 100644 (file)
@@ -34,6 +34,7 @@
 #include <atalk/ea.h>
 #include <atalk/util.h>
 #include <atalk/acl.h>
+#include <atalk/compat.h>
 
 #include "cmd_dbd.h"
 #include "dbif.h"
index 0e32b8d5e12d83e20d92ddb3764286c4ad3d9b49..2f3b9150a1b7fd1278bc1746e7e1c4d9f86e5f7a 100644 (file)
@@ -43,7 +43,7 @@
 #include <sys/wait.h>
 #include <sys/uio.h>
 #include <sys/un.h>
-#define _XPG4_2 1
+// #define _XPG4_2 1
 #include <sys/socket.h>
 #include <stdio.h>
 #include <time.h>
@@ -89,6 +89,7 @@
 #include <atalk/cnid_dbd_private.h>
 #include <atalk/paths.h>
 #include <atalk/volinfo.h>
+#include <atalk/compat.h>
 
 #include "usockfd.h"
 
index b4f7e5d4a0013adfa8f50be1825d0e9ed7f664bc..bfa60954037c19bbfca7d998ab34d9725f50792a 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef CNID_DBD_DBD_H
 #define CNID_DBD_DBD_H 1
 
+#include <arpa/inet.h>
+
 #include <atalk/cnid_dbd_private.h>
 
 extern int add_cnid(DBD *dbd, struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply);
index 3ea137e463dea4ff23aa12a50ae404966062a162..e621704f9339305aeac21c9e1e35555c65bdcb30 100644 (file)
@@ -9,12 +9,12 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 
-
 #include <stdio.h>
 #include <string.h>
 #include <sys/param.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/logger.h>
 #include <atalk/cnid_dbd_private.h>
 
index dbbe521c85f9e1c2b4641188f7f30ee1fc65d46f..a4a3ca63e29a8c58aad3b15a1ace3e66a2793701 100644 (file)
@@ -11,7 +11,8 @@
 
 #include <string.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/logger.h>
 #include <atalk/cnid_dbd_private.h>
 
index 9c07c40519799f4ad3ef94524a2d6c07c3ba0dea..0ef71b19670c8c734ec34d3f825604559a41e682 100644 (file)
@@ -13,7 +13,8 @@
 #include <sys/param.h>
 #include <atalk/logger.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/cnid_dbd_private.h>
 
 
index ea75c4aba67799356636162a70c5c0a4194c63a4..b805d42863366310bc803a0178518c6794a0de3b 100644 (file)
@@ -13,7 +13,8 @@
 #include <string.h>
 #include <atalk/logger.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/cnid_dbd_private.h>
 
 #include "dbif.h"
index cd60223ed80ec5c90d224516971a9bfbdc69149d..04c536584b96a7d765bae32df9276bb2de78fea0 100644 (file)
@@ -116,7 +116,8 @@ to be safe we must assign new CNIDs to both files.
 #include <string.h>
 #include <sys/param.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/logger.h>
 #include <atalk/cnid_dbd_private.h>
 
index 90b2ffd3e1238b485406fde186492b536b9c2c30..fc8e32afb4224231c971bd9a3673ec094aacda87 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
+#include <arpa/inet.h>
+
 #include <atalk/logger.h>
-#include <netatalk/endian.h>
 #include <atalk/cnid_dbd_private.h>
 
-
 #include "pack.h"
 #include "dbif.h"
 #include "dbd.h"
index 17a42de0ff1a5f362885edd4826fd9bbbc6e0521..49c69e9afb3d4f3728d4a95d5bcab54ea68048d0 100644 (file)
@@ -12,7 +12,8 @@
 #include <string.h>
 #include <atalk/logger.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/cnid_dbd_private.h>
 
 #include "dbif.h"
index d932732d6c51238146a319479af2c7a93514c6eb..66979424f868f8507c5ba0368d6c330067cb43a3 100644 (file)
@@ -9,7 +9,8 @@
 
 #include <string.h>
 #include <errno.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/logger.h>
 #include <atalk/cnid_dbd_private.h>
 
index d2ce83eca388ae6381be8ed2fa030a43dae58f0b..e8abf5d23dd3df7ee946b7ea8e362b2c62b4485e 100644 (file)
@@ -11,7 +11,8 @@
 #include <string.h>
 #include <errno.h>
 #include <atalk/logger.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/cnid_dbd_private.h>
 
 
index 3e5c9b8f231d25cb4e8d6bb6092f99276396791a..87ff2e9a2f006b2a9344eadd24e37c4b3b7c7b30 100644 (file)
@@ -15,6 +15,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <arpa/inet.h>
 
 #include <db.h>
 
index c8207802973149825ff8e985a190392c97267b20..1c951cb9c6d182c5d238b5de7bf99eb99ae6dbd6 100644 (file)
@@ -20,8 +20,8 @@
 #include <sys/stat.h>
 #include <time.h>
 #include <sys/file.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/cnid_dbd_private.h>
 #include <atalk/logger.h>
 #include <atalk/volinfo.h>
index f37ac67d716d0366aeb376f5f19c244feef942c4..69f5fa627e7125c157a273448bf948a374679566 100644 (file)
@@ -8,7 +8,7 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 #include <string.h>
 #include <inttypes.h>
diff --git a/etc/papd/.gitignore b/etc/papd/.gitignore
deleted file mode 100644 (file)
index b15fd9a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-papd
-showppd
-.deps
-.libs
-.gitignore
-auth.o comment.o file.o headers.o lp.o magics.o main.o ppd.o printcap.o print_cups.o queries.o session.o showppd-ppd.o showppd-showppd.o uam.o
diff --git a/etc/papd/Makefile.am b/etc/papd/Makefile.am
deleted file mode 100644 (file)
index 6a09abd..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Makefile.am for etc/papd/
-
-pkgconfdir = @PKGCONFDIR@
-spooldir = @SPOOLDIR@
-
-sbin_PROGRAMS = papd
-bin_PROGRAMS = showppd
-
-papd_SOURCES = main.c printcap.c session.c file.c comment.c lp.c ppd.c \
-              magics.c headers.c queries.c auth.c uam.c print_cups.c
-
-papd_LDADD = $(top_builddir)/libatalk/libatalk.la @CUPS_LIBS@ @LIBADD_DL@
-papd_LDFLAGS = -export-dynamic @CUPS_LDFLAGS@
-
-showppd_SOURCES = showppd.c ppd.c
-showppd_CFLAGS = -DSHOWPPD
-showppd_LDADD = $(top_builddir)/libatalk/libatalk.la
-
-noinst_HEADERS =       \
-       comment.h       \
-       file.h          \
-       lp.h            \
-       ppd.h           \
-       printcap.h      \
-       printer.h       \
-       session.h       \
-       print_cups.h    \
-       uam_auth.h
-
-AM_CFLAGS = \
-       -I$(top_srcdir)/include -I$(top_srcdir)/sys \
-       @CUPS_CFLAGS@\
-       -D_PATH_PAPDCONF=\"$(pkgconfdir)/papd.conf\" \
-       -D_PATH_PAPDUAMPATH=\"$(UAMS_PATH)/\" \
-       -DSPOOLDIR=\"$(spooldir)/\"
-
-if USE_SPOOLDIR
-install-exec-hook:
-       echo "Creating SPOOLDIR $(DESTDIR)$(spooldir)..."
-       $(mkinstalldirs) $(DESTDIR)$(spooldir)
-       chmod 0777 $(DESTDIR)$(spooldir)
-
-else
-install-exec-hook:
-
-endif
diff --git a/etc/papd/auth.c b/etc/papd/auth.c
deleted file mode 100644 (file)
index a8ba6fd..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * $Id: auth.c,v 1.9 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <netatalk/endian.h>
-#include <atalk/afp.h>
-#include <atalk/compat.h>
-#include <atalk/util.h>
-#include <limits.h>
-#include <string.h>
-#include <ctype.h>
-#include <pwd.h>
-#include <grp.h>
-#include <atalk/logger.h>
-
-#include "uam_auth.h"
-
-static struct uam_mod uam_modules = {NULL, NULL, &uam_modules, &uam_modules};
-static struct uam_obj uam_login = {"", "", 0, {{NULL, NULL, NULL}}, &uam_login,
-                                  &uam_login};
-static struct uam_obj uam_changepw = {"", "", 0, {{NULL, NULL, NULL}}, &uam_changepw, 
-                                     &uam_changepw};
-static struct uam_obj uam_printer = {"", "", 0, {{NULL, NULL, NULL}}, &uam_printer,
-                                       &uam_printer};
-
-
-/*
- * Return a list of names for loaded uams
- */
-int getuamnames(const int type, char *uamnames)
-{
-    struct uam_obj *prev, *start;
-  
-    if (!(start = UAM_LIST(type)))
-        return(-1);
-  
-    prev = start;
-      
-    while((prev = prev->uam_prev) != start) {
-        strcat(uamnames, prev->uam_name);
-        strcat(uamnames, "\n");
-    }
-    strcat(uamnames, "*\n");
-    return(0);
-}
-  
-
-/* just do a linked list search. this could be sped up with a hashed
- * list, but i doubt anyone's going to have enough uams to matter. */
-struct uam_obj *auth_uamfind(const int type, const char *name, 
-                            const int len)
-{
-  struct uam_obj *prev, *start;
-
-  if (!name || !(start = UAM_LIST(type)))
-    return NULL;
-
-  prev = start;
-  while ((prev = prev->uam_prev) != start) 
-    if (strndiacasecmp(prev->uam_name, name, len) == 0)
-      return prev;
-
-  return NULL;
-}
-
-int auth_register(const int type, struct uam_obj *uam)
-{
-  struct uam_obj *start;
-
-  if (!uam || !uam->uam_name || (*uam->uam_name == '\0'))
-    return -1;
-
-  if (!(start = UAM_LIST(type)))
-    return 1; 
-
-  uam_attach(start, uam);
-  return 0;
-}
-
-/* load all of the modules */
-int auth_load(const char *path, const char *list)
-{
-  char name[MAXPATHLEN + 1], buf[MAXPATHLEN + 1], *p; 
-  struct uam_mod *mod;
-  struct stat st;
-  size_t len;
-  
-  if (!path || !list || (len = strlen(path)) > sizeof(name) - 2)
-    return -1;
-
-  strlcpy(buf, list, sizeof(buf));
-  if ((p = strtok(buf, ",")) == NULL)
-    return -1;
-
-  strcpy(name, path);
-  if (name[len - 1] != '/') {
-    strcat(name, "/");
-    len++;
-  }
-
-  while (p) {
-    strlcpy(name + len, p, sizeof(name) - len);
-    if ((stat(name, &st) == 0) && (mod = uam_load(name, p))) {
-      uam_attach(&uam_modules, mod);
-      LOG(log_info, logtype_papd, "uam: %s loaded", p);
-    }
-    p = strtok(NULL, ",");
-  }
-  return 0;
-}
-
-/* get rid of all of the uams */
-void auth_unload(void)
-{
-  struct uam_mod *mod, *prev, *start = &uam_modules;
-
-  prev = start->uam_prev;
-  while ((mod = prev) != start) {
-    prev = prev->uam_prev;
-    uam_detach(mod);
-    uam_unload(mod);
-  }
-}
diff --git a/etc/papd/comment.c b/etc/papd/comment.c
deleted file mode 100644 (file)
index 1a2964d..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * $Id: comment.c,v 1.10 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <atalk/logger.h>
-#include <sys/param.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include "comment.h"
-
-struct comstate        *comstate;
-
-char   *comcont = "%%+";
-
-void compop( void )
-{
-    struct comstate    *cs;
-
-    cs = comstate;
-    comstate = cs->cs_prev;
-    free( cs );
-}
-
-void compush(struct papd_comment *comment)
-{
-    struct comstate    *cs;
-
-    if (( cs = (struct comstate *)malloc( sizeof( struct comstate ))) ==
-           NULL ) {
-       LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-       exit( 1 );
-    }
-
-    cs->cs_comment = comment;
-    cs->cs_prev = comstate;
-    cs->cs_flags = 0;
-    comstate = cs;
-}
-
-int comswitch(struct papd_comment *comments, int (*handler)())
-{
-    struct papd_comment        *c, *comment = NULL;
-
-    for ( c = comments; c->c_begin; c++ ) {
-       if ( c->c_handler == handler ) {
-           comment = c;
-       }
-    }
-    if ( comment == NULL || comment->c_handler != handler ) {
-       LOG(log_error, logtype_papd, "comswitch: can't find handler!" );
-       return( -1 );
-    }
-    compop();
-    compush( comment );
-    return( 0 );
-}
-
-int comcmp( char *start, char *stop, char *str,int how)
-{
-    int                cc, len;
-
-    len = stop - start;
-    cc = strlen( str );
-    if ( how & C_FULL ) {
-       if ( (cc == len) && (strncmp( str, start, cc ) == 0) ) {
-           return( 0 );
-       }
-    } else {
-       if ( (cc <= len) && (strncmp( str, start, cc ) == 0) ) {
-           return( 0 );
-       }
-    }
-
-    return( 1 );
-}
-
-struct papd_comment *commatch( char *start, char *stop, struct papd_comment comments[])
-{
-    struct papd_comment        *comment;
-
-    for ( comment = comments; comment->c_begin; comment++ ) {
-       if ( comcmp( start, stop, comment->c_begin, comment->c_flags ) == 0 ) {
-           break;
-       }
-    }
-    if ( comment->c_begin ) {
-       return( comment );
-    } else {
-       return( NULL );
-    }
-}
-
-char *comtoken( char *start, char *stop, char *pos, char *delim)
-{
-    if ( pos < start || pos > stop ) {
-       abort();
-    }
-
-    for ( ; pos < stop; pos++ ) {
-       if ( index( delim, *pos )) {
-           break;
-       }
-    }
-    if ( ++pos < stop ) {
-       return( pos );
-    } else {
-       return( NULL );
-    }
-}
diff --git a/etc/papd/comment.h b/etc/papd/comment.h
deleted file mode 100644 (file)
index 1cac2d0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $Id: comment.h,v 1.6 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifndef PAPD_COMMENT_H
-#define PAPD_COMMENT_H 1
-
-#include <sys/cdefs.h>
-
-struct papd_comment {
-    char               *c_begin;
-    char               *c_end;
-    int                        (*c_handler)();
-    int                        c_flags;
-};
-
-#define CH_DONE                0
-#define CH_MORE                1
-#define CH_ERROR       -1
-
-struct comstate {
-    struct papd_comment        *cs_comment;
-    struct comstate    *cs_prev;
-    int                        cs_flags;
-};
-
-extern struct papd_comment     *commatch();
-extern struct comstate         *comstate;
-extern struct papd_comment     magics[];
-extern struct papd_comment     queries[];
-extern struct papd_comment     headers[];
-extern char                    *comcont;
-
-#define compeek()      (comstate==NULL?NULL:(comstate->cs_comment))
-#define comgetflags()  (comstate->cs_flags)
-#define comsetflags(f) (comstate->cs_flags=(f))
-
-/*
- * Comment flags.  0-15 reserved for "global" flags, 16-31 for specific
- * subtypes.
- */
-#define C_FULL         (1<<0)                          /* or prefix */
-#define C_CONTINUE     (1<<1)
-
-/*
- * Query subtypes.
- */
-
-/*
- * Magic "number" subtypes.
- */
-#define CM_NOPRINT     (1<<16)                         /* or print */
-
-void compop ( void );
-void compush ( struct papd_comment * );
-int comswitch ( struct papd_comment *, int (*)() );
-int comcmp ( char *, char *, char *, int );
-struct papd_comment *commatch ( char *, char *, struct papd_comment * );
-char *comtoken ( char *, char *, char *, char * );
-
-#endif /* PAPD_COMMENT_H */
diff --git a/etc/papd/file.c b/etc/papd/file.c
deleted file mode 100644 (file)
index 068b5d7..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * $Id: file.c,v 1.12 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <atalk/logger.h>
-#include <sys/param.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "file.h"
-
-/* 
-*/
-int markline( struct papfile *pf, char **start, int *linelength, int *crlflength )
-{
-    char               *p;
-
-    if ( pf->pf_datalen == 0 && ( pf->pf_state & PF_EOF )) {
-       return( 0 );
-    }
-
-    *start = pf->pf_data;
-
-    /* get a line */
-    for ( *linelength=0; *linelength < pf->pf_datalen; (*linelength)++) {
-       if (pf->pf_data[*linelength] == '\n' ||
-           pf->pf_data[*linelength] == '\r') {
-           break;
-       }
-    }
-
-    if ( *linelength >= pf->pf_datalen ) {
-       if ( pf->pf_state & PF_EOF ) {
-           append( pf, "\n", 1 );
-       } else if (*linelength < 1024) {
-           return( -1 );
-       }
-    }
-
-    p = pf->pf_data + *linelength;
-
-    *crlflength=0;
-    while(*crlflength < pf->pf_datalen-*linelength && 
-    (p[*crlflength]=='\r' || p[*crlflength]=='\n')) {
-       (*crlflength)++;
-    }
-    
-    if (!*crlflength) {
-        /* line is way too long, something fishy is going on, give up */
-        LOG(log_error, logtype_papd, "markline: no crlf in comment, give up" );
-        return( -2 );
-    }
-
-    /* success, return 1 */
-    return( 1 );
-}
-
-void morespace(struct papfile *pf, const char *data, int len)
-{
-    char               *nbuf;
-    int                        nsize;
-
-    if ( pf->pf_data != pf->pf_buf ) {                 /* pull up */
-       bcopy( pf->pf_data, pf->pf_buf, pf->pf_datalen);
-       pf->pf_data = pf->pf_buf;
-    }
-
-    if ( pf->pf_datalen + len > pf->pf_bufsize ) {     /* make more space */
-       nsize = (( pf->pf_bufsize + len ) / PF_MORESPACE +
-               (( pf->pf_bufsize + len ) % PF_MORESPACE != 0 )) * PF_MORESPACE;
-       if ( pf->pf_buf ) {
-           if (( nbuf = (char *)realloc( pf->pf_buf, nsize )) == NULL ) {
-               exit( 1 );
-           }
-       } else {
-           if (( nbuf = (char *)malloc( nsize )) == NULL ) {
-               exit( 1 );
-           }
-       }
-       pf->pf_bufsize = nsize;
-       pf->pf_data = nbuf + ( pf->pf_data - pf->pf_buf );
-       pf->pf_buf = nbuf;
-    }
-
-    bcopy( data, pf->pf_data + pf->pf_datalen, len );
-    pf->pf_datalen += len;
-}
-
-
-void append(struct papfile *pf, const char *data, int len)
-{
-    if ((pf->pf_data + pf->pf_datalen + len) >
-       (pf->pf_buf + pf->pf_bufsize)) {
-               morespace(pf, data, len);
-    } else {
-       memcpy(pf->pf_data + pf->pf_datalen, data, len);
-       pf->pf_datalen += len;
-    }
-}
-
-
-void spoolerror(struct papfile *out, char *str)
-{
-    char       *pserr1 = "%%[ Error: ";
-    char       *pserr2 = " ]%%\n";
-
-    if ( str == NULL ) {
-       str = "Spooler error.";
-    }
-
-    append( out, pserr1, strlen( pserr1 ));
-    append( out, str, strlen( str ));
-    append( out, pserr2, strlen( pserr2 ));
-}
diff --git a/etc/papd/file.h b/etc/papd/file.h
deleted file mode 100644 (file)
index 9f1f52d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * $Id: file.h,v 1.8 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifndef PAPD_FILE_H
-#define PAPD_FILE_H 1
-
-#include <sys/cdefs.h>
-
-struct papfile {
-    int                        pf_state;
-    struct state       *pf_xstate;
-    int                        pf_bufsize;
-    int                        pf_datalen;
-    char               *pf_buf;
-    char               *pf_data;
-    int                origin;
-};
-
-#define PF_BOT         (1<<0)
-#define PF_EOF         (1<<1)
-#define PF_QUERY       (1<<2)
-#define PF_STW         (1<<3)
-#define PF_TRANSLATE   (1<<4)
-
-#define CONSUME( pf, len )  {   (pf)->pf_data += (len); \
-                               (pf)->pf_datalen -= (len); \
-                               if ((pf)->pf_datalen <= 0) { \
-                                   (pf)->pf_data = (pf)->pf_buf; \
-                                   (pf)->pf_datalen = 0; \
-                               } \
-                           }
-
-#define PF_MORESPACE   1024
-
-int markline ( struct papfile *, char **, int *, int * );
-void morespace ( struct papfile *, const char *, int );
-void append ( struct papfile *, const char *, int );
-void spoolerror ( struct papfile *, char * );
-
-#endif /* PAPD_FILE_H */
diff --git a/etc/papd/headers.c b/etc/papd/headers.c
deleted file mode 100644 (file)
index dd31539..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * $Id: headers.c,v 1.14 2009-10-29 13:38:15 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h" 
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/param.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <netatalk/at.h>
-#include <atalk/logger.h>
-
-#include "file.h"
-#include "comment.h"
-#include "lp.h"
-
-int ch_title( struct papfile *, struct papfile * );
-int ch_for( struct papfile *, struct papfile * );
-
-static char *get_text(char *start, int linelength)
-{
-    char *p, *q;
-    char *t, *ret;
-    char *stop;
-    
-    /* 1023 is arbitrary 255 max for comment but some may be escape \xxx and space and keyword */
-
-    if (linelength > 1023)
-        return NULL;
-
-    t = ret = calloc(1, linelength +1);
-
-    if (!ret)
-        return NULL;
-
-    stop = start + linelength;
-    for ( p = start; p < stop; p++ ) {
-        if ( *p == ':' ) {
-            p++;
-            break;
-        }
-    }
-    
-    for ( ; p < stop; p++ ) {
-        if (*p != ' ' && *p != '\t') {
-            break;
-        }
-    }
-
-    if ( p < stop && *p == '(' ) {
-        int count;
-        /* start with ( then it's a <text> */ 
-        p++;
-        for ( q = p, count = 1; q < stop; q++, t++ ) {
-            if (*q == '(') {
-              count++;
-            }
-            else if ( *q == ')' ) {
-                count--;
-                if (!count) {
-                    break;
-                }
-            }
-            *t = *q;
-        }
-    }
-    else {
-        /* it's a textline */
-        for ( q = p; q < stop; q++, t++ ) {
-            *t = *q;
-        }
-    }
-    return ret;
-}
-
-int ch_for( struct papfile *in, struct papfile *out _U_)
-{
-    char                *start, *cmt;
-    int                 linelength, crlflength;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-        return( 0 );
-
-    case -1 :
-        return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    cmt = get_text(start, linelength);
-
-    if ( cmt ) {
-       lp_for ( cmt );
-       free(cmt);
-    }
-
-    in->pf_state |= PF_TRANSLATE;
-    lp_write( in, start, linelength + crlflength );
-    in->pf_state &= ~PF_TRANSLATE;
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return( CH_DONE );
-}
-
-int ch_title( struct papfile *in, struct papfile *out _U_)
-{
-    char               *start, *cmt;
-    int                        linelength, crlflength;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-#ifdef DEBUG
-    LOG(log_debug9, logtype_papd, "Parsing %%Title");
-#endif
-
-    cmt = get_text(start, linelength);
-
-    if ( cmt ) {
-       lp_job( cmt );
-       free(cmt);
-    }
-
-    in->pf_state |= PF_TRANSLATE;
-    lp_write( in, start, linelength + crlflength );
-    in->pf_state &= ~PF_TRANSLATE;
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return( CH_DONE );
-}
-
-static int guess_creator ( char *creator )
-{
-       if (strstr(creator, "LaserWriter"))
-               return 1;
-       if (strstr(creator, "cgpdftops"))
-               return 2;
-
-       return 0;
-}
-
-
-int ch_creator( struct papfile *in, struct papfile *out _U_)
-{
-    char               *start, *cmt;
-    int                        linelength, crlflength;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    cmt = get_text(start, linelength);
-
-    if ( cmt ) {
-       in->origin = guess_creator ( cmt );
-       free(cmt);
-       lp_origin(in->origin);
-    }
-
-    in->pf_state |= PF_TRANSLATE;
-    lp_write( in, start, linelength + crlflength );
-    in->pf_state &= ~PF_TRANSLATE;
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return( CH_DONE );
-}
-
-int ch_endcomm( struct papfile *in, struct papfile *out _U_)
-{
-    char                *start;
-    int                 linelength, crlflength;
-
-#ifdef DEBUG
-    LOG(log_debug9, logtype_papd, "End Comment");
-#endif
-    in->pf_state |= PF_STW;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    in->pf_state |= PF_TRANSLATE;
-    lp_write( in, start, linelength + crlflength );
-    in->pf_state &= ~PF_TRANSLATE;
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return ( CH_DONE);
-}
-
-int ch_starttranslate( struct papfile *in, struct papfile *out _U_)
-{
-    char                *start;
-    int                 linelength, crlflength;
-
-#ifdef DEBUG
-    LOG(log_debug9, logtype_papd, "Start translate");
-#endif
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-        return( 0 );
-
-    case -1 :
-        return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    in->pf_state |= PF_TRANSLATE;
-    lp_write( in, start, linelength + crlflength );
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return ( CH_DONE);
-}
-
-int ch_endtranslate(struct papfile *in, struct papfile *out _U_)
-{
-    char                *start;
-    int                 linelength, crlflength;
-
-#ifdef DEBUG
-    LOG(log_debug9, logtype_papd, "EndTranslate");
-#endif
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-        return( 0 );
-
-    case -1 :
-        return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    lp_write( in, start, linelength + crlflength );
-    in->pf_state &= ~PF_TRANSLATE;
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return ( CH_DONE);
-}
-
-int ch_translateone( struct papfile *in, struct papfile *out _U_)
-{
-    char                *start;
-    int                 linelength, crlflength;
-
-#ifdef DEBUG
-    LOG(log_debug9, logtype_papd, "TranslateOne");
-#endif
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-        return( 0 );
-
-    case -1 :
-        return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    in->pf_state |= PF_TRANSLATE;
-    lp_write( in, start, linelength + crlflength );
-    in->pf_state &= ~PF_TRANSLATE;
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return ( CH_DONE);
-}
-
-
-
-
-/*
- * "Header" comments.
- */
-struct papd_comment    headers[] = {
-    { "%%Title:",                      NULL,           ch_title,       0 },
-    { "%%For:",                                NULL,           ch_for,         0 },
-    { "%%Creator:",                    NULL,           ch_creator,     0 },
-    { "%%EndComments",                 NULL,           ch_endcomm,     0 },
-    { "%%BeginFeature",                        NULL,           ch_starttranslate,  0 },
-    { "%%EndFeature",                  NULL,           ch_endtranslate,  0 },
-    { "%%BeginPageSetup",              NULL,           ch_starttranslate, 0 },
-    { "%%EndPageSetup",                        NULL,           ch_endtranslate, 0 },
-#if 0
-    { "%%BeginSetup",                  NULL,           ch_translateone,  0 },
-    { "%%EndSetup",                    NULL,           ch_translateone,  0 },
-    { "%%BeginProlog",                 NULL,           ch_translateone,  0 },
-    { "%%EndProlog",                   NULL,           ch_translateone,  0 },
-    { "%%Page:",                       NULL,           ch_translateone, 0 },
-    { "%%PageTrailer",                 NULL,           ch_translateone, 0 },
-    { "%%Trailer",                     NULL,           ch_translateone, 0 },
-    { "%%EOF",                         NULL,           ch_translateone, 0 },
-#endif
-    { "%%",                            NULL,           ch_translateone, 0 },
-    { NULL,                            NULL,           NULL,           0 },
-};
diff --git a/etc/papd/lp.c b/etc/papd/lp.c
deleted file mode 100644 (file)
index d315b12..0000000
+++ /dev/null
@@ -1,1153 +0,0 @@
-/*
- * $Id: lp.c,v 1.33 2009-10-29 13:38:15 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- *
- * Portions:
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *      This product includes software developed by the University of
- *      California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * Interface to lpr system.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <sys/file.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#undef s_net
-
-#ifdef ABS_PRINT
-#include <math.h>
-#endif /* ABS_PRINT */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netdb.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-#include <pwd.h>
-
-#include <atalk/logger.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/paths.h>
-#include <atalk/unicode.h>
-
-#include "printer.h"
-#include "file.h"
-#include "lp.h"
-
-#ifdef HAVE_CUPS
-#include  "print_cups.h"
-#endif
-
-
-/* These functions aren't used outside of lp.c */
-int lp_conn_inet();
-int lp_disconn_inet( int );
-int lp_conn_unix();
-int lp_disconn_unix( int );
-
-static char hostname[ MAXHOSTNAMELEN ];
-
-extern struct sockaddr_at *sat;
-
-static struct lp {
-    int                        lp_flags;
-    FILE               *lp_stream;
-    int                        lp_seq;
-    int                lp_origin;
-    char               lp_letter;
-    char               *lp_person;
-    char               *lp_created_for; /* Holds the content of the Postscript %%For Comment if available */
-    char               *lp_host;
-    char               *lp_job;
-    char               *lp_spoolfile;
-} lp;
-#define LP_INIT                (1<<0)
-#define LP_OPEN                (1<<1)
-#define LP_PIPE                (1<<2)
-#define LP_CONNECT     (1<<3)
-#define LP_QUEUE       (1<<4)
-#define LP_JOBPENDING  (1<<5)
-
-void lp_origin (int origin)
-{
-    lp.lp_origin = origin;
-}
-
-/* the converted string should always be shorter, but ... FIXME! */
-static void convert_octal (char *string, charset_t dest)
-{
-    unsigned char *p, *q;
-    char temp[4];
-    long int ch;
-
-    q=p=(unsigned char *)string;
-    while ( *p != '\0' ) {
-        ch = 0;
-        if ( *p == '\\' ) {
-            p++;
-            if (dest && isdigit(*p) && isdigit(*(p+1)) && isdigit(*(p+2)) ) {
-                temp[0] = *p;
-                temp[1] = *(p+1);
-                temp[2] = *(p+2);
-                temp[3] = 0;
-                ch = strtol( temp, NULL, 8);
-                if ( ch && ch < 0xff)
-                    *q = ch;
-               else
-                    *q = '.';
-                p += 2;
-            }
-                   else 
-                *q = '.';
-       }
-       else {
-           *q = *p;
-       }
-           p++;
-           q++;
-    }
-    *q = 0;
-}
-
-
-static void translate(charset_t from, charset_t dest, char **option)
-{
-    char *translated;
-
-    if (*option != NULL) {
-        convert_octal(*option, from);
-        if (from) {
-             if ((size_t) -1 != (convert_string_allocate(from, dest, *option, -1, &translated)) ) {
-                 free (*option);
-                 *option = translated;
-             }
-        }
-    }
-}
-
-
-static void lp_setup_comments (charset_t dest)
-{
-    charset_t from=0;
-
-    switch (lp.lp_origin) {
-       case 1:
-               from=CH_MAC;
-               break;
-       case 2:
-               from=CH_UTF8_MAC;
-               break;
-    }
-
-    if (lp.lp_job) {
-#ifdef DEBUG1
-        LOG(log_debug9, logtype_papd, "job: %s", lp.lp_job );
-#endif
-        translate(from, dest, &lp.lp_job);
-    }
-    if (lp.lp_created_for) {
-#ifdef DEBUG1
-        LOG(log_debug9, logtype_papd, "for: %s", lp.lp_created_for );
-#endif
-        translate(from, dest, &lp.lp_created_for);
-    }
-    if (lp.lp_person) {
-#ifdef DEBUG1
-       LOG(log_debug9, logtype_papd, "person: %s", lp.lp_person );
-#endif
-       translate(from, dest, &lp.lp_person);
-    }
-}
-
-#define is_var(a, b) (strncmp((a), (b), 2) == 0)
-
-#if 0
-/* removed, it's not used and a pain to get it right from a security POV */
-static size_t quote(char *dest, char *src, const size_t bsize, size_t len)
-{
-size_t used = 0;
-
-    while (len && used < bsize ) {
-        switch (*src) {
-          case '$':
-          case '\\':
-          case '"':
-          case '`':
-            if (used + 2 > bsize )
-              return used;
-            *dest = '\\';
-            dest++;
-            used++;
-            break;
-        }
-        *dest = *src;
-        src++;
-        dest++;
-        len--;
-        used++;
-    }
-    return used;
-}
-
-static char* pipexlate(char *src)
-{
-    char *p, *q, *dest; 
-    static char destbuf[MAXPATHLEN +1];
-    size_t destlen = MAXPATHLEN;
-    int len = 0;
-   
-    dest = destbuf; 
-
-    if (!src)
-       return NULL;
-
-    memset(dest, 0, MAXPATHLEN +1);
-    if ((p = strchr(src, '%')) == NULL) { /* nothing to do */
-        strncpy(dest, src, MAXPATHLEN);
-        return destbuf;
-    }
-    /* first part of the path. copy and forward to the next variable. */
-    len = MIN((size_t)(p - src), destlen);
-    if (len > 0) {
-        strncpy(dest, src, len);
-        destlen -= len;
-        dest += len;
-    }
-
-    while (p && destlen > 0) {
-        /* now figure out what the variable is */
-        q = NULL;
-        if (is_var(p, "%U")) {
-           q = lp.lp_person;
-        } else if (is_var(p, "%C") || is_var(p, "%J") ) {
-            q = lp.lp_job;
-        } else if (is_var(p, "%F")) {
-            q =  lp.lp_created_for;
-        } else if (is_var(p, "%%")) {
-            q = "%";
-        } 
-
-        /* copy the stuff over. if we don't understand something that we
-         * should, just skip it over. */
-        if (q) {
-            len = MIN(strlen(q), destlen);
-            len = quote(dest, q, destlen, len);
-        }
-        else {
-            len = MIN(2, destlen);
-            strncpy(dest, q, len);
-        }
-        dest += len;
-        destlen -= len;
-
-        /* stuff up to next % */
-        src = p + 2;
-        p = strchr(src, '%');
-        len = p ? MIN((size_t)(p - src), destlen) : destlen;
-        if (len > 0) {
-            strncpy(dest, src, len);
-            dest += len;
-            destlen -= len;
-        }
-    }
-    if (!destlen) {
-        /* reach end of buffer, maybe prematurely, give up */
-        return NULL;
-    }
-    return destbuf;
-}
-#endif
-
-void lp_person(char *person)
-{
-    if ( lp.lp_person != NULL ) {
-       free( lp.lp_person );
-    }
-    if (( lp.lp_person = (char *)malloc( strlen( person ) + 1 )) == NULL ) {
-       LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-       exit( 1 );
-    }
-    strcpy( lp.lp_person, person );
-}
-
-#ifdef ABS_PRINT
-int lp_pagecost(void)
-{
-    char       cost[ 22 ];
-    char       balance[ 22 ];
-    int                err;
-
-    if ( lp.lp_person == NULL ) {
-       return( -1 );
-    }
-    err = ABS_canprint( lp.lp_person, printer->p_role, printer->p_srvid,
-           cost, balance );
-    printer->p_pagecost = floor( atof( cost ) * 10000.0 );
-    printer->p_balance = atof( balance ) + atof( cost );
-    return( err < 0 ? -1 : 0 );
-}
-#endif /* ABS_PRINT */
-
-void lp_host( char *host)
-{
-    if ( lp.lp_host != NULL ) {
-       free( lp.lp_host );
-    }
-    if (( lp.lp_host = (char *)malloc( strlen( host ) + 1 )) == NULL ) {
-       LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-       exit( 1 );
-    }
-    strcpy( lp.lp_host, host );
-    LOG(log_debug, logtype_papd, "host: %s", lp.lp_host );
-}
-
-/* Currently lp_job and lp_for will not handle the
- * conversion of macroman chars > 0x7f correctly
- * This should be added.
- */
-
-void lp_job(char *job)
-{
-    if ( lp.lp_job != NULL ) {
-       free( lp.lp_job );
-    }
-
-    lp.lp_job = strdup(job);
-#ifdef DEBUG
-    LOG(log_debug9, logtype_papd, "job: %s", lp.lp_job );
-#endif
-    
-}
-
-void lp_for (char *lpfor)
-{
-    if ( lp.lp_created_for != NULL ) {
-       free( lp.lp_created_for );
-    }
-
-    lp.lp_created_for = strdup(lpfor);
-}
-
-
-static int lp_init(struct papfile *out, struct sockaddr_at *sat)
-{
-    int                authenticated = 0;
-#ifndef HAVE_CUPS
-    int                fd, n, len;
-    char       *cp, buf[ BUFSIZ ];
-    struct stat        st;
-#endif /* HAVE_CUPS */
-#ifdef ABS_PRINT
-    char       cost[ 22 ];
-    char       balance[ 22 ];
-#endif /* ABS_PRINT */
-
-    if ( printer->p_flags & P_AUTH ) {
-       authenticated = 0;
-
-       /* cap style "log on to afp server before printing" authentication */
-
-       if ( printer->p_authprintdir && (printer->p_flags & P_AUTH_CAP) ) {
-           int addr_net = ntohs( sat->sat_addr.s_net );
-           int addr_node  = sat->sat_addr.s_node;
-           char addr_filename[256];
-           char auth_string[256];
-           char *username, *afpdpid;
-           struct stat cap_st;
-           FILE *cap_file;
-
-           memset( auth_string, 0, 256 );
-           sprintf(addr_filename, "%s/net%d.%dnode%d", 
-               printer->p_authprintdir, addr_net/256, addr_net%256, 
-               addr_node);
-           if (stat(addr_filename, &cap_st) == 0) {
-               if ((cap_file = fopen(addr_filename, "r")) != NULL) {
-                   if (fgets(auth_string, 256, cap_file) != NULL) {
-                       username = auth_string;
-                       if ((afpdpid = strrchr( auth_string, ':' )) != NULL) {
-                           *afpdpid = '\0';
-                           afpdpid++;
-                       }
-                       if (getpwnam(username) != NULL ) {
-                           LOG(log_info, logtype_papd, "CAP authenticated %s", username);
-                           lp_person(username);
-                           authenticated = 1;
-                       } else {
-                           LOG(log_info, logtype_papd, "CAP error: invalid username: '%s'", username);
-                       }
-                   } else {
-                       LOG(log_info, logtype_papd, "CAP error: could not read username");
-                   }
-               } else {
-                   LOG(log_info, logtype_papd, "CAP error: %s", strerror(errno));
-               }
-           } else {
-               LOG(log_info, logtype_papd, "CAP error: %s", strerror(errno));
-           }
-       }
-
-       if ( printer->p_flags & P_AUTH_PSSP ) {
-           if ( lp.lp_person != NULL ) {
-               authenticated = 1;
-           }
-       }
-
-       if ( authenticated == 0 ) {
-           LOG(log_error, logtype_papd, "lp_init: must authenticate" );
-           spoolerror( out, "Authentication required." );
-           return( -1 );
-       }
-
-#ifdef ABS_PRINT
-       if (( printer->p_flags & P_ACCOUNT ) && printer->p_pagecost > 0 &&
-               ! ABS_canprint( lp.lp_person, printer->p_role,
-               printer->p_srvid, cost, balance )) {
-           LOG(log_error, logtype_papd, "lp_init: no ABS funds" );
-           spoolerror( out, "No ABS funds available." );
-           return( -1 );
-       }
-#endif /* ABS_PRINT */
-    }
-
-    if ( gethostname( hostname, sizeof( hostname )) < 0 ) {
-       LOG(log_error, logtype_papd, "gethostname: %s", strerror(errno) );
-       exit( 1 );
-    }
-
-    if ( lp.lp_flags & LP_INIT ) {
-       LOG(log_error, logtype_papd, "lp_init: already inited, die!" );
-       abort();
-    }
-
-    lp.lp_flags = 0;
-    lp.lp_stream = NULL;
-    lp.lp_letter = 'A';
-
-    if ( printer->p_flags & P_SPOOLED ) {
-
-#ifndef HAVE_CUPS
-       /* check if queuing is enabled: mode & 010 on lock file */
-       if ( stat( printer->p_lock, &st ) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_init: %s: %s", printer->p_lock, strerror(errno) );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-       if ( st.st_mode & 010 ) {
-           LOG(log_info, logtype_papd, "lp_init: queuing is disabled" );
-           spoolerror( out, "Queuing is disabled." );
-           return( -1 );
-       }
-
-       if (( fd = open( ".seq", O_RDWR|O_CREAT, 0661 )) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_init: can't create .seq" );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-
-#ifndef SOLARIS /* flock is unsupported, I doubt this stuff works anyway with newer solaris so ignore for now */
-       if ( flock( fd, LOCK_EX ) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_init: can't lock .seq" );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-#endif
-
-       n = 0;
-       if (( len = read( fd, buf, sizeof( buf ))) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_init read: %s", strerror(errno) );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-       if ( len > 0 ) {
-           for ( cp = buf; len; len--, cp++ ) {
-               if ( *cp < '0' || *cp > '9' ) {
-                   break;
-               }
-               n = n * 10 + ( *cp - '0' );
-           }
-       }
-       lp.lp_seq = n;
-
-       n = ( n + 1 ) % 1000;
-       sprintf( buf, "%03d\n", n );
-       lseek( fd, 0L, 0 );
-       write( fd, buf, strlen( buf ));
-       close( fd );
-#else
-
-       if (cups_get_printer_status ( printer ) == 0)
-       {
-           spoolerror( out, "Queuing is disabled." );
-           return( -1 );
-       }
-
-       lp.lp_seq = getpid();
-#endif /* HAVE CUPS */
-    } else {
-       lp.lp_flags |= LP_PIPE;
-       lp.lp_seq = getpid();
-    }
-
-    lp.lp_flags |= LP_INIT;
-    return( 0 );
-}
-
-int lp_open(struct papfile *out, struct sockaddr_at *sat)
-{
-    char       name[ MAXPATHLEN ];
-    int                fd;
-    struct passwd      *pwent;
-
-#ifdef DEBUG
-    LOG (log_debug9, logtype_papd, "lp_open");
-#endif
-
-    if ( lp.lp_flags & LP_JOBPENDING ) {
-       lp_print();
-    }
-
-    if (( lp.lp_flags & LP_INIT ) == 0 && lp_init( out, sat ) != 0 ) {
-       return( -1 );
-    }
-    if ( lp.lp_flags & LP_OPEN ) {
-       /* LOG(log_error, logtype_papd, "lp_open already open" ); */
-       /* abort(); */
-       return (-1);
-    }
-
-    if ( lp.lp_flags & LP_PIPE ) {
-        char *pipe_cmd;
-
-       /* go right to program */
-       if (lp.lp_person != NULL) {
-           if((pwent = getpwnam(lp.lp_person)) != NULL) {
-               if(setreuid(pwent->pw_uid, pwent->pw_uid) != 0) {
-                   LOG(log_error, logtype_papd, "setreuid error: %s", strerror(errno));
-                   exit(1);
-               }
-           } else {
-               LOG(log_error, logtype_papd, "Error getting username (%s)", lp.lp_person);
-                exit(1);
-           }
-       }
-
-       lp_setup_comments(CH_UNIX);
-       pipe_cmd = printer->p_printer;
-       if (!pipe_cmd) {
-           LOG(log_error, logtype_papd, "lp_open: no pipe cmd" );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-       if (( lp.lp_stream = popen(pipe_cmd, "w" )) == NULL ) {
-           LOG(log_error, logtype_papd, "lp_open popen %s: %s", printer->p_printer, strerror(errno) );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-        LOG(log_debug, logtype_papd, "lp_open: opened %s",  pipe_cmd );
-    } else {
-       sprintf( name, "df%c%03d%s", lp.lp_letter++, lp.lp_seq, hostname );
-
-       if (( fd = open( name, O_WRONLY|O_CREAT|O_EXCL, 0660 )) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_open %s: %s", name, strerror(errno) );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-
-       if ( NULL == (lp.lp_spoolfile = (char *) malloc (strlen (name) +1)) ) {
-           LOG(log_error, logtype_papd, "malloc: %s", strerror(errno));
-           exit(1);
-       }
-       strcpy ( lp.lp_spoolfile, name);        
-
-       if (lp.lp_person != NULL) {
-           if ((pwent = getpwnam(lp.lp_person)) == NULL) {
-               LOG(log_error, logtype_papd, "getpwnam %s: no such user", lp.lp_person);
-               spoolerror( out, NULL );
-               return( -1 );
-           }
-       } else {
-           if ((pwent = getpwnam(printer->p_operator)) == NULL) {
-               LOG(log_error, logtype_papd, "getpwnam %s: no such user", printer->p_operator);
-               spoolerror( out, NULL );
-               return( -1 );
-           }
-       }
-
-       if (fchown(fd, pwent->pw_uid, -1) < 0) {
-           LOG(log_error, logtype_papd, "chown %s %s: %s", pwent->pw_name, name, strerror(errno));
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-
-       if (( lp.lp_stream = fdopen( fd, "w" )) == NULL ) {
-           LOG(log_error, logtype_papd, "lp_open fdopen: %s", strerror(errno) );
-           spoolerror( out, NULL );
-           return( -1 );
-       }
-#ifdef DEBUG        
-        LOG(log_debug9, logtype_papd, "lp_open: opened %s", name );
-#endif 
-    }
-    lp.lp_flags |= LP_OPEN;
-    return( 0 );
-}
-
-int lp_close(void)
-{
-    if (( lp.lp_flags & LP_INIT ) == 0 || ( lp.lp_flags & LP_OPEN ) == 0 ) {
-       return 0;
-    }
-    fclose( lp.lp_stream );
-    lp.lp_stream = NULL;
-    lp.lp_flags &= ~LP_OPEN;
-    lp.lp_flags |= LP_JOBPENDING;
-    return 0;
-}
-
-
-
-int lp_write(struct papfile *in, char *buf, size_t len)
-{
-#define BUFSIZE 32768
-    static char tempbuf[BUFSIZE];
-    static char tempbuf2[BUFSIZE];
-    static size_t bufpos = 0;
-    static int last_line_translated = 1; /* if 0, append a \n a the start */
-    char *tbuf = buf;
-
-    /* Before we write out anything check for a pending job, e.g. cover page */
-    if (lp.lp_flags & LP_JOBPENDING)
-       lp_print();
-
-    /* foomatic doesn't handle mac line endings, so we convert them for 
-     * the Postscript headers
-     * REALLY ugly hack, remove ASAP again */
-    if ((printer->p_flags & P_FOOMATIC_HACK) && (in->pf_state & PF_TRANSLATE) && 
-        (buf[len-1] != '\n') ) {
-        if (len <= BUFSIZE) {
-           if (!last_line_translated) {
-               tempbuf2[0] = '\n';
-               memcpy(tempbuf2+1, buf, len++);
-           }
-           else
-               memcpy(tempbuf2, buf, len);
-               
-            if (tempbuf2[len-1] == '\r')
-               tempbuf2[len-1] = '\n';
-            tempbuf2[len] = 0;
-            tbuf = tempbuf2;
-            last_line_translated = 1;
-#ifdef DEBUG
-            LOG(log_debug9, logtype_papd, "lp_write: %s", tbuf );
-#endif
-        }
-        else {
-            LOG(log_error, logtype_papd, "lp_write: conversion buffer too small" );
-            abort();
-        }
-    }
-    else {
-        if (printer->p_flags & P_FOOMATIC_HACK && buf[len-1] == '\n') {
-            last_line_translated = 1;
-       }
-        else
-           last_line_translated = 0;
-    }
-
-    /* To be able to do commandline substitutions on piped printers
-     * we store the start of the print job in a buffer.
-     * %%EndComment triggers writing to file */
-    if (( lp.lp_flags & LP_OPEN ) == 0 ) {
-#ifdef DEBUG
-        LOG(log_debug9, logtype_papd, "lp_write: writing to temporary buffer" );
-#endif
-       if ((bufpos+len) > BUFSIZE) {
-            LOG(log_error, logtype_papd, "lp_write: temporary buffer too small" );
-            /* FIXME: call lp_open here? abort isn't nice... */
-            abort();
-        }
-       else {
-            memcpy(tempbuf + bufpos, tbuf, len);
-            bufpos += len;
-            if (bufpos > BUFSIZE/2)
-                in->pf_state |= PF_STW; /* we used half of the buffer, start writing */
-            return(0);
-       }
-    }
-    else if ( bufpos) {
-        if ( fwrite( tempbuf, 1, bufpos, lp.lp_stream ) != bufpos ) {
-            LOG(log_error, logtype_papd, "lp_write: %s", strerror(errno) );
-            abort();
-        }
-        bufpos=0;
-    }
-
-    if ( fwrite( tbuf, 1, len, lp.lp_stream ) != len ) {
-       LOG(log_error, logtype_papd, "lp_write: %s", strerror(errno) );
-       abort();
-    }
-    return( 0 );
-}
-
-int lp_cancel(void)
-{
-    char       name[ MAXPATHLEN ];
-    char       letter;
-
-    if (( lp.lp_flags & LP_INIT ) == 0 || lp.lp_letter == 'A' ) {
-       return 0;
-    }
-
-    if ( lp.lp_flags & LP_OPEN ) {
-       lp_close();
-    }
-
-    for ( letter = 'A'; letter < lp.lp_letter; letter++ ) {
-       sprintf( name, "df%c%03d%s", letter, lp.lp_seq, hostname );
-       if ( unlink( name ) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_cancel unlink %s: %s", name, strerror(errno) );
-       }
-    }
-
-    return 0;
-}
-
-/*
- * Create printcap control file, signal printer.  Errors here should
- * remove queue files.
- *
- * XXX piped?
- */
-int lp_print(void)
-{
-#ifndef HAVE_CUPS
-    char               buf[ MAXPATHLEN ];
-    char               tfname[ MAXPATHLEN ];
-    char               cfname[ MAXPATHLEN ];
-    char               letter;
-    int                        fd, n, s;
-    FILE               *cfile;
-#endif /* HAVE_CUPS */
-
-    if (( lp.lp_flags & LP_INIT ) == 0 || lp.lp_letter == 'A' ) {
-       return 0;
-    }
-    lp_close();
-    lp.lp_flags &= ~LP_JOBPENDING;
-
-    if ( printer->p_flags & P_SPOOLED ) {
-#ifndef HAVE_CUPS
-       sprintf( tfname, "tfA%03d%s", lp.lp_seq, hostname );
-       if (( fd = open( tfname, O_WRONLY|O_EXCL|O_CREAT, 0660 )) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_print %s: %s", tfname, strerror(errno) );
-           return 0;
-       }
-       if (( cfile = fdopen( fd, "w" )) == NULL ) {
-           LOG(log_error, logtype_papd, "lp_print %s: %s", tfname, strerror(errno) );
-           return 0;
-       }
-       fprintf( cfile, "H%s\n", hostname );    /* XXX lp_host? */
-
-       if ( lp.lp_person ) {
-           fprintf( cfile, "P%s\n", lp.lp_person );
-       } else {
-           fprintf( cfile, "P%s\n", printer->p_operator );
-       }
-
-       if ( lp.lp_job && *lp.lp_job ) {
-           fprintf( cfile, "J%s\n", lp.lp_job );
-           fprintf( cfile, "T%s\n", lp.lp_job );
-       } else {
-           fprintf( cfile, "JMac Job\n" );
-           fprintf( cfile, "TMac Job\n" );
-       }
-
-       fprintf( cfile, "C%s\n", hostname );    /* XXX lp_host? */
-
-       if ( lp.lp_person ) {
-           fprintf( cfile, "L%s\n", lp.lp_person );
-       } else {
-           fprintf( cfile, "L%s\n", printer->p_operator );
-       }
-
-       for ( letter = 'A'; letter < lp.lp_letter; letter++ ) {
-           fprintf( cfile, "fdf%c%03d%s\n", letter, lp.lp_seq, hostname );
-           fprintf( cfile, "Udf%c%03d%s\n", letter, lp.lp_seq, hostname );
-       }
-
-       if ( lp.lp_job && *lp.lp_job ) {
-           fprintf( cfile, "N%s\n", lp.lp_job );
-       } else {
-           fprintf( cfile, "NMac Job\n" );
-       }
-       fclose( cfile );
-
-       sprintf( cfname, "cfA%03d%s", lp.lp_seq, hostname );
-       if ( link( tfname, cfname ) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_print can't link %s to %s: %s", cfname,
-                   tfname, strerror(errno) );
-           return 0;
-       }
-       unlink( tfname );
-
-       if (( s = lp_conn_unix()) < 0 ) {
-           LOG(log_error, logtype_papd, "lp_print: lp_conn_unix: %s", strerror(errno) );
-           return 0;
-       }
-
-       sprintf( buf, "\1%s\n", printer->p_printer );
-       n = strlen( buf );
-       if ( write( s, buf, n ) != n ) {
-           LOG(log_error, logtype_papd, "lp_print write: %s" , strerror(errno));
-           return 0;
-       }
-       if ( read( s, buf, 1 ) != 1 ) {
-           LOG(log_error, logtype_papd, "lp_print read: %s" , strerror(errno));
-           return 0;
-       }
-
-       lp_disconn_unix( s );
-
-       if ( buf[ 0 ] != '\0' ) {
-           LOG(log_error, logtype_papd, "lp_print lpd said %c: %s", buf[ 0 ], strerror(errno) );
-           return 0;
-       }
-#else
-        if ( ! (lp.lp_job && *lp.lp_job) ) {
-            lp.lp_job = strdup("Mac Job");
-        }
-
-        lp_setup_comments(add_charset(cups_get_language ()));
-
-        if (lp.lp_person != NULL) {
-           cups_print_job ( printer->p_printer, lp.lp_spoolfile, lp.lp_job, lp.lp_person, printer->p_cupsoptions);
-        } else if (lp.lp_created_for != NULL) {
-            cups_print_job ( printer->p_printer, lp.lp_spoolfile, lp.lp_job, lp.lp_created_for, printer->p_cupsoptions);
-        } else {
-            cups_print_job ( printer->p_printer, lp.lp_spoolfile, lp.lp_job, printer->p_operator, printer->p_cupsoptions);
-        }
-
-       /*LOG(log_info, logtype_papd, "lp_print unlink %s", lp.lp_spoolfile );*/
-        unlink ( lp.lp_spoolfile );
-       return 0;
-#endif /* HAVE_CUPS*/
-    }
-    LOG(log_info, logtype_papd, "lp_print queued" );
-    return 0;
-}
-
-#ifndef HAVE_CUPS
-int lp_disconn_unix( int fd )
-{
-    return( close( fd ));
-}
-
-int lp_conn_unix(void)
-{
-    int                        s;
-    struct sockaddr_un saun;
-
-    if (( s = socket( AF_UNIX, SOCK_STREAM, 0 )) < 0 ) {
-       LOG(log_error, logtype_papd, "lp_conn_unix socket: %s", strerror(errno) );
-       return( -1 );
-    }
-    memset( &saun, 0, sizeof( struct sockaddr_un ));
-    saun.sun_family = AF_UNIX;
-    strcpy( saun.sun_path, _PATH_DEVPRINTER );
-    if ( connect( s, (struct sockaddr *)&saun,
-           strlen( saun.sun_path ) + 2 ) < 0 ) {
-       LOG(log_error, logtype_papd, "lp_conn_unix connect %s: %s", saun.sun_path, strerror(errno) );
-       close( s );
-       return( -1 );
-    }
-
-    return( s );
-}
-
-int lp_disconn_inet( int fd )
-{
-    return( close( fd ));
-}
-
-int lp_conn_inet(void)
-{
-    int                        privfd, port = IPPORT_RESERVED - 1;
-    struct sockaddr_in sin;
-    struct servent     *sp;
-    struct hostent     *hp;
-
-    if (( sp = getservbyname( "printer", "tcp" )) == NULL ) {
-       LOG(log_error, logtype_papd, "printer/tcp: unknown service" );
-       return( -1 );
-    }
-
-    if ( gethostname( hostname, sizeof( hostname )) < 0 ) {
-       LOG(log_error, logtype_papd, "gethostname: %s", strerror(errno) );
-       exit( 1 );
-    }
-
-    if (( hp = gethostbyname( hostname )) == NULL ) {
-       LOG(log_error, logtype_papd, "%s: unknown host", hostname );
-       return( -1 );
-    }
-
-    if (( privfd = rresvport( &port )) < 0 ) {
-       LOG(log_error, logtype_papd, "lp_connect: socket: %s", strerror(errno) );
-       close( privfd );
-       return( -1 );
-    }
-
-    memset( &sin, 0, sizeof( struct sockaddr_in ));
-    sin.sin_family = AF_INET;
-/*    sin.sin_addr.s_addr = htonl( INADDR_LOOPBACK ); */
-    memcpy( &sin.sin_addr, hp->h_addr, hp->h_length );
-    sin.sin_port = sp->s_port;
-
-    if ( connect( privfd, (struct sockaddr *)&sin,
-           sizeof( struct sockaddr_in )) < 0 ) {
-       LOG(log_error, logtype_papd, "lp_connect: %s", strerror(errno) );
-       close( privfd );
-       return( -1 );
-    }
-
-    return( privfd );
-}
-
-int lp_rmjob( int job)
-{
-    char       buf[ 1024 ];
-    int                n, s;
-
-    if (( s = lp_conn_inet()) < 0 ) {
-       LOG(log_error, logtype_papd, "lp_rmjob: %s", strerror(errno) );
-       return( -1 );
-    }
-
-    if ( lp.lp_person == NULL ) {
-       return( -1 );
-    }
-
-    sprintf( buf, "\5%s %s %d\n", printer->p_printer, lp.lp_person, job );
-    n = strlen( buf );
-    if ( write( s, buf, n ) != n ) {
-       LOG(log_error, logtype_papd, "lp_rmjob write: %s", strerror(errno) );
-       lp_disconn_inet( s );
-       return( -1 );
-    }
-    while (( n = read( s, buf, sizeof( buf ))) > 0 ) {
-       LOG(log_debug, logtype_papd, "read %.*s", n, buf );
-    }
-
-    lp_disconn_inet( s );
-    return( 0 );
-}
-
-char   *kw_rank = "Rank";
-char   *kw_active = "active";
-
-char   *tag_rank = "rank: ";
-char   *tag_owner = "owner: ";
-char   *tag_job = "job: ";
-char   *tag_files = "files: ";
-char   *tag_size = "size: ";
-char   *tag_status = "status: ";
-
-int lp_queue( struct papfile *out)
-{
-    char                       buf[ 1024 ], *start, *stop, *p, *q;
-    int                                linelength, crlflength;
-    static struct papfile      pf;
-    int                                s;
-    size_t                     len;
-    ssize_t                    n;
-       
-    if (( s = lp_conn_unix()) < 0 ) {
-       LOG(log_error, logtype_papd, "lp_queue: %s", strerror(errno) );
-       return( -1 );
-    }
-
-    sprintf( buf, "\3%s\n", printer->p_printer );
-    n = strlen( buf );
-    if ( write( s, buf, n ) != n ) {
-       LOG(log_error, logtype_papd, "lp_queue write: %s", strerror(errno) );
-       lp_disconn_unix( s );
-       return( -1 );
-    }
-    pf.pf_state = PF_BOT;
-
-    while (( n = read( s, buf, sizeof( buf ))) > 0 ) {
-       append( &pf, buf, n );
-    }
-
-    for (;;) {
-       if ( markline( &pf, &start, &linelength, &crlflength ) > 0 ) {
-           /* parse */
-           stop = start + linelength;
-           for ( p = start; p < stop; p++ ) {
-               if ( *p == ' ' || *p == '\t' ) {
-                   break;
-               }
-           }
-           if ( p >= stop ) {
-               CONSUME( &pf , linelength + crlflength);
-               continue;
-           }
-
-           /*
-            * Keys: "Rank", a number, "active"
-            * Anything else is status.
-            */
-           len = p - start;
-           if ( len == strlen( kw_rank ) &&
-                   strncmp( kw_rank, start, len ) == 0 ) {
-               CONSUME( &pf, linelength + crlflength );
-               continue;
-           }
-           if (( len == strlen( kw_active ) &&
-                   strncmp( kw_active, start, len ) == 0 ) ||
-                   isdigit( *start )) {                /* a job line */
-               append( out, tag_rank, strlen( tag_rank ));
-               append( out, start, p - start );
-               append( out, "\n", 1 );
-
-               for ( ; p < stop; p++ ) {
-                   if ( *p != ' ' && *p != '\t' ) {
-                       break;
-                   }
-               }
-               for ( q = p; p < stop; p++ ) {
-                   if ( *p == ' ' || *p == '\t' ) {
-                       break;
-                   }
-               }
-               if ( p >= stop ) {
-                   append( out, ".\n", 2 );
-                   CONSUME( &pf, linelength + crlflength );
-                   continue;
-               }
-               append( out, tag_owner, strlen( tag_owner ));
-               append( out, q, p - q );
-               append( out, "\n", 1 );
-
-               for ( ; p < stop; p++ ) {
-                   if ( *p != ' ' && *p != '\t' ) {
-                       break;
-                   }
-               }
-               for ( q = p; p < stop; p++ ) {
-                   if ( *p == ' ' || *p == '\t' ) {
-                       break;
-                   }
-               }
-               if ( p >= stop ) {
-                   append( out, ".\n", 2 );
-                   CONSUME( &pf , linelength + crlflength );
-                   continue;
-               }
-               append( out, tag_job, strlen( tag_job ));
-               append( out, q, p - q );
-               append( out, "\n", 1 );
-
-               for ( ; p < stop; p++ ) {
-                   if ( *p != ' ' && *p != '\t' ) {
-                       break;
-                   }
-               }
-               for ( q = p, p = stop; p > q; p-- ) {
-                   if ( *p == ' ' || *p == '\t' ) {
-                       break;
-                   }
-               }
-               for ( ; p > q; p-- ) {
-                   if ( *p != ' ' && *p != '\t' ) {
-                       break;
-                   }
-               }
-               for ( ; p > q; p-- ) {
-                   if ( *p == ' ' || *p == '\t' ) {
-                       break;
-                   }
-               }
-               if ( p <= q ) {
-                   append( out, ".\n", 2 );
-                   CONSUME( &pf, linelength + crlflength );
-                   continue;
-               }
-               append( out, tag_files, strlen( tag_files ));
-               append( out, q, p - q );
-               append( out, "\n", 1 );
-
-               for ( ; p < stop; p++ ) {
-                   if ( *p != ' ' && *p != '\t' ) {
-                       break;
-                   }
-               }
-               append( out, tag_size, strlen( tag_size ));
-               append( out, p, stop - p );
-               append( out, "\n.\n", 3 );
-
-               CONSUME( &pf, linelength + crlflength );
-               continue;
-           }
-
-           /* status */
-           append( out, tag_status, strlen( tag_status ));
-           append( out, start, linelength );
-           append( out, "\n.\n", 3 );
-
-           CONSUME( &pf, linelength + crlflength );
-       } else {
-           append( out, "*\n", 2 );
-           lp_disconn_unix( s );
-           return( 0 );
-       }
-    }
-}
-#endif /* HAVE_CUPS */
diff --git a/etc/papd/lp.h b/etc/papd/lp.h
deleted file mode 100644 (file)
index 6a3dd68..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * $Id: lp.h,v 1.6 2009-10-13 22:55:37 didg Exp $
- */
-
-#ifndef PAPD_LP_H
-#define PAPD_LP_H 1
-
-#include <sys/socket.h>
-#include <sys/cdefs.h>
-#include "file.h"
-
-void lp_person ( char * );
-int lp_pagecost ( void );
-void lp_host ( char * );
-void lp_job ( char * );
-void lp_for ( char * );
-void lp_origin ( int );
-int lp_rmjob ( int );
-int lp_queue ( struct papfile * );
-
-/* cancel current job */
-int lp_cancel ( void );
-/* print current job */
-int lp_print ( void );
-/* open a file for spooling */
-int lp_open ( struct papfile *, struct sockaddr_at * );
-/* open a buffer to the current open file */
-int lp_write ( struct papfile *,char *, size_t );
-/* close current spooling file */
-int lp_close ( void );
-
-#endif /* PAPD_LP_H */
diff --git a/etc/papd/magics.c b/etc/papd/magics.c
deleted file mode 100644 (file)
index 5e128e5..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * $Id: magics.c,v 1.15 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <atalk/logger.h>
-#include <sys/param.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <netatalk/at.h>
-
-#include "file.h"
-#include "comment.h"
-#include "lp.h"
-
-static int state=0;
-
-static void parser_error(struct papfile *outfile)
-{
-                spoolerror( outfile, "Comments error, Ignoring job." );
-               outfile->pf_state |= PF_EOF;
-               lp_close();
-}
-
-int ps( struct papfile *infile, struct papfile *outfile, struct sockaddr_at *sat)
-{
-    char                       *start;
-    int                                linelength, crlflength;
-    struct papd_comment                *comment;
-
-    for (;;) {
-        if ( infile->pf_state & PF_STW ) {
-               infile->pf_state &= ~PF_STW;
-               /* set up spool file */
-               if ( lp_open( outfile, sat ) < 0 && !state) {
-                   LOG(log_error, logtype_papd, "lp_open failed" );
-                   spoolerror( outfile, "Ignoring job." );
-               }
-               state = 1;
-       }       
-       if ( (comment = compeek()) ) {
-           switch( (*comment->c_handler)( infile, outfile, sat )) {
-           case CH_DONE :
-               continue;
-
-           case CH_MORE :
-               return( CH_MORE );
-
-           case CH_ERROR :
-               parser_error(outfile);
-               return( 0 );
-
-           default :
-               return( CH_ERROR );
-           }
-       } else {
-           switch ( markline( infile, &start, &linelength, &crlflength )) {
-           case 0 :
-               /* eof on infile */
-               outfile->pf_state |= PF_EOF;
-               lp_close();
-               return( 0 );
-
-           case -2:
-               parser_error(outfile);
-               return( 0 );
-
-           case -1 :
-               return( 0 );
-           }
-
-           if ( infile->pf_state & PF_BOT ) {
-               if (( comment = commatch( start, start+linelength, magics )) != NULL ) {
-                   compush( comment );
-                   continue;   /* top of for (;;) */
-               }
-#if 0
-               infile->pf_state &= ~PF_BOT;
-
-               /* set up spool file */
-               if ( lp_open( outfile, sat ) < 0 ) {
-                   LOG(log_error, logtype_papd, "lp_open failed" );
-                   spoolerror( outfile, "Ignoring job." );
-               }
-#endif
-           }
-
-           /* write to file */
-           lp_write( infile, start, linelength + crlflength );
-           CONSUME( infile, linelength + crlflength );
-       }
-    }
-}
-
-int cm_psquery( struct papfile *in, struct papfile *out, struct sockaddr_at *sat _U_)
-{
-    struct papd_comment        *comment;
-    char               *start;
-    int                        linelength, crlflength;
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           /* eof on infile */
-           out->pf_state |= PF_EOF;
-           compop();
-           return( CH_DONE );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       if ( in->pf_state & PF_BOT ) {
-           in->pf_state &= ~PF_BOT;
-       } else {
-           if (( comment = commatch( start, start+linelength, queries )) != NULL ) {
-               compush( comment );
-               return( CH_DONE );
-           }
-       }
-
-       CONSUME( in, linelength + crlflength );
-    }
-}
-
-int cm_psadobe( struct papfile *in, struct papfile *out, struct sockaddr_at *sat _U_)
-{
-    char               *start;
-    int                        linelength, crlflength;
-    struct papd_comment        *comment = compeek();
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           /* eof on infile */
-           out->pf_state |= PF_EOF;
-           compop();
-           return( CH_DONE );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-       if ( in->pf_state & PF_BOT ) {
-           in->pf_state &= ~PF_BOT;
-#if 0
-           if ( lp_open( out, sat ) < 0 ) {
-               LOG(log_error, logtype_papd, "lp_open failed" );
-               spoolerror( out, "Ignoring job." );
-           }
-#endif
-       } else {
-           if (( comment = commatch( start, start + linelength, headers )) != NULL ) {
-               compush( comment );
-               return( CH_DONE );
-           }
-       }
-
-       lp_write( in, start, linelength + crlflength );
-       CONSUME( in, linelength + crlflength );
-    }
-}
-
-char   *Query = "Query";
-
-int cm_psswitch(struct papfile *in, struct papfile *out, struct sockaddr_at *sat _U_)
-{
-    char               *start, *stop, *p;
-    int                        linelength, crlflength;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       /* eof on infile */
-       out->pf_state |= PF_EOF;
-       compop();
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    stop = start + linelength;
-    for ( p = start; p < stop; p++ ) {
-       if ( *p == ' ' || *p == '\t' ) {
-           break;
-       }
-    }
-    for ( ; p < stop; p++ ) {
-       if ( *p != ' ' && *p != '\t' ) {
-           break;
-       }
-    }
-
-    if ( (size_t)(stop - p) >= strlen( Query ) &&
-           strncmp( p, Query, strlen( Query )) == 0 ) {
-       if ( comswitch( magics, cm_psquery ) < 0 ) {
-           LOG(log_error, logtype_papd, "cm_psswitch: can't find psquery!" );
-           exit( 1 );
-       }
-    } else {
-       if ( comswitch( magics, cm_psadobe ) < 0 ) {
-           LOG(log_error, logtype_papd, "cm_psswitch: can't find psadobe!" );
-           exit( 1 );
-       }
-    }
-    return( CH_DONE );
-}
-
-
-struct papd_comment    magics[] = {
-    { "%!PS-Adobe-3.0 Query",  NULL,                   cm_psquery, C_FULL },
-    { "%!PS-Adobe-3.0",                NULL,                   cm_psadobe, C_FULL },
-    { "%!PS-Adobe-",           NULL,                   cm_psswitch,    0 },
-    { NULL,                    NULL,                   NULL,           0 },
-};
diff --git a/etc/papd/main.c b/etc/papd/main.c
deleted file mode 100644 (file)
index d0c4645..0000000
+++ /dev/null
@@ -1,950 +0,0 @@
-/*
- * $Id: main.c,v 1.31 2009-10-29 13:38:15 didg Exp $
- *
- * Copyright (c) 1990,1995 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <atalk/logger.h>
-
-/* POSIX.1 sys/wait.h check */
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif /* HAVE_SYS_WAIT_H */
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif /* ! WEXITSTATUS */
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif /* ! WIFEXITED */
-
-#include <errno.h>
-
-/* STDC check */
-#if STDC_HEADERS
-#include <string.h>
-#else /* STDC_HEADERS */
-#ifndef HAVE_STRCHR
-#define strchr index
-#define strrchr index
-#endif /* HAVE_STRCHR */
-char *strchr (), *strrchr ();
-#ifndef HAVE_MEMCPY
-#define memcpy(d,s,n) bcopy ((s), (d), (n))
-#define memmove(d,s,n) bcopy ((s), (d), (n))
-#endif /* ! HAVE_MEMCPY */
-#endif /* STDC_HEADERS */
-
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <netdb.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/compat.h>
-#include <atalk/atp.h>
-#include <atalk/pap.h>
-#include <atalk/paths.h>
-#include <atalk/util.h>
-#include <atalk/nbp.h>
-#include <atalk/unicode.h>
-
-#include "printer.h"
-#include "printcap.h"
-#include "session.h"
-#include "uam_auth.h"
-#include "print_cups.h"
-
-
-#define PIPED_STATUS   "status: print spooler processing job"
-
-struct printer defprinter;
-struct printer *printers = NULL;
-
-int            debug = 0;
-static char    *conffile = _PATH_PAPDCONF;
-char           *printcap = _PATH_PAPDPRINTCAP;
-unsigned char  connid, quantum, sock, oquantum = PAP_MAXQUANTUM;
-char           *cannedstatus = PIPED_STATUS;
-struct printer *printer = NULL;
-char           *version = VERSION;
-static char    *pidfile = _PATH_PAPDLOCK;
-
-char           *uamlist;
-char           *uampath = _PATH_PAPDUAMPATH;
-
-/* Prototypes for locally used functions */
-int getstatus( struct printer *pr, char *buf );
-int rprintcap( struct printer *pr );
-static void getprinters( char *cf );
-
-
-/* this only needs to be used by the server process */
-static void papd_exit(const int i)
-{
-  server_unlock(pidfile);
-  auth_unload();
-  exit(i);
-}
-
-static void
-die(int n)
-{
-    struct printer     *pr;
-    struct at_addr     addr;
-
-    memset(&addr, 0, sizeof(addr));
-
-    for ( pr = printers; pr; pr = pr->p_next ) {
-       if ( pr->p_flags & P_REGISTERED ) {
-           if ( nbp_unrgstr( pr->p_name, pr->p_type, pr->p_zone, &addr ) < 0 ) {
-               LOG(log_error, logtype_papd, "can't unregister %s:%s@%s", pr->p_name,
-                       pr->p_type, pr->p_zone );
-               papd_exit( n + 1 );
-           }
-           LOG(log_info, logtype_papd, "unregister %s:%s@%s", pr->p_name, pr->p_type,
-                   pr->p_zone );
-       }
-#ifdef HAVE_CUPS
-       if ( pr->p_flags & P_SPOOLED && pr->p_flags & P_CUPS_PPD ) {
-               LOG(log_info, logtype_papd, "Deleting CUPS temp PPD file for %s (%s)", pr->p_name, pr->p_ppdfile);
-               unlink (pr->p_ppdfile);
-       }
-#endif /* HAVE_CUPS */
-
-    }
-    papd_exit( n );
-}
-
-static void
-reap(int sig _U_)
-{
-    int                status;
-    int                pid;
-
-    while (( pid = wait3( &status, WNOHANG, NULL )) > 0 ) {
-       if ( WIFEXITED( status )) {
-           if ( WEXITSTATUS( status )) {
-               LOG(log_error, logtype_papd, "child %d exited with %d", pid,
-                       WEXITSTATUS( status ));
-           } else {
-               LOG(log_info, logtype_papd, "child %d done", pid );
-           }
-       } else {
-           if ( WIFSIGNALED( status )) {
-               LOG(log_error, logtype_papd, "child %d killed with %d", pid,
-                       WTERMSIG( status ));
-           } else {
-               LOG(log_error, logtype_papd, "child %d died", pid );
-           }
-       }
-    }
-    return;
-}
-
-static char rbuf[ 255 + 1 + 8 ];
-
-int main(int ac, char **av)
-{
-    extern char         *optarg;
-
-    ATP                        atp;
-    struct atp_block   atpb;
-    struct sockaddr_at sat;
-    struct sigaction   sv;
-    struct iovec       iov;
-    fd_set             fdset;
-    struct printer     *pr;
-    char               *p, hostname[ MAXHOSTNAMELEN ];
-    char               cbuf[ 8 ];
-    int                        c;
-    char               *atname;
-
-    if ( gethostname( hostname, sizeof( hostname )) < 0 ) {
-       perror( "gethostname" );
-       exit( 1 );
-    }
-    if (( p = strchr( hostname, '.' )) != NULL ) {
-       *p = '\0';
-    }
-    if (( defprinter.p_name = (char *)malloc( strlen( hostname ) + 1 ))
-           == NULL ) {
-       perror( "malloc" );
-       exit( 1 );
-    }
-    strcpy( defprinter.p_name, hostname );
-    defprinter.p_type = "LaserWriter";
-    defprinter.p_zone = "*";
-    memset(&defprinter.p_addr, 0, sizeof(defprinter.p_addr));
-#ifdef __svr4__
-    defprinter.p_flags = P_PIPED;
-    defprinter.p_printer = "/usr/bin/lp -T PS";
-#else /* __svr4__ */
-    defprinter.p_flags = P_SPOOLED;
-    defprinter.p_printer = "lp";
-#endif /* __svr4__ */
-    defprinter.p_operator = "operator";
-    defprinter.p_spool = _PATH_PAPDSPOOLDIR;
-#ifdef ABS_PRINT
-    defprinter.p_role = NULL;
-    defprinter.p_srvid = 0;
-#endif /* ABS_PRINT */
-    defprinter.p_pagecost = 200;               /* default cost */
-    defprinter.p_pagecost_msg = NULL;
-    defprinter.p_lock = "lock";
-
-    while (( c = getopt( ac, av, "adf:p:P:v" )) != EOF ) {
-       switch ( c ) {
-       case 'a' :              /* for compatibility with old papd */
-           break;
-
-       case 'd' :              /* debug */
-           debug++;
-           break;
-
-       case 'f' :              /* conffile */
-           conffile = optarg;
-           break;
-
-       case 'p' :              /* printcap */
-           printcap = optarg;
-           break;
-
-       case 'P' :
-           pidfile = optarg;
-           break;
-
-       case 'v' :              /* version */
-           printf( "papd (version %s)\n", VERSION );
-           exit ( 1 );
-           break;
-
-       default :
-           fprintf( stderr,
-                   "Usage:\t%s [ -d ] [ -f conffile ] [ -p printcap ]\n",
-                   *av );
-           exit( 1 );
-       }
-    }
-
-
-    switch (server_lock("papd", pidfile, debug)) {
-    case 0: /* open a couple things again in the child */
-      if (!debug && (c = open("/", O_RDONLY)) >= 0) {
-       dup2(c, 1);
-       dup2(c, 2);
-      }
-      break;
-    case -1:
-      exit(1);
-    default:
-      exit(0);
-    }      
-
-#ifdef DEBUG1
-    fault_setup(NULL);
-#endif
-
-    /*
-     * Start logging.
-     */
-    if (( p = strrchr( av[ 0 ], '/' )) == NULL ) {
-       p = av[ 0 ];
-    } else {
-       p++;
-    }
-#ifdef ultrix
-    openlog( p, LOG_PID );
-#else /* ultrix */
-    set_processname(p);
-    syslog_setup(log_debug, logtype_default, logoption_ndelay | logoption_pid |
-               debug ? logoption_perror : 0, logfacility_lpr );
-#endif /* ultrix */
-
-    LOG(log_info, logtype_papd, "restart (%s)", version );
-#ifdef HAVE_CUPS
-    LOG(log_info, logtype_papd, "CUPS support enabled (%s)", CUPS_API_VERSION );
-#endif
-
-    getprinters( conffile );
-
-    for ( pr = printers; pr; pr = pr->p_next ) {
-       if (( pr->p_flags & P_SPOOLED ) && rprintcap( pr ) < 0 ) {
-           LOG(log_error, logtype_papd, "printcap problem: %s", pr->p_printer );
-       }
-
-       if (!(pr->p_flags & P_CUPS)) {
-               if ((size_t)-1 != convert_string_allocate(CH_UNIX, CH_MAC, pr->p_name, -1, &atname)) {
-                       pr->p_u_name = pr->p_name;
-                       pr->p_name = atname;
-               }
-       }
-                       
-       if (( pr->p_atp = atp_open( ATADDR_ANYPORT, &pr->p_addr )) == NULL ) {
-           LOG(log_error, logtype_papd, "atp_open: %s", strerror(errno) );
-           papd_exit( 1 );
-       }
-       if ( nbp_rgstr( atp_sockaddr( pr->p_atp ), pr->p_name, pr->p_type,
-               pr->p_zone ) < 0 ) {
-           LOG(log_error, logtype_papd, "can't register %s:%s@%s", pr->p_u_name, pr->p_type,
-                   pr->p_zone );
-           die( 1 );
-       }
-       if ( pr->p_flags & P_AUTH ) {
-               LOG(log_info, logtype_papd, "Authentication enabled: %s", pr->p_u_name );
-       }
-       else {
-               LOG(log_info, logtype_papd, "Authentication disabled: %s", pr->p_u_name );
-       }
-       LOG(log_info, logtype_papd, "register %s:%s@%s", pr->p_u_name, pr->p_type,
-               pr->p_zone );
-       pr->p_flags |= P_REGISTERED;
-    }
-
-    memset(&sv, 0, sizeof(sv));
-    sv.sa_handler = die;
-    sigemptyset( &sv.sa_mask );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGTERM, &sv, NULL ) < 0 ) {
-       LOG(log_error, logtype_papd, "sigaction: %s", strerror(errno) );
-       papd_exit( 1 );
-    }
-
-    sv.sa_handler = reap;
-    sigemptyset( &sv.sa_mask );
-    sv.sa_flags = SA_RESTART;
-    if ( sigaction( SIGCHLD, &sv, NULL ) < 0 ) {
-       LOG(log_error, logtype_papd, "sigaction: %s", strerror(errno) );
-       papd_exit( 1 );
-    }
-
-    /*
-     * Load UAMS
-     */
-    auth_load(uampath, uamlist);
-
-    /*
-     * Begin accepting connections.
-     */
-    FD_ZERO( &fdset );
-    for (;;) {
-       for ( pr = printers; pr; pr = pr->p_next ) {
-           FD_SET( atp_fileno( pr->p_atp ), &fdset );
-       }
-       if (( c = select( FD_SETSIZE, &fdset, NULL, NULL, NULL )) < 0 ) {
-           if ( errno == EINTR ) {
-               continue;
-           }
-           LOG(log_error, logtype_papd, "select: %s", strerror(errno) );
-           papd_exit( 1 );
-       }
-
-       for ( pr = printers; pr; pr = pr->p_next ) {
-           if ( FD_ISSET( atp_fileno( pr->p_atp ), &fdset )) {
-               int             err = 0;
-
-               memset( &sat, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-               sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-               sat.sat_family = AF_APPLETALK;
-               sat.sat_addr.s_net = ATADDR_ANYNET;
-               sat.sat_addr.s_node = ATADDR_ANYNODE;
-               sat.sat_port = ATADDR_ANYPORT;
-               /* do an atp_rsel(), to prevent hangs */
-               if (( c = atp_rsel( pr->p_atp, &sat, ATP_TREQ )) != ATP_TREQ ) {
-                   continue;
-               }
-               atpb.atp_saddr = &sat;
-               atpb.atp_rreqdata = cbuf;
-               atpb.atp_rreqdlen = sizeof( cbuf );
-               if ( atp_rreq( pr->p_atp, &atpb ) < 0 ) {
-                   LOG(log_error, logtype_papd, "atp_rreq: %s", strerror(errno) );
-                   continue;
-               }
-
-               /* should check length of req buf */
-
-               switch( cbuf[ 1 ] ) {
-               case PAP_OPEN :
-                   connid = (unsigned char)cbuf[ 0 ];
-                   sock = (unsigned char)cbuf[ 4 ];
-                   quantum = (unsigned char)cbuf[ 5 ];
-                   rbuf[ 0 ] = cbuf[ 0 ];
-                   rbuf[ 1 ] = PAP_OPENREPLY;
-                   rbuf[ 2 ] = rbuf[ 3 ] = 0;
-
-                   if (( pr->p_flags & P_SPOOLED ) && rprintcap( pr ) != 0 ) {
-                       LOG(log_error, logtype_papd, "printcap problem: %s",
-                               pr->p_printer );
-                       rbuf[ 2 ] = rbuf[ 3 ] = 0xff;
-                       err = 1;
-                   }
-
-#ifdef HAVE_CUPS
-                  /*
-                   * If cups is not accepting jobs, we return
-                   * 0xffff to indicate we're busy
-                   */
-#ifdef DEBUG
-                    LOG(log_debug9, logtype_papd, "CUPS: PAP_OPEN");
-#endif
-                   if ( (pr->p_flags & P_SPOOLED) && (cups_get_printer_status ( pr ) == 0)) {
-                        LOG(log_error, logtype_papd, "CUPS_PAP_OPEN: %s is not accepting jobs",
-                                pr->p_printer );
-                        rbuf[ 2 ] = rbuf[ 3 ] = 0xff;
-                        err = 1;
-                    }
-#endif /* HAVE_CUPS */
-
-                   /*
-                    * If this fails, we've run out of sockets. Rather than
-                    * just die(), let's try to continue. Maybe some sockets
-                    * will close, and we can continue;
-                    */
-                   if (( atp = atp_open( ATADDR_ANYPORT, 
-                                         &pr->p_addr)) == NULL ) {
-                       LOG(log_error, logtype_papd, "atp_open: %s", strerror(errno) );
-                       rbuf[ 2 ] = rbuf[ 3 ] = 0xff;  /* printer busy */
-                       rbuf[ 4 ] = 0; /* FIXME is it right? */
-                       err = 1;
-                   }
-                   else {
-                      rbuf[ 4 ] = atp_sockaddr( atp )->sat_port;
-                    }
-                   rbuf[ 5 ] = oquantum;
-                   rbuf[ 6 ] = rbuf[ 7 ] = 0;
-
-                   iov.iov_base = rbuf;
-                   iov.iov_len = 8 + getstatus( pr, &rbuf[ 8 ] );
-                   atpb.atp_sresiov = &iov;
-                   atpb.atp_sresiovcnt = 1;
-                   /*
-                    * This may error out if we lose a route, so we won't die().
-                    */
-                   if ( atp_sresp( pr->p_atp, &atpb ) < 0 ) {
-                       LOG(log_error, logtype_papd, "atp_sresp: %s", strerror(errno) );
-                       err = 1;
-                   }
-
-                   if ( err ) {
-                       if (atp) {
-                          atp_close(atp);
-                        }
-                       continue;
-                   }
-
-                   switch ( c = fork()) {
-                   case -1 :
-                       LOG(log_error, logtype_papd, "fork: %s", strerror(errno) );
-                        atp_close(atp);
-                       continue;
-
-                   case 0 : /* child */
-                       printer = pr;
-
-                       #ifndef HAVE_CUPS
-                       if (( printer->p_flags & P_SPOOLED ) &&
-                               chdir( printer->p_spool ) < 0 ) {
-                           LOG(log_error, logtype_papd, "chdir %s: %s", printer->p_spool, strerror(errno) );
-                           exit( 1 );
-                       }
-                       #else
-                       if (( printer->p_flags & P_SPOOLED ) &&
-                               chdir( SPOOLDIR ) < 0 ) {
-                           LOG(log_error, logtype_papd, "chdir %s: %s", SPOOLDIR, strerror(errno) );
-                           exit( 1 );
-                       }
-
-                       #endif
-
-                       sv.sa_handler = SIG_DFL;
-                       sigemptyset( &sv.sa_mask );
-                       sv.sa_flags = SA_RESTART;
-                       if ( sigaction( SIGTERM, &sv, NULL ) < 0 ) {
-                           LOG(log_error, logtype_papd, "sigaction: %s", strerror(errno) );
-                           exit( 1 );
-                       }
-                       
-                       if ( sigaction( SIGCHLD, &sv, NULL ) < 0 ) {
-                           LOG(log_error, logtype_papd, "sigaction: %s", strerror(errno) );
-                           exit( 1 );
-                        }
-
-                       for ( pr = printers; pr; pr = pr->p_next ) {
-                           atp_close( pr->p_atp );
-                       }
-                       sat.sat_port = sock;
-                       if ( session( atp, &sat ) < 0 ) {
-                           LOG(log_error, logtype_papd, "bad session" );
-                           exit( 1 );
-                       }
-                       exit( 0 );
-                       break;
-
-                   default : /* parent */
-                       LOG(log_info, logtype_papd, "child %d for \"%s\" from %u.%u",
-                               c, pr->p_name, ntohs( sat.sat_addr.s_net ),
-                               sat.sat_addr.s_node);
-                       atp_close( atp );
-                   }
-                   break;
-
-               case PAP_SENDSTATUS :
-                   rbuf[ 0 ] = 0;
-                   rbuf[ 1 ] = PAP_STATUS;
-                   rbuf[ 2 ] = rbuf[ 3 ] = 0;
-                   rbuf[ 4 ] = rbuf[ 5 ] = 0;
-                   rbuf[ 6 ] = rbuf[ 7 ] = 0;
-
-                   iov.iov_base = rbuf;
-                   iov.iov_len = 8 + getstatus( pr, &rbuf[ 8 ] );
-                   atpb.atp_sresiov = &iov;
-                   atpb.atp_sresiovcnt = 1;
-                   /*
-                    * This may error out if we lose a route, so we won't die().
-                    */
-                   if ( atp_sresp( pr->p_atp, &atpb ) < 0 ) {
-                       LOG(log_error, logtype_papd, "atp_sresp: %s", strerror(errno) );
-                   }
-                   break;
-
-               default :
-                   LOG(log_error, logtype_papd, "Bad request from %u.%u!",
-                           ntohs( sat.sat_addr.s_net ), sat.sat_addr.s_node );
-                   continue;
-                   break;
-               }
-
-#ifdef notdef
-               /*
-                * Sometimes the child process will send its first READ
-                * before the parent has sent the OPEN REPLY.  Moving this
-                * code into the OPEN/STATUS switch fixes this problem.
-                */
-               iov.iov_base = rbuf;
-               iov.iov_len = 8 + getstatus( pr, &rbuf[ 8 ] );
-               atpb.atp_sresiov = &iov;
-               atpb.atp_sresiovcnt = 1;
-               /*
-                * This may error out if we lose a route, so we won't die().
-                */
-               if ( atp_sresp( pr->p_atp, &atpb ) < 0 ) {
-                   LOG(log_error, logtype_papd, "atp_sresp: %s", strerror(errno) );
-               }
-#endif /* notdef */
-           }
-       }
-    }
-    return 0;
-}
-
-/*
- * We assume buf is big enough for 255 bytes of data and a length byte.
- */
-
-int getstatus(struct printer *pr, char *buf)
-{
-
-#ifdef HAVE_CUPS
-    if ( pr->p_flags & P_PIPED ) {
-       *buf = strlen( cannedstatus );
-       strncpy( &buf[ 1 ], cannedstatus, *buf );
-       return( *buf + 1 );
-    } else {
-       cups_get_printer_status( pr );
-       *buf = strlen ( pr->p_status );
-       strncpy ( &buf[1], pr->p_status, *buf);
-       return ( *buf + 1);
-    }
-#else
-
-    char               path[ MAXPATHLEN ];
-    int                        fd = -1, rc;
-
-    if ( pr->p_flags & P_SPOOLED && ( pr->p_spool != NULL )) {
-       strcpy( path, pr->p_spool );
-       strcat( path, "/status" );
-       fd = open( path, O_RDONLY);
-    }
-
-    if (( pr->p_flags & P_PIPED ) || ( fd < 0 )) {
-       *buf = strlen( cannedstatus );
-       strncpy( &buf[ 1 ], cannedstatus, *buf );
-       return( *buf + 1 );
-    } else {
-       if (( rc = read( fd, &buf[ 1 ], 255 )) < 0 ) {
-           rc = 0;
-       }
-       close( fd );
-       if ( rc && buf[ rc ] == '\n' ) {        /* remove trailing newline */
-           rc--;
-       }
-       *buf = rc;
-       return( rc + 1 );
-    }
-#endif /* HAVE_CUPS */
-}
-
-char   *pgetstr(char *id, char **area);
-char   *getpname(char **area, int bufsize);
-
-#define PF_CONFBUFFER  1024
-
-static void getprinters( char *cf)
-{
-    char               buf[ PF_CONFBUFFER ], area[ PF_CONFBUFFER ], *a, *p, *name, *type, *zone;
-    struct printer     *pr;
-    int                        c;
-
-    while (( c = getprent( cf, buf, PF_CONFBUFFER )) > 0 ) {
-       a = area;
-       /*
-        * Get the printer's nbp name.
-        */
-       if (( p = getpname( &a, PF_CONFBUFFER )) == NULL ) {
-           fprintf( stderr, "No printer name\n" );
-           exit( 1 );
-       }
-
-       if (( pr = (struct printer *)malloc( sizeof( struct printer )))
-               == NULL ) {
-           perror( "malloc" );
-           exit( 1 );
-       }
-       memset( pr, 0, sizeof( struct printer ));
-
-       name = defprinter.p_name;
-       type = defprinter.p_type;
-       zone = defprinter.p_zone;
-       if ( nbp_name( p, &name, &type, &zone )) {
-           fprintf( stderr, "Can't parse \"%s\"\n", name );
-           exit( 1 );
-       }
-       if ( name != defprinter.p_name ) {
-           if (( pr->p_name = (char *)malloc( strlen( name ) + 1 )) == NULL ) {
-               perror( "malloc" );
-               exit( 1 );
-           }
-           strcpy( pr->p_name, name );
-       } else {
-           pr->p_name = name;
-       }
-       if ( type != defprinter.p_type ) {
-           if (( pr->p_type = (char *)malloc( strlen( type ) + 1 )) == NULL ) {
-               perror( "malloc" );
-               exit( 1 );
-           }
-           strcpy( pr->p_type, type );
-       } else {
-           pr->p_type = type;
-       }
-       if ( zone != defprinter.p_zone ) {
-           if (( pr->p_zone = (char *)malloc( strlen( zone ) + 1 )) == NULL ) {
-               perror( "malloc" );
-               exit( 1 );
-           }
-           strcpy( pr->p_zone, zone );
-       } else {
-           pr->p_zone = zone;
-       }
-
-       if ( pnchktc( cf ) != 1 ) {
-           fprintf( stderr, "Bad papcap entry\n" );
-           exit( 1 );
-       }
-
-       /*
-        * Get PPD file.
-        */
-       if (( p = pgetstr( "pd", &a ) )) {
-           if (( pr->p_ppdfile = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-               perror( "malloc" );
-               exit( 1 );
-           }
-           strcpy( pr->p_ppdfile, p );
-       }
-
-       /*
-        * Get lpd printer name.
-        */
-       if (( p = pgetstr( "pr", &a )) == NULL ) {
-           pr->p_printer = defprinter.p_printer;
-           pr->p_flags = defprinter.p_flags;
-       } else {
-           if ( *p == '|' ) {
-               p++;
-               pr->p_flags = P_PIPED;
-           } else {
-               pr->p_flags = P_SPOOLED;
-           }
-           if (( pr->p_printer = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-               perror( "malloc" );
-               exit( 1 );
-           }
-           strcpy( pr->p_printer, p );
-       }
-
-       /*
-        * Do we want authenticated printing?
-        */
-       if ((p = pgetstr( "ca", &a )) != NULL ) {
-           if ((pr->p_authprintdir = (char *)malloc(strlen(p)+1)) == NULL) {
-               perror( "malloc" );
-               exit(1);
-           }
-           strcpy( pr->p_authprintdir, p );
-           pr->p_flags |= P_AUTH;
-           pr->p_flags |= P_AUTH_CAP;
-       } else { pr->p_authprintdir = NULL; }
-
-       if ( pgetflag( "sp" ) == 1 ) {
-           pr->p_flags |= P_AUTH;
-           pr->p_flags |= P_AUTH_PSSP;
-       }
-
-       if ((p = pgetstr("am", &a)) != NULL ) {
-               if ((uamlist = (char *)malloc(strlen(p)+1)) == NULL ) {
-                       perror("malloc");
-                       exit(1);
-               }
-               strcpy(uamlist, p);
-       }
-
-       if ( pr->p_flags & P_SPOOLED ) {
-           /*
-            * Get operator name.
-            */
-           if (( p = pgetstr( "op", &a )) == NULL ) {
-               pr->p_operator = defprinter.p_operator;
-           } else {
-               if (( pr->p_operator = (char *)malloc( strlen( p ) + 1 ))
-                       == NULL ) {
-                   perror( "malloc" );
-                   exit( 1 );
-               }
-               strcpy( pr->p_operator, p );
-           }
-       }
-
-       /* get printer's appletalk address. */
-       if (( p = pgetstr( "pa", &a )) == NULL ) 
-           memcpy(&pr->p_addr, &defprinter.p_addr, sizeof(pr->p_addr));
-       else 
-           atalk_aton(p, &pr->p_addr);
-
-#ifdef HAVE_CUPS
-       if ((p = pgetstr("co", &a)) != NULL ) {
-            pr->p_cupsoptions = strdup(p);
-            LOG (log_error, logtype_papd, "enabling cups-options for %s: %s", pr->p_name, pr->p_cupsoptions);
-       }
-#endif
-
-       /* convert line endings for setup sections.
-           real ugly work around for foomatic deficiencies,
-          need to get rid of this */
-       if ( pgetflag("fo") == 1 ) {
-            pr->p_flags |= P_FOOMATIC_HACK;
-            LOG (log_error, logtype_papd, "enabling foomatic hack for %s", pr->p_name);
-       }
-
-       if (strncasecmp (pr->p_name, "cupsautoadd", 11) == 0)
-       {
-#ifdef HAVE_CUPS
-               pr = cups_autoadd_printers (pr, printers);
-               printers = pr;
-#else
-               LOG (log_error, logtype_papd, "cupsautoadd: Cups support not compiled in");
-#endif /* HAVE_CUPS */
-       }
-       else {
-#ifdef HAVE_CUPS
-               if ( cups_check_printer ( pr, printers, 1) == 0)
-               {
-                       pr->p_next = printers;
-                       printers = pr;
-               }
-#else
-               pr->p_next = printers;
-               printers = pr;
-#endif /* HAVE_CUPS */
-       }
-    }
-    if ( c == 0 ) {
-       endprent();
-    } else {                   /* No capability file, do default */
-       printers = &defprinter;
-    }
-}
-
-int rprintcap( struct printer *pr)
-{
-
-#ifdef HAVE_CUPS
-
-    char               *p;
-
-    if ( pr->p_flags & P_SPOOLED && !(pr->p_flags & P_CUPS_AUTOADDED) ) { /* Skip check if autoadded */
-       if ( cups_printername_ok ( pr->p_printer ) != 1) {
-           LOG(log_error, logtype_papd, "No such CUPS printer: '%s'", pr->p_printer );
-           return( -1 );
-       }
-    }
-
-    /*
-     * Check for ppd file, moved here because of cups_autoadd we cannot check at the usual location
-     */
-
-    if ( pr->p_ppdfile == NULL ) {
-       if ( (p = (char *) cups_get_printer_ppd ( pr->p_printer )) != NULL ) {
-           if (( pr->p_ppdfile = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-           strcpy( pr->p_ppdfile, p );
-           pr->p_flags |= P_CUPS_PPD;
-           LOG(log_info, logtype_papd, "PPD File for %s set to %s", pr->p_printer, pr->p_ppdfile );
-       }
-    }
-
-
-#else
-
-    char               buf[ 1024 ], area[ 1024 ], *a, *p;
-    int                        c;
-
-    /*
-     * Spool directory from printcap file.
-     */
-    if ( pr->p_flags & P_SPOOLED ) {
-       if ( pgetent( printcap, buf, pr->p_printer ) != 1 ) {
-           LOG(log_error, logtype_papd, "No such printer: %s", pr->p_printer );
-           return( -1 );
-       }
-
-       /*
-        * Spool directory.
-        */
-       if ( pr->p_spool != NULL && pr->p_spool != defprinter.p_spool ) {
-           free( pr->p_spool );
-       }
-       a = area;
-       if (( p = pgetstr( "sd", &a )) == NULL ) {
-           pr->p_spool = defprinter.p_spool;
-       } else {
-           if (( pr->p_spool = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-           strcpy( pr->p_spool, p );
-       }
-
-       /*
-        * Is accounting on?
-        */
-       a = area;
-       if ( pgetstr( "af", &a ) == NULL ) {
-           pr->p_flags &= ~P_ACCOUNT;
-       } else {
-           pr->p_flags |= P_ACCOUNT;
-#ifdef ABS_PRINT
-           if ( pr->p_role != NULL && pr->p_role != defprinter.p_role ) {
-               free( pr->p_role );
-           }
-           a = area;
-           if (( p = pgetstr( "ro", &a )) == NULL ) {
-               pr->p_role = defprinter.p_role;
-           } else {
-               if (( pr->p_role =
-                       (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-                   LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-                   exit( 1 );
-               }
-               strcpy( pr->p_role, p );
-           }
-
-           if (( c = pgetnum( "si" )) < 0 ) {
-               pr->p_srvid = defprinter.p_srvid;
-           } else {
-               pr->p_srvid = c;
-           }
-#endif /* ABS_PRINT */
-       }
-
-
-       /*
-        * Cost of printer.
-        */
-       if ( pr->p_pagecost_msg != NULL &&
-               pr->p_pagecost_msg != defprinter.p_pagecost_msg ) {
-           free( pr->p_pagecost_msg );
-       }
-       a = area;
-       if (( p = pgetstr( "pc", &a )) != NULL ) {
-           if (( pr->p_pagecost_msg =
-                   (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-           strcpy( pr->p_pagecost_msg, p );
-           pr->p_pagecost = 0;
-       } else if ( pr->p_flags & P_ACCOUNT ) {
-           if (( c = pgetnum( "pc" )) < 0 ) {
-               pr->p_pagecost = defprinter.p_pagecost;
-           } else {
-               pr->p_pagecost = c;
-           }
-           pr->p_pagecost_msg = NULL;
-       }
-
-       /*
-        * Get lpd lock file.
-        */
-       if ( pr->p_lock != NULL && pr->p_lock != defprinter.p_lock ) {
-           free( pr->p_lock );
-       }
-       a = area;
-       if (( p = pgetstr( "lo", &a )) == NULL ) {
-           pr->p_lock = defprinter.p_lock;
-       } else {
-           if (( pr->p_lock = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-           strcpy( pr->p_lock, p );
-       }
-
-#ifdef KRB
-       /*
-        * Must Kerberos authenticate?
-        */
-       if ( pgetflag( "ka" ) == 1 ) {
-           pr->p_flags |= P_KRB;
-       } else {
-           pr->p_flags &= ~P_KRB;
-       }
-#endif /* KRB */
-
-       endprent();
-    }
-#endif /* HAVE_CUPS */
-
-    return( 0 );
-}
diff --git a/etc/papd/ppd.c b/etc/papd/ppd.c
deleted file mode 100644 (file)
index f164692..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * $Id: ppd.c,v 1.17 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1995 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <atalk/logger.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-
-#include "printer.h"
-#include "ppd.h"
-
-struct ppd_font                *ppd_fonts = NULL;
-
-struct ppd_feature     ppd_features[] = {
-    { "*LanguageLevel",        NULL },
-    { "*PSVersion",    NULL },
-#ifdef HAVE_CUPS
-    { "*FreeVM",       "33554432" },
-#else
-    { "*FreeVM",       NULL },
-#endif
-    { "*Product",      NULL },
-    { "*PCFileName",   NULL },
-    { "*ModelName",    NULL },
-    { "*NickName",     NULL },
-    { "*ColorDevice",  NULL },
-    { "*FaxSupport",   NULL },
-    { "*TTRasterizer", NULL },
-    { NULL, NULL },
-};
-
-struct ppdent {
-    char       *pe_main;
-    char       *pe_option;
-    char       *pe_translation;
-    char       *pe_value;
-};
-
-#ifndef SHOWPPD
-static int ppd_inited;
-
-static void ppd_init(void)
-{
-    if (ppd_inited)
-        return;
-
-    ppd_inited++;
-
-    if (printer->p_ppdfile)
-        read_ppd( printer->p_ppdfile, 0 );
-}
-#endif /* SHOWPPD */
-
-
-/* quick and ugly hack to be able to read
-   ppd files with Mac line ending */
-static char* my_fgets(char *buf, size_t bufsize, FILE *stream)
-{
-    int p;           /* uninitialized, OK 310105 */
-    size_t count = 0;
-    while (count < (bufsize - 1) && EOF != (p=fgetc(stream))) {
-        buf[count] = p;
-        count++;
-        if ( p == '\r' || p == '\n')
-           break;
-    }
-
-    if (p == EOF && count == 0)
-        return NULL;
-
-    /* translate line endings */
-    if ( buf[count - 1] == '\r')
-        buf[count - 1] = '\n';
-
-    buf[count] = 0;
-    return buf;
-}
-
-static struct ppdent *getppdent( FILE *stream)
-{
-    static char                        buf[ 1024 ];
-    static struct ppdent       ppdent;
-    char                       *p, *q;
-
-    ppdent.pe_main = ppdent.pe_option = ppdent.pe_translation =
-           ppdent.pe_value = NULL;
-
-    while (( p = my_fgets( buf, sizeof( buf ), stream )) != NULL ) {
-       if ( *p != '*' ) {      /* main key word */
-           continue;
-       }
-       if ( p[ strlen( p ) - 1 ] != '\n') {
-           LOG(log_error, logtype_papd, "getppdent: line too long" );
-           continue;
-       }
-
-       q = p;
-       while ( (*p != ' ') && (*p != '\t') && (*p != ':') && (*p != '\n') ) {
-           p++;
-       }
-       if ( (*( q + 1 ) == '%') || (*( q + 1 ) == '?') ) {     /* comments & queries */
-           continue;
-       }
-       ppdent.pe_main = q;
-       if ( *p == '\n' ) {
-           *p = '\0';
-           ppdent.pe_option = ppdent.pe_translation = ppdent.pe_value = NULL;
-           return( &ppdent );
-       }
-
-       if ( *p != ':' ) {      /* option key word */
-           *p++ = '\0';
-
-           while ( (*p == ' ') || (*p == '\t') ) {
-               p++;
-           }
-
-           q = p;
-           while ( (*p != ':') && (*p != '/') && (*p != '\n') ) {
-               p++;
-           }
-
-           if ( *p == '\n' ) {
-               continue;
-           }
-
-           ppdent.pe_option = q;
-           if ( *p == '/' ) {  /* translation string */
-               *p++ = '\0';
-               q = p;
-               while ( *p != ':' && *p != '\n' ) {
-                   p++;
-               }
-               if ( *p != ':' ) {
-                   continue;
-               }
-
-               ppdent.pe_translation = q;
-           } else {
-               ppdent.pe_translation = NULL;
-           }
-       }
-       *p++ = '\0';
-
-       while ( (*p == ' ') || (*p == '\t') ) {
-           p++;
-       }
-
-       /* value */
-       q = p;
-       while ( *p != '\n' ) {
-           p++;
-       }
-       *p = '\0';
-       ppdent.pe_value = q;
-
-       return( &ppdent );
-    }
-
-    return( NULL );
-}
-
-int read_ppd(char *file, int fcnt)
-{
-    FILE               *ppdfile;
-    struct ppdent      *pe;
-    struct ppd_feature *pfe;
-    struct ppd_font    *pfo;
-
-    if ( fcnt > 20 ) {
-       LOG(log_error, logtype_papd, "read_ppd: %s: Too many files!", file );
-       return( -1 );
-    }
-
-    if (( ppdfile = fopen( file, "r" )) == NULL ) {
-       LOG(log_error, logtype_papd, "read_ppd %s: %s", file, strerror(errno) );
-       return( -1 );
-    }
-
-    while (( pe = getppdent( ppdfile )) != NULL ) {
-       /* *Include files */
-       if ( strcmp( pe->pe_main, "*Include" ) == 0 ) {
-           read_ppd( pe->pe_value, fcnt + 1 );
-           continue;
-       }
-
-       /* *Font */
-       if ( strcmp( pe->pe_main, "*Font" ) == 0 && pe->pe_option ) {
-           for ( pfo = ppd_fonts; pfo; pfo = pfo->pd_next ) {
-               if ( strcmp( pfo->pd_font, pe->pe_option ) == 0 ) {
-                   break;
-               }
-           }
-           if ( pfo ) {
-               continue;
-           }
-
-           if (( pfo = (struct ppd_font *)malloc( sizeof( struct ppd_font )))
-                   == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-           if (( pfo->pd_font =
-                   (char *)malloc( strlen( pe->pe_option ) + 1 )) == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-           strcpy( pfo->pd_font, pe->pe_option );
-           pfo->pd_next = ppd_fonts;
-           ppd_fonts = pfo;
-           continue;
-       }
-
-
-       /* Features */
-       for ( pfe = ppd_features; pfe->pd_name; pfe++ ) {
-           if ( strcmp( pe->pe_main, pfe->pd_name ) == 0 ) {
-               break;
-           }
-       }
-       if ( pfe->pd_name && pe->pe_value ) { 
-           if (( pfe->pd_value =
-                   (char *)malloc( strlen( pe->pe_value ) + 1 )) == NULL ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit( 1 );
-           }
-
-           strcpy( pfe->pd_value, pe->pe_value );
-           continue;
-       }
-    }
-
-    fclose( ppdfile );
-    return( 0 );
-}
-
-struct ppd_font *ppd_font( char *font)
-{
-    struct ppd_font    *pfo;
-
-#ifndef SHOWPPD
-    if ( ! ppd_inited ) {
-       ppd_init();
-    }
-#endif /* SHOWPPD */
-
-    for ( pfo = ppd_fonts; pfo; pfo = pfo->pd_next ) {
-       if ( strcmp( pfo->pd_font, font ) == 0 ) {
-           return( pfo );
-       }
-    }
-    return( NULL );
-}
-
-struct ppd_feature *ppd_feature( const char *feature, int len)
-{
-    struct ppd_feature *pfe;
-    char               ppd_feature_main[ 256 ];
-    const char         *end, *p;
-    char               *q;
-
-#ifndef SHOWPPD
-    if ( ! ppd_inited ) {
-       ppd_init();
-    }
-#endif /* SHOWPPD */
-
-    if (len > sizeof(ppd_feature_main) -1)
-        return( NULL );
-        
-    for ( end = feature + len, p = feature, q = ppd_feature_main;
-           (p <= end) && (*p != '\n') && (*p != '\r'); p++, q++ ) {
-       *q = *p;
-    }
-    if ( p > end ) {
-       return( NULL );
-    }
-    *q = '\0';
-
-    for ( pfe = ppd_features; pfe->pd_name; pfe++ ) {
-       if ( (strcmp( pfe->pd_name, ppd_feature_main ) == 0) && pfe->pd_value ) {
-           return( pfe );
-       }
-    }
-
-    return( NULL );
-}
diff --git a/etc/papd/ppd.h b/etc/papd/ppd.h
deleted file mode 100644 (file)
index ad989dd..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * $Id: ppd.h,v 1.6 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1995 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifndef PAPD_PPD_H
-#define PAPD_PPD_H 1
-
-#include <sys/cdefs.h>
-
-struct ppd_font {
-    char               *pd_font;
-    struct ppd_font    *pd_next;
-};
-
-struct ppd_feature {
-    char       *pd_name;
-    char       *pd_value;
-};
-
-struct ppd_feature     *ppd_feature (const char *, int);
-struct ppd_font                *ppd_font (char *);
-int read_ppd (char *, int);
-
-#endif /* PAPD_PPD_H */
diff --git a/etc/papd/print_cups.c b/etc/papd/print_cups.c
deleted file mode 100644 (file)
index ca8644c..0000000
+++ /dev/null
@@ -1,646 +0,0 @@
-/*
- * $Id: print_cups.c,v 1.6 2010-01-26 20:43:11 didg Exp $
- *
- * Copyright 2004 Bjoern Fernhomberg.
- *
- * Some code copied or adapted from print_cups.c for samba
- * Copyright 1999-2003 by Michael R Sweet.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <errno.h>
-
-
-#ifdef HAVE_CUPS
-
-#include <cups/cups.h>
-#include <cups/language.h>
-#include <atalk/unicode.h>
-#include <atalk/logger.h>
-#include <atalk/atp.h>
-#include <atalk/pap.h>
-#include <atalk/util.h>
-
-#include "printer.h"
-#include "print_cups.h"
-
-#define MAXCHOOSERLEN 31
-#define HTTP_MAX_URI 1024
-
-static const char* cups_status_msg[] = {
-        "status: busy; info: \"%s\" is rejecting jobs; ",
-        "status: idle; info: \"%s\" is stopped, accepting jobs ;",
-        "status: idle; info: \"%s\" is ready ; ",
-};
-
-/* Local functions */
-static int     convert_to_mac_name ( const char *encoding, char * inptr, char * outptr, size_t outlen);
-static size_t  to_ascii ( char *inbuf, char **outbuf);
-static int     cups_mangle_printer_name ( struct printer *pr, struct printer *printers);
-static void     cups_free_printer ( struct printer *pr);
-
-
-const char * cups_get_language (void)
-{
-        cups_lang_t *language;
-
-        language = cupsLangDefault();           /* needed for conversion */
-        return cupsLangEncoding(language);
-}
-
-/*
- * 'cups_passwd_cb()' - The CUPS password callback...
- */
-
-static const char *                            /* O - Password or NULL */
-cups_passwd_cb(const char *prompt _U_)      /* I - Prompt */
-{
- /*
-  * Always return NULL to indicate that no password is available...
-  */
-  return (NULL);
-}
-
-
-/*
- * 'cups_printername_ok()' - Verify supplied printer name is a valid cups printer
- */
-
-int                                     /* O - 1 if printer name OK */
-cups_printername_ok(char *name)         /* I - Name of printer */
-{
-        http_t          *http;          /* HTTP connection to server */
-        ipp_t           *request,       /* IPP Request */
-                        *response;      /* IPP Response */
-        cups_lang_t     *language;      /* Default language */
-        char            uri[HTTP_MAX_URI]; /* printer-uri attribute */
-
-       /*
-        * Make sure we don't ask for passwords...
-        */
-
-        cupsSetPasswordCB(cups_passwd_cb);
-
-       /*
-        * Try to connect to the server...
-        */
-
-        if ((http = httpConnect(cupsServer(), ippPort())) == NULL)
-        {
-               LOG(log_error, logtype_papd, "Unable to connect to CUPS server %s - %s",
-                         cupsServer(), strerror(errno));
-                return (0);
-        }
-
-
-       /*
-        * Build an IPP_GET_PRINTER_ATTRS request, which requires the following
-        * attributes:
-        *
-        *    attributes-charset
-        *    attributes-natural-language
-        *    requested-attributes
-        *    printer-uri
-        */
-
-        request = ippNew();
-
-        request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
-        request->request.op.request_id   = 1;
-
-        language = cupsLangDefault();
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
-                     "attributes-charset", NULL, cupsLangEncoding(language));
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
-                     "attributes-natural-language", NULL, language->language);
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
-                     "requested-attributes", NULL, "printer-uri");
-
-        sprintf(uri, "ipp://localhost/printers/%s", name);
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
-                     "printer-uri", NULL, uri);
-
-       /*
-        * Do the request and get back a response...
-        */
-
-        if ((response = cupsDoRequest(http, request, "/")) == NULL)
-        {
-               LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", name,
-                         ippErrorString(cupsLastError()));
-                httpClose(http);
-                return (0);
-        }
-
-        httpClose(http);
-
-        if (response->request.status.status_code >= IPP_OK_CONFLICT)
-        {
-               LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", name,
-                         ippErrorString(response->request.status.status_code));
-                ippDelete(response);
-                return (0);
-        }
-        else
-        {
-                ippDelete(response);
-                return (1);
-        }
-
-       return (0);
-}
-
-const char * 
-cups_get_printer_ppd ( char * name)
-{
-       cupsSetPasswordCB(cups_passwd_cb);
-       return cupsGetPPD( name );
-}
-
-int
-cups_get_printer_status (struct printer *pr)
-{
-
-        http_t          *http;          /* HTTP connection to server */
-        ipp_t           *request,       /* IPP Request */
-                        *response;      /* IPP Response */
-        ipp_attribute_t *attr;          /* Current attribute */
-        cups_lang_t     *language;      /* Default language */
-        char            uri[HTTP_MAX_URI]; /* printer-uri attribute */
-       int             status = -1;
-
-        static const char *pattrs[] =   /* Requested printer attributes */
-                        {
-                          "printer-state",
-                          "printer-state-message",
-                         "printer-is-accepting-jobs"
-                        };
-
-       /*
-        * Make sure we don't ask for passwords...
-        */
-
-        cupsSetPasswordCB(cups_passwd_cb);
-
-       /*
-        * Try to connect to the server...
-        */
-
-        if ((http = httpConnect(cupsServer(), ippPort())) == NULL)
-        {
-               LOG(log_error, logtype_papd, "Unable to connect to CUPS server %s - %s",
-                         cupsServer(), strerror(errno));
-                return (0);
-        }
-
-       /*
-        * Generate the printer URI...
-        */
-
-        sprintf(uri, "ipp://localhost/printers/%s", pr->p_printer);
-
-
-
-       /*
-        * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the
-        * following attributes:
-        *
-        *    attributes-charset
-        *    attributes-natural-language
-        *    requested-attributes
-        *    printer-uri
-        */
-
-        request = ippNew();
-
-        request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
-        request->request.op.request_id   = 1;
-
-        language = cupsLangDefault();
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
-                     "attributes-charset", NULL, cupsLangEncoding(language));
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
-                     "attributes-natural-language", NULL, language->language);
-
-        ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
-                      "requested-attributes",
-                      (sizeof(pattrs) / sizeof(pattrs[0])),
-                      NULL, pattrs);
-
-        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
-                     "printer-uri", NULL, uri);
-
-       /*
-        * Do the request and get back a response...
-        */
-
-        if ((response = cupsDoRequest(http, request, "/")) == NULL)
-        {
-               LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", pr->p_printer,
-                         ippErrorString(cupsLastError()));
-                httpClose(http);
-                return (0);
-        }
-
-        if (response->request.status.status_code >= IPP_OK_CONFLICT)
-        {
-               LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", pr->p_printer,
-                         ippErrorString(response->request.status.status_code));
-                ippDelete(response);
-                httpClose(http);
-                return (0);
-        }
-
-       /*
-        * Get the current printer status and convert it to the status values.
-        */
-
-       memset ( pr->p_status, 0 ,sizeof(pr->p_status));
-
-        if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
-        {
-                if (attr->values[0].integer == IPP_PRINTER_STOPPED)
-                       status = 1;
-                else if (attr->values[0].integer == IPP_NOT_ACCEPTING)
-                       status = 0;
-               else
-                       status = 2;
-        }
-
-       if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN)) != NULL)
-       {
-               if ( attr->values[0].integer == 0 ) 
-                       status = 0;
-       }
-               
-       snprintf ( pr->p_status, 255, cups_status_msg[status], pr->p_printer );
-
-        if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
-               strncat ( pr->p_status, attr->values[0].string.text, 255-strlen(pr->p_status));
-
-        ippDelete(response);
-
-       /*
-        * Return the print status ...
-        */
-
-        httpClose(http);
-
-       return (status);
-}
-
-
-/*------------------------------------------------------------------------*/
-
-/* pass the job to cups */
-
-int cups_print_job ( char * name, char *filename, char *job, char *username, char * cupsoptions )
-{
-       int             jobid;
-       char            filepath[MAXPATHLEN];
-       int             num_options;
-       cups_option_t   *options;
-
-       /* Initialize the options array */
-       num_options = 0;
-       options     = (cups_option_t *)0;
-
-        cupsSetPasswordCB(cups_passwd_cb);
-
-       if ( username != NULL )
-       {
-               /* Add options using cupsAddOption() */
-               num_options = cupsAddOption("job-originating-user-name", username, num_options, &options);
-               num_options = cupsAddOption("originating-user-name", username, num_options, &options);
-               cupsSetUser ( username );
-       }
-
-       if (cupsoptions != NULL)
-       {
-              num_options = cupsParseOptions(cupsoptions, num_options, &options);
-       }
-       
-       strlcpy ( filepath, SPOOLDIR, sizeof(filepath));
-       strlcat ( filepath , "/", sizeof(filepath));
-       strlcat ( filepath , filename, sizeof(filepath));
-       
-       if ((jobid = cupsPrintFile( name, filepath, job, 0, options)) == 0)
-               LOG(log_error, logtype_papd, "Unable to print job '%s' (%s) to printer '%s' for user '%s' - CUPS error : '%s'", job, filepath, name, username, ippErrorString(cupsLastError()));
-       else 
-               LOG(log_info, logtype_papd, "Job '%s' queued to printer '%s' with id '%d'", job, name, jobid);
-
-       cupsFreeOptions(num_options, options);
-       return (jobid);
-}
-
-
-/*------------------------------------------------------------------------*/
-
-struct printer *
-cups_autoadd_printers ( struct printer *defprinter, struct printer *printers)
-{
-       struct printer  *pr;
-        int            num_dests,i;
-       int             ret;
-        cups_dest_t    *dests;
-        cups_lang_t    *language;
-       char            name[MAXCHOOSERLEN+1], *p;
-
-        language  = cupsLangDefault();         /* needed for conversion */
-        num_dests = cupsGetDests(&dests);      /* get the available destination from CUPS */
-
-        for  (i=0; i< num_dests; i++)
-        {
-               if (( pr = (struct printer *)malloc( sizeof( struct printer ))) == NULL ) {
-                       LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-                       exit( 1 );
-               }
-       
-               memcpy( pr, defprinter, sizeof( struct printer ) );
-
-               /* convert from CUPS to local encoding */
-                convert_string_allocate( add_charset(cupsLangEncoding(language)), CH_UNIX, 
-                                         dests[i].name, -1, &pr->p_u_name);
-
-               /* convert CUPS name to Mac charset */
-               if ( convert_to_mac_name ( cupsLangEncoding(language), dests[i].name, name, sizeof(name)) <= 0)
-               {
-                       LOG (log_error, logtype_papd, "Conversion from CUPS to MAC name failed for %s", dests[i].name);
-                       free (pr);
-                       continue;
-               }
-
-               if (( pr->p_name = (char *)malloc( strlen( name ) + 1 )) == NULL ) {
-                       LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-                       exit( 1 );
-               }
-               strcpy( pr->p_name, name );
-
-               /* set printer flags */
-               pr->p_flags &= ~P_PIPED;
-               pr->p_flags |= P_SPOOLED;
-               pr->p_flags |= P_CUPS;
-               pr->p_flags |= P_CUPS_AUTOADDED;
-                       
-               if (( pr->p_printer = (char *)malloc( strlen( dests[i].name ) + 1 )) == NULL ) {
-                       LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-                               exit( 1 );
-               }
-               strcpy( pr->p_printer, dests[i].name );                 
-
-               if ( (p = (char *) cups_get_printer_ppd ( pr->p_printer )) != NULL ) {
-                       if (( pr->p_ppdfile = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
-                               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-                                       exit( 1 );
-                       }
-                       strcpy( pr->p_ppdfile, p );
-                       pr->p_flags |= P_CUPS_PPD;
-               }
-
-               if ( (ret = cups_check_printer ( pr, printers, 0)) == -1) 
-                       ret = cups_mangle_printer_name ( pr, printers );
-
-               if (ret) {
-                       cups_free_printer (pr);
-                       LOG(log_info, logtype_papd, "Printer %s not added: reason %d", name, ret);
-               }
-               else {
-                       pr->p_next = printers;
-                       printers = pr;
-               }
-       }
-        cupsFreeDests(num_dests, dests);
-        cupsLangFree(language);
-
-       return printers;
-}
-
-
-/*------------------------------------------------------------------------*/
-
-/* cups_mangle_printer_name
- *    Mangles the printer name if two CUPS printer provide the same Chooser Name
- *    Append '#nn' to the chooser name, if it is longer than 28 char we overwrite the last three chars
- * Returns: 0 on Success, 2 on Error
- */
-
-static int cups_mangle_printer_name ( struct printer *pr, struct printer *printers)
-{
-       size_t  count, name_len;
-       char    name[MAXCHOOSERLEN];
-
-       count = 1;
-       name_len = strlen (pr->p_name);
-       strncpy ( name, pr->p_name, MAXCHOOSERLEN-3);
-       
-       /* Reallocate necessary space */
-       (name_len >= MAXCHOOSERLEN-3) ? (name_len = MAXCHOOSERLEN+1) : (name_len = name_len + 4);
-       pr->p_name = (char *) realloc (pr->p_name, name_len );
-               
-       while ( ( cups_check_printer ( pr, printers, 0 )) && count < 100)
-       {
-               memset ( pr->p_name, 0, name_len);
-               strncpy ( pr->p_name, name, MAXCHOOSERLEN-3);
-               sprintf ( pr->p_name, "%s#%2.2u", pr->p_name, count++);
-       }
-
-       if ( count > 99) 
-               return (2);
-       
-       return (0);
-}      
-
-/*------------------------------------------------------------------------*/
-
-/* fallback ASCII conversion */
-
-static size_t
-to_ascii ( char  *inptr, char **outptr)
-{
-       char *out, *osav;
-
-       if ( NULL == (out = (char*) malloc ( strlen ( inptr) + 1 )) ) {
-               LOG(log_error, logtype_papd, "malloc: %s", strerror(errno) );
-               exit (1);
-       }
-
-       osav = out;
-
-       while ( *inptr != '\0' ) {
-               if ( *inptr & 0x80 ) {
-                       *out = '_';
-                       out++;
-                       inptr++;
-               }
-               else
-                       *out++ = *inptr++;
-       }
-       *out = '\0';
-       *outptr = osav;
-       return ( strlen (osav) );
-}
-
-
-/*------------------------------------------------------------------------*/
-
-/* convert_to_mac_name
- *     1) Convert from encoding to MacRoman
- *     2) Shorten to MAXCHOOSERLEN (31)
- *      3) Replace @ and _ as they are illegal
- * Returns: -1 on failure, length of name on success; outpr contains name in MacRoman
- */
-
-static int convert_to_mac_name ( const char * encoding, char * inptr, char * outptr, size_t outlen)
-{
-       char    *outbuf;
-       char    *soptr;
-       size_t  name_len = 0;
-       size_t  i;
-       charset_t chCups;
-
-       /* Change the encoding */
-       if ((charset_t)-1 != (chCups = add_charset(encoding))) {
-               name_len = convert_string_allocate( chCups, CH_MAC, inptr, -1, &outbuf);
-       }
-
-       if (name_len == 0 || name_len == (size_t)-1) {
-               /* charset conversion failed, use ascii fallback */
-               name_len = to_ascii ( inptr, &outbuf );
-       }
-       
-       soptr = outptr;
-
-       for ( i=0; i< name_len && i < outlen-1 ; i++)
-       {
-               if ( outbuf[i] == '_' ) 
-                       *soptr = ' '; /* Replace '_' with a space (just for the looks) */
-               else if ( outbuf[i] == '@' || outbuf[i] == ':' ) 
-                       *soptr = '_'; /* Replace @ and : with '_' as they are illegal chars */
-               else
-                       *soptr = outbuf[i];
-               soptr++;
-       }
-       *soptr = '\0';
-       free (outbuf);
-       return (i);
-}
-
-
-/*------------------------------------------------------------------------*/
-
-/*
- * cups_check_printer:
- * check if a printer with this name already exists.
- * if yes, and replace = 1 the existing printer is replaced with
- * the new one. This allows to overwrite printer settings
- * created by cupsautoadd. It also used by cups_mangle_printer.
- */
-
-int cups_check_printer ( struct printer *pr, struct printer *printers, int replace)
-{
-       struct printer *listptr, *listprev;
-
-       listptr = printers;
-       listprev = NULL;
-
-       while ( listptr != NULL) {
-               if ( strcasecmp (pr->p_name, listptr->p_name) == 0) {
-                       if ( pr->p_flags & P_CUPS_AUTOADDED ) {  /* Check if printer has been autoadded */
-                               if ( listptr->p_flags & P_CUPS_AUTOADDED )
-                                       return (-1);             /* Conflicting Cups Auto Printer (mangling issue?) */
-                               else
-                                       return (1);              /* Never replace a hand edited printer with auto one */
-                       }
-
-                       if ( replace ) {
-                               /* Replace printer */
-                               if ( listprev != NULL) {
-                                       pr->p_next = listptr->p_next;
-                                       listprev->p_next = pr;
-                                       cups_free_printer (listptr);
-                               }
-                               else {
-                                       printers = pr;
-                                       printers->p_next = listptr->p_next;
-                                       cups_free_printer (listptr);
-                               }
-                       }
-                       return (1);  /* Conflicting Printers */
-               }
-               listprev = listptr;
-               listptr = listptr->p_next;
-       }       
-       return (0);     /* No conflict */
-}
-
-
-/*------------------------------------------------------------------------*/
-
-
-void
-cups_free_printer ( struct printer *pr)
-{
-       if ( pr->p_name != NULL)
-               free (pr->p_name);
-       if ( pr->p_printer != NULL)
-               free (pr->p_printer);
-       if ( pr->p_ppdfile != NULL)
-               free (pr->p_ppdfile);
-       
-       /* CUPS autoadded printers share the other informations
-        * so if the printer is autoadded we won't free them.
-        * We might leak some bytes here though.
-        */
-       if ( pr->p_flags & P_CUPS_AUTOADDED ) {
-               free (pr);
-               return;
-       }
-
-       if ( pr->p_operator != NULL )
-               free (pr->p_operator);
-       if ( pr->p_zone != NULL )
-               free (pr->p_zone);
-       if ( pr->p_type != NULL )
-               free (pr->p_type);
-       if ( pr->p_authprintdir != NULL )
-               free (pr->p_authprintdir);
-       
-       free ( pr );
-       return;
-       
-}
-       
-#endif /* HAVE_CUPS*/
diff --git a/etc/papd/print_cups.h b/etc/papd/print_cups.h
deleted file mode 100644 (file)
index dd9e711..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-\r
-#ifndef PAPD_CUPS_H\r
-#define PAPD_CUPS_H 1\r
-\r
-#ifdef HAVE_CUPS\r
-#include <sys/cdefs.h>\r
-\r
-struct cups_status {\r
-       int     pr_status;\r
-       char *  status_message;\r
-};\r
-\r
-int            cups_printername_ok (char * );\r
-const char *   cups_get_printer_ppd ( char * );\r
-int            cups_get_printer_status (struct printer *pr);\r
-int            cups_print_job ( char *, char *, char *, char *, char *);\r
-struct printer * cups_autoadd_printers ( struct printer *, struct printer *);\r
-int            cups_check_printer ( struct printer *, struct printer *, int);\r
-const char     *cups_get_language ( void );\r
-#endif /* HAVE_CUPS */\r
-#endif /* PAPD_CUPS_H */\r
diff --git a/etc/papd/printcap.c b/etc/papd/printcap.c
deleted file mode 100644 (file)
index 9215a11..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
- * $Id: printcap.c,v 1.12 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- *
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-#include <atalk/paths.h>
-
-#include "printcap.h"
-
-#ifndef BUFSIZ
-#define        BUFSIZ  1024
-#endif /* ! BUFSIZ */
-#define MAXHOP 32      /* max number of tc= indirections */
-
-/*
- * termcap - routines for dealing with the terminal capability data base
- *
- * BUG:                Should use a "last" pointer in tbuf, so that searching
- *             for capabilities alphabetically would not be a n**2/2
- *             process when large numbers of capabilities are given.
- * Note:       If we add a last pointer now we will screw up the
- *             tc capability. We really should compile termcap.
- *
- * Essentially all the work here is scanning and decoding escapes
- * in string capabilities.  We don't use stdio because the editor
- * doesn't, and because living w/o it is not hard.
- */
-
-#define PRINTCAP
-
-#ifdef PRINTCAP
-#define tgetent        pgetent
-#define tskip  pskip
-#define tgetstr        pgetstr
-#define tdecode pdecode
-#define tgetnum        pgetnum
-#define        tgetflag pgetflag
-#define tdecode pdecode
-#define tnchktc        pnchktc
-#define        tnamatch pnamatch
-#define V6
-#endif /* PRINTCAP */
-
-static FILE *pfp = NULL;       /* printcap data base file pointer */
-static char *tbuf;
-static int hopcount;           /* detect infinite loops in termcap, init 0 */
-
-/*
- * Similar to tgetent except it returns the next entry instead of
- * doing a lookup.
- *
- * Added a "cap" parameter, so we can use these calls for printcap
- * and papd.conf.
- */
-int getprent( char *cap, char *bp, int bufsize)
-{
-       register int c, skip = 0, i;
-
-       if (pfp == NULL && (pfp = fopen( cap, "r")) == NULL)
-               return(-1);
-       tbuf = bp;
-       i = 0;
-       for (;;) {
-               switch (c = getc(pfp)) {
-               case EOF:
-                        if (bp != tbuf) {
-                               *bp = '\0';
-                               return(1);
-                       }
-                       fclose(pfp);
-                       pfp = NULL;
-                       return(0);
-               case '\n':
-                       if (bp == tbuf) {
-                               skip = 0;
-                               continue;
-                       }
-                       if (bp[-1] == '\\') {
-                               bp--;
-                               continue;
-                       }
-                       *bp = '\0';
-                       return(1);
-               case '#':
-                       if (bp == tbuf)
-                               skip++;
-               default:
-                       if (skip)
-                               continue;
-                       if (bp >= tbuf+BUFSIZ) {
-                               write(2, "Termcap entry too long\n", 23);
-                               *bp = '\0';
-                               return(1);
-                       }
-                       *bp++ = c;
-                       if (++i >= bufsize) {
-                               write(2, "config file too large\n", 22);
-                               fclose(pfp);
-                               pfp = NULL;
-                               *bp = '\0';
-                               return(1);
-                       }
-               }
-       }
-}
-
-void endprent(void)
-{
-       if (pfp != NULL)
-               fclose(pfp);
-}
-
-/*
- * Get an entry for terminal name in buffer bp,
- * from the termcap file.  Parse is very rudimentary;
- * we just notice escaped newlines.
- *
- * Added a "cap" parameter, so we can use these calls for printcap
- * and papd.conf.
- */
-int tgetent(char *cap, char *bp, char *name)
-{
-       register char *cp;
-       register int c;
-       register int i = 0, cnt = 0;
-       char ibuf[BUFSIZ];
-       int tf;
-       int skip;
-
-       hopcount = 0;
-       tbuf = bp;
-       tf = 0;
-#ifndef V6
-       cp = getenv("TERMCAP");
-       /*
-        * TERMCAP can have one of two things in it. It can be the
-        * name of a file to use instead of /etc/termcap. In this
-        * case it better start with a "/". Or it can be an entry to
-        * use so we don't have to read the file. In this case it
-        * has to already have the newlines crunched out.
-        */
-       if (cp && *cp) {
-               if (*cp!='/') {
-                       cp2 = getenv("TERM");
-                       if (cp2==(char *) 0 || strcmp(name,cp2)==0) {
-                               strcpy(bp,cp);
-                               return(tnchktc(cap));
-                       } else {
-                               tf = open(cap, 0);
-                       }
-               } else
-                       tf = open(cp, 0);
-       }
-       if (tf==0)
-               tf = open(cap, 0);
-#else /* V6 */
-       tf = open(cap, 0);
-#endif /* V6 */
-       if (tf < 0)
-               return (-1);
-       for (;;) {
-               cp = bp;
-               skip = 0;
-               for (;;) {
-                       if (i == cnt) {
-                               cnt = read(tf, ibuf, BUFSIZ);
-                               if (cnt <= 0) {
-                                       close(tf);
-                                       return (0);
-                               }
-                               i = 0;
-                       }
-                       c = ibuf[i++];
-                       if (c == '\n') {
-                               if (!skip && cp > bp && cp[-1] == '\\') {
-                                       cp--;
-                                       continue;
-                               }
-                               skip = 0;
-                               if (cp == bp)
-                                       continue;
-                               else
-                                       break;
-                       }
-                       if (c == '#' && cp == bp)
-                               skip++;
-                       if (skip)
-                               continue;
-                       if (cp >= bp+BUFSIZ) {
-                               write(2,"Termcap entry too long\n", 23);
-                               break;
-                       } else
-                               *cp++ = c;
-               }
-               *cp = 0;
-
-               /*
-                * The real work for the match.
-                */
-               if (tnamatch(name)) {
-                       close(tf);
-                       return(tnchktc(cap));
-               }
-       }
-}
-
-/*
- * tnchktc: check the last entry, see if it's tc=xxx. If so,
- * recursively find xxx and append that entry (minus the names)
- * to take the place of the tc=xxx entry. This allows termcap
- * entries to say "like an HP2621 but doesn't turn on the labels".
- * Note that this works because of the left to right scan.
- *
- * Added a "cap" parameter, so we can use these calls for printcap
- * and papd.conf.
- */
-int tnchktc( char *cap)
-{
-       register char *p, *q;
-       char tcname[16];        /* name of similar terminal */
-       char tcbuf[BUFSIZ];
-       char *holdtbuf = tbuf;
-       int l;
-
-       p = tbuf + strlen(tbuf) - 2;    /* before the last colon */
-       while (*--p != ':')
-               if (p<tbuf) {
-                       write(2, "Bad termcap entry\n", 18);
-                       return (0);
-               }
-       p++;
-       /* p now points to beginning of last field */
-       if (p[0] != 't' || p[1] != 'c')
-               return(1);
-       strcpy(tcname,p+3);
-       q = tcname;
-       while (q && *q != ':')
-               q++;
-       *q = 0;
-       if (++hopcount > MAXHOP) {
-               write(2, "Infinite tc= loop\n", 18);
-               return (0);
-       }
-       if (tgetent( cap, tcbuf, tcname) != 1)
-               return(0);
-       for (q=tcbuf; *q != ':'; q++)
-               ;
-       l = p - holdtbuf + strlen(q);
-       if (l > BUFSIZ) {
-               write(2, "Termcap entry too long\n", 23);
-               q[BUFSIZ - (p-tbuf)] = 0;
-       }
-       strcpy(p, q+1);
-       tbuf = holdtbuf;
-       return(1);
-}
-
-/*
- * Tnamatch deals with name matching.  The first field of the termcap
- * entry is a sequence of names separated by |'s, so we compare
- * against each such name.  The normal : terminator after the last
- * name (before the first field) stops us.
- */
-int tnamatch(char *np)
-{
-       register char *Np, *Bp;
-
-       Bp = tbuf;
-       if (*Bp == '#')
-               return(0);
-       for (;;) {
-               for (Np = np; *Np && *Bp == *Np; Bp++, Np++)
-                       continue;
-               if (*Np == 0 && (*Bp == '|' || *Bp == ':' || *Bp == 0))
-                       return (1);
-               while (*Bp && *Bp != ':' && *Bp != '|')
-                       Bp++;
-               if (*Bp == 0 || *Bp == ':')
-                       return (0);
-               Bp++;
-       }
-}
-
-/*
- * Skip to the next field.  Notice that this is very dumb, not
- * knowing about \: escapes or any such.  If necessary, :'s can be put
- * into the termcap file in octal.
- */
-static char *tskip(char *bp)
-{
-
-       while (*bp && *bp != ':')
-               bp++;
-       while (*bp && *bp == ':')
-               bp++;
-       return (bp);
-}
-
-/*
- * Return the (numeric) option id.
- * Numeric options look like
- *     li#80
- * i.e. the option string is separated from the numeric value by
- * a # character.  If the option is not found we return -1.
- * Note that we handle octal numbers beginning with 0.
- */
-int tgetnum(char *id)
-{
-       register int i, base;
-       register char *bp = tbuf;
-
-       for (;;) {
-               bp = tskip(bp);
-               if (*bp == 0)
-                       return (-1);
-               if (*bp++ != id[0] || *bp == 0 || *bp++ != id[1])
-                       continue;
-               if (*bp == '@')
-                       return(-1);
-               if (*bp != '#')
-                       continue;
-               bp++;
-               base = 10;
-               if (*bp == '0')
-                       base = 8;
-               i = 0;
-               while (isdigit(*bp))
-                       i *= base, i += *bp++ - '0';
-               return (i);
-       }
-}
-
-/*
- * Handle a flag option.
- * Flag options are given "naked", i.e. followed by a : or the end
- * of the buffer.  Return 1 if we find the option, or 0 if it is
- * not given.
- */
-int tgetflag(char *id)
-{
-       register char *bp = tbuf;
-
-       for (;;) {
-               bp = tskip(bp);
-               if (!*bp)
-                       return (0);
-               if (*bp++ == id[0] && *bp != 0 && *bp++ == id[1]) {
-                       if (!*bp || *bp == ':')
-                               return (1);
-                       else if (*bp == '@')
-                               return(0);
-               }
-       }
-}
-
-/*
- * Tdecode does the grung work to decode the
- * string capability escapes.
- */
-static char *
-tdecode(char *str, char **area)
-{
-       register char *cp;
-       register int c;
-       register char *dp;
-       int i;
-
-       cp = *area;
-       while ((c = *str++) && c != ':') {
-               switch (c) {
-
-               case '^':
-                       c = *str++ & 037;
-                       break;
-
-               case '\\':
-                       dp = "E\033^^\\\\::n\nr\rt\tb\bf\f";
-                       c = *str++;
-nextc:
-                       if (*dp++ == c) {
-                               c = *dp++;
-                               break;
-                       }
-                       dp++;
-                       if (*dp)
-                               goto nextc;
-                       if (isdigit(c)) {
-                               c -= '0', i = 2;
-                               do
-                                       c <<= 3, c |= *str++ - '0';
-                               while (--i && isdigit(*str));
-                       }
-                       break;
-               }
-               *cp++ = c;
-       }
-       *cp++ = 0;
-       str = *area;
-       *area = cp;
-       return (str);
-}
-
-/*
- * Get a string valued option.
- * These are given as
- *     cl=^Z
- * Much decoding is done on the strings, and the strings are
- * placed in area, which is a ref parameter which is updated.
- * No checking on area overflow.
- */
-char *
-tgetstr(char *id, char **area)
-{
-       register char *bp = tbuf;
-
-       for (;;) {
-               bp = tskip(bp);
-               if (!*bp)
-                       return (NULL);
-               if (*bp++ != id[0] || *bp == 0 || *bp++ != id[1])
-                       continue;
-               if (*bp == '@')
-                       return(NULL);
-               if (*bp != '=')
-                       continue;
-               bp++;
-               return (tdecode(bp, area));
-       }
-}
-
-static char *
-decodename(char *str, char **area, int bufsize)
-{
-       register char *cp;
-       register int c;
-       register char *dp;
-       int i;
-
-       cp = *area;
-       while ((c = *str++) && --bufsize && c != ':' && c != '|' ) {
-               switch (c) {
-
-               case '^':
-                       c = *str++ & 037;
-                       break;
-
-               case '\\':
-                       dp = "E\033^^\\\\::n\nr\rt\tb\bf\f";
-                       c = *str++;
-nextc:
-                       if (*dp++ == c) {
-                               c = *dp++;
-                               break;
-                       }
-                       dp++;
-                       if (*dp)
-                               goto nextc;
-                       if (isdigit(c)) {
-                               c -= '0', i = 2;
-                               do
-                                       c <<= 3, c |= *str++ - '0';
-                               while (--i && isdigit(*str));
-                       }
-                       break;
-               }
-               *cp++ = c;
-       }
-       *cp++ = 0;
-       str = *area;
-       *area = cp;
-       return (str);
-}
-
-char *
-getpname(char **area, int bufsize)
-{
-       return( decodename( tbuf, area, bufsize));
-}
diff --git a/etc/papd/printcap.h b/etc/papd/printcap.h
deleted file mode 100644 (file)
index d300d45..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * $Id: printcap.h,v 1.5 2009-10-13 22:55:37 didg Exp $
- */
-
-#ifndef PAPD_PRINTCAP_H
-#define PAPD_PRINTCAP_H 1
-
-#include <sys/cdefs.h>
-
-int getprent ( register char *, register char *, register int );
-int pnchktc ( char * );
-int pgetflag ( char * );
-void endprent ( void );
-int pgetent ( char *, char *, char * );
-int pgetnum ( char * );
-int pnamatch ( char * );
-
-#endif /* PAPD_PRINTCAP_H */
diff --git a/etc/papd/printer.h b/etc/papd/printer.h
deleted file mode 100644 (file)
index 7c56273..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $Id: printer.h,v 1.6 2005-04-28 20:49:49 bfernhomberg Exp $
- *
- * Copyright (c) 1990,1995 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-struct printer {
-    char               *p_name;
-    char               *p_type;
-    char               *p_zone;
-    char               *p_u_name;
-#ifdef notdef
-    char               *p_fonts;
-    char               *p_psetdir;
-#endif /* notdef */
-    char               *p_ppdfile;
-    char               p_status[255];
-    char               *p_authprintdir;
-    int                        p_flags;
-    struct at_addr      p_addr;
-    union {
-       struct {
-           char                *pr_printer;
-           char                *pr_operator;
-           char                *pr_spool;
-#ifdef ABS_PRINT
-           char                *pr_role;
-           double              pr_balance;
-           int                 pr_srvid;
-#endif /* ABS_PRINT */
-           int                 pr_pagecost;
-           char                *pr_pagecost_msg;
-           char                *pr_lock;
-       } pu_pr;
-       char            *pu_cmd;
-    } p_un;
-    ATP                        p_atp;
-#ifdef HAVE_CUPS
-    char               *p_cupsoptions;
-#endif
-    struct printer     *p_next;
-};
-#define p_cmd          p_un.pu_cmd
-#define p_printer      p_un.pu_pr.pr_printer
-#define p_operator     p_un.pu_pr.pr_operator
-#define p_spool                p_un.pu_pr.pr_spool
-#ifdef ABS_PRINT
-#define p_role         p_un.pu_pr.pr_role
-#define p_balance      p_un.pu_pr.pr_balance
-#define p_srvid                p_un.pu_pr.pr_srvid
-#endif /* ABS_PRINT */
-#define p_pagecost     p_un.pu_pr.pr_pagecost
-#define p_pagecost_msg p_un.pu_pr.pr_pagecost_msg
-#define p_lock         p_un.pu_pr.pr_lock
-
-#define P_PIPED                (1<<0)
-#define P_SPOOLED      (1<<1)
-#define P_REGISTERED   (1<<2)
-#define P_ACCOUNT      (1<<3)
-#define P_KRB          (1<<4)
-#define P_AUTH         (1<<5)
-#define P_AUTH_PSSP    (1<<6)
-#define P_AUTH_CAP     (1<<7)
-#define P_CUPS         (1<<8)
-#define P_CUPS_PPD     (1<<9)
-#define P_CUPS_AUTOADDED (1<<10)
-#define P_FOOMATIC_HACK (1<<11)
-
-extern struct printer  *printer;
diff --git a/etc/papd/queries.c b/etc/papd/queries.c
deleted file mode 100644 (file)
index ef1c5a6..0000000
+++ /dev/null
@@ -1,790 +0,0 @@
-/*
- * $Id: queries.c,v 1.22 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <atalk/logger.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-
-#ifdef KRB
-#ifdef SOLARIS
-#include <kerberos/krb.h>
-#else /* SOLARIS */
-#include <krb.h>
-#endif /* SOLARIS */
-#endif /* KRB */
-
-#include "file.h"
-#include "comment.h"
-#include "printer.h"
-#include "ppd.h"
-#include "lp.h"
-#include "uam_auth.h"
-
-int cq_default( struct papfile *, struct papfile * );
-int cq_k4login( struct papfile *, struct papfile * );
-int cq_uameth( struct papfile *, struct papfile * );
-
-int gq_balance( struct papfile * );
-int gq_pagecost( struct papfile * );
-int gq_true( struct papfile * );
-int gq_rbispoolerid( struct papfile * );
-int gq_rbiuamlist( struct papfile * );
-
-int cq_query( struct papfile *, struct papfile * );
-void cq_font_answer( char *, char *, struct papfile * );
-int cq_font( struct papfile *, struct papfile * );
-int cq_feature( struct papfile *, struct papfile * );
-int cq_printer( struct papfile *, struct papfile * );
-int cq_rmjob( struct papfile *, struct papfile * );
-#ifndef HAVE_CUPS
-int cq_listq( struct papfile *, struct papfile * );
-int cq_rbilogin( struct papfile *, struct papfile * );
-#endif  /* HAVE_CUPS */
-
-
-
-int cq_default( struct papfile *in, struct papfile *out)
-{
-    char               *start, *stop, *p;
-    int                        linelength, crlflength;
-    struct papd_comment        *comment = compeek();
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           return( 0 );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       stop = start+linelength;
-
-       if ( comgetflags() == 0 ) {     /* started */
-           if ( comment->c_end ) {
-               comsetflags( 1 );
-           } else {
-               compop();
-               CONSUME( in, linelength + crlflength );
-               return( CH_DONE );
-           }
-       } else {
-           /* return default */
-           if ( comcmp( start, start+linelength, comment->c_end, 0 ) == 0 ) {
-               for ( p = start; p < stop; p++ ) {
-                   if ( *p == ':' ) {
-                       break;
-                   }
-               }
-               if (p < stop) {
-                   p++;
-                   while ( *p == ' ' ) {
-                       p++;
-                    }
-               }
-
-               append( out, p, stop - p + crlflength );
-               compop();
-               CONSUME( in, linelength + crlflength );
-               return( CH_DONE );
-           }
-       }
-
-       CONSUME( in, linelength + crlflength );
-    }
-}
-
-#ifdef KRB
-char   *LoginOK = "LoginOK\n";
-char   *LoginFailed = "LoginFailed\n";
-
-#define h2b(x) (isdigit((x))?(x)-'0':(isupper((x))?(x)-'A':(x)-'a')+10)
-
-int cq_k4login( struct papfile *in, struct papfile *out)
-{
-    char               *start, *p;
-    int                        linelength, crlflength;
-    unsigned char      *t;
-    struct papd_comment        *comment = compeek();
-    KTEXT_ST           tkt;
-    AUTH_DAT           ad;
-    int                        rc, i;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    p = start + strlen( comment->c_begin );
-    while ( *p == ' ' ) {
-       p++;
-    }
-
-    bzero( &tkt, sizeof( tkt ));
-    stop = start+linelength;
-    /* FIXME */
-    for ( i = 0, t = tkt.dat; p < stop; p += 2, t++, i++ ) {
-       *t = ( h2b( (unsigned char)*p ) << 4 ) +
-               h2b( (unsigned char)*( p + 1 ));
-    }
-    tkt.length = i;
-
-    if (( rc = krb_rd_req( &tkt, "LaserWriter", printer->p_name,
-           0, &ad, "" )) != RD_AP_OK ) {
-       LOG(log_error, logtype_papd, "cq_k4login: %s", krb_err_txt[ rc ] );
-       append( out, LoginFailed, strlen( LoginFailed ));
-       compop();
-       CONSUME( in, linelength + crlflength );
-       return( CH_DONE );
-    }
-    LOG(log_info, logtype_papd, "cq_k4login: %s.%s@%s", ad.pname, ad.pinst,
-           ad.prealm );
-    lp_person( ad.pname );
-    lp_host( ad.prealm );
-
-    append( out, LoginOK, strlen( LoginOK ));
-    compop();
-    CONSUME( in, linelength + crlflength);
-    return( CH_DONE );
-}
-
-char   *uameth = "UMICHKerberosIV\n*\n";
-
-int cq_uameth( struct papfile *in, struct papfile *out)
-{
-    char               *start;
-    int                        linelength, crlflength;
-    struct papd_comment        *c, *comment = compeek();
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           return( 0 );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       if ( comgetflags() == 0 ) {     /* start */
-           if (( printer->p_flags & P_KRB ) == 0 ) {   /* no kerberos */
-               if ( comswitch( queries, cq_default ) < 0 ) {
-                   LOG(log_error, logtype_papd, "cq_uameth: can't find default!" );
-                   exit( 1 );
-               }
-               return( CH_DONE );
-           }
-           comsetflags( 1 );
-       } else {
-           if ( comcmp( start, stop, comment->c_end, 0 ) == 0 ) { /* end */
-               append( out, uameth, strlen( uameth ));
-               compop();
-               return( CH_DONE );
-           }
-       }
-
-       CONSUME( in, linelength + crlflength );
-    }
-}
-#endif /* KRB */
-
-int gq_true( struct papfile *out)
-{
-    if ( printer->p_flags & P_SPOOLED ) {
-       append( out, "true\n", 5 );
-       return( 0 );
-    } else {
-       return( -1 );
-    }
-}
-
-int gq_pagecost( struct papfile *out)
-{
-    char               cost[ 60 ];
-
-    /* check for spooler? XXX */
-    if ( printer->p_pagecost_msg != NULL ) {
-       append( out, printer->p_pagecost_msg,
-               strlen( printer->p_pagecost_msg ));
-    } else if ( printer->p_flags & P_ACCOUNT ) {
-#ifdef ABS_PRINT
-       lp_pagecost();
-#endif /* ABS_PRINT */
-       sprintf( cost, "%d", printer->p_pagecost );
-       append( out, cost, strlen( cost ));
-    } else {
-       return( -1 );
-    }
-    append( out, "\n", 1 );
-    return( 0 );
-}
-
-#ifdef ABS_PRINT
-int gq_balance( struct papfile *out)
-{
-    char               balance[ 60 ];
-
-    if ( lp_pagecost() != 0 ) {
-       return( -1 );
-    }
-    sprintf( balance, "$%1.2f\n", printer->p_balance );
-    append( out, balance, strlen( balance ));
-    return( 0 );
-}
-#endif /* ABS_PRINT */
-
-
-/*
- * Handler for RBISpoolerID
- */
-
-static const char *spoolerid = "(PAPD Spooler) 1.0 (" VERSION ")\n";
-
-int gq_rbispoolerid( struct papfile *out)
-{
-    append( out, spoolerid, strlen( spoolerid ));
-    return(0);
-}
-
-
-
-/*
- * Handler for RBIUAMListQuery
- */
-
-static const char *nouams = "*\n";
-
-int gq_rbiuamlist( struct papfile *out)
-{
-    char uamnames[128] = "\0";
-
-    if (printer->p_flags & P_AUTH_PSSP) {
-       if (getuamnames(UAM_SERVER_PRINTAUTH, uamnames) < 0) {
-           append(out, nouams, strlen(nouams));
-           return(0);
-       } else {
-           append(out, uamnames, strlen(uamnames));
-           return(0);
-       }
-    } else {
-       append(out, nouams, strlen(nouams));
-       return(0);
-    }
-}
-
-
-struct genquery {
-    char       *gq_name;
-    int                (*gq_handler)();
-} genqueries[] = {
-    { "UMICHCostPerPage", gq_pagecost },
-#ifdef notdef
-    { "UMICHUserBalance", gq_balance },
-#endif /* notdef */
-    { "RBISpoolerID",  gq_rbispoolerid },
-    { "RBIUAMListQuery", gq_rbiuamlist },
-    { "ADOIsBinaryOK?", gq_true },
-    { "UMICHListQueue", gq_true },
-    { "UMICHDeleteJob", gq_true },
-    { NULL, NULL },
-};
-
-int cq_query( struct papfile *in, struct papfile *out)
-{
-    char               *start, *stop, *p, *q;
-    int                        linelength, crlflength;
-    struct papd_comment        *comment = compeek();
-    struct genquery    *gq;
-
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           return( 0 );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       stop = start+linelength;
-
-       if ( comgetflags() == 0 ) {     /* started */
-           comsetflags( 1 );
-
-           for ( p = start; p < stop; p++ ) {
-               if ( *p == ':' ) {
-                   break;
-               }
-           }
-
-           if (p < stop) for ( p++; p < stop; p++ ) {
-               if ( *p != ' ' && *p != '\t' ) {
-                   break;
-               }
-           }
-
-           for ( q = p; q < stop; q++ ) {
-               if ( *q == ' ' || *q == '\t' || *q == '\r' || *q == '\n' ) {
-                   break;
-               }
-           }
-
-           for ( gq = genqueries; gq->gq_name; gq++ ) {
-               if (( strlen( gq->gq_name ) == (size_t)(q - p) ) &&
-                       ( strncmp( gq->gq_name, p, q - p ) == 0 )) {
-                   break;
-               }
-           }
-           if ( gq->gq_name == NULL || gq->gq_handler == NULL ||
-                   (gq->gq_handler)( out ) < 0 ) {
-               if ( comswitch( queries, cq_default ) < 0 ) {
-                   LOG(log_error, logtype_papd, "cq_feature: can't find default!" );
-                   exit( 1 );
-               }
-               return( CH_DONE );
-           }
-       } else {
-           if ( comcmp( start, stop, comment->c_end, 0 ) == 0 ) {
-               compop();
-               CONSUME( in, linelength + crlflength );
-               return( CH_DONE );
-           }
-       }
-
-       CONSUME( in, linelength + crlflength );
-    }
-}
-
-void cq_font_answer( char *start, char *stop, struct papfile *out)
-{
-    char               *p, *q, buf[ 256 ];
-    struct ppd_font    *pfo;
-
-    p = start;
-    while ( p < stop ) {
-        unsigned int count = 0;
-       while (( *p == ' ' || *p == '\t' ) && p < stop ) {
-           p++;
-       }
-
-       q = buf;
-       while ( *p != ' ' && *p != '\t' &&
-               *p != '\n' && *p != '\r' && p < stop && count < sizeof(buf)) {
-           *q++ = *p++;
-           count++;
-       }
-
-       if ( q != buf ) {
-           *q = '\0';
-
-           append( out, "/", 1 );
-           append( out, buf, strlen( buf ));
-           append( out, ":", 1 );
-
-           if (( pfo = ppd_font( buf )) == NULL ) {
-               append( out, "No\n", 3 );
-           } else {
-               append( out, "Yes\n", 4 );
-           }
-       }
-    }
-
-    return;
-}
-
-int cq_font(struct papfile *in, struct papfile *out)
-{
-    char               *start, *stop, *p;
-    int                        linelength, crlflength;
-    struct papd_comment        *comment = compeek();
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           return( 0 );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       stop = start + linelength;
-
-       if ( comgetflags() == 0 ) {
-           comsetflags( 1 );
-
-           for ( p = start; p < stop; p++ ) {
-               if ( *p == ':' ) {
-                   break;
-               }
-           }
-           if (p < stop)
-               p++;
-
-           cq_font_answer( p, stop, out );
-       } else {
-           if ( comgetflags() == 1 &&
-                   comcmp( start, stop, comcont, 0 ) == 0 ) {
-               /* continuation */
-
-               for ( p = start; p < stop; p++ ) {
-                   if ( *p == ' ' ) {
-                       break;
-                   }
-               }
-               if (p < stop)
-                   p++;
-
-               cq_font_answer( p, stop, out );
-           } else {
-               comsetflags( 2 );
-               if ( comcmp( start, stop, comment->c_end, 0 ) == 0 ) {
-                   append( out, "*\n", 2 );
-                   compop();
-                   CONSUME( in, linelength + crlflength );
-                   return( CH_DONE );
-               }
-           }
-       }
-
-        CONSUME( in, linelength + crlflength );
-    }
-}
-
-int cq_feature( struct papfile *in, struct papfile *out)
-{
-    char               *start, *stop, *p;
-    int                        linelength, crlflength;
-    struct papd_comment        *comment = compeek();
-    struct ppd_feature *pfe;
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           return( 0 );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       stop = start + linelength;
-
-       if ( comgetflags() == 0 ) {
-           comsetflags( 1 );
-
-           /* parse for feature */
-           for ( p = start; p < stop; p++ ) {
-               if ( *p == ':' ) {
-                   break;
-               }
-           }
-           if (p < stop)
-               p++;
-           while ( *p == ' ' ) {
-               p++;
-           }
-
-           if (( pfe = ppd_feature( p, stop - p )) == NULL ) {
-               if ( comswitch( queries, cq_default ) < 0 ) {
-                   LOG(log_error, logtype_papd, "cq_feature: can't find default!" );
-                   exit( 1 );
-               }
-               return( CH_DONE );
-           }
-
-           append( out, pfe->pd_value, strlen( pfe->pd_value ));
-           append( out, "\r", 1 );
-       } else {
-           if ( comcmp( start, stop, comment->c_end, 0 ) == 0 ) {
-               compop();
-               CONSUME( in, linelength + crlflength );
-               return( CH_DONE );
-           }
-       }
-
-       CONSUME( in, linelength + crlflength );
-    }
-}
-
-static const char      *psver = "*PSVersion\n";
-static const char      *prod = "*Product\n";
-
-int cq_printer(struct papfile *in, struct papfile *out)
-{
-    char               *start, *p;
-    int                        linelength, crlflength;
-    struct papd_comment        *comment = compeek();
-    struct ppd_feature *pdpsver, *pdprod;
-
-    for (;;) {
-       switch ( markline( in, &start, &linelength, &crlflength )) {
-       case 0 :
-           return( 0 );
-
-       case -1 :
-           return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-       }
-
-       if ( comgetflags() == 0 ) {
-           comsetflags( 1 );
-
-           if (( pdpsver = ppd_feature( psver, strlen( psver ))) == NULL ) {
-               if ( comswitch( queries, cq_default ) < 0 ) {
-                   LOG(log_error, logtype_papd, "cq_printer: can't find default!" );
-                   exit( 1 );
-               }
-               return( CH_DONE );
-           }
-
-           for ( p = pdpsver->pd_value; *p != '\0'; p++ ) {
-               if ( *p == ' ' ) {
-                   break;
-               }
-           }
-           if ( *p == '\0' ) {
-               LOG(log_error, logtype_papd, "cq_printer: can't parse PSVersion!" );
-               if ( comswitch( queries, cq_default ) < 0 ) {
-                   LOG(log_error, logtype_papd, "cq_printer: can't find default!" );
-                   exit( 1 );
-               }
-               return( CH_DONE );
-           }
-
-           if (( pdprod = ppd_feature( prod, strlen( prod ))) == NULL ) {
-               if ( comswitch( queries, cq_default ) < 0 ) {
-                   LOG(log_error, logtype_papd, "cq_printer: can't find default!" );
-                   exit( 1 );
-               }
-               return( CH_DONE );
-           }
-
-           /* revision */
-           append( out, p + 1, strlen( p + 1 ));
-           append( out, "\r", 1 );
-
-           /* version */
-           append( out, pdpsver->pd_value, p - pdpsver->pd_value );
-           append( out, "\r", 1 );
-
-           /* product */
-           append( out, pdprod->pd_value, strlen( pdprod->pd_value ));
-           append( out, "\r", 1 );
-       } else {
-           if ( comcmp( start, start+linelength, comment->c_end, 0 ) == 0 ) {
-               compop();
-               CONSUME( in, linelength + crlflength );
-               return( CH_DONE );
-           }
-       }
-
-       CONSUME( in, linelength + crlflength );
-    }
-}
-
-#ifndef HAVE_CUPS
-
-static const char      *rmjobfailed = "Failed\n";
-static const char      *rmjobok = "Ok\n";
-
-int cq_rmjob( struct papfile *in, struct papfile *out)
-{
-    char               *start, *stop, *p;
-    int                        linelength, crlflength;
-    int                        job;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    stop = start + linelength;
-
-    for ( p = start; p < stop; p++ ) {
-       if ( *p == ' ' || *p == '\t' ) {
-           break;
-       }
-    }
-    for ( ; p < stop; p++ ) {
-       if ( *p != ' ' && *p != '\t' ) {
-           break;
-       }
-    }
-
-    *stop = '\0';
-    if ( p < stop && ( job = atoi( p )) > 0 ) {
-       lp_rmjob( job );
-       append( out, rmjobok, strlen( rmjobok ));
-    } else {
-       append( out, rmjobfailed, strlen( rmjobfailed ));
-    }
-
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return( CH_DONE );
-}
-
-int cq_listq( struct papfile *in, struct papfile *out)
-{
-    char               *start;
-    int                        linelength, crlflength;
-
-    switch ( markline( in, &start, &linelength, &crlflength )) {
-    case 0 :
-       return( 0 );
-
-    case -1 :
-       return( CH_MORE );
-
-    case -2 :
-        return( CH_ERROR );
-    }
-
-    if ( lp_queue( out )) {
-       LOG(log_error, logtype_papd, "cq_listq: lp_queue failed" );
-    }
-
-    compop();
-    CONSUME( in, linelength + crlflength );
-    return( CH_DONE );
-}
-#endif /* HAVE_CUPS */
-
-
-/*
- * Handler for RBILogin
- */
-
-static struct uam_obj *papd_uam = NULL;
-static const char *rbiloginok = "0\r";
-static const char *rbiloginbad = "-1\r";
-static const char *rbiloginerrstr = "%%[Error: SecurityError; \
-SecurityViolation: Unknown user, incorrect password or log on is \
-disabled ]%%\r%%[Flushing: rest of job (to end-of-file) will be \
-ignored ]%%\r";
-
-int cq_rbilogin( struct papfile *in, struct papfile *out)
-{
-    char               *start, *stop, *p, *begin;
-    int                        linelength, crlflength;
-    char               username[UAM_USERNAMELEN + 1] = "\0";
-    struct papd_comment        *comment = compeek();
-    char               uamtype[20];
-
-    for (;;) {
-        switch ( markline( in, &start, &linelength, &crlflength )) {
-        case 0 :
-            return( 0 );
-
-        case -1 :
-            return( CH_MORE );
-
-        case -2 :
-            return( CH_ERROR );
-        }
-
-       stop = start + linelength;
-
-        if ( comgetflags() == 0 ) { /* first line */
-           begin = start + strlen(comment->c_begin);
-           p = begin;
-
-           while (*p != ' ' && p < stop) {
-               p++;
-           }
-
-           memset(uamtype, 0, sizeof(uamtype));
-           if ((size_t)(p -begin) <= sizeof(uamtype) -1) {
-               strncpy(uamtype, begin, p - begin);
-            }
-
-           if ( !*uamtype || (papd_uam = auth_uamfind(UAM_SERVER_PRINTAUTH,
-                               uamtype, strlen(uamtype))) == NULL) {
-               LOG(log_info, logtype_papd, "Could not find uam: %s", uamtype);
-               append(out, rbiloginbad, strlen(rbiloginbad));
-               append(out, rbiloginerrstr, strlen(rbiloginerrstr));
-           } else {
-                if ( (papd_uam->u.uam_printer(p,stop,username,out)) == 0 ) {
-                    lp_person( username );
-                   append(out, rbiloginok, strlen( rbiloginok ));
-                   LOG(log_info, logtype_papd, "RBILogin: Logged in '%s'", username);
-                } else {
-                    append(out, rbiloginbad, strlen( rbiloginbad));
-                    append(out, rbiloginerrstr, strlen(rbiloginerrstr));
-                }
-           }
-            comsetflags( 1 );
-        } else {
-            if ( comcmp( start, stop, comment->c_end, 0 ) == 0 ) {
-                compop();
-                return( CH_DONE );
-            }
-        }
-
-        CONSUME( in, linelength + crlflength );
-    }
-}
-
-
-/*
- * All queries start with %%?Begin and end with %%?End.  Note that the
- * "Begin"/"End" general queries have to be last.
- */
-struct papd_comment    queries[] = {
-#ifdef KRB
-    { "%%Login: UMICHKerberosIV", NULL,                        cq_k4login,     0 },
-    { "%%?BeginUAMethodsQuery",        "%%?EndUAMethodsQuery:", cq_uameth,C_FULL },
-#endif /* KRB */
-#ifndef HAVE_CUPS
-    { "%UMICHListQueue",       NULL,                   cq_listq,  C_FULL },
-    { "%UMICHDeleteJob",       NULL,                   cq_rmjob,       0 },
-#endif /* HAVE_CUPS */
-    { "%%?BeginQuery: RBILogin ", "%%?EndQuery",       cq_rbilogin,    0 },
-    { "%%?BeginQuery",         "%%?EndQuery",          cq_query,       0 },
-    { "%%?BeginFeatureQuery",  "%%?EndFeatureQuery",   cq_feature,     0 },
-    { "%%?BeginFontQuery",     "%%?EndFontQuery",      cq_font,        0 },
-    { "%%?BeginPrinterQuery",  "%%?EndPrinterQuery",   cq_printer,C_FULL },
-    { "%%?Begin",              "%%?End",               cq_default,     0 },
-    { NULL,                    NULL,                   NULL,           0 },
-};
diff --git a/etc/papd/session.c b/etc/papd/session.c
deleted file mode 100644 (file)
index 7067f5f..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * $Id: session.c,v 1.20 2009-10-16 01:10:59 didg Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifdef HAVE_SYS_ERRNO_H
-#include <sys/errno.h>
-#endif /* HAVE_SYS_ERRNO_H */
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif /* HAVE_ERRNO_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <atalk/logger.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/pap.h>
-
-#include "file.h"
-#include "lp.h"
-#include "session.h"
-
-int ps(struct papfile *infile, struct papfile *outfile, struct sockaddr_at *sat);
-
-extern unsigned char   connid, quantum, oquantum;
-
-static char            buf[ PAP_MAXQUANTUM ][ 4 + PAP_MAXDATA ];
-static struct iovec    niov[ PAP_MAXQUANTUM ] = {
-    { buf[ 0 ],        0 },
-    { buf[ 1 ],        0 },
-    { buf[ 2 ],        0 },
-    { buf[ 3 ],        0 },
-    { buf[ 4 ],        0 },
-    { buf[ 5 ],        0 },
-    { buf[ 6 ],        0 },
-    { buf[ 7 ],        0 },
-};
-
-/*
- * Accept files until the client closes the connection.
- * Read lines of a file, until the client sends eof, after
- * which we'll send eof also.
- */
-int session(ATP atp, struct sockaddr_at *sat)
-{
-    struct timeval     tv;
-    struct atp_block   atpb;
-    struct sockaddr_at ssat;
-    struct papfile     infile, outfile;
-    fd_set             fds;
-    char               cbuf[ 578 ];
-    int                        i, cc, timeout = 0, readpending = 0;
-    u_int16_t          seq = 0, rseq = 1, netseq;
-    u_char             readport; /* uninitialized, OK 310105 */
-
-    infile.pf_state = PF_BOT;
-    infile.pf_bufsize = 0;
-    infile.pf_datalen = 0;
-    infile.pf_buf = NULL;
-    infile.pf_data = NULL;
-
-    outfile.pf_state = PF_BOT;
-    outfile.pf_bufsize = 0;
-    outfile.pf_datalen = 0;
-    outfile.pf_buf = NULL;
-    outfile.pf_data = NULL;
-
-    /*
-     * Ask for data.
-     */
-    cbuf[ 0 ] = connid;
-    cbuf[ 1 ] = PAP_READ;
-    if (++seq == 0) seq = 1;
-    netseq = htons( seq );
-    memcpy( &cbuf[ 2 ], &netseq, sizeof( netseq ));
-    atpb.atp_saddr = sat;
-    atpb.atp_sreqdata = cbuf;
-    atpb.atp_sreqdlen = 4;             /* bytes in SendData request */
-    atpb.atp_sreqto = 5;               /* retry timer */
-    atpb.atp_sreqtries = -1;           /* infinite retries */
-    if ( atp_sreq( atp, &atpb, oquantum, ATP_XO )) {
-       LOG(log_error, logtype_papd, "atp_sreq: %s", strerror(errno) );
-       return( -1 );
-    }
-
-    for (;;) {
-       /*
-        * Time between tickles.
-        */
-       tv.tv_sec = 60;
-       tv.tv_usec = 0;
-
-       /*
-        * If we don't get anything for a while, time out.
-        */
-       FD_ZERO( &fds );
-       FD_SET( atp_fileno( atp ), &fds );
-
-       do { /* do list until success or an unrecoverable error occurs */
-         if (( cc = select( FD_SETSIZE, &fds, NULL, NULL, &tv )) < 0 )
-             LOG(log_error, logtype_papd, "select: %s", strerror(errno) ); /* log all errors */
-       } while (( cc < 0 ) && (errno == 4));
-
-       if ( cc < 0 ) {
-         LOG(log_error, logtype_papd, "select: Error is unrecoverable" );
-         return( -1 );
-       }
-       if ( cc == 0 ) {
-           if ( timeout++ > 2 ) {
-               LOG(log_error, logtype_papd, "connection timed out" );
-               lp_cancel();
-               return( -1 );
-           }
-
-           /*
-            * Send a tickle.
-            */
-           cbuf[ 0 ] = connid;
-           cbuf[ 1 ] = PAP_TICKLE;
-           cbuf[ 2 ] = cbuf[ 3 ] = 0;
-           atpb.atp_saddr = sat;
-           atpb.atp_sreqdata = cbuf;
-           atpb.atp_sreqdlen = 4;              /* bytes in Tickle request */
-           atpb.atp_sreqto = 0;                /* best effort */
-           atpb.atp_sreqtries = 1;             /* try once */
-           if ( atp_sreq( atp, &atpb, 0, 0 )) {
-               LOG(log_error, logtype_papd, "atp_sreq: %s", strerror(errno) );
-               return( -1 );
-           }
-           continue;
-       } else {
-           timeout = 0;
-       }
-
-       memset( &ssat, 0, sizeof( struct sockaddr_at ));
-       switch( atp_rsel( atp, &ssat, ATP_TRESP | ATP_TREQ )) {
-       case ATP_TREQ :
-           atpb.atp_saddr = &ssat;
-           atpb.atp_rreqdata = cbuf;
-           atpb.atp_rreqdlen = sizeof( cbuf );
-           if ( atp_rreq( atp, &atpb ) < 0 ) {
-               LOG(log_error, logtype_papd, "atp_rreq: %s", strerror(errno) );
-               return( -1 );
-           }
-           /* sanity */
-           if ( (unsigned char)cbuf[ 0 ] != connid ) {
-               LOG(log_error, logtype_papd, "Bad ATP request!" );
-               continue;
-           }
-
-           switch( cbuf[ 1 ] ) {
-           case PAP_READ :
-               /*
-                * Other side is ready for some data.
-                */
-               memcpy( &netseq, &cbuf[ 2 ], sizeof( netseq ));
-               if ( netseq != 0 ) {
-                   if ( rseq != ntohs( netseq )) {
-                       break;
-                   }
-                   if ( rseq++ == 0xffff ) rseq = 1;
-               }
-               readpending = 1;
-               readport = ssat.sat_port;
-               break;
-
-           case PAP_CLOSE :
-               /*
-                * Respond to the close request.
-                * If we're in the middle of a file, clean up.
-                */
-               if (( infile.pf_state & PF_BOT ) ||
-                       ( infile.pf_datalen == 0 &&
-                       ( infile.pf_state & PF_EOF ))) {
-                   lp_print();
-               } else {
-                   lp_cancel();
-               }
-
-               niov[ 0 ].iov_len = 4;
-               ((char *)niov[ 0 ].iov_base)[ 0 ] = connid;
-               ((char *)niov[ 0 ].iov_base)[ 1 ] = PAP_CLOSEREPLY;
-               ((char *)niov[ 0 ].iov_base)[ 2 ] =
-                       ((char *)niov[ 0 ].iov_base)[ 3 ] = 0;
-               atpb.atp_sresiov = niov;
-               atpb.atp_sresiovcnt = 1;
-               if ( atp_sresp( atp, &atpb ) < 0 ) {
-                   LOG(log_error, logtype_papd, "atp_sresp: %s", strerror(errno) );
-                   exit( 1 );
-               }
-               return( 0 );
-               break;
-
-           case PAP_TICKLE :
-               break;
-           default :
-               LOG(log_error, logtype_papd, "Bad PAP request!" );
-           }
-
-           break;
-
-       case ATP_TRESP :
-           atpb.atp_saddr = &ssat;
-           for ( i = 0; i < oquantum; i++ ) {
-               niov[ i ].iov_len = PAP_MAXDATA + 4;
-           }
-           atpb.atp_rresiov = niov;
-           atpb.atp_rresiovcnt = oquantum;
-           if ( atp_rresp( atp, &atpb ) < 0 ) {
-               LOG(log_error, logtype_papd, "atp_rresp: %s", strerror(errno) );
-               return( -1 );
-           }
-
-           /* sanity */
-           if ( ((unsigned char *)niov[ 0 ].iov_base)[ 0 ] != connid ||
-                   ((char *)niov[ 0 ].iov_base)[ 1 ] != PAP_DATA ) {
-               LOG(log_error, logtype_papd, "Bad data response!" );
-               continue;
-           }
-
-           for ( i = 0; i < atpb.atp_rresiovcnt; i++ ) {
-               append( &infile,
-                       (char *)niov[ i ].iov_base + 4, niov[ i ].iov_len - 4 );
-               if (( infile.pf_state & PF_EOF ) == 0 &&
-                       ((char *)niov[ 0 ].iov_base)[ 2 ] ) {
-                   infile.pf_state |= PF_EOF;
-               }
-           }
-
-           /* move data */
-           if ( ps( &infile, &outfile, sat ) < 0 ) {
-               LOG(log_error, logtype_papd, "parse: bad return" );
-               return( -1 );   /* really?  close? */
-           }
-
-           /*
-            * Ask for more data.
-            */
-           cbuf[ 0 ] = connid;
-           cbuf[ 1 ] = PAP_READ;
-           if ( ++seq == 0 ) seq = 1;
-           netseq = htons( seq );
-           memcpy( &cbuf[ 2 ], &netseq, sizeof( netseq ));
-           atpb.atp_saddr = sat;
-           atpb.atp_sreqdata = cbuf;
-           atpb.atp_sreqdlen = 4;              /* bytes in SendData request */
-           atpb.atp_sreqto = 5;                /* retry timer */
-           atpb.atp_sreqtries = -1;            /* infinite retries */
-           if ( atp_sreq( atp, &atpb, oquantum, ATP_XO )) {
-               LOG(log_error, logtype_papd, "atp_sreq: %s", strerror(errno) );
-               return( -1 );
-           }
-           break;
-
-       case 0:
-           break;
-
-       default :
-           LOG(log_error, logtype_papd, "atp_rsel: %s", strerror(errno) );
-           return( -1 );
-       }
-
-       /* send any data that we have */
-       if ( readpending &&
-               ( outfile.pf_datalen || ( outfile.pf_state & PF_EOF ))) {
-           for ( i = 0; i < quantum; i++ ) {
-               ((char *)niov[ i ].iov_base)[ 0 ] = connid;
-               ((char *)niov[ i ].iov_base)[ 1 ] = PAP_DATA;
-               ((char *)niov[ i ].iov_base)[ 2 ] =
-                       ((char *)niov[ i ].iov_base)[ 3 ] = 0;
-
-               if ( outfile.pf_datalen > PAP_MAXDATA  ) {
-                   cc = PAP_MAXDATA;
-               } else {
-                   cc = outfile.pf_datalen;
-                   if ( outfile.pf_state & PF_EOF ) {
-                       ((char *)niov[ 0 ].iov_base)[ 2 ] = 1;  /* eof */
-                       outfile.pf_state = PF_BOT;
-                       infile.pf_state = PF_BOT;
-                   }
-               }
-
-               niov[ i ].iov_len = 4 + cc;
-               memcpy( (char *)niov[ i ].iov_base + 4, outfile.pf_data, cc );
-               CONSUME( &outfile, cc );
-               if ( outfile.pf_datalen == 0 ) {
-                   i++;
-                   break;
-               }
-           }
-           ssat.sat_port = readport;
-           atpb.atp_saddr = &ssat;
-           atpb.atp_sresiov = niov;
-           atpb.atp_sresiovcnt = i;    /* reported by stevebn@pc1.eos.co.uk */
-           if ( atp_sresp( atp, &atpb ) < 0 ) {
-               LOG(log_error, logtype_papd, "atp_sresp: %s", strerror(errno) );
-               return( -1 );
-           }
-           readpending = 0;
-       }
-    }
-}
diff --git a/etc/papd/session.h b/etc/papd/session.h
deleted file mode 100644 (file)
index 86e830f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * $Id: session.h,v 1.2 2001-06-25 20:13:45 rufustfirefly Exp $
- */
-
-#ifndef PAPD_SESSION_H
-#define PAPD_SESSION_H 1
-
-#include <atalk/atp.h>
-
-int session( ATP atp, struct sockaddr_at *sat );
-
-#endif /* PAPD_SESSION_H */
diff --git a/etc/papd/showppd.c b/etc/papd/showppd.c
deleted file mode 100644 (file)
index d023204..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * $Id: showppd.c,v 1.7 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1995 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <atalk/logger.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-
-#include "ppd.h"
-
-extern struct ppd_font         *ppd_fonts;
-
-extern struct ppd_feature      ppd_features[];
-
-
-int main(int ac, char **av)
-{
-    struct ppd_feature *pfe;
-    struct ppd_font    *pfo;
-
-    if ( ac != 2 ) {
-       fprintf( stderr, "Usage:\t%s ppdfile\n", av[ 0 ] );
-       exit( 1 );
-    }
-
-    read_ppd( av[ 1 ], 0 );
-    for ( pfo = ppd_fonts; pfo; pfo = pfo->pd_next ) {
-       printf( "Font: %s\n", pfo->pd_font );
-    }
-    for ( pfe = ppd_features; pfe->pd_name; pfe++ ) {
-       printf( "Feature: %s %s\n", pfe->pd_name, (pfe->pd_value)?pfe->pd_value:"NULL" );
-    }
-
-    exit ( 0 );
-}
diff --git a/etc/papd/uam.c b/etc/papd/uam.c
deleted file mode 100644 (file)
index 2962fad..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * $Id: uam.c,v 1.11 2009-10-15 11:39:48 didg Exp $
- *
- * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* STDC check */
-#if STDC_HEADERS
-#include <string.h>
-#else /* STDC_HEADERS */
-#ifndef HAVE_STRCHR
-#define strchr index
-#define strrchr index
-#endif /* HAVE_STRCHR */
-char *strchr (), *strrchr ();
-#ifndef HAVE_MEMCPY
-#define memcpy(d,s,n) bcopy ((s), (d), (n))
-#define memmove(d,s,n) bcopy ((s), (d), (n))
-#endif /* ! HAVE_MEMCPY */
-#endif /* STDC_HEADERS */
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <fcntl.h>
-#include <ctype.h>
-#include <atalk/logger.h>
-#include <sys/param.h>
-#include <sys/time.h>
-
-#include <netatalk/endian.h>
-#include <atalk/asp.h>
-#include <atalk/dsi.h>
-#include <atalk/afp.h>
-#include <atalk/util.h>
-
-#include "uam_auth.h"
-
-/* --- server uam functions -- */
-
-/* uam_load. uams must have a uam_setup function. */
-struct uam_mod *uam_load(const char *path, const char *name)
-{
-  char buf[MAXPATHLEN + 1], *p;
-  struct uam_mod *mod;
-  void *module;
-
-  if ((module = mod_open(path)) == NULL) {
-    LOG(log_error, logtype_papd, "uam_load(%s): failed to load: %s", name, mod_error());
-    return NULL;
-  }
-
-  if ((mod = (struct uam_mod *) malloc(sizeof(struct uam_mod))) == NULL) {
-    LOG(log_error, logtype_papd, "uam_load(%s): malloc failed", name);
-    goto uam_load_fail;
-  }
-
-  strlcpy(buf, name, sizeof(buf));
-  if ((p = strchr(buf, '.')))
-    *p = '\0';
-  if ((mod->uam_fcn = mod_symbol(module, buf)) == NULL) {
-    goto uam_load_err;
-  }
-
-  if (mod->uam_fcn->uam_type != UAM_MODULE_SERVER) {
-    LOG(log_error, logtype_papd, "uam_load(%s): attempted to load a non-server module",
-          name);
-    goto uam_load_err;
-  }
-
-  /* version check would go here */
-
-  if (!mod->uam_fcn->uam_setup || 
-      ((*mod->uam_fcn->uam_setup)(name) < 0)) {
-    LOG(log_error, logtype_papd, "uam_load(%s): uam_setup failed", name);
-    goto uam_load_err;
-  }
-
-  mod->uam_module = module;
-  return mod;
-
-uam_load_err:
-  free(mod);
-uam_load_fail:
-  mod_close(module);
-  return NULL;
-}
-
-/* unload the module. we check for a cleanup function, but we don't
- * die if one doesn't exist. however, things are likely to leak without one.
- */
-void uam_unload(struct uam_mod *mod)
-{
-  if (mod->uam_fcn->uam_cleanup)
-    (*mod->uam_fcn->uam_cleanup)();
-  mod_close(mod->uam_module);
-  free(mod);
-}
-
-/* -- client-side uam functions -- */
-
-/* set up stuff for this uam. */
-int uam_register(const int type, const char *path, const char *name, ...)
-{
-  va_list ap;
-  struct uam_obj *uam;
-  int ret;
-
-  if (!name)
-    return -1;
-
-  /* see if it already exists. */
-  if ((uam = auth_uamfind(type, name, strlen(name)))) {
-    if (strcmp(uam->uam_path, path)) {
-      /* it exists, but it's not the same module. */
-      LOG(log_error, logtype_papd, "uam_register: \"%s\" already loaded by %s",
-            name, path);
-      return -1;
-    }
-    uam->uam_count++;
-    return 0;
-  }
-  
-  /* allocate space for uam */
-  if ((uam = calloc(1, sizeof(struct uam_obj))) == NULL)
-    return -1;
-
-  uam->uam_name = name;
-  uam->uam_path = strdup(path);
-  uam->uam_count++;
-
-  va_start(ap, name);
-  switch (type) {
-  case UAM_SERVER_LOGIN: /* expect three arguments */
-    uam->u.uam_login.login = va_arg(ap, void *);
-    uam->u.uam_login.logincont = va_arg(ap, void *);
-    uam->u.uam_login.logout = va_arg(ap, void *);
-    break;
-  case UAM_SERVER_CHANGEPW: /* one argument */
-    uam->u.uam_changepw = va_arg(ap, void *);
-    break;
-  case UAM_SERVER_PRINTAUTH: /* x arguments */
-    uam->u.uam_printer = va_arg(ap, void *);
-    break;
-  default:
-    break;
-  }
-  va_end(ap);
-
-  /* attach to other uams */
-  ret = auth_register(type, uam);
-  if (ret) {
-    free(uam->uam_path);
-    free(uam);
-  }
-
-  return ret;
-}
-
-void uam_unregister(const int type, const char *name)
-{
-  struct uam_obj *uam;
-
-  if (!name)
-    return;
-
-  uam = auth_uamfind(type, name, strlen(name));
-  if (!uam || --uam->uam_count > 0)
-    return;
-
-  auth_unregister(uam);
-  free(uam->uam_path);
-  free(uam);
-}
-
-/* Crap to support uams which call this afpd function */
-int uam_afpserver_option(void *private _U_, const int what _U_, void *option _U_,
-                         size_t *len _U_)
-{
-       return(0);
-}
-
-/* --- helper functions for plugin uams --- */
-
-struct passwd *uam_getname(void *dummy _U_, char *name, const int len)
-{
-  struct passwd *pwent;
-  char *user;
-  int i;
-
-  if ((pwent = getpwnam(name)))
-    return pwent;
-
-#ifndef NO_REAL_USER_NAME
-  for (i = 0; i < len; i++)
-    name[i] = tolower(name[i]);
-
-  setpwent();
-  while ((pwent = getpwent())) {
-    if ((user = strchr(pwent->pw_gecos, ','))) *user = '\0';
-    user = pwent->pw_gecos;
-
-    /* check against both the gecos and the name fields. the user
-     * might have just used a different capitalization. */
-    if ((strncasecmp(user, name, len) == 0) ||
-        (strncasecmp(pwent->pw_name, name, len) == 0)) {
-      strncpy(name, pwent->pw_name, len);
-      break;
-    }
-  }
-  endpwent();
-#endif /* NO_REAL_USER_NAME */
-
-  /* os x server doesn't keep anything useful if we do getpwent */
-  return pwent ? getpwnam(name) : NULL;
-}
-
-
-int uam_checkuser(const struct passwd *pwd)
-{
-  char *p;
-
-  if (!pwd || !pwd->pw_shell || (*pwd->pw_shell == '\0')) 
-    return -1;
-
-  while ((p = getusershell())) {
-    if ( strcmp( p, pwd->pw_shell ) == 0 ) 
-      break;
-  }
-  endusershell();
-
-#ifndef DISABLE_SHELLCHECK
-  if (!p) {
-    LOG(log_info, logtype_papd, "illegal shell %s for %s",pwd->pw_shell,pwd->pw_name);
-    return -1;
-  }
-#endif /* DISABLE_SHELLCHECK */
-
-  return 0;
-}
-
-
diff --git a/etc/papd/uam_auth.h b/etc/papd/uam_auth.h
deleted file mode 100644 (file)
index 0cc9156..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Id: uam_auth.h,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
- * All Rights Reserved.  See COPYRIGHT.
- *
- * interface between uam.c and auth.c
- */
-
-#ifndef PAPD_UAM_AUTH_H
-#define PAPD_UAM_AUTH_H 1
-
-#include <sys/cdefs.h>
-#include <pwd.h>
-
-#include <atalk/uam.h>
-
-#include "file.h"
-
-struct uam_mod {
-  void *uam_module;
-  struct uam_export *uam_fcn;
-  struct uam_mod *uam_prev, *uam_next;
-};
-
-struct uam_obj {
-  const char *uam_name; /* authentication method */
-  char *uam_path; /* where it's located */
-  int uam_count;
-  union {
-    struct {
-      int (*login) (void *, struct passwd **, 
-                       char *, int, char *, int *);
-      int (*logincont) (void *, struct passwd **, char *,
-                           int, char *, int *);
-      void (*logout) (void);
-    } uam_login;
-    int (*uam_changepw) (void *, char *, struct passwd *, char *,
-                            int, char *, int *);
-    int (*uam_printer) (char *, char *, char *, struct papfile *);
-  } u;
-  struct uam_obj *uam_prev, *uam_next;
-};
-
-#define uam_attach(a, b) do { \
-    (a)->uam_prev->uam_next = (b); \
-    (b)->uam_prev = (a)->uam_prev; \
-    (b)->uam_next = (a); \
-    (a)->uam_prev = (b); \
-} while (0)                                 
-
-#define uam_detach(a) do { \
-    (a)->uam_prev->uam_next = (a)->uam_next; \
-    (a)->uam_next->uam_prev = (a)->uam_prev; \
-} while (0)
-
-#define UAM_LIST(type) (((type) == UAM_SERVER_LOGIN) ? &uam_login : \
-                (((type) == UAM_SERVER_CHANGEPW) ? &uam_changepw : \
-                (((type) == UAM_SERVER_PRINTAUTH) ? &uam_printer : NULL)))
-
-
-extern struct uam_mod *uam_load (const char *, const char *);
-extern void uam_unload (struct uam_mod *);
-
-/* auth.c */
-int auth_load (const char *, const char *);
-int auth_register (const int, struct uam_obj *);
-#define auth_unregister(a) uam_detach(a)
-struct uam_obj *auth_uamfind (const int, const char *, const int);
-void auth_unload (void);
-int getuamnames (const int, char *);
-
-#endif /* uam_auth.h */
diff --git a/etc/psf/.gitignore b/etc/psf/.gitignore
deleted file mode 100644 (file)
index 5138d27..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-psf
-psa
-.deps
-.libs
-.gitignore
-psa.o psf.o
diff --git a/etc/psf/Makefile.am b/etc/psf/Makefile.am
deleted file mode 100644 (file)
index 8cb795a..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# Makefile.am for etc/psf/
-
-libexec_PROGRAMS = psf psa
-libexec_SCRIPTS = etc2ps.sh
-
-pkgdata_DATA = pagecount.ps
-
-psf_SOURCES = psf.c
-psa_SOURCES = psa.c
-
-AM_CFLAGS = -DZEROWIDTH \
-       -D_PATH_PAP=\"$(bindir)/pap\" \
-       -D_PATH_PSORDER=\"$(bindir)/psorder\" \
-       -D_PATH_PSA=\"$(libexecdir)/psa\" \
-       -D_PATH_PSFILTER=\"$(libexecdir)/etc2ps.sh\" \
-       -D_PATH_PAGECOUNT=\"$(pkgdatadir)/pagecount.ps\"
-
-EXTRA_DIST = $(libexec_SCRIPTS) $(pkgdata_DATA)
-
-# declare links
-psf_LINKS = ofpap ifpap tfpap ifpaprev tfpaprev ofwpap ifwpap \
-        tfwpap ifwpaprev tfwpaprev ofmpap ifmpap tfmpap ifmpaprev \
-        tfmpaprev ofwmpap ifwmpap tfwmpap ifwmpaprev tfwmpaprev
-
-
-#
-# install sections for links
-#
-
-install-exec-hook:
-       @list='$(psf_LINKS)'; for l in $$list; do \
-               rm $(DESTDIR)$(libexecdir)/$$l 2>/dev/null || true; \
-               (cd $(DESTDIR)$(libexecdir) && $(LN_S) psf $$l);  \
-       done
-
-#
-# uninstall sections for links
-#
-
-uninstall-hook:
-       @list='$(psf_LINKS)'; for l in $$list; do \
-               rm -f $(DESTDIR)$(libexecdir)/$$l; \
-       done
-
-#
-# cleanup
-#
-
-CLEANFILES = $(psf_LINKS)
diff --git a/etc/psf/etc2ps.sh b/etc/psf/etc2ps.sh
deleted file mode 100644 (file)
index 3f1637b..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/sh
-#
-# This filter is called by psf to convert "other" formats to PostScript.
-# psf handles text and PostScript native.  "Other" formats, e.g. DVI, C/A/T,
-# need to be converted before the page reverser and the printer can use
-# them.
-#
-# $0 begins with the filter name, e.g. df, tf.  Each format is a separate
-# tag in the case.
-#
-
-DVIPSPATH=/usr/local/tex/bin
-DVIPS=/usr/local/tex/bin/dvips
-DVIPSARGS="-f -q"
-
-TROFF2PS=/usr/local/psroff/troff2/troff2ps
-TROFF2PSARGS="-Z -O-.10"
-
-PATH=/usr/bin:$DVIPSPATH; export PATH
-
-case $1 in
-
-#
-# Use "dvips" by Radical Eye Software to convert TeX DVI files to PostScript.
-# Note that you *must* have METAFONT, etc, in your path.
-#
-df*)
-    if [ -x "$DVIPS" ]; then
-       TEMPFILE=`mktemp -t psfilter.XXXXXX` || exit 1
-       cat > $TEMPFILE
-       $DVIPS $DVIPSARGS < $TEMPFILE
-       rm -f $TEMPFILE
-    else
-       echo "$0: filter dvips uninstalled" 1>&2
-       exit 2
-    fi
-    ;;
-
-#
-# troff2ps is from psroff by Chris Lewis.
-#
-tf*)
-    if [ -x "$TROFF2PS" ]; then
-       exec $TROFF2PS $TROFF2PSARGS
-    else
-       echo "$0: filter troff2ps uninstalled" 1>&2
-       exit 2
-    fi
-    ;;
-
-*)
-    echo "$0: filter $1 unavailable" 1>&2
-    exit 2
-    ;;
-esac
-
-exit 0
diff --git a/etc/psf/pagecount.ps b/etc/psf/pagecount.ps
deleted file mode 100644 (file)
index fe650e1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-%!PS-Adobe-3.0 Query
-%%?BeginQuery: PageCount
-statusdict begin pagecount (*) print = flush end
-%%?EndQuery: Unknown
-%%EOF
diff --git a/etc/psf/psa.c b/etc/psf/psa.c
deleted file mode 100644 (file)
index 2606a7c..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * $Id: psa.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1995 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- * PostScript Accounting, psa.
- *
- * psa is invoked by psf, as output for a communication program.  The
- * communication program is expected to send a small program before and
- * after each job, which causes the page count to be emitted in a well
- * known format.  psa reads its input, looking for page counts and other
- * interesting data.  Any data that it doesn't understand, it emits to
- * stderr, the lpd log file.  Data that it does understand may be written
- * to a status file or logged.  Once all input has been received, psa
- * subtracts the beginning and end page counts, and log an accounting
- * record in the accounting file.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main( int ac, char **av)
-{
-    FILE       *af;
-    char       *acc, *user, *host;
-    char       buf[ 1024 ], *p, *end;
-    int                cc, n, ipc = -1, fpc = -1;
-
-    if ( ac != 4 ) {
-       fprintf( stderr, "Usage:\t%s accounting-file user host\n", av[ 0 ] );
-       exit( 2 );
-    }
-
-    acc = av[ 1 ];
-    user = av[ 2 ];
-    host = av[ 3 ];
-
-    /*
-     * Explain n = !n ...  Is there no beauty in truth?
-     */
-    while (( cc = read( 0, buf, sizeof( buf ))) > 0 ) {
-       if ( ipc < 0 && *buf == '*' ) {
-           /* find initial pagecount */
-           for ( p = buf, end = buf + cc; p < end; p++ ) {
-               if ( *p == '\n' || *p == '\r' ) {
-                   break;
-               }
-           }
-           if ( p == end ) {
-               fprintf( stderr, "Can't find initial page count!\n" );
-               exit( 2 );
-           }
-
-           p++;
-           ipc = atoi( buf + 1 );
-           cc -= ( p - buf );
-           if ( cc != 0 ) {
-               bcopy( p, buf, cc );
-           }
-       } else {
-           /* find final pagecount */
-           for ( p = buf + cc - 1; p >= buf; p-- ) {
-               if ( *p != '\n' && *p != '\r' ) {
-                   break;
-               }
-           }
-           if ( p < buf ) {
-               fprintf( stderr, "Can't find final page count!\n" );
-               exit( 2 );
-           }
-
-           for ( ; p >= buf; p-- ) {
-               if ( *p == '\n' || *p == '\r' ) {
-                   break;
-               }
-           }
-
-           if ( p < buf ) {
-               p = buf;
-           } else {
-               cc -= p - buf;
-               p++;
-           }
-
-           if ( *p == '*' ) {
-               n = atoi( p + 1 );
-#define max(x,y)       ((x)>(y)?(x):(y))
-               fpc = max( n, fpc );
-           }
-       }
-       if ( cc != 0 && write( 2, buf, cc ) != cc ) {
-           fprintf( stderr, "write 1: 2 %p %d\n", buf, cc );
-           perror( "write" );
-           exit( 2 );
-       }
-    }
-    if ( cc < 0 ) {
-       perror( "read" );
-       exit( 2 );
-    }
-
-    if ( ipc < 0 ) {
-       fprintf( stderr, "Didn't find initial page count!\n" );
-       exit( 2 );
-    }
-
-    if ( fpc < 0 ) {
-       fprintf( stderr, "Didn't find final page count!\n" );
-       exit( 2 );
-    }
-
-    /*
-     * Write accounting record.
-     */
-    if (( af = fopen( acc, "a" )) != NULL ) {
-       fprintf( af, "%7.2f\t%s:%s\n", (float)( fpc - ipc ), host, user );
-    } else {
-       perror( acc );
-       exit( 2 );
-    }
-
-    exit( 0 );
-}
diff --git a/etc/psf/psf.c b/etc/psf/psf.c
deleted file mode 100644 (file)
index 535daee..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-/*
- * $Id: psf.c,v 1.13 2009-10-16 01:50:50 didg Exp $
- *
- * Copyright (c) 1990,1995 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- * PostScript Filter, psf.
- *
- * Handles both PostScript files and text files.  Files with the
- * '%!' PostScript header are sent directly to the printer,
- * unmodified.  Text files are first converted to PostScript,
- * then sent.  Printers may be directly attached or on an AppleTalk
- * network.  Other media are possible.  Currently, psf invokes
- * pap to send files to AppleTalk-ed printers.  Replace the pap*
- * variables to use another program for communication.  psf only
- * converts plain-text.  If called as "tf" or "df", psf will invoke
- * a troff or dvi to PostScript converter.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#define FUCKED
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <sys/time.h>
-
-/* POSIX.1 sys/wait.h check */
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif /* HAVE_SYS_WAIT_H */
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif /* ! WEXITSTATUS */
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif /* ! WIFEXITED */
-
-#include <sys/file.h>
-#include <syslog.h>
-#include <atalk/paths.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <signal.h>
-#include <errno.h>
-
-/* Forward Declarations */
-int pexecv(char *path, char *argv[]);
-int copyio();
-int textps();
-
-static char            psapath[] = _PATH_PSA;
-static char            *psaargv[] = { "psa", NULL, NULL, NULL, NULL };
-
-/*
- * If we're not doing accounting, we just call pap as below.
- * If we are doing accounting, we call pap twice.  The first time,
- * we call it with "-E" in arg 2, pagecount.ps in arg 3, and "-" in
- * arg 4.  The second time, we call it with "-c" in arg 2, pagecount.ps
- * in arg 3, and 0 in arg 4.
- */
-static char            pappath[] = _PATH_PAP;
-static char            *papargv[] = { "pap", "-sstatus", NULL, NULL, NULL, NULL, NULL, NULL };
-
-static char            revpath[] = _PATH_PSORDER;
-static char            *revargv[] = { "psorder", "-d", NULL };
-
-static char            *filtargv[] = { NULL, NULL, NULL };
-
-static char            inbuf[ 1024 * 8 ];
-static int             inlen;
-
-static int             literal;
-static int             width = 80, length = 66, indent = 0;
-static char            *prog, *name, *host;
-
-static struct papersize {
-    int                width;
-    int                length;
-   float       win;
-    float      lin;
-} papersizes[] = {
-    { 80, 66, 8.5, 11.0 },                     /* US Letter */
-    { 80, 70, 8.27, 11.69 },                   /* A4 */
-};
-
-int main( int ac, char **av)
-{
-    int                        c, rc, children = 0;
-#ifdef FUCKED
-    int                        psafileno = 0, multiconn = 0, waitidle = 0, waitidle2 = 0;
-#endif /* FUCKED */
-    int                        status;
-    extern char                *optarg;
-    extern int         optind, opterr;
-
-    opterr = 0;
-    if (( prog = rindex( av[ 0 ], '/' )) == NULL ) {
-       prog = av[ 0 ];
-    } else {
-       prog++;
-    }
-#ifdef ultrix
-    openlog( prog, LOG_PID );
-#else /* ultrix */
-    openlog( prog, LOG_PID, LOG_LPR );
-#endif /* ultrix */
-
-    while (( c = getopt( ac, av, "P:C:D:F:L:J:x:y:n:h:w:l:i:c" )) != EOF ) {
-       switch ( c ) {
-       case 'n' :
-           name = optarg;
-           break;
-
-       case 'h' :
-           host = optarg;
-           break;
-
-       case 'w' :
-           width = atoi( optarg );
-#ifdef ZEROWIDTH
-           /*
-            * Some version of lpd pass 0 for the page width.
-            */
-           if ( width == 0 ) {
-               width = 80;
-           }
-#endif /* ZEROWIDTH */
-           break;
-
-       case 'l' :
-           length = atoi( optarg );
-           break;
-
-       case 'i' :
-           indent = atoi( optarg );
-           break;
-
-       case 'c' :      /* Print control chars */
-           literal++;
-           break;
-
-       case 'F' :
-       case 'L' :
-       case 'J' :
-       case 'P' :
-       case 'x' :
-       case 'y' :
-           break;
-       
-#ifdef notdef
-       default :
-           syslog( LOG_ERR, "bad option: %c", c );
-           exit( 2 );
-#endif /* notdef */
-       }
-    }
-    if ( ac - optind > 1 ) {
-       syslog( LOG_ERR, "Too many arguments" );
-       exit( 2 );
-    }
-#ifdef FUCKED
-    if ( index( prog, 'w' )) {
-       waitidle++;
-    }
-    if ( index( prog, 'W' )) {
-       waitidle2++;
-    }
-    if ( index( prog, 'm' )) {
-       multiconn++;
-    }
-#endif /* FUCKED */
-
-    syslog( LOG_INFO, "starting for %s", name ? name : "?" );
-
-restart:
-    if (( inlen = read( 0, inbuf, sizeof( inbuf ))) < 0 ) {
-       syslog( LOG_ERR, "read: %s", strerror(errno) );
-       exit( 1 );
-    }
-    if ( inlen == 0 ) {        /* nothing to be done */
-       syslog( LOG_INFO, "done" );
-       exit( 0 );
-    }
-
-    /*
-     * If we've been given an accounting file, start the accounting
-     * process.
-     */
-    if ( optind < ac ) {
-       /* build arguments */
-       psaargv[ 1 ] = av[ optind ];
-       psaargv[ 2 ] = name;
-       psaargv[ 3 ] = host;
-       if (( c = pexecv( psapath, psaargv )) < 0 ) {
-           syslog( LOG_ERR, "%s: %s", psapath, strerror(errno) );
-           exit( 2 );
-       }
-       children++;
-       syslog( LOG_INFO, "accounting with psa[%d]", c );
-    }
-
-    /*
-     * Check prog's name to decide what programs to execute.
-     */
-    if ( strstr( prog, "pap" ) != NULL ) {
-       if ( optind < ac ) {    /* accounting */
-#ifdef FUCKED
-           if ( multiconn ) {
-               psafileno = getdtablesize();
-               psafileno--;
-               dup2( 1, psafileno );
-
-               if ( waitidle2 ) {
-                   papargv[ 2 ] = "-W";
-                   papargv[ 3 ] = "-c";
-                   papargv[ 4 ] = "-E";
-                   papargv[ 5 ] = _PATH_PAGECOUNT;
-                   papargv[ 6 ] = "-";
-                   papargv[ 7 ] = NULL;
-               } else if ( waitidle ) {
-                   papargv[ 2 ] = "-w";
-                   papargv[ 3 ] = "-c";
-                   papargv[ 4 ] = "-E";
-                   papargv[ 5 ] = _PATH_PAGECOUNT;
-                   papargv[ 6 ] = "-";
-                   papargv[ 7 ] = NULL;
-               } else {
-                   papargv[ 2 ] = "-c";
-                   papargv[ 3 ] = "-E";
-                   papargv[ 4 ] = _PATH_PAGECOUNT;
-                   papargv[ 5 ] = "-";
-                   papargv[ 6 ] = NULL;
-               }
-           } else {
-               /*
-                * This is how it should be done.
-                */
-               papargv[ 2 ] = "-c";
-               papargv[ 3 ] = _PATH_PAGECOUNT;
-               papargv[ 4 ] = "-";
-               papargv[ 5 ] = _PATH_PAGECOUNT;
-               papargv[ 6 ] = NULL;
-           }
-#endif /* FUCKED */
-       } else {
-           papargv[ 2 ] = "-c";
-           papargv[ 3 ] = "-E";
-           papargv[ 4 ] = NULL;
-       }
-
-       if (( c = pexecv( pappath, papargv )) < 0 ) {
-           syslog( LOG_ERR, "%s: %s", pappath, strerror(errno) );
-           exit( 2 );
-       }
-       children++;
-       syslog( LOG_INFO, "sending to pap[%d]", c );
-    }
-
-    /*
-     * Might be a good idea to have both a "forw" and a "rev", so that
-     * reversed documents can be reordered for the printing device.
-     */
-    if ( strstr( prog, "rev" ) != NULL ) {
-       if (( c = pexecv( revpath, revargv )) < 0 ) {
-           syslog( LOG_ERR, "%s: %s", revpath, strerror(errno) );
-           exit( 2 );
-       }
-       syslog( LOG_INFO, "sending to rev[%d]", c );
-       children++;
-    }
-
-    /*
-     * Invoke an external (script) filter to produce PostScript from
-     * non-text input.
-     */
-    if ( *prog != 'i' && *prog != 'o' && *( prog + 1 ) == 'f' ) {
-       filtargv[ 0 ] = filtargv[ 1 ] = prog;
-       if (( c = pexecv( _PATH_PSFILTER, filtargv )) < 0 ) {
-           syslog( LOG_ERR, "%s: %s", _PATH_PSFILTER, strerror(errno) );
-           exit( 2 );
-       }
-       syslog( LOG_INFO, "external filter[%d]", c );
-       children++;
-       rc = copyio();          /* external filter */
-    } else {
-       if ( inlen >= 2 && inbuf[ 0 ] == '%' && inbuf[ 1 ] == '!' ) {
-           syslog( LOG_INFO, "PostScript" );
-           rc = copyio();      /* PostScript */
-       } else if ( inlen >= 2 && inbuf[ 0 ] == '\033' && inbuf[ 1 ] == '%' ) {
-           syslog( LOG_INFO, "PostScript w/PJL" );
-           rc = copyio();      /* PostScript */
-       } else {
-           syslog( LOG_INFO, "straight text" );
-           rc = textps();      /* straight text */
-       }
-    }
-
-#ifdef FUCKED
-    if ( strstr( prog, "pap" ) != NULL && optind < ac && multiconn ) {
-       dup2( psafileno, 1 );
-       close( psafileno );
-       papargv[ 2 ] = "-c";
-       if ( waitidle2 ) {
-           papargv[ 3 ] = "-W";
-           papargv[ 4 ] = _PATH_PAGECOUNT;
-           papargv[ 5 ] = NULL;
-       } else if ( waitidle ) {
-           papargv[ 3 ] = "-w";
-           papargv[ 4 ] = _PATH_PAGECOUNT;
-           papargv[ 5 ] = NULL;
-       } else {
-           papargv[ 3 ] = _PATH_PAGECOUNT;
-           papargv[ 4 ] = NULL;
-       }
-
-       if (( c = pexecv( pappath, papargv )) < 0 ) {
-           syslog( LOG_ERR, "%s: %s", pappath, strerror(errno) );
-           exit( 2 );
-       }
-       children++;
-       syslog( LOG_INFO, "pagecount with pap[%d]", c );
-    }
-#endif /* FUCKED */
-
-    if ( children ) {
-       close( 1 );
-    }
-    while ( children ) {
-       if (( c = wait3( &status, 0, NULL )) < 0 ) {
-           syslog( LOG_ERR, "wait3: %s", strerror(errno) );
-           exit( 1 );
-       }
-       if ( WIFEXITED( status )) {
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(x) ((x).w_status)
-#endif /* WEXITSTATUS */
-           if ( WEXITSTATUS( status ) != 0 ) {
-               syslog( LOG_ERR, "%d died with %d", c, WEXITSTATUS( status ));
-               exit( WEXITSTATUS( status ));
-           } else {
-               syslog( LOG_INFO, "%d done", c );
-               children--;
-           }
-       } else {
-           syslog( LOG_ERR, "%d died badly", c );
-           exit( 1 );
-       }
-    }
-
-    if ( rc == 3 ) {
-       syslog( LOG_INFO, "pausing" );
-       kill( getpid(), SIGSTOP );
-       syslog( LOG_INFO, "restarting" );
-       goto restart;
-    }
-
-    syslog( LOG_INFO, "done" );
-    exit( rc );
-}
-
-int copyio(void)
-{
-    /* implement the FSM needed to do the suspend. Note that
-     * the last characters will be \031\001 so don't worry
-     * Fun things: 1. \031\001 should not be written to output device
-     *  2. The \031 can be last char of one read, \001 first of next
-     *      - we need to write \031 if not followed by \001
-     */
-    struct timeval     tv;
-    fd_set             fdset;
-    int                        ctl = 0;
-
-notdone:
-    do {
-       /*
-        * First, \031 and \001 *must* be the last things in the buffer
-        * (\001 can be the first thing in the next buffer).  There's no
-        * need to scan any of the intervening bytes.  Second, if there's
-        * more input, the escape sequence was bogus, and we should keep
-        * reading.
-        */
-       if ( inlen == 1 ) {
-           if ( ctl == 1 ) {
-               if ( inbuf[ 0 ] == '\001' ) {
-                   ctl = 2;
-                   break;
-               }
-               if ( write( 1, "\031", 1 ) != 1 ) {
-                   syslog( LOG_ERR, "write: %s", strerror(errno) );
-                   return( 1 );
-               }
-               ctl = 0;
-           }
-
-           if ( inbuf[ 0 ] == '\031' ) {
-               ctl = 1;
-           }
-
-       } else {
-           if ( ctl == 1 ) {
-               if ( write( 1, "\031", 1 ) != 1 ) {
-                   syslog( LOG_ERR, "write: %s", strerror(errno) );
-                   return( 1 );
-               }
-           }
-           ctl = 0;
-           if ( inbuf[ inlen - 2 ] == '\031' &&
-                   inbuf[ inlen - 1 ] == '\001' ) {
-               ctl = 2;
-           } else if ( inbuf[ inlen - 1 ] == '\031' ) {
-               ctl = 1;
-           }
-       }
-
-       inlen -= ctl;
-       if (( inlen > 0 ) && ( write( 1, inbuf, inlen ) != inlen )) {
-           syslog( LOG_ERR, "write: %s", strerror(errno) );
-           return( 1 );
-       }
-       if ( ctl == 2 ) {
-           break;
-       }
-    } while (( inlen = read( 0, inbuf, sizeof( inbuf ))) > 0 );
-
-    if ( ctl == 2 ) {
-       tv.tv_sec = 2;
-       tv.tv_usec = 0;
-       FD_ZERO( &fdset );
-       FD_SET( 0, &fdset );
-       if ( select( 1, &fdset, NULL, NULL, &tv ) != 0 ) {
-           if (( inlen = read( 0, inbuf, sizeof( inbuf ))) > 0 ) {
-               goto notdone;
-           }
-       }
-    }
-
-    if ( inlen < 0 ) {
-       syslog( LOG_ERR, "read: %s", strerror(errno) );
-       return( 1 );
-    }
-
-    if ( ctl == 1 ) {
-       if ( write( 1, "\031", 1 ) != 1 ) {
-           syslog( LOG_ERR, "write: %s", strerror(errno) );
-           return( 1 );
-       }
-    } else if ( ctl == 2 ) {
-       return( 3 );
-    }
-    return( 0 );
-}
-
-static char            *font = "Courier";
-static int             point = 11;
-
-static char            pspro[] = "\
-/GSV save def                                          % global VM\n\
-/SP {\n\
-       /SV save def                                    % save vmstate\n\
-       dup /H exch def                                 % save font height\n\
-       exch findfont exch scalefont setfont            % select font\n\
-       ( ) stringwidth pop /W exch def                 % save font width\n\
-       0.5 sub 72 mul /CY exch def                     % save start Y\n\
-       pop 0.5 add 72 mul /CX exch def                 % save start X\n\
-       CX CY moveto                                    % make current point\n\
-} bind def\n\
-/S /show load def\n\
-/NL { CX CY H sub dup /CY exch def moveto } bind def\n\
-/CR { CX CY moveto } bind def\n\
-/B { W neg 0 rmoveto}bind def\n\
-/T { W mul 0 rmoveto}bind def\n\
-/EP { SV restore showpage } bind def\n\
-%%EndProlog\n";
-
-int textps(void)
-{
-    struct papersize   papersize;
-    int                        state = 0, line = 0, col = 0, npages = 0, rc;
-    unsigned int       i;
-    char               *p, *end;
-
-#define elements(x)    (sizeof(x)/sizeof((x)[0]))
-    for ( i = 0; i < elements( papersizes ); i++ ) {
-       if ( width == papersizes[ 0 ].width &&
-               length == papersizes[ 0 ].length ) {
-           papersize = papersizes[ i ];
-           break;
-       }
-    }
-    if ( i >= elements( papersizes )) {
-       papersize = papersizes[ 0 ];            /* default */
-    }
-
-#define ST_AVAIL               (1<<0)
-#define ST_CONTROL             (1<<1)
-#define ST_PAGE                        (1<<2)
-    /*
-     * convert text lines to postscript.
-     * A grungy little state machine. If I was more creative, I could
-     * probably think of a better way of doing this...
-     */
-    do {
-       p = inbuf;
-       end = inbuf + inlen;
-       while ( p < end ) {
-           if (( state & ST_PAGE ) == 0 && *p != '\031' && *p != '\001' ) {
-               if ( npages == 0 ) {
-                   printf( "%%!PS-Adobe-2.0\n%%%%Pages: (atend)\n" );
-                   printf( "%%%%DocumentFonts: %s\n", font );
-                   fflush( stdout );
-
-                   /* output postscript prologue: */
-                   if ( write( 1, pspro, sizeof( pspro ) - 1 ) !=
-                           sizeof( pspro ) - 1 ) {
-                       syslog( LOG_ERR, "write prologue: %s", strerror(errno) );
-                       return( 1 );
-                   }
-                   if ( name && host ) {
-                       printf( "statusdict /jobname (%s@%s) put\n", name,
-                               host );
-                   }
-               }
-
-               printf( "%%%%Page: ? %d\n", ++npages );
-               printf( "%d %f %f /%s %d SP\n", indent,
-                       papersize.win, papersize.lin, font, point );
-               state |= ST_PAGE;
-           }
-           if ( state & ST_CONTROL && *p != '\001' ) {
-               /* It is a very bad thing to toss a job because it contains
-                * unprintable characters.  Instead, we will convert them to
-                * question marks.  This is adapted from a solution described
-                * by Werner Eugster <eugster@giub.unibe.ch> on his ApplePrint
-                * webpage (http://www.giub.unibe.ch/~eugster/appleprint.html).
-                *
-                * Note that this is rather ugly code.  The same change is
-                * applied identically at two different locations in this file.
-                * It would be better someday to combine the two.
-                */
-               if ( !literal ) {
-                       fprintf( stderr,
-                               "unprintable character (0x%x) converted to ?!\n",
-                               (unsigned char)*p );
-                       putchar( '?' ); /* Replace unprintable char with a question mark. */
-               } else {
-                       printf( "\\%o", (unsigned char)031 );
-               }
-               state &= ~ST_CONTROL;
-               col++;
-           }
-
-           switch ( *p ) {
-           case '\n' :         /* end of line */
-               if ( state & ST_AVAIL ) {
-                   printf( ")S\n" );
-                   state &= ~ST_AVAIL;
-               }
-               printf( "NL\n" );
-               line++;
-               col = 0;
-               if ( line >= length ) {
-                   printf( "EP\n" );
-                   state &= ~ST_PAGE;
-                   line = 0;
-               }
-               break;
-
-           case '\r' :         /* carriage return (for overtyping) */
-               if ( state & ST_AVAIL ) {
-                   printf( ")S CR\n" );
-                   state &= ~ST_AVAIL;
-               }
-               col = 0;
-               break;
-
-           case '\f' :         /* form feed */
-               if ( state & ST_AVAIL ) {
-                   printf( ")S\n" );
-                   state &= ~ST_AVAIL;
-               }
-               printf( "EP\n" );
-               state &= ~ST_PAGE;
-               line = 0;
-               col = 0;
-               break;
-
-           case '\b' :         /* backspace */
-               /* show line, back up one character */
-               if ( state & ST_AVAIL ) {
-                   printf( ")S\n" );
-                   state &= ~ST_AVAIL;
-               }
-               printf( "B\n" );
-               col--;
-               break;
-
-           case '\t' :         /* tab */
-               if ( state & ST_AVAIL ) {
-                   printf( ")S\n" );
-                   state &= ~ST_AVAIL;
-               }
-               printf( "%d T\n", 8 - ( col % 8 ));
-               col += 8 - ( col % 8 );
-               break;
-
-           /*
-            * beginning of lpr control sequence
-            */
-           case '\031' :
-               state |= ST_CONTROL;
-               break;
-
-           case '\001' :       /* lpr control sequence */
-               if ( state & ST_CONTROL ) {
-                   rc = 3;
-                   goto out;
-               }
-               /* FALLTHROUGH */
-
-           case '\\' :
-           case ')' :
-           case '(' :
-               if (( state & ST_AVAIL ) == 0 ) {
-                   printf( "(" );
-                   state |= ST_AVAIL;
-               }
-               putchar( '\\' );
-               /* FALLTHROUGH */
-
-           default :
-               if (( state & ST_AVAIL ) == 0 ) {
-                   printf( "(" );
-                   state |= ST_AVAIL;
-               }
-               if ( !isascii( *p ) || !isprint( *p )) {
-                   if ( !literal ) {
-                        fprintf( stderr,
-                           "unprintable character (0x%x) converted to ?!\n",
-                           (unsigned char)*p );
-                       putchar( '?' ); /* Replace unprintable char with a question mark. */
-                   } else {
-                       printf( "\\%o", (unsigned char)*p );
-                   }
-               } else {
-                   putchar( *p );
-               }
-               col++;
-               break;
-           }
-       p++;
-       }
-    } while (( inlen = read( 0, inbuf, sizeof( inbuf ))) > 0 );
-    if ( inlen < 0 ) {
-       syslog( LOG_ERR, "read: %s", strerror(errno) );
-       return( 1 );
-    }
-    rc = 0;
-
-out:
-    if ( state & ST_AVAIL ) {
-       printf( ")S\n" );
-       state &= ~ST_AVAIL;
-    }
-
-    if ( state & ST_PAGE ) {
-       printf( "EP\n" );
-       state &= ~ST_PAGE;
-    }
-
-    if ( npages > 0 ) {
-       printf( "%%%%Trailer\nGSV restore\n%%%%Pages: %d\n%%%%EOF\n", npages );
-       fflush( stdout );
-    }
-
-    return( rc );
-}
-
-/*
- * Interface to pipe and exec, for starting children in pipelines.
- *
- * Manipulates file descriptors 0, 1, and 2, such that the new child
- * is reading from the parent's output.
- */
-int pexecv( char *path, char *argv[])
-{
-    int                fd[ 2 ], c;
-
-    if ( pipe( fd ) < 0 ) {
-       return( -1 );
-    }
-
-    switch ( c = fork()) {
-    case -1 :
-       return( -1 );
-       /* NOTREACHED */
-
-    case 0 :
-       if ( close( fd[ 1 ] ) < 0 ) {
-           return( -1 );
-       }
-       if ( dup2( fd[ 0 ], 0 ) < 0 ) {
-           return( -1 );
-       }
-       if ( close( fd[ 0 ] ) < 0 ) {
-           return( -1 );
-       }
-       execv( path, argv );
-       return( -1 );
-       /* NOTREACHED */
-
-    default :
-       if ( close( fd[ 0 ] ) < 0 ) {
-           return( -1 );
-       }
-       if ( dup2( fd[ 1 ], 1 ) < 0 ) {
-           return( -1 );
-       }
-       if ( close( fd[ 1 ] ) < 0 ) {
-           return( -1 );
-       }
-       return( c );
-    }
-}
index 2f3639db2971f0028e90d236fe18bc7092f1e4d1..52c1d16d07ef985a6ac94abfbdabe18b75b1c388 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <pwd.h>
-
-#ifdef NETBSD
-#define _XOPEN_SOURCE 500 /* for crypt() */
-#endif
-#ifdef FREEBSD
-#define _XOPEN_SOURCE /* for crypt() */
-#endif
-
+#include <arpa/inet.h>
 #include <unistd.h>
 
 #ifdef HAVE_CRYPT_H
index e83c2568708036817744212dd88fa2def76e29ff..bba519de08b50bd5cf3f226063524b22d0087d02 100644 (file)
@@ -26,7 +26,7 @@
 #ifdef HAVE_PAM_PAM_APPL_H
 #include <pam/pam_appl.h>
 #endif
-
+#include <arpa/inet.h>
 
 #if defined(GNUTLS_DHX)
 #include <gnutls/openssl.h>
index a6a600ed496bca8e2bb35f31c68bdd36e4eca1bc..76dd7ddd21e9e6f6bb7a666ed428c9c478326091 100644 (file)
@@ -25,6 +25,7 @@
 #include <sys/time.h>
 #include <time.h>
 #include <pwd.h>
+#include <arpa/inet.h>
 
 #ifdef SHADOWPW
 #include <shadow.h>
index 76714e1522addfd13b7573c751d71494b7392e34..5596497e48d59a02e8ca05e9cb421ebf90de3de1 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id: uams_gss.c,v 1.12 2010-03-30 10:25:49 franklahm Exp $
- *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * Copyright (c) 1999 Adrian Sun (asun@u.washington.edu)
  * Copyright (c) 2003 The Reed Institute
 #endif /* HAVE_UNISTD_H */
 #include <string.h>
 #include <errno.h>
+#include <arpa/inet.h>
 
 #include <atalk/logger.h>
 #include <atalk/afp.h>
 #include <atalk/uam.h>
 #include <atalk/util.h>
+#include <atalk/compat.h>
 
 /* Kerberos includes */
 
index 7a2482d6ca50fb57071806d2c701561aaede3d53..00f90ece0972ee01670d5cc1eee55879d6795b35 100644 (file)
@@ -18,6 +18,7 @@
 #include <atalk/afp.h>
 #include <atalk/uam.h>
 #include <atalk/util.h>
+#include <atalk/compat.h>
 
 #ifndef MIN
 #define MIN(a,b) ((a) < (b) ? (a) : (b))
index a374cc336e2e9c07774820e8c5a0c247c21ccd46..a0e5335ad16a6322d9549812bba203f5f45898a6 100644 (file)
 #include <unistd.h>
 #endif /* HAVE_UNISTD_H */
 #include <string.h>
-#include <atalk/logger.h>
-
 #ifdef HAVE_SECURITY_PAM_APPL_H
 #include <security/pam_appl.h>
 #endif
 #ifdef HAVE_PAM_PAM_APPL_H
 #include <pam/pam_appl.h>
 #endif
+#include <arpa/inet.h>
 
 #include <atalk/afp.h>
 #include <atalk/uam.h>
 #include <atalk/util.h>
+#include <atalk/logger.h>
+#include <atalk/compat.h>
 
 #define PASSWDLEN 8
 
index b2eb584a0fb8b85d56a0ecdf322620d12859562b..19571aa77958c30c936b9b9e52facfbda31dfc5d 100644 (file)
 #ifdef SHADOWPW
 #include <shadow.h>
 #endif /* SHADOWPW */
+#include <arpa/inet.h>
 
 #include <atalk/afp.h>
 #include <atalk/logger.h>
 #include <atalk/uam.h>
 #include <atalk/util.h>
+#include <atalk/compat.h>
 
 #define PASSWDLEN 8
 
index 0791ef32cd69110d4bde3c20ad90ce9e0b7a446f..866e73548dd8cadd2cac5ce66247d8146b3ded0c 100644 (file)
 #include <pwd.h>
 #include <sys/stat.h>
 #include <sys/param.h>
+#include <arpa/inet.h>
 
 #include <atalk/logger.h>
-
-#include <netatalk/endian.h>
-
 #include <atalk/afp.h>
 #include <atalk/uam.h>
 
index 0e0039135e5cf2f07f902c90789d14ccbdb9edab..b2084834fb63127b5b189883d9c26c8344ab68fc 100644 (file)
@@ -24,14 +24,10 @@ noinst_HEADERS = \
        zip.h \
        uuid.h \
        queue.h \
-       rtmp.h \
        server_child.h \
        server_ipc.h \
        tdb.h \
        uam.h \
-       nbp.h \
-       netddp.h \
-       pap.h \
        cnid_dbd_private.h \
        cnid_private.h \
        bstradd.h \
@@ -41,12 +37,8 @@ noinst_HEADERS = \
        talloc.h \
        tevent.h \
        tsocket.h \
-       aep.h \
-       asp.h \
-       atp.h \
        boolean.h \
        compat.h \
-       ddp.h \
        dsi.h \
        ldapconfig.h \
        list.h
index b936b5dd96b27c80220fa9b106a9223181cb3f8c..8641aae75135cbc0caa5e5d6086bcde40cc13490 100644 (file)
@@ -41,7 +41,6 @@
 #include <sys/mman.h>
 #include <sys/time.h>
 
-#include <netatalk/endian.h>
 #include <atalk/bstrlib.h>
 #include <atalk/locking.h>
 
diff --git a/include/atalk/aep.h b/include/atalk/aep.h
deleted file mode 100644 (file)
index 69a419a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_AEP_H
-#define _ATALK_AEP_H 1
-
-#define AEPOP_REQUEST  1
-#define AEPOP_REPLY    2
-
-#endif
index 550343d6fb5e4fcbf9a73c81fef867b518fa16ff..11a4029dea13da3a780f4e76704fdc866f36977b 100644 (file)
@@ -25,7 +25,6 @@
 #define _ATALK_AFP_H 1
 
 #include <sys/types.h>
-#include <netatalk/endian.h>
 
 typedef u_int16_t AFPUserBytes;
 
diff --git a/include/atalk/asp.h b/include/atalk/asp.h
deleted file mode 100644 (file)
index 58b5aaa..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_ASP_H
-#define _ATALK_ASP_H 1
-
-#include <sys/types.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/afp.h>
-#include <atalk/server_child.h>
-
-#define ASP_HDRSIZ        4
-#define ASP_CMDSIZ        578
-
-#define ASP_MAXPACKETS    8
-#define ASP_CMDMAXSIZ     (ASP_CMDSIZ + ASP_HDRSIZ)
-#define ASP_DATASIZ       (ASP_CMDSIZ*ASP_MAXPACKETS)
-#define ASP_DATAMAXSIZ    ((ASP_CMDSIZ + ASP_HDRSIZ)*ASP_MAXPACKETS)
-
-typedef struct ASP {
-    ATP                        asp_atp;
-    struct sockaddr_at asp_sat;
-    u_int8_t           asp_wss;
-    u_int8_t            asp_sid;
-    union {
-       struct {
-           char                        *as_status;
-           int                         as_slen;
-       }                       asu_status;
-       u_int16_t               asu_seq;
-    }                  asp_u;
-#define asp_status     asp_u.asu_status.as_status
-#define asp_slen       asp_u.asu_status.as_slen
-#define asp_seq                asp_u.asu_seq
-    int                        asp_flags;
-    char               child, inited, *commands;
-    char                cmdbuf[ASP_CMDMAXSIZ];
-    char                data[ASP_DATAMAXSIZ];  
-    size_t             cmdlen, datalen;
-    off_t              read_count, write_count;
-} *ASP;
-
-#define ASPFL_SLS      1
-#define ASPFL_SSS      2
-
-#define ASPFUNC_CLOSE  1
-#define ASPFUNC_CMD    2
-#define ASPFUNC_STAT   3
-#define ASPFUNC_OPEN   4
-#define ASPFUNC_TICKLE 5
-#define ASPFUNC_WRITE  6
-#define ASPFUNC_WRTCONT        7
-#define ASPFUNC_ATTN   8
-
-#define ASPERR_OK      0x0000
-#define ASPERR_BADVERS 0xfbd6
-#define ASPERR_BUFSMALL        0xfbd5
-#define ASPERR_NOSESS  0xfbd4
-#define ASPERR_NOSERV  0xfbd3
-#define ASPERR_PARM    0xfbd2
-#define ASPERR_SERVBUSY        0xfbd1
-#define ASPERR_SESSCLOS        0xfbd0
-#define ASPERR_SIZERR  0xfbcf
-#define ASPERR_TOOMANY 0xfbce
-#define ASPERR_NOACK   0xfbcd
-
-extern ASP asp_init         (ATP);
-extern void asp_setstatus   (ASP, char *, const int);
-extern ASP asp_getsession   (ASP, server_child *, const int);
-extern int asp_close        (ASP);
-extern int asp_shutdown     (ASP);
-extern int asp_attention    (ASP, AFPUserBytes);
-extern int asp_getrequest   (ASP);
-extern int asp_cmdreply     (ASP, int);
-extern int asp_wrtcont      (ASP, char *, size_t *);
-#define asp_wrtreply(a,b)   asp_cmdreply((a), (b))
-extern void asp_kill        (int);
-extern int asp_tickle      (ASP, const u_int8_t, struct sockaddr_at *);
-extern void asp_stop_tickle (void);
-
-#endif
diff --git a/include/atalk/atp.h b/include/atalk/atp.h
deleted file mode 100644 (file)
index 3be08e5..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_ATP_H
-#define _ATALK_ATP_H 1
-#include <sys/types.h>
-#include <sys/time.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-
-/* ATP packet format
-
- |----------------|
- | link header    |
- |      ...       |
- |----------------|
- | DDP header     |
- |      ...       |
- |   type = 3     |
- |----------------|
- | control info   | --> bits 7,6: function code
- |----------------|            5: XO bit
- | bitmap/seq no. |            4: EOM bit
- |----------------|            3: STS bit
- | TID (MSB)      |        2,1,0: release timer code (ignored under phase I)
- |----------------|
- | TID (LSB)      |
- |----------------|
- | user bytes (4) |
- |----------------|
- | data (0-578)   |
- |      ...       |
- |----------------|
-*/
-struct atphdr {
-    u_int8_t   atphd_ctrlinfo; /* control information */
-    u_int8_t   atphd_bitmap;   /* bitmap or sequence number */
-    u_int16_t  atphd_tid;      /* transaction id. */
-};
-
-/* ATP protocol parameters
-*/
-#define ATP_MAXDATA    (578+4)         /* maximum ATP data size */
-#define ATP_BUFSIZ     587             /* maximum packet size */
-#define ATP_HDRSIZE    5               /* includes DDP type field */
-
-#define ATP_TRELMASK   0x07            /* mask all but TREL */
-#define ATP_RELTIME    30              /* base release timer (in secs) */
-
-#define ATP_TREL30     0x0             /* release time codes */
-#define ATP_TREL1M     0x1             /* these are passed in flags of */
-#define ATP_TREL2M     0x2             /* atp_sreq call, and set in the */
-#define ATP_TREL4M     0x3             /* packet control info. */
-#define ATP_TREL8M     0x4
-
-#define ATP_TRIES_INFINITE     -1      /* for atp_sreq, etc */
-
-struct atpxobuf {
-    u_int16_t          atpxo_tid;
-    struct timeval     atpxo_tv;
-    int                        atpxo_reltime;
-    struct atpbuf      *atpxo_packet[8];
-};
-
-struct atpbuf {
-    struct atpbuf      *atpbuf_next;           /* next buffer in chain */
-    size_t             atpbuf_dlen;            /* data length <= ATP_BUFSIZ */
-    struct sockaddr_at atpbuf_addr;            /* net address sent/recvd */
-    union {
-       char            atpbuf_data[ ATP_BUFSIZ ];      /* the data */
-       struct atpxobuf atpbuf_xo;                      /* for XO requests */
-    } atpbuf_info;
-};
-
-struct atp_handle {
-    int                        atph_socket;            /* ddp socket */
-    struct sockaddr_at atph_saddr;             /* address */
-    u_int16_t          atph_tid;               /* last tid used */
-    u_int16_t          atph_rtid;              /* last received (rreq) */
-    u_int8_t           atph_rxo;               /* XO flag from last rreq */
-    int                        atph_rreltime;          /* release time (secs) */
-    struct atpbuf      *atph_sent;             /* packets we send (XO) */
-    struct atpbuf      *atph_queue;            /* queue of pending packets */
-    int                        atph_reqtries;          /* retry count for request */
-    int                        atph_reqto;             /* retry timeout for request */
-    int                        atph_rrespcount;        /* expected # of responses */
-    u_int8_t           atph_rbitmap;           /* bitmap for request */
-    struct atpbuf      *atph_reqpkt;           /* last request packet */
-    struct timeval     atph_reqtv;             /* when we last sent request */
-    struct atpbuf      *atph_resppkt[8];       /* response to request */
-};
-
-typedef struct atp_handle *ATP;
-
-#define atp_sockaddr( h )      (&(h)->atph_saddr)
-#define atp_fileno(x)          ((x)->atph_socket)
-
-struct sreq_st {
-    char           *atpd_data;         /* request data */
-    int                    atpd_dlen;
-    int                    atpd_tries;         /* max. retry count */
-    int                    atpd_to;            /* retry interval */
-};
-
-struct rres_st {
-    struct iovec    *atpd_iov;         /* for response */
-    int                    atpd_iovcnt;
-};
-
-struct rreq_st {
-    char           *atpd_data;         /* request data */
-    int                    atpd_dlen;
-};
-
-struct sres_st {
-    struct iovec    *atpd_iov;         /* for response */
-    int                    atpd_iovcnt;
-};
-
-struct atp_block {
-    struct sockaddr_at *atp_saddr;             /* from/to address */
-    union {
-       struct sreq_st  sreqdata;
-#define atp_sreqdata   atp_data.sreqdata.atpd_data
-#define atp_sreqdlen   atp_data.sreqdata.atpd_dlen
-#define atp_sreqtries  atp_data.sreqdata.atpd_tries
-#define atp_sreqto     atp_data.sreqdata.atpd_to
-
-       struct rres_st  rresdata;
-#define atp_rresiov    atp_data.rresdata.atpd_iov
-#define atp_rresiovcnt atp_data.rresdata.atpd_iovcnt
-
-       struct rreq_st  rreqdata;
-#define atp_rreqdata   atp_data.rreqdata.atpd_data
-#define atp_rreqdlen   atp_data.rreqdata.atpd_dlen
-
-       struct sres_st  sresdata;
-#define atp_sresiov    atp_data.sresdata.atpd_iov
-#define atp_sresiovcnt atp_data.sresdata.atpd_iovcnt
-    } atp_data;
-    u_int8_t           atp_bitmap;     /* response buffer bitmap */
-};
-
-
-/* flags for ATP options (and control byte)
-*/
-#define ATP_STS                (1<<3)          /* Send Transaction Status */
-#define ATP_EOM                (1<<4)          /* End Of Message */
-#define ATP_XO         (1<<5)          /* eXactly Once mode */
-
-/* function codes
-*/
-#define ATP_FUNCMASK   (3<<6)          /* mask all but function */
-
-#define ATP_TREQ       (1<<6)          /* Trans. REQuest */
-#define ATP_TRESP      (2<<6)          /* Trans. RESPonse */
-#define ATP_TREL       (3<<6)          /* Trans. RELease */
-
-extern ATP             atp_open  (u_int8_t, 
-                                      const struct at_addr *);
-extern int             atp_close (ATP);
-extern int             atp_sreq  (ATP, struct atp_block *, int, 
-                                      u_int8_t);
-extern int             atp_rresp (ATP, struct atp_block *);
-extern int             atp_rsel  (ATP, struct sockaddr_at *, int);
-extern int             atp_rreq  (ATP, struct atp_block *);
-extern int             atp_sresp (ATP, struct atp_block *);
-
-#endif
diff --git a/include/atalk/ddp.h b/include/atalk/ddp.h
deleted file mode 100644 (file)
index 1c3fff1..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_DDP_H
-#define _ATALK_DDP_H 1
-
-#define DDPTYPE_RTMPRD 1
-#define DDPTYPE_NBP    2
-#define DDPTYPE_ATP    3
-#define DDPTYPE_AEP    4
-#define DDPTYPE_RTMPR  5
-#define DDPTYPE_ZIP    6
-#define DDPTYPE_ADSP   7
-
-#endif
index d90bc26c254aa12f526df3cf62510800acee613f..e8f333fbf9d0f0c38276e8ea9ad72338d6be2e54 100644 (file)
@@ -25,7 +25,7 @@
 #define ATALK_DIRECTORY_H 1
 
 #include <sys/types.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 #include <dirent.h>
 #include <stdint.h>
 
index 988d2bbb3d7a1f19a7dd33a03d10508936df0e13..904bbc1250212cda9f8b3a9d2c0bc843f45cfc03 100644 (file)
 #include <sys/time.h>
 #include <sys/socket.h>
 #include <signal.h>
+#include <arpa/inet.h>
 
 #include <netinet/in.h>
 #include <atalk/afp.h>
 #include <atalk/server_child.h>
-#include <netatalk/endian.h>
 
 /* What a DSI packet looks like:
  0                               32
diff --git a/include/atalk/nbp.h b/include/atalk/nbp.h
deleted file mode 100644 (file)
index a1fb271..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_NBP_H
-#define _ATALK_NBP_H 1
-#define NBP_UNRGSTR_4ARGS 1
-#define ATP_OPEN_2ARGS 1
-
-#include <sys/types.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-
-struct nbphdr {
-#if BYTE_ORDER == BIG_ENDIAN
-    unsigned   nh_op : 4,
-               nh_cnt : 4,
-#else /* BYTE_ORDER != BIG_ENDIAN */
-    unsigned   nh_cnt : 4,
-               nh_op : 4,
-#endif /* BYTE_ORDER */
-               nh_id : 8;
-};
-
-#define SZ_NBPHDR      2
-
-struct nbptuple {
-    u_int16_t   nt_net;
-    u_int8_t    nt_node;
-    u_int8_t    nt_port;
-    u_int8_t    nt_enum;
-};
-#define SZ_NBPTUPLE    5
-
-#define NBPSTRLEN      32
-/*
- * Name Binding Protocol Network Visible Entity
- */
-struct nbpnve {
-    struct sockaddr_at nn_sat;
-    u_char             nn_objlen;
-    char               nn_obj[ NBPSTRLEN ];
-    u_char             nn_typelen;
-    char               nn_type[ NBPSTRLEN ];
-    u_char             nn_zonelen;
-    char               nn_zone[ NBPSTRLEN ];
-};
-
-/*
- * Note that NBPOP_ERROR is not standard. As Apple adds more NBPOPs,
- * we need to check for collisions with our extra values.  */
-#define NBPOP_BRRQ      0x1
-#define NBPOP_LKUP      0x2
-#define NBPOP_LKUPREPLY         0x3
-#define NBPOP_FWD       0x4
-#define NBPOP_RGSTR     0x7
-#define NBPOP_UNRGSTR   0x8
-#define NBPOP_CONFIRM    0x9
-#define NBPOP_OK        0xa  /* NBPOP_STATUS_REPLY */
-#define NBPOP_CLOSE_NOTE 0xb
-
-#define NBPOP_ERROR     0xf
-
-#define NBPMATCH_NOGLOB        (1<<1)
-#define NBPMATCH_NOZONE        (1<<2)
-
-extern int nbp_name (const char *, char **, char **, char **);
-extern int nbp_lookup (const char *, const char *, const char *,
-                          struct nbpnve *, const int, 
-                          const struct at_addr *);
-extern int nbp_rgstr (struct sockaddr_at *, 
-                         const char *, const char *, const char *);
-extern int nbp_unrgstr (const char *, const char *, const char *,
-                           const struct at_addr *);
-
-#endif
diff --git a/include/atalk/netddp.h b/include/atalk/netddp.h
deleted file mode 100644 (file)
index 7bf08b7..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
- * All Rights Reserved. See COPYRIGHT.
- *
- * this provides a generic interface to the ddp layer. with this, we
- * should be able to interact with any appletalk stack that allows
- * direct access to the ddp layer. right now, only os x server's ddp
- * layer and the generic socket based interfaces are understood.  
- */
-
-#ifndef _ATALK_NETDDP_H
-#define _ATALK_NETDDP_H 1
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netatalk/at.h>
-
-extern int netddp_open   (struct sockaddr_at *, struct sockaddr_at *);
-
-#if !defined(NO_DDP) && defined(MACOSX_SERVER)
-extern int netddp_sendto (int, void *, size_t, unsigned int, 
-                          const struct sockaddr *, unsigned int);
-extern int netddp_recvfrom (int, void *, int, unsigned int, 
-                            struct sockaddr *, unsigned int *);
-#define netddp_close(a)  ddp_close(a)
-#else
-#include <unistd.h>
-#include <sys/types.h>
-
-#define netddp_close(a)  close(a)
-#define netddp_sendto    sendto
-#define netddp_recvfrom  recvfrom
-#endif
-
-#endif /* netddp.h */
-
diff --git a/include/atalk/pap.h b/include/atalk/pap.h
deleted file mode 100644 (file)
index 4b0e7a8..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_PAP_H
-#define _ATALK_PAP_H 1
-
-#define PAP_OPEN       1
-#define PAP_OPENREPLY  2
-#define PAP_READ       3
-#define PAP_DATA       4
-#define PAP_TICKLE     5
-#define PAP_CLOSE      6
-#define PAP_CLOSEREPLY 7
-#define PAP_SENDSTATUS 8
-#define PAP_STATUS     9
-
-#define PAP_MAXDATA    512
-#define PAP_MAXQUANTUM 8
-
-#endif
diff --git a/include/atalk/rtmp.h b/include/atalk/rtmp.h
deleted file mode 100644 (file)
index e5921c2..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ATALK_RTMP_H
-#define _ATALK_RTMP_H 1
-
-#include <netatalk/endian.h>
-
-#define RTMPROP_REQUEST        1
-
-struct rtmpent {
-    u_int16_t   re_net;
-    u_int8_t    re_hops;
-};
-
-#define RTMPHOPS_MAX   15
-#define RTMPHOPS_POISON        31
-
-struct rtmprdhdr {
-    u_int16_t   rrdh_snet;
-    u_int8_t    rrdh_idlen;
-    u_int8_t    rrdh_id;
-};
-
-#endif
index 05f457d00748afc5f0dccb7116003c2e54fef9de..4ad6a2f29bdc755ae526b6d83d64295b082ad58b 100644 (file)
@@ -7,7 +7,7 @@
 #define _ATALK_SERVER_CHILD_H 1
 
 #include <sys/types.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 /* useful stuff for child processes. most of this is hidden in 
  * server_child.c to ease changes in implementation */
index 146f6db9aba43e1418245b88bb98a3763f286b21..1bb2ee3efdaad8c7f0a0528c40d392b5ebd49d24 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef _ATALK_UNICODE_H
 #define _ATALK_UNICODE_H 1
 
-#include <netatalk/endian.h>
 #include <errno.h>
 #include <sys/param.h>
 
index 2ca7e2759d10e3dfad1c27d67fb045f64619a3ca..7b1b10fbe5f1ef56201089a88beee5818659eb3c 100644 (file)
@@ -15,9 +15,6 @@
 #include <sys/socket.h>
 #include <unistd.h>
 #include <poll.h>
-#ifndef NO_DDP
-#include <netatalk/at.h>
-#endif
 #include <atalk/unicode.h>
 
 /* exit error codes */
@@ -67,9 +64,6 @@ extern void freeifacelist(char **);
 
 #define diatolower(x)     _dialowermap[(unsigned char) (x)]
 #define diatoupper(x)     _diacasemap[(unsigned char) (x)]
-#ifndef NO_DDP
-extern int atalk_aton     (char *, struct at_addr *);
-#endif
 extern void bprint        (char *, int);
 extern int strdiacasecmp  (const char *, const char *);
 extern int strndiacasecmp (const char *, const char *, size_t);
index 842b705d501ba7ce2bcbfcb93346aac87348b310..da367964c389f0cc98033b26be16b966fc2299d5 100644 (file)
@@ -7,7 +7,6 @@
 #define ATALK_VOLUME_H 1
 
 #include <sys/types.h>
-#include <netatalk/endian.h>
 
 #include <atalk/unicode.h>
 #include <atalk/cnid.h>
index 10dd59a0bbe8a1e0372e360c7f7d14e14d4657ef..76d940767642cff103f561d97d1450f8512fa8c9 100644 (file)
@@ -37,17 +37,3 @@ libatalk_la_DEPENDENCIES = \
        $(top_builddir)/libevent/libevent.la
 
 libatalk_la_LDFLAGS = -static
-
-if USE_APPLETALK
-SUBDIRS += asp atp nbp netddp
-libatalk_la_LIBADD += \
-       asp/libasp.la           \
-       atp/libatp.la           \
-       nbp/libnbp.la           \
-       netddp/libnetddp.la
-libatalk_la_DEPENDENCIES += \
-       asp/libasp.la           \
-       atp/libatp.la           \
-       nbp/libnbp.la           \
-       netddp/libnetddp.la
-endif
index 4b9703617b18d7f2cbc122b2be2685c4e29d3230..28f8e1b4e52228d997e3beb81a18b77903ccb148 100644 (file)
@@ -24,6 +24,7 @@
 #include <sys/types.h>
 #include <pwd.h>
 #include <grp.h>
+#include <arpa/inet.h>
 
 #include <atalk/logger.h>
 #include <atalk/afp.h>
index 731b2b2349b61f2a70cc38e26abaaca382217200..37c84e03f685c08cb39d7ed6076c4e0c1edcd82f 100644 (file)
@@ -3,6 +3,7 @@
 #endif /* HAVE_CONFIG_H */
 
 #include <string.h>
+#include <arpa/inet.h>
 #include <atalk/adouble.h>
 
 #define FILEIOFF_ATTR 14
index ab1e0a7f963c6374c51347df3d5be6094d415545..0a9c7ccc9f02aa04c15e0264adeb1ba2b049363c 100644 (file)
@@ -3,6 +3,7 @@
 #endif /* HAVE_CONFIG_H */
 
 #include <string.h>
+#include <arpa/inet.h>
 #include <atalk/adouble.h>
 
 int ad_setdate(struct adouble *ad,
index 9720be9e33c170c292b0dfe768ee9f343a6e7190..413bb16bffa0a2ae14898a8e38de1ed1d96357b7 100644 (file)
@@ -30,6 +30,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <arpa/inet.h>
 
 #include <atalk/adouble.h>
 #include <atalk/ea.h>
index 8c47232002da4f5c6d9447063178bb5f761e7ad8..bc4c7c5fa20821eff1b1ce3eab7667d104e7ffea 100644 (file)
@@ -42,6 +42,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
+#include <arpa/inet.h>
 
 #include <atalk/logger.h>
 #include <atalk/adouble.h>
diff --git a/libatalk/asp/.gitignore b/libatalk/asp/.gitignore
deleted file mode 100644 (file)
index 2ff33a9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-*.lo
-*.la
-.deps
-.libs
-.gitignore
-asp_attn.o asp_close.o asp_cmdreply.o asp_getreq.o asp_getsess.o asp_init.o asp_shutdown.o asp_tickle.o asp_write.o
diff --git a/libatalk/asp/Makefile.am b/libatalk/asp/Makefile.am
deleted file mode 100644 (file)
index ae83084..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Makefile.am for libatalk/asp/
-
-AM_CFLAGS = -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libasp.la
-
-libasp_la_SOURCES = asp_attn.c asp_close.c asp_cmdreply.c asp_getreq.c asp_getsess.c asp_init.c asp_write.c asp_shutdown.c asp_tickle.c 
-
-noinst_HEADERS = asp_child.h
diff --git a/libatalk/asp/asp_attn.c b/libatalk/asp/asp_attn.c
deleted file mode 100644 (file)
index 1c2a8fa..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * $Id: asp_attn.c,v 1.7 2002-12-04 10:59:37 didg Exp $
- * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
- * All rights reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <string.h>
-#include <atalk/logger.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-#include <atalk/afp.h>
-
-/* attentions can get sent at any time. as a consequence, we don't
- * want to touch anything that might be used elsewhere. */
-int asp_attention(ASP asp, AFPUserBytes flags)
-{
-    char cmds[ASP_HDRSIZ], data[ASP_HDRSIZ];
-    struct sockaddr_at  sat;
-    struct atp_block   atpb;
-    struct iovec       iov[ 1 ];
-
-    cmds[0] = ASPFUNC_ATTN;
-    cmds[1] = asp->asp_sid;
-    flags = htons(flags);
-    memcpy(cmds + 2, &flags, sizeof(flags));
-
-    sat = asp->asp_sat;
-    sat.sat_port = asp->asp_wss;
-    atpb.atp_saddr = &sat;
-    atpb.atp_sreqdata = cmds;
-    atpb.atp_sreqdlen = sizeof(cmds);
-    atpb.atp_sreqto = 2;
-    atpb.atp_sreqtries = 5;
-
-    if ( atp_sreq( asp->asp_atp, &atpb, 1, 0 ) < 0 ) {
-       LOG(log_error, logtype_default, "atp_sreq: %s", strerror(errno) );
-       return 0;
-    }
-
-    iov[ 0 ].iov_base = data;
-    iov[ 0 ].iov_len = sizeof( data );
-    atpb.atp_rresiov = iov;
-    atpb.atp_rresiovcnt = sizeof( iov )/sizeof( iov[ 0 ] );
-    if ( atp_rresp( asp->asp_atp, &atpb ) < 0 ) {
-       LOG(log_error, logtype_default, "atp_rresp: %s", strerror(errno) );
-       return 0;
-    }
-
-    return 1;
-}
diff --git a/libatalk/asp/asp_child.h b/libatalk/asp/asp_child.h
deleted file mode 100644 (file)
index 081cd6f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * $Id: asp_child.h,v 1.2 2001-06-29 14:14:46 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _ASP_CHILD_H
-#define _ASP_CHILD_H 1
-
-struct asp_child {
-    int                        ac_pid;
-    int                        ac_state;
-    struct sockaddr_at ac_sat;
-};
-
-#define ACSTATE_DEAD   0
-#define ACSTATE_OK     1
-#define ACSTATE_BAD    7
-
-#endif /* _ASP_CHILD_H */
diff --git a/libatalk/asp/asp_close.c b/libatalk/asp/asp_close.c
deleted file mode 100644 (file)
index 6187825..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $Id: asp_close.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-
-int asp_close(ASP asp)
-{
-    struct atp_block   atpb;
-    struct iovec       iov[ 1 ];
-    int err = 0;
-
-    memset(asp->commands, 0, sizeof(u_int32_t));
-
-    atpb.atp_saddr = &asp->asp_sat;
-    iov[ 0 ].iov_base = asp->commands;
-    iov[ 0 ].iov_len = sizeof(u_int32_t);
-    atpb.atp_sresiov = iov;
-    atpb.atp_sresiovcnt = 1;
-
-    if (atp_sresp( asp->asp_atp, &atpb ) < 0)
-      err = -1;
-
-    if (atp_close( asp->asp_atp ) < 0)
-      err = -1;
-
-    free( asp );
-    return err;
-}
diff --git a/libatalk/asp/asp_cmdreply.c b/libatalk/asp/asp_cmdreply.c
deleted file mode 100644 (file)
index f3a3fd1..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Id: asp_cmdreply.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-
-#if defined(BSD) || defined(BSD4_3)
-#define memmove(a, b, n)   bcopy((b), (a), (n))
-#endif /* BSD || BSD4_3 */
-
-int asp_cmdreply(ASP asp, int result)
-{
-    struct iovec       iov[ ASP_MAXPACKETS ];
-    struct atp_block   atpb;
-    int                        iovcnt, buflen;
-    char                *buf;
-
-    /* unpack data into a format that atp likes. it needs to get
-     * 4-byte headers prepended before each ASP_CMDSIZ chunk. */
-    buf = (char *) asp->data;
-    buflen = asp->datalen;
-    asp->write_count += buflen;
-    result = htonl(result);
-
-    iovcnt = 0;
-    do {
-       iov[ iovcnt ].iov_base = buf;
-       memmove(buf + ASP_HDRSIZ, buf, buflen);
-
-       if ( iovcnt == 0 ) {
-           memcpy( iov[ iovcnt ].iov_base, &result, ASP_HDRSIZ );
-       } else {
-           memset( iov[ iovcnt ].iov_base, 0, ASP_HDRSIZ );
-       }
-
-       if ( buflen > ASP_CMDSIZ ) {
-         buf += ASP_CMDMAXSIZ;
-         buflen -= ASP_CMDSIZ;
-         iov[ iovcnt ].iov_len = ASP_CMDMAXSIZ;
-       } else {
-         iov[ iovcnt ].iov_len = buflen + ASP_HDRSIZ;
-         buflen = 0;
-       }
-       iovcnt++;
-    } while ( buflen > 0 );
-
-    atpb.atp_saddr = &asp->asp_sat;
-    atpb.atp_sresiov = iov;
-    atpb.atp_sresiovcnt = iovcnt;
-    if ( atp_sresp( asp->asp_atp, &atpb ) < 0 ) {
-       return( -1 );
-    }
-    asp->asp_seq++;
-
-    return( 0 );
-}
diff --git a/libatalk/asp/asp_getreq.c b/libatalk/asp/asp_getreq.c
deleted file mode 100644 (file)
index 211c55d..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $Id: asp_getreq.c,v 1.3 2001-06-29 14:14:46 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-
-int asp_getrequest(ASP asp)
-{
-    struct atp_block   atpb;
-    u_int16_t          seq;
-
-    asp->asp_sat.sat_port = ATADDR_ANYPORT;
-    atpb.atp_saddr = &asp->asp_sat;
-    atpb.atp_rreqdata = asp->cmdbuf;
-    atpb.atp_rreqdlen = sizeof(asp->cmdbuf);
-
-    if ( atp_rreq( asp->asp_atp, &atpb ) < 0 ) {
-       return( -1 );
-    }
-
-    asp->cmdlen = atpb.atp_rreqdlen - 4;
-    asp->read_count += asp->cmdlen;
-    memcpy( &seq, asp->cmdbuf + 2, sizeof(seq));
-    seq = ntohs( seq );
-
-    if ((asp->cmdbuf[0] != ASPFUNC_CLOSE) && (seq != asp->asp_seq)) {
-       return( -2 );
-    }
-    if ( asp->cmdbuf[1] != asp->asp_sid ) {
-       return( -3 );
-    }
-
-    return( asp->cmdbuf[0] ); /* the command */
-}
diff --git a/libatalk/asp/asp_getsess.c b/libatalk/asp/asp_getsess.c
deleted file mode 100644 (file)
index 5a1d585..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * $Id: asp_getsess.c,v 1.9 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1996 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <sys/param.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif /* HAVE_SYS_WAIT_H */
-
-#include <netatalk/at.h>
-#include <atalk/logger.h>
-#include <atalk/compat.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-#include <atalk/server_child.h>
-
-#include "asp_child.h"
-
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif /* ! WEXITSTATUS */
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif /* ! WIFEXITED */
-
-#ifndef MIN
-#define MIN(a,b)     ((a)<(b)?(a):(b))
-#endif /* ! MIN */
-
-static ASP server_asp;
-static struct server_child *children = NULL;
-static struct asp_child    **asp_ac = NULL;
-
-/* send tickles and check tickle status of connections
- * thoughts on using a hashed list:
- * + child_cleanup, finding slots 
- * - tickle_handler, freeing, tickles 
- * if setup for a large number of connections,
- * + space: if actual connections < potential
- * - space: actual connections ~ potential
- */
-static void tickle_handler(int sig _U_)
-{
-  int sid;
-  
-  /* check status */
-  for (sid = 0; sid < children->nsessions; sid++) {
-    if (asp_ac[sid] == NULL || asp_ac[sid]->ac_state == ACSTATE_DEAD) 
-      continue;
-    
-    if (++asp_ac[sid]->ac_state >= ACSTATE_BAD) {
-      /* kill. if already dead, just continue */
-      if (kill( asp_ac[ sid ]->ac_pid, SIGTERM) == 0)
-       LOG(log_info, logtype_default, "asp_alrm: %d timed out",
-               asp_ac[ sid ]->ac_pid );
-
-      asp_ac[ sid ]->ac_state = ACSTATE_DEAD;
-      continue;
-    }
-
-    /* send off a tickle */
-    asp_tickle(server_asp, sid, &asp_ac[sid]->ac_sat);
-  }
-}
-
-static void child_cleanup(const pid_t pid)
-{
-  int i;
-
-  for (i = 0; i < children->nsessions; i++)
-    if (asp_ac[i] && (asp_ac[i]->ac_pid == pid)) {
-      asp_ac[i]->ac_state = ACSTATE_DEAD;
-      break;
-    }
-}
-
-
-/* kill children */
-void asp_kill(int sig)
-{
-  if (children) 
-    server_child_kill(children, CHILD_ASPFORK, sig);
-}
-
-void asp_stop_tickle(void)
-{
-    if (server_asp && server_asp->inited) {
-       static const struct itimerval timer = {{0, 0}, {0, 0}};
-       
-       setitimer(ITIMER_REAL, &timer, NULL);
-    }
-}
-
-/*
- * This call handles open, tickle, and getstatus requests. On a
- * successful open, it forks a child process. 
- * It returns an ASP to the child and parent and NULL if there is
- * an error.
- */
-static void set_asp_ac(int sid, struct asp_child *tmp);
-
-ASP asp_getsession(ASP asp, server_child *server_children, 
-                  const int tickleval)
-{
-    struct sigaction    action;
-    struct itimerval    timer;
-    struct sockaddr_at  sat;
-    struct atp_block    atpb;
-    ATP                 atp;
-    struct iovec        iov[ 8 ];
-    pid_t               pid;
-    int                 i, iovcnt, sid;
-    u_int16_t           asperr;
-    char                *buf;
-    int                 buflen;
-
-    if (!asp->inited) {
-      if (!(children = server_children))
-       return NULL;
-
-      /* only calloc once */
-      if (!asp_ac && (asp_ac = (struct asp_child **) 
-          calloc(server_children->nsessions, sizeof(struct asp_child *)))
-          == NULL)
-       return NULL;
-
-      server_asp = asp;
-
-      /* install cleanup pointer */
-      server_child_setup(children, CHILD_ASPFORK, child_cleanup);
-
-      /* install tickle handler 
-       * we are the parent process
-       */
-      memset(&action, 0, sizeof(action));
-      action.sa_handler = tickle_handler;
-      sigemptyset(&action.sa_mask);
-      sigaddset(&action.sa_mask, SIGHUP);
-      sigaddset(&action.sa_mask, SIGTERM);
-      sigaddset(&action.sa_mask, SIGCHLD);
-      action.sa_flags = SA_RESTART;
-
-      timer.it_interval.tv_sec = timer.it_value.tv_sec = tickleval;
-      timer.it_interval.tv_usec = timer.it_value.tv_usec = 0;
-      if ((sigaction(SIGALRM, &action, NULL) < 0) ||
-         (setitimer(ITIMER_REAL, &timer, NULL) < 0)) {
-       free(asp_ac);
-       server_asp = NULL;
-       asp_ac = NULL;
-       return NULL;
-      }
-
-      asp->inited = 1;
-    }
-                   
-    memset( &sat, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    sat.sat_family = AF_APPLETALK;
-    sat.sat_addr.s_net = ATADDR_ANYNET;
-    sat.sat_addr.s_node = ATADDR_ANYNODE;
-    sat.sat_port = ATADDR_ANYPORT;
-    atpb.atp_saddr = &sat;
-    atpb.atp_rreqdata = asp->cmdbuf;
-    atpb.atp_rreqdlen = sizeof( asp->cmdbuf );
-    while ( atp_rreq( asp->asp_atp, &atpb ) < 0 ) {
-      if ( errno == EINTR || errno == EAGAIN ) {
-       continue;
-      }
-      return( NULL );
-    }
-    
-    switch ( asp->cmdbuf[ 0 ] ) {
-    case ASPFUNC_TICKLE:
-      sid = asp->cmdbuf[1];
-      if ((asp_ac[sid] != NULL) && (asp_ac[sid]->ac_state != ACSTATE_DEAD))
-       asp_ac[sid]->ac_state = ACSTATE_OK;
-      break;
-
-    case ASPFUNC_STAT :
-#ifdef EBUG
-      printf( "asp stat\n" );
-#endif /* EBUG */
-      if ( asp->asp_slen > 0 ) {
-        i = 0;
-        while(atpb.atp_bitmap) {
-            i++;
-            atpb.atp_bitmap >>= 1;
-        }
-
-       /* asp->data is big enough ... */
-        memcpy( asp->data, asp->asp_status, MIN(asp->asp_slen, i*ASP_CMDSIZ));
-       
-        buflen = MIN(asp->asp_slen, i*ASP_CMDSIZ);
-        buf = asp->data;
-        iovcnt = 0;
-
-        /* If status information is too big to fit into the available
-         * ASP packets, we simply send as much as we can.
-         * Older client versions will most likely not be able to use
-         * the additional information anyway, like directory services
-         * or UTF8 server name. A very long fqdn could be a problem,
-         * we could end up with an invalid address list.
-         */
-        do {
-            iov[ iovcnt ].iov_base = buf;
-            memmove(buf + ASP_HDRSIZ, buf, buflen);
-            memset( iov[ iovcnt ].iov_base, 0, ASP_HDRSIZ );
-
-           if ( buflen > ASP_CMDSIZ ) {
-                buf += ASP_CMDMAXSIZ;
-                buflen -= ASP_CMDSIZ;
-                iov[ iovcnt ].iov_len = ASP_CMDMAXSIZ;
-            } else {
-                iov[ iovcnt ].iov_len = buflen + ASP_HDRSIZ;
-                buflen = 0;
-            }
-            iovcnt++;
-        } while ( iovcnt < i && buflen > 0 );
-
-        atpb.atp_sresiovcnt = iovcnt;
-        atpb.atp_sresiov = iov;
-        atp_sresp( asp->asp_atp, &atpb );
-      }
-      break;
-
-    case ASPFUNC_OPEN :
-      if (children->count < children->nsessions) {
-      struct asp_child    *asp_ac_tmp;
-
-       /* find a slot */
-       for (sid = 0; sid < children->nsessions; sid++) {
-         if (asp_ac[sid] == NULL)
-           break;
-
-         if (asp_ac[sid]->ac_state == ACSTATE_DEAD) {
-           free(asp_ac[sid]);
-           asp_ac[sid] = NULL;
-           break;
-         }
-       }
-
-       if ((atp = atp_open(ATADDR_ANYPORT, 
-                           &(atp_sockaddr(asp->asp_atp)->sat_addr))) == NULL) 
-         return NULL;
-
-    int dummy[2];
-       switch ((pid = fork())) {
-       case 0 : /* child */
-         server_reset_signal();
-         /* free/close some things */
-         for (i = 0; i < children->nsessions; i++ ) {
-           if ( asp_ac[i] != NULL )
-             free( asp_ac[i] );
-         }
-         free(asp_ac);
-         
-         server_child_free(children);
-         children = NULL;
-         atp_close(asp->asp_atp);
-
-         asp->child = 1;
-         asp->asp_atp = atp;
-         asp->asp_sat = sat;
-         asp->asp_wss = asp->cmdbuf[1];
-         asp->asp_seq = 0;
-         asp->asp_sid = sid;
-         asp->asp_flags = ASPFL_SSS;
-         return asp;
-         
-       case -1 : /* error */
-         asp->cmdbuf[ 0 ] = 0;
-         asp->cmdbuf[ 1 ] = 0;
-         asperr = ASPERR_SERVBUSY;
-         break;
-         
-       default : /* parent process */
-         /* we need atomic setting or pb with tickle_handler */ 
-      if (server_child_add(children, CHILD_ASPFORK, pid, dummy)) {
-           if ((asp_ac_tmp = malloc(sizeof(struct asp_child))) == NULL) {
-            kill(pid, SIGQUIT); 
-            break;
-        }
-        asp_ac_tmp->ac_pid = pid;
-        asp_ac_tmp->ac_state = ACSTATE_OK;
-        asp_ac_tmp->ac_sat = sat;
-        asp_ac_tmp->ac_sat.sat_port = asp->cmdbuf[1];
-           
-        asp->cmdbuf[0] = atp_sockaddr(atp)->sat_port;
-        asp->cmdbuf[1] = sid;
-        set_asp_ac(sid, asp_ac_tmp);
-        asperr = ASPERR_OK;
-        break;
-      } else {
-           kill(pid, SIGQUIT); 
-           break;
-      }
-         atp_close(atp);
-         break;
-       }
-       
-      } else {
-       asp->cmdbuf[0] = asp->cmdbuf[1] = 0;
-       asperr = ASPERR_SERVBUSY;
-      }
-
-      memcpy( asp->cmdbuf + 2, &asperr, sizeof(asperr));
-      iov[ 0 ].iov_base = asp->cmdbuf;
-      iov[ 0 ].iov_len = 4;
-      atpb.atp_sresiov = iov;
-      atpb.atp_sresiovcnt = 1;
-      atp_sresp( asp->asp_atp, &atpb );
-      break;
-
-    default:
-      LOG(log_info, logtype_default, "ASPUnknown %d", asp->cmdbuf[0]);
-      break;
-    }
-
-    return asp;
-}
-
-/* with fn defined after use, assume it's not optimized by the compiler */
-static void set_asp_ac(int sid, struct asp_child *tmp)
-{
-    asp_ac[sid] = tmp;
-}
diff --git a/libatalk/asp/asp_init.c b/libatalk/asp/asp_init.c
deleted file mode 100644 (file)
index 06e77f0..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $Id: asp_init.c,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <sys/param.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-ASP asp_init(ATP atp)
-{
-    ASP                asp;
-
-    if (( asp = (struct ASP *)calloc(1, sizeof( struct ASP ))) == NULL ) {
-       return( NULL );
-    }
-
-    asp->asp_atp = atp;
-#ifdef BSD4_4
-    asp->asp_sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    asp->asp_sat.sat_family = AF_APPLETALK;
-    asp->asp_sat.sat_addr.s_net = ATADDR_ANYNET;
-    asp->asp_sat.sat_addr.s_node = ATADDR_ANYNODE;
-    asp->asp_sat.sat_port = ATADDR_ANYPORT;
-    asp->asp_status = NULL;
-    asp->asp_slen = 0;
-    asp->asp_sid = 0;
-    asp->asp_flags = ASPFL_SLS;
-    asp->cmdlen = asp->datalen = 0;
-    asp->read_count = asp->write_count = 0;
-    asp->commands = asp->cmdbuf + 4;
-
-    return( asp );
-}
-
-void asp_setstatus(ASP asp, char *status, const int slen)
-{
-    asp->asp_status = status;
-    asp->asp_slen = slen;
-}
diff --git a/libatalk/asp/asp_shutdown.c b/libatalk/asp/asp_shutdown.c
deleted file mode 100644 (file)
index 1f77e1f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * $Id: asp_shutdown.c,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1996 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-
-int asp_shutdown(ASP asp)
-{
-    struct atp_block   atpb;
-    struct iovec       iov;
-    char               *p;
-    u_int16_t          seq;
-    u_int8_t           oport;
-
-
-    p = asp->commands;
-    *p++ = ASPFUNC_CLOSE;
-    *p++ = asp->asp_sid;
-    seq = 0;
-    memcpy( p, &seq, sizeof(seq));
-    p += sizeof(seq);
-
-    oport = asp->asp_sat.sat_port;
-    atpb.atp_saddr = &asp->asp_sat;
-    atpb.atp_saddr->sat_port = asp->asp_wss;
-    atpb.atp_sreqdata = asp->commands;
-    atpb.atp_sreqdlen = p - asp->commands;
-    atpb.atp_sreqto = 2;
-    atpb.atp_sreqtries = 5;
-
-    if ( atp_sreq( asp->asp_atp, &atpb, 1, ATP_XO ) < 0 ) {
-       asp->asp_sat.sat_port = oport;
-       return( -1 );
-    }
-
-    iov.iov_base = asp->commands;
-    iov.iov_len = ASP_CMDSIZ;
-    atpb.atp_rresiov = &iov;
-    atpb.atp_rresiovcnt = 1;
-
-    if ( atp_rresp( asp->asp_atp, &atpb ) < 0 ) {
-       asp->asp_sat.sat_port = oport;
-       return( -1 );
-    }
-    asp->asp_sat.sat_port = oport;
-
-    return( 0 );
-}
diff --git a/libatalk/asp/asp_tickle.c b/libatalk/asp/asp_tickle.c
deleted file mode 100644 (file)
index c6f3752..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * $Id: asp_tickle.c,v 1.7 2002-12-04 10:59:37 didg Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <atalk/logger.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-#include <errno.h>
-
-#include <sys/socket.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-
-/* send off a tickle */
-int asp_tickle(ASP asp, const u_int8_t sid, struct sockaddr_at *sat)
-{
-  struct atp_block atpb;
-  char buf[ASP_HDRSIZ];
-
-  buf[ 0 ] = ASPFUNC_TICKLE;
-  buf[ 1 ] = sid;
-  buf[ 2 ] = buf[ 3 ] = 0;
-
-  atpb.atp_saddr = sat;
-  atpb.atp_sreqdata = buf;
-  atpb.atp_sreqdlen = sizeof(buf);
-  atpb.atp_sreqto = 0;
-  atpb.atp_sreqtries = 1;
-  if ( atp_sreq( asp->asp_atp, &atpb, 0, 0 ) < 0 ) {
-    LOG(log_error, logtype_default, "atp_sreq: %s", strerror(errno) );
-    return 0;
-  }
-  return 1;
-}
diff --git a/libatalk/asp/asp_write.c b/libatalk/asp/asp_write.c
deleted file mode 100644 (file)
index 2819e31..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $Id: asp_write.c,v 1.4 2009-10-22 12:35:39 franklahm Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/asp.h>
-
-#if defined(BSD) || defined(BSD4_3)
-#define memmove(a, b, n)   bcopy((b), (a), (n))
-#endif /* BSD || BSD4_3 */
-
-int asp_wrtcont(ASP asp, char *buf, size_t *buflen)
-{
-    struct iovec       iov[ ASP_MAXPACKETS ];
-    struct atp_block   atpb;
-    char               *p;
-    int                        iovcnt = ASP_MAXPACKETS;
-    u_int16_t          blen, seq;
-    u_int8_t           oport;
-
-    p = buf;
-    *p++ = ASPFUNC_WRTCONT;
-    *p++ = asp->asp_sid;
-    seq = htons( asp->asp_seq );
-    memcpy( p, &seq, sizeof(seq));
-    p += sizeof(seq);
-    blen = htons(*buflen);
-    memcpy( p, &blen, sizeof(blen));
-    p += sizeof(blen);
-
-    for ( iovcnt = 0; iovcnt < ASP_MAXPACKETS; iovcnt++ ) {
-        iov[iovcnt].iov_base = buf + iovcnt*ASP_CMDMAXSIZ;
-       iov[ iovcnt ].iov_len = ASP_CMDMAXSIZ;
-    }
-
-    oport = asp->asp_sat.sat_port;
-    atpb.atp_saddr = &asp->asp_sat;
-    atpb.atp_saddr->sat_port = asp->asp_wss;
-    atpb.atp_sreqdata = buf;
-    atpb.atp_sreqdlen = p - buf;
-    atpb.atp_sreqto = 2;
-    atpb.atp_sreqtries = 5;
-
-    if ( atp_sreq( asp->asp_atp, &atpb, iovcnt, ATP_XO ) < 0 ) {
-       asp->asp_sat.sat_port = oport;
-       return( -1 );
-    }
-    asp->write_count += atpb.atp_sreqdlen;
-
-    atpb.atp_rresiov = iov;
-    atpb.atp_rresiovcnt = iovcnt;
-    if ( atp_rresp( asp->asp_atp, &atpb ) < 0 ) {
-       asp->asp_sat.sat_port = oport;
-       return( -1 );
-    }
-
-    asp->asp_sat.sat_port = oport;
-
-    /* get rid of the 4-byte headers */
-    p = buf;
-    for ( iovcnt = 0; iovcnt < atpb.atp_rresiovcnt; iovcnt++ ) {
-       memmove(p, (char *) iov[ iovcnt ].iov_base + ASP_HDRSIZ, 
-               iov[ iovcnt ].iov_len - ASP_HDRSIZ );
-       p += ( iov[ iovcnt ].iov_len - ASP_HDRSIZ );
-    }
-
-    *buflen = p - buf;
-    asp->read_count += *buflen;
-    return 0;
-}
diff --git a/libatalk/atp/.gitignore b/libatalk/atp/.gitignore
deleted file mode 100644 (file)
index d6c38da..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-*.lo
-*.la
-.deps
-.libs
-.gitignore
-atp_bufs.o atp_close.o atp_open.o atp_packet.o atp_rreq.o atp_rresp.o atp_rsel.o atp_sreq.o atp_sresp.o
diff --git a/libatalk/atp/Makefile.am b/libatalk/atp/Makefile.am
deleted file mode 100644 (file)
index fe553b0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Makefile.am for libatalk/atp/
-
-noinst_LTLIBRARIES = libatp.la
-
-libatp_la_SOURCES = atp_bufs.c atp_close.c atp_open.c atp_packet.c atp_rreq.c atp_rresp.c atp_rsel.c atp_sreq.c atp_sresp.c 
-
-noinst_HEADERS = atp_internals.h
diff --git a/libatalk/atp/atp_bufs.c b/libatalk/atp/atp_bufs.c
deleted file mode 100644 (file)
index 9c899e2..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * $Id: atp_bufs.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-/* 
- * Our own memory maintenance for atp
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include "atp_internals.h"
-
-#define                        N_MORE_BUFS             10
-
-static struct atpbuf   *free_list = NULL;      /* free buffers */
-
-#ifdef EBUG
-static int             numbufs = 0;
-#endif /* EBUG */
-
-/* only call this when the free_list is empty...
- * N_MORE_BUFS must be >= one
-*/
-static int more_bufs(void)
-{
-    int                        i;
-    char               *mem;
-    struct atpbuf      *bp;
-
-    /* get the whole chunk in one malloc call
-    */
-    if (( mem = malloc( N_MORE_BUFS * sizeof( struct atpbuf ))) == NULL ) {
-       errno = ENOBUFS;
-       return -1;
-    }
-    /* now split into separate bufs
-    */
-    bp = free_list = (struct atpbuf *) mem;
-    for ( i = 1; i < N_MORE_BUFS; ++i ) {
-       bp->atpbuf_next = (struct atpbuf *) ( mem += sizeof( struct atpbuf ));
-       bp = bp->atpbuf_next;
-    }
-    bp->atpbuf_next = NULL;
-
-    return 0;
-}
-
-
-#ifdef EBUG
-void atp_print_bufuse(ATP ah, char *s)
-{
-    struct atpbuf      *bp;
-    int                        i, sentcount, incount, respcount;
-
-    sentcount = 0;
-    for ( bp = ah->atph_sent; bp != NULL; bp = bp->atpbuf_next ) {
-       ++sentcount;
-       for ( i = 0; i < 8; ++i ) {
-           if ( bp->atpbuf_info.atpbuf_xo.atpxo_packet[ i ] != NULL ) {
-               ++sentcount;
-           }
-       }
-    }
-
-    if ( ah->atph_reqpkt != NULL ) {
-       ++sentcount;
-    }
-
-
-    incount = 0;
-    for ( bp = ah->atph_queue; bp != NULL; bp = bp->atpbuf_next, ++incount );
-
-    respcount = 0;
-    for ( i = 0; i < 8; ++i ) {
-        if ( ah->atph_resppkt[ i ] != NULL ) {
-           ++respcount;
-       }
-    }
-
-    printf( "<%d> %s: bufs total %d  sent %d  incoming %d  req %d  resp %d\n",
-       getpid(), s, numbufs, sentcount, incount,
-       ( ah->atph_reqpkt != NULL ) ? 1: 0, respcount );
-}
-#endif /* EBUG */
-
-
-struct atpbuf *atp_alloc_buf(void)
-{
-    struct atpbuf *bp;
-
-    if ( free_list == NULL && more_bufs() ) return NULL;
-
-    bp = free_list;
-    free_list = free_list->atpbuf_next;
-#ifdef EBUG
-    ++numbufs;
-#endif /* EBUG */
-    return bp;
-}
-
-
-int atp_free_buf(struct atpbuf *bp)
-{
-    if ( bp == NULL ) {
-       return -1;
-    }
-    bp->atpbuf_next = free_list;
-    free_list = bp;
-#ifdef EBUG
-    --numbufs;
-#endif /* EBUG */
-    return 0;
-}
-
-
diff --git a/libatalk/atp/atp_close.c b/libatalk/atp/atp_close.c
deleted file mode 100644 (file)
index 4d31b5f..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Id: atp_close.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1997 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <netatalk/at.h>
-#include <atalk/netddp.h>
-#include <atalk/atp.h>
-#include "atp_internals.h"
-#ifdef EBUG
-#include <stdio.h>
-#endif /* EBUG */
-
-int atp_close(ATP ah)
-{
-    struct atpbuf      *cq;
-    int                        i;
-
-    /* remove from list of open atp sockets & discard queued data
-    */
-#ifdef EBUG
-    print_bufuse( ah, "atp_close");
-#endif /* EBUG */
-
-    while ( ah->atph_queue != NULL ) {
-       cq = ah->atph_queue;
-       ah->atph_queue = cq->atpbuf_next;
-       atp_free_buf( cq );
-    }
-
-    while ( ah->atph_sent != NULL ) {
-       cq = ah->atph_sent;
-       for ( i = 0; i < 8; ++i ) {
-           if ( cq->atpbuf_info.atpbuf_xo.atpxo_packet[ i ] != NULL ) {
-               atp_free_buf( cq->atpbuf_info.atpbuf_xo.atpxo_packet[ i ] );
-           }
-       }
-       ah->atph_sent = cq->atpbuf_next;
-       atp_free_buf( cq );
-    }
-
-    if ( ah->atph_reqpkt != NULL ) {
-       atp_free_buf( ah->atph_reqpkt );
-       ah->atph_reqpkt = NULL;
-    }
-
-    for ( i = 0; i < 8; ++i ) {
-       if ( ah->atph_resppkt[ i ] != NULL ) {
-           atp_free_buf( ah->atph_resppkt[ i ] );
-           ah->atph_resppkt[ i ] = NULL;
-       }
-    }
-
-#ifdef EBUG
-    print_bufuse( ah, "atp_close end");
-#endif /* EBUG */
-
-    i = ah->atph_socket;
-    atp_free_buf( (struct atpbuf *) ah );
-
-    if (netddp_close(i) < 0)
-      return -1;
-
-    return 0;
-}
diff --git a/libatalk/atp/atp_internals.h b/libatalk/atp/atp_internals.h
deleted file mode 100644 (file)
index 51d3b8b..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $Id: atp_internals.h,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef ATP_INTERNALS_H
-#define ATP_INTERNALS_H 1
-
-#include <sys/types.h>
-#include <sys/cdefs.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <atalk/atp.h>
-
-/*
- * masks for matching incoming packets
- */
-#define ATP_FUNCANY    ATP_TREQ | ATP_TRESP | ATP_TREL
-#define ATP_TIDANY     0xffff
-
-/* in atp_bufs.c */
-extern struct atpbuf *atp_alloc_buf (void);
-extern void atp_print_bufuse        (ATP, char *);
-extern int atp_free_buf             (struct atpbuf *);
-
-/* in atp_packet.c */
-extern int at_addr_eq               (struct sockaddr_at *, 
-                                        struct sockaddr_at *);
-extern void atp_build_req_packet    (struct atpbuf *, u_int16_t, 
-                                        u_int8_t, struct atp_block *);
-extern void atp_build_resp_packet   (struct atpbuf *, u_int16_t,
-                                        u_int8_t, struct atp_block *,
-                                        u_int8_t);
-extern int atp_recv_atp             (ATP, struct sockaddr_at *, 
-                                        u_int8_t *, u_int16_t, char *,
-                                        int);
-#ifdef EBUG
-extern void atp_print_addr          (char *, struct sockaddr_at *);
-#endif /* EBUG */
-
-#endif /* ATP_INTERNALS_H */
diff --git a/libatalk/atp/atp_open.c b/libatalk/atp/atp_open.c
deleted file mode 100644 (file)
index 1690752..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Id: atp_open.c,v 1.5 2001-08-15 02:17:57 srittau Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-
-#include <atalk/netddp.h>
-#include <atalk/ddp.h>
-#include <atalk/atp.h>
-
-#include "atp_internals.h"
-
-ATP atp_open(u_int8_t port, const struct at_addr *saddr)
-{
-    struct sockaddr_at  addr;
-    int                        s;
-    ATP                        atp;
-    struct timeval     tv;
-    int                        pid;
-
-#ifdef DEBUG
-    printf( "<%d> atp_open\n", getpid());
-#endif /* DEBUG */
-
-    memset(&addr, 0, sizeof(addr));
-    addr.sat_port = port;
-    if (saddr) 
-      memcpy(&addr.sat_addr, saddr, sizeof(struct at_addr));
-    if ((s = netddp_open(&addr, NULL)) < 0)
-        return NULL;
-
-    if (( atp = (ATP) atp_alloc_buf()) == NULL ) {
-        netddp_close(s);
-       return NULL;
-    }
-
-    /* initialize the atp handle */
-    memset(atp, 0, sizeof( struct atp_handle ));
-    memcpy(&atp->atph_saddr, &addr, sizeof(addr));
-
-    atp->atph_socket = s;
-    atp->atph_reqto = -1;
-    gettimeofday( &tv, (struct timezone *) 0 );
-    pid = getpid();
-    atp->atph_tid = tv.tv_sec ^ ((( pid << 8 ) & 0xff00 ) | ( pid >> 8 ));
-
-#ifdef EBUG
-srandom( tv.tv_sec );
-#endif /* EBUG */
-
-    return atp;
-}
diff --git a/libatalk/atp/atp_packet.c b/libatalk/atp/atp_packet.c
deleted file mode 100644 (file)
index a7fae01..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * $Id: atp_packet.c,v 1.6 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/param.h>
-#include <netinet/in.h>
-
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-
-#include <atalk/netddp.h>
-#include <atalk/ddp.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-
-#include "atp_internals.h"
-
-/* FIXME/SOCKLEN_T: socklen_t is a unix98 feature. */
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
-#endif /* ! SOCKLEN_T */
-
-#ifdef EBUG
-#include <stdio.h>
-
-static void print_func(u_int8_t ctrlinfo)
-{
-    switch ( ctrlinfo & ATP_FUNCMASK ) {
-    case ATP_TREQ:
-       printf( "TREQ" );
-       break;
-    case ATP_TRESP:
-       printf( "TRESP" );
-       break;
-    case ATP_TREL:
-       printf( "ANY/TREL" );
-       break;
-    case ATP_TIDANY:
-       printf( "*" );
-       break;
-    default:
-       printf( "%x", ctrlinfo & ATP_FUNCMASK );
-    }
-}
-
-static void dump_packet(char *buf, int len)
-{
-    int                i;
-
-    for ( i = 0; i < len; ++i ) {
-       printf( "%x-%c ", buf[i], buf[i] );
-    }
-    putchar( '\n' );
-}
-
-void atp_print_addr(char *s, struct sockaddr_at *saddr)
-{
-    printf( "%s ", s );
-    saddr->sat_family == AF_APPLETALK ? printf( "at." ) :
-      printf( "%d.", saddr->sat_family );
-    saddr->sat_addr.s_net == ATADDR_ANYNET ? printf( "*." ) :
-      printf( "%d.", ntohs( saddr->sat_addr.s_net ));
-    saddr->sat_addr.s_node == ATADDR_ANYNODE ? printf( "*." ) :
-      printf( "%d.", saddr->sat_addr.s_node );
-    saddr->sat_port == ATADDR_ANYPORT ? printf( "*" ) :
-      printf( "%d", saddr->sat_port );
-}
-#endif /* EBUG */
-
-
-void atp_build_req_packet( struct atpbuf *pktbuf,
-                          u_int16_t tid,
-                          u_int8_t ctrl,
-                          struct atp_block *atpb )
-{
-    struct atphdr      hdr;
-
-    /* fill in the packet fields
-    */
-    hdr.atphd_ctrlinfo = ctrl;
-    hdr.atphd_bitmap = atpb->atp_bitmap;
-    hdr.atphd_tid = htons( tid );
-    *(pktbuf->atpbuf_info.atpbuf_data) = DDPTYPE_ATP;
-    memcpy(pktbuf->atpbuf_info.atpbuf_data + 1, &hdr, sizeof( struct atphdr ));
-    memcpy(pktbuf->atpbuf_info.atpbuf_data + ATP_HDRSIZE, 
-          atpb->atp_sreqdata, atpb->atp_sreqdlen ); 
-
-    /* set length
-    */
-    pktbuf->atpbuf_dlen = ATP_HDRSIZE + (size_t) atpb->atp_sreqdlen;
-}
-
-void atp_build_resp_packet( struct atpbuf *pktbuf,
-                           u_int16_t tid,
-                           u_int8_t ctrl,
-                           struct atp_block *atpb,
-                           u_int8_t seqnum )
-{
-    struct atphdr      hdr;
-
-    /* fill in the packet fields */
-    *(pktbuf->atpbuf_info.atpbuf_data) = DDPTYPE_ATP;
-    hdr.atphd_ctrlinfo = ctrl;
-    hdr.atphd_bitmap = seqnum;
-    hdr.atphd_tid = htons( tid );
-    memcpy(pktbuf->atpbuf_info.atpbuf_data + 1, &hdr, 
-          sizeof( struct atphdr ));
-    memcpy(pktbuf->atpbuf_info.atpbuf_data + ATP_HDRSIZE,
-         atpb->atp_sresiov[ seqnum ].iov_base,
-         atpb->atp_sresiov[ seqnum ].iov_len ); 
-
-    /* set length
-    */
-    pktbuf->atpbuf_dlen = ATP_HDRSIZE + (size_t) atpb->atp_sresiov[ seqnum ].iov_len;
-}
-
-
-int
-atp_recv_atp( ATP ah,
-             struct sockaddr_at *fromaddr,
-             u_int8_t *func,
-             u_int16_t tid,
-             char *rbuf,
-             int wait )
-{
-/* 
-  Receive a packet from address fromaddr of the correct function type
-  and with the correct tid.  fromaddr = AT_ANY... and function == ATP_TYPEANY
-  and tid == ATP_TIDANY can be used to wildcard match.
-  
-  recv_atp returns the length of the packet received (or -1 if error)
-  The function code for the packet received is returned in *func (ATP_TREQ or
-    ATP_TRESP).
-*/
-    struct atpbuf      *pq, *cq;
-    struct atphdr      ahdr;
-    u_int16_t          rfunc;
-    u_int16_t          rtid;
-    int                        i;
-    int                        dlen = -1;
-    int                        recvlen;
-    struct sockaddr_at faddr;
-    SOCKLEN_T          faddrlen;
-    struct atpbuf      *inbuf;
-
-    tid = htons( tid );
-
-    /* first check the queue
-    */
-#ifdef EBUG
-    atp_print_bufuse( ah, "recv_atp checking queue" );
-#endif /* EBUG */
-    for ( pq = NULL, cq = ah->atph_queue; cq != NULL;
-      pq = cq, cq = cq->atpbuf_next ) {
-       memcpy(&ahdr, cq->atpbuf_info.atpbuf_data + 1, 
-              sizeof( struct atphdr ));
-       rfunc = ahdr.atphd_ctrlinfo & ATP_FUNCMASK;
-#ifdef EBUG
-       printf( "<%d> checking", getpid());
-       printf( " tid=%hu func=", ntohs( ahdr.atphd_tid ));
-       print_func( rfunc );
-       atp_print_addr( " from", &cq->atpbuf_addr );
-       putchar( '\n' );
-#endif /* EBUG */
-       if ((( tid & ahdr.atphd_tid ) == ahdr.atphd_tid ) &&
-           (( *func & rfunc ) == rfunc )
-           && at_addr_eq( fromaddr, &cq->atpbuf_addr )) {
-           break;
-       }
-    }
-    if ( cq != NULL ) {
-       /* we found one in the queue -- copy to rbuf
-       */
-       dlen = (int) cq->atpbuf_dlen;
-       *func = rfunc;
-       memcpy( fromaddr, &cq->atpbuf_addr, sizeof( struct sockaddr_at ));
-       memcpy( rbuf, cq->atpbuf_info.atpbuf_data, cq->atpbuf_dlen );
-
-       /* remove packet from queue and free buffer
-       */
-       if ( pq == NULL ) {
-           ah->atph_queue = NULL;
-       } else {
-           pq->atpbuf_next = cq->atpbuf_next;
-       }
-       atp_free_buf( cq );
-       return( dlen );
-    }
-
-    /* we need to get it the net -- call on ddp to receive a packet
-    */
-#ifdef EBUG
-    printf( "<%d>", getpid());
-    atp_print_addr( " waiting on address", &ah->atph_saddr );
-    printf( "\nfor tid=%hu func=", ntohs( tid ));
-    print_func( *func );
-    atp_print_addr( " from", fromaddr );
-    putchar( '\n' );
-#endif /* EBUG */
-
-    do {
-#ifdef EBUG
-    fflush( stdout );
-#endif /* EBUG */
-       faddrlen = sizeof( struct sockaddr_at );
-       memset( &faddr, 0, sizeof( struct sockaddr_at ));
-
-       if (( recvlen = netddp_recvfrom( ah->atph_socket, rbuf, 
-                                        ATP_BUFSIZ, 0,
-                                        (struct sockaddr *) &faddr,
-                                        &faddrlen )) < 0 ) {
-           return -1;
-       }
-       memcpy( &ahdr, rbuf + 1, sizeof( struct atphdr ));
-       if ( recvlen >= ATP_HDRSIZE && *rbuf == DDPTYPE_ATP) {
-           /* this is a valid ATP packet -- check for a match */
-           rfunc = ahdr.atphd_ctrlinfo & ATP_FUNCMASK;
-           rtid = ahdr.atphd_tid;
-#ifdef EBUG
-           printf( "<%d> got tid=%hu func=", getpid(), ntohs( rtid ));
-           print_func( rfunc );
-           atp_print_addr( " from", &faddr );
-           putchar( '\n' );
-           bprint( rbuf, recvlen );
-#endif /* EBUG */
-           if ( rfunc == ATP_TREL ) {
-               /* remove response from sent list */
-               for ( pq = NULL, cq = ah->atph_sent; cq != NULL;
-                 pq = cq, cq = cq->atpbuf_next ) {
-                   if ( at_addr_eq( &faddr, &cq->atpbuf_addr ) &&
-                     cq->atpbuf_info.atpbuf_xo.atpxo_tid == ntohs( rtid )) 
-                       break;
-               }
-               if ( cq != NULL ) {
-#ifdef EBUG
-       printf( "<%d> releasing transaction %hu\n", getpid(), ntohs( rtid ));
-#endif /* EBUG */
-                   if ( pq == NULL ) {
-                       ah->atph_sent = cq->atpbuf_next;
-                   } else {
-                       pq->atpbuf_next = cq->atpbuf_next;
-                   }
-                   for ( i = 0; i < 8; ++i ) {
-                       if ( cq->atpbuf_info.atpbuf_xo.atpxo_packet[ i ]
-                                   != NULL ) {
-                           atp_free_buf ( cq->atpbuf_info.atpbuf_xo.atpxo_packet[ i ] );
-                       }
-                   }
-                   atp_free_buf( cq );
-               }
-
-           } else if ((( tid & rtid ) == rtid ) &&
-                   (( *func & rfunc ) == rfunc ) &&
-                   at_addr_eq( fromaddr, &faddr )) { /* got what we wanted */
-               *func = rfunc;
-               dlen = recvlen;
-               memcpy( fromaddr, &faddr, sizeof( struct sockaddr_at ));
-
-           } else {
-               /* add packet to incoming queue */
-#ifdef EBUG
-       printf( "<%d> queuing incoming...\n", getpid() );
-#endif /* EBUG */
-               if (( inbuf = atp_alloc_buf()) == NULL ) {
-                   return -1;
-               }
-               memcpy( &inbuf->atpbuf_addr, &faddr, 
-                       sizeof( struct sockaddr_at ));
-               inbuf->atpbuf_next = ah->atph_queue;
-               inbuf->atpbuf_dlen = (size_t) recvlen;
-               memcpy( inbuf->atpbuf_info.atpbuf_data, rbuf, recvlen );
-           }
-       }
-       if ( !wait && dlen < 0 ) {
-           return( 0 );
-       }
-
-    } while ( dlen < 0 );
-
-    return( dlen );
-}
-
-
-int at_addr_eq( 
-    struct sockaddr_at *paddr,         /* primary address */
-    struct sockaddr_at *saddr)         /* secondary address */
-{
-/* compare two atalk addresses -- only check the non-zero fields
-    of paddr against saddr.
-   return zero if not equal, non-zero if equal
-*/
-    return (( paddr->sat_port == ATADDR_ANYPORT || paddr->sat_port == saddr->sat_port )
-       &&  ( paddr->sat_addr.s_net == ATADDR_ANYNET ||
-             paddr->sat_addr.s_net == saddr->sat_addr.s_net )
-       &&  ( paddr->sat_addr.s_node == ATADDR_ANYNODE ||
-             paddr->sat_addr.s_node == saddr->sat_addr.s_node ));
-}
-
diff --git a/libatalk/atp/atp_rreq.c b/libatalk/atp/atp_rreq.c
deleted file mode 100644 (file)
index 6736dbd..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $Id: atp_rreq.c,v 1.4 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <errno.h>
-
-#include <netinet/in.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <atalk/atp.h>
-
-#include "atp_internals.h"
-
-
-/* wait for a tranasaction service request
-*/
-int atp_rreq(
-    ATP                        ah,             /* open atp handle */
-    struct atp_block   *atpb)          /* parameter block */
-{
-    struct atpbuf      *req_buf;       /* for receiving request packet */
-    struct atphdr      req_hdr;        /* request header overlay */
-    struct sockaddr_at faddr;          /* sender's address */
-    int                        recvlen;        /* length of received packet */
-    u_int16_t          tid;
-    int                        rc;
-    u_int8_t           func;
-
-#ifdef EBUG
-    atp_print_bufuse( ah, "atp_rreq" );
-#endif /* EBUG */
-
-    while (( rc = atp_rsel( ah, atpb->atp_saddr, ATP_TREQ )) == 0 ) {
-       ;
-    }
-
-    if ( rc != ATP_TREQ ) {
-#ifdef EBUG
-       printf( "<%d> atp_rreq: atp_rsel returns err %d\n", getpid(), rc );
-#endif /* EBUG */
-       return( rc );
-    }
-
-    /* allocate a buffer for receiving request
-    */
-    if (( req_buf = atp_alloc_buf()) == NULL ) {
-       return -1;
-    }
-
-    memcpy( &faddr, atpb->atp_saddr, sizeof( struct sockaddr_at ));
-    func = ATP_TREQ;
-    if (( recvlen = atp_recv_atp( ah, &faddr, &func, ATP_TIDANY,
-         req_buf->atpbuf_info.atpbuf_data, 1 )) < 0 ) {
-       atp_free_buf( req_buf );
-       return -1;
-    }
-
-    memcpy( &req_hdr, req_buf->atpbuf_info.atpbuf_data + 1, 
-           sizeof( struct atphdr ));
-    tid = ntohs( req_hdr.atphd_tid );
-
-    ah->atph_rtid = tid;
-    if (( ah->atph_rxo = req_hdr.atphd_ctrlinfo & ATP_XO ) != 0 ) {
-       ah->atph_rreltime = ATP_RELTIME *
-               ( 1 << ( req_hdr.atphd_ctrlinfo & ATP_TRELMASK ));
-    }
-
-    memcpy( atpb->atp_saddr, &faddr, sizeof( struct sockaddr_at ));
-
-    if ( recvlen - ATP_HDRSIZE > atpb->atp_rreqdlen ) {
-       atp_free_buf( req_buf );
-       errno = EMSGSIZE;
-       return -1;
-    }
-
-    atpb->atp_rreqdlen = recvlen - ATP_HDRSIZE;
-    memcpy( atpb->atp_rreqdata, 
-           req_buf->atpbuf_info.atpbuf_data + ATP_HDRSIZE,
-           recvlen - ATP_HDRSIZE );
-    atpb->atp_bitmap = req_hdr.atphd_bitmap;
-    atp_free_buf( req_buf );
-    return( 0 );
-}
diff --git a/libatalk/atp/atp_rresp.c b/libatalk/atp/atp_rresp.c
deleted file mode 100644 (file)
index ac0a146..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $Id: atp_rresp.c,v 1.6 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <errno.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-#include <netatalk/at.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-
-#ifdef EBUG
-#include <stdio.h>
-#endif /* EBUG */
-
-#include "atp_internals.h"
-
-int
-atp_rresp(
-    ATP                        ah,             /* open atp handle */
-    struct atp_block   *atpb)          /* parameter block */
-{
-    int                i, rc;
-    size_t     len;
-
-#ifdef EBUG
-    atp_print_bufuse( ah, "atp_rresp" );
-#endif /* EBUG */
-    /* check parameters
-    */
-    if ( atpb->atp_rresiovcnt <= 0 || atpb->atp_rresiovcnt > 8 ) {
-       errno = EINVAL;
-       return( -1 );
-    }
-
-    while (( rc = atp_rsel( ah, atpb->atp_saddr, ATP_TRESP )) == 0 ) {
-       ;
-    }
-
-    if ( rc != ATP_TRESP ) {
-       return( rc );
-    }
-
-    for ( i = 0; i < 8; ++i ) {
-       if ( ah->atph_resppkt[ i ] == NULL ) {
-           break;
-       }
-       len = ah->atph_resppkt[ i ]->atpbuf_dlen - ATP_HDRSIZE;
-       if ( i > atpb->atp_rresiovcnt - 1 ||
-               len > atpb->atp_rresiov[ i ].iov_len ) {
-           errno = EMSGSIZE;
-           return( -1 );
-       }
-#ifdef EBUG
-       fprintf( stderr, "atp_rresp copying %ld bytes packet %d\n",
-               len, i );
-       bprint( (char *)ah->atph_resppkt[ i ]->atpbuf_info.atpbuf_data,
-               len + ATP_HDRSIZE );
-#endif /* EBUG */
-       memcpy(atpb->atp_rresiov[ i ].iov_base,
-              ah->atph_resppkt[ i ]->atpbuf_info.atpbuf_data + ATP_HDRSIZE,
-              len );
-       atpb->atp_rresiov[ i ].iov_len = len;
-       atp_free_buf( ah->atph_resppkt[ i ] );
-       ah->atph_resppkt[ i ] = NULL;
-    }
-    atpb->atp_rresiovcnt = i;
-
-    return( 0 );
-}
diff --git a/libatalk/atp/atp_rsel.c b/libatalk/atp/atp_rsel.c
deleted file mode 100644 (file)
index bc6ec56..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * $Id: atp_rsel.c,v 1.6 2009-10-14 01:38:28 didg Exp $
- *
- * Copyright (c) 1990,1997 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <signal.h>
-#include <errno.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-
-#include <atalk/netddp.h>
-#include <atalk/compat.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-
-#include "atp_internals.h"
-
-#ifdef DROP_ATPTREL
-static int     release_count = 0;
-#endif /* DROP_ATPTREL */
-
-
-static int
-resend_request(ATP ah)
-{
-    /*
-     * update bitmap and send request packet
-     */
-    struct atphdr      req_hdr;
-
-#ifdef EBUG
-    printf( "\n<%d> resend_request: resending %ld byte request packet",
-           getpid(), ah->atph_reqpkt->atpbuf_dlen );
-    atp_print_addr( " to", &ah->atph_reqpkt->atpbuf_addr );
-    putchar( '\n' );
-    bprint( ah->atph_reqpkt->atpbuf_info.atpbuf_data,
-           ah->atph_reqpkt->atpbuf_dlen );
-#endif /* EBUG */
-
-    memcpy( &req_hdr, ah->atph_reqpkt->atpbuf_info.atpbuf_data + 1, 
-       sizeof( struct atphdr ));
-    req_hdr.atphd_bitmap = ah->atph_rbitmap;
-    memcpy( ah->atph_reqpkt->atpbuf_info.atpbuf_data + 1, &req_hdr, 
-           sizeof( struct atphdr ));
-
-    gettimeofday( &ah->atph_reqtv, (struct timezone *)0 );
-    if ( netddp_sendto( ah->atph_socket,
-           ah->atph_reqpkt->atpbuf_info.atpbuf_data,
-           ah->atph_reqpkt->atpbuf_dlen, 0,
-           (struct sockaddr *) &ah->atph_reqpkt->atpbuf_addr,
-           sizeof( struct sockaddr_at )) != ah->atph_reqpkt->atpbuf_dlen ) {
-       return( -1 );
-    }
-
-    if ( ah->atph_reqtries > 0 ) {
-       --(ah->atph_reqtries);
-    }
-
-    return( 0 );
-}
-
-int
-atp_rsel( 
-    ATP                        ah,             /* open atp handle */
-    struct sockaddr_at *faddr,         /* address to receive from */
-    int                        func)           /* which function(s) to wait for;
-                                          0 means request or response */
-{
-    struct atpbuf      *abuf, *pb, *cb;
-    struct atphdr      req_hdr, resp_hdr;
-    fd_set             fds;
-    int                        i, recvlen, requesting, mask, c;
-    u_int8_t           rfunc;
-    u_int16_t          tid;
-    struct timeval     tv;
-    struct sockaddr_at saddr;
-
-#ifdef EBUG
-    atp_print_bufuse( ah, "atp_rsel at top" );
-#endif /* EBUG */
-    if ( func == 0 ) {
-       func = ATP_FUNCANY;
-    }
-
-    requesting = ( func & ATP_TRESP ) && ah->atph_rrespcount > 0 &&
-       ( ah->atph_reqtries > 0 || ah->atph_reqtries == ATP_TRIES_INFINITE );
-
-    if ( requesting && ah->atph_rbitmap == 0 ) {
-       /*
-        * we already have a complete atp response; just return
-        */
-       return( ATP_TRESP );
-    }
-
-    if (( abuf = atp_alloc_buf()) == NULL ) {
-       return( -1 );
-    }
-
-    if ( requesting ) {
-#ifdef EBUG
-       printf( "<%d> atp_rsel: request pending\n", getpid());
-#endif /* EBUG */
-       gettimeofday( &tv, (struct timezone *)0 );
-       if ( tv.tv_sec - ah->atph_reqtv.tv_sec > ah->atph_reqto ) {
-           if ( resend_request( ah ) < 0 ) {
-               atp_free_buf( abuf );
-               return( -1 );
-           }
-       }
-    }
-
-    for ( ;; ) {
-       rfunc = func;
-       if ( requesting ) {
-           FD_ZERO( &fds );
-           FD_SET( ah->atph_socket, &fds );
-           tv.tv_sec = ah->atph_reqto;
-           tv.tv_usec = 0;
-           if (( c = select( ah->atph_socket + 1, &fds, NULL, NULL,
-                   &tv )) < 0 ) {
-               atp_free_buf( abuf );
-               return( -1 );
-           }
-           if ( c == 0 || FD_ISSET( ah->atph_socket, &fds ) == 0 ) {
-               recvlen = -1;
-               errno = EINTR;
-               goto timeout;
-           }
-       }
-       memcpy( &saddr, faddr, sizeof( struct sockaddr_at ));
-#ifdef EBUG
-       printf( "<%d> atp_rsel calling recv_atp,", getpid());
-       atp_print_addr( " accepting from: ", &saddr );
-       putchar( '\n' );
-#endif /* EBUG */
-       if (( recvlen = atp_recv_atp( ah, &saddr, &rfunc, ATP_TIDANY,
-               abuf->atpbuf_info.atpbuf_data, 0 )) >= 0 ) {
-           break;      /* we received something */
-       }
-
-timeout :
-       if ( !requesting || errno != EINTR ) {
-           break;      /* error */
-       }
-           
-       if ( ah->atph_reqtries <= 0 &&
-               ah->atph_reqtries != ATP_TRIES_INFINITE ) {
-           errno = ETIMEDOUT;
-           break;
-       }
-       
-       if ( resend_request( ah ) < 0 ) {
-           break;      /* error */
-       }
-    }
-
-    if ( recvlen <= 0 ) {      /* error */
-       atp_free_buf( abuf );
-       return( recvlen );
-    }
-
-#ifdef EBUG
-    printf( "<%d> atp_rsel: rcvd %d bytes", getpid(), recvlen );
-    atp_print_addr( " from: ", &saddr );
-    putchar( '\n' );
-    bprint( abuf->atpbuf_info.atpbuf_data, recvlen );
-#endif /* EBUG */
-
-    abuf->atpbuf_dlen = (size_t) recvlen;
-    memcpy( &resp_hdr, abuf->atpbuf_info.atpbuf_data + 1,
-           sizeof( struct atphdr ));
-
-    if ( rfunc == ATP_TREQ ) {
-       /*
-        * we got a request: check to see if it is a duplicate (XO)
-        * while we are at it, we expire old XO responses from sent list
-        */
-       memcpy( &req_hdr, abuf->atpbuf_info.atpbuf_data + 1, 
-               sizeof( struct atphdr ));
-       tid = ntohs( req_hdr.atphd_tid );
-       gettimeofday( &tv, (struct timezone *)0 );
-       for ( pb = NULL, cb = ah->atph_sent; cb != NULL;
-               pb = cb, cb = cb->atpbuf_next ) {
-#ifdef EBUG
-           printf( "<%d>", getpid());
-           atp_print_addr( " examining", &cb->atpbuf_addr );
-           printf( " %hu", cb->atpbuf_info.atpbuf_xo.atpxo_tid );
-           atp_print_addr( " (looking for", &saddr );
-           printf( " %hu)\n", tid );
-#endif /* EBUG */
-           if ( tv.tv_sec - cb->atpbuf_info.atpbuf_xo.atpxo_tv.tv_sec
-                   > cb->atpbuf_info.atpbuf_xo.atpxo_reltime ) {
-               /* discard expired response */
-#ifdef EBUG
-               printf( "<%d> expiring tid %hu\n", getpid(),
-                       cb->atpbuf_info.atpbuf_xo.atpxo_tid );
-#endif /* EBUG */
-               if ( pb == NULL ) {
-                   ah->atph_sent = cb->atpbuf_next;
-               } else {
-                   pb->atpbuf_next = cb->atpbuf_next;
-               }
-
-               for ( i = 0; i < 8; ++i ) {
-                   if ( cb->atpbuf_info.atpbuf_xo.atpxo_packet[ i ]
-                           != NULL ) {
-                       atp_free_buf( cb->atpbuf_info.atpbuf_xo.atpxo_packet[ i ] );
-                   }
-               }
-               atp_free_buf( cb );
-
-               if (( cb = pb ) == NULL )
-                   break;
-
-           } else if ( at_addr_eq( &saddr, &cb->atpbuf_addr )) {
-               if ( cb->atpbuf_info.atpbuf_xo.atpxo_tid == tid ) {
-                   break;
-               }
-           }
-       }
-
-       if ( cb != NULL ) {
-#ifdef EBUG
-           printf( "<%d> duplicate request -- re-sending XO resp\n",
-                   getpid());
-#endif /* EBUG */
-           /* matches an old response -- just re-send and reset expire */
-           cb->atpbuf_info.atpbuf_xo.atpxo_tv = tv;
-           for ( i = 0; i < 8; ++i ) {
-               if ( cb->atpbuf_info.atpbuf_xo.atpxo_packet[i] != NULL &&
-                       req_hdr.atphd_bitmap & ( 1 << i )) {
-                   netddp_sendto( ah->atph_socket,
-                           cb->atpbuf_info.atpbuf_xo.atpxo_packet[i]->atpbuf_info.atpbuf_data,
-                           cb->atpbuf_info.atpbuf_xo.atpxo_packet[i]->atpbuf_dlen,
-                           0, (struct sockaddr *) &saddr, sizeof( struct sockaddr_at));
-               }
-           }
-       }
-
-       if ( cb == NULL ) {
-           /* new request -- queue it and return */
-           memcpy( &abuf->atpbuf_addr, &saddr, sizeof( struct sockaddr_at ));
-           memcpy( faddr, &saddr, sizeof( struct sockaddr_at ));
-           abuf->atpbuf_next = ah->atph_queue;
-           ah->atph_queue = abuf;
-           return( ATP_TREQ );
-       } else {
-           atp_free_buf( abuf );
-           return( 0 );
-       }
-    }
-
-    /*
-     * we got a response: update bitmap
-     */
-    memcpy( &req_hdr, ah->atph_reqpkt->atpbuf_info.atpbuf_data + 1, 
-           sizeof( struct atphdr ));
-    if ( requesting && ah->atph_rbitmap & ( 1<<resp_hdr.atphd_bitmap )
-               && req_hdr.atphd_tid == resp_hdr.atphd_tid ) {
-       ah->atph_rbitmap &= ~( 1<<resp_hdr.atphd_bitmap );
-
-       if ( ah->atph_resppkt[ resp_hdr.atphd_bitmap ] != NULL ) {
-           atp_free_buf( ah->atph_resppkt[ resp_hdr.atphd_bitmap ] );
-       }
-       ah->atph_resppkt[ resp_hdr.atphd_bitmap ] = abuf;
-
-       /* if End Of Message, clear all higher bitmap bits
-       */
-       if ( resp_hdr.atphd_ctrlinfo & ATP_EOM ) {
-#ifdef EBUG
-           printf( "<%d> EOM -- seq num %d  current bitmap %d\n",
-               getpid(), resp_hdr.atphd_bitmap, ah->atph_rbitmap );
-#endif /* EBUG */
-           mask = 1 << resp_hdr.atphd_bitmap;
-           ah->atph_rbitmap &= ( mask | (mask-1) );
-       }
-
-       /* if Send Trans. Status, send updated request
-       */
-       if ( resp_hdr.atphd_ctrlinfo & ATP_STS ) {
-#ifdef EBUG
-           puts( "STS" );
-#endif /* EBUG */
-           req_hdr.atphd_bitmap = ah->atph_rbitmap;
-           memcpy(ah->atph_reqpkt->atpbuf_info.atpbuf_data + 1,
-                  &req_hdr, sizeof( struct atphdr ));
-           if ( netddp_sendto( ah->atph_socket,
-                   ah->atph_reqpkt->atpbuf_info.atpbuf_data,
-                   ah->atph_reqpkt->atpbuf_dlen, 0,
-                   (struct sockaddr *) &ah->atph_reqpkt->atpbuf_addr,
-                   sizeof( struct sockaddr_at )) !=
-                   ah->atph_reqpkt->atpbuf_dlen ) {
-               atp_free_buf( abuf );
-               return( -1 );
-           }
-       }
-    } else {
-       /*
-        * we are not expecting this response -- toss it
-        */
-       atp_free_buf( abuf );
-#ifdef EBUG
-       printf( "atp_rsel: ignoring resp bm=%x tid=%d (expected %x/%d)\n",
-               resp_hdr.atphd_bitmap, ntohs( resp_hdr.atphd_tid ),
-               ah->atph_rbitmap, ah->atph_tid );
-#endif /* EBUG */
-    }
-
-    if ( !ah->atph_rbitmap && ( req_hdr.atphd_ctrlinfo & ATP_XO )) {
-       /*
-        * successful completion - send release
-        * the release consists of DDP type byte + ATP header + 4 user bytes
-        */
-       req_hdr.atphd_ctrlinfo = ATP_TREL;
-       memcpy( ah->atph_reqpkt->atpbuf_info.atpbuf_data + 1, &req_hdr, 
-           sizeof( struct atphdr ));
-       memset( ah->atph_reqpkt->atpbuf_info.atpbuf_data + ATP_HDRSIZE, 0, 4 );
-       ah->atph_reqpkt->atpbuf_dlen = sizeof( struct atphdr ) + ATP_HDRSIZE;
-#ifdef EBUG
-       printf( "<%d> sending TREL", getpid() );
-       bprint( ah->atph_reqpkt->atpbuf_info.atpbuf_data,
-               ah->atph_reqpkt->atpbuf_dlen );
-#endif /* EBUG */
-#ifdef DROP_ATPTREL
-       if (( ++release_count % 10 ) != 0 ) {
-#endif /* DROP_ATPTREL */
-       netddp_sendto( ah->atph_socket, 
-                      ah->atph_reqpkt->atpbuf_info.atpbuf_data,
-                      ah->atph_reqpkt->atpbuf_dlen, 0,
-                      (struct sockaddr *) &ah->atph_reqpkt->atpbuf_addr,
-                      sizeof( struct sockaddr_at));
-#ifdef DROP_ATPTREL
-       }
-#endif /* DROP_ATPTREL */
-    }
-
-    if ( ah->atph_rbitmap != 0 ) {
-       if ( ah->atph_reqtries > 0
-               || ah->atph_reqtries == ATP_TRIES_INFINITE ) {
-           return( 0 );
-       } else {
-           errno = ETIMEDOUT;
-           return( -1 );
-       }
-    }
-
-    memcpy( faddr, &saddr, sizeof( struct sockaddr_at ));
-    return( ATP_TRESP );
-}
diff --git a/libatalk/atp/atp_sreq.c b/libatalk/atp/atp_sreq.c
deleted file mode 100644 (file)
index a34f347..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * $Id: atp_sreq.c,v 1.5 2002-01-17 06:08:55 srittau Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <errno.h>
-#include <sys/uio.h>
-#include <signal.h>
-
-#include <netinet/in.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-
-#include <atalk/netddp.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-
-#include "atp_internals.h"
-
-/*
- * ah:        open atp handle
- * atpb:      parameter block
- * respcount: buffers available for response
- * flags:     ATP_XO, ATP_TREL
- */
-int
-atp_sreq( ATP ah, struct atp_block *atpb, int respcount, u_int8_t flags )
-{
-    struct atpbuf      *req_buf;
-    int                        i;
-
-#ifdef EBUG
-    atp_print_bufuse( ah, "atp_sreq" );
-#endif /* EBUG */
-
-    /* check parameters
-    */
-    if ( atpb->atp_sreqdlen < 4 || atpb->atp_sreqdlen > ATP_MAXDATA
-           || ( respcount < 0 ) || ( respcount > 8 )
-           || ( atpb->atp_sreqto < 0 ) || (( atpb->atp_sreqtries < 1 )
-           && ( atpb->atp_sreqtries != ATP_TRIES_INFINITE ))) {
-       errno = EINVAL;
-       return -1;
-    }
-    /* clean up any packet fragments left from last request
-    */
-    for ( i = 0; i < 8; ++i ) {
-       if ( ah->atph_resppkt[ i ] != NULL ) {
-           atp_free_buf( ah->atph_resppkt[ i ] );
-           ah->atph_resppkt[ i ] = NULL;
-       }
-    }
-
-    /* generate bitmap, tid and ctrlinfo
-    */
-    atpb->atp_bitmap = ( 1 << respcount ) - 1;
-
-    /* allocate a new buffer and build request packet
-    */
-    if (( req_buf = atp_alloc_buf()) == NULL ) {
-       return( -1 );
-    }
-    atp_build_req_packet( req_buf, ah->atph_tid++, flags | ATP_TREQ, atpb );
-    memcpy( &req_buf->atpbuf_addr, atpb->atp_saddr,
-           sizeof( struct sockaddr_at ));
-
-    /* send the initial request
-    */
-#ifdef EBUG
-    printf( "\n<%d> atp_sreq: sending a %ld byte packet ", getpid(),
-           req_buf->atpbuf_dlen );
-    atp_print_addr( " to", atpb->atp_saddr );
-    putchar( '\n' );
-    bprint( req_buf->atpbuf_info.atpbuf_data, req_buf->atpbuf_dlen );
-#endif /* EBUG */
-
-    gettimeofday( &ah->atph_reqtv, (struct timezone *)0 );
-#ifdef DROPPACKETS
-if (( random() % 3 ) != 2 ) {
-#endif /* DROPPACKETS */
-    if ( netddp_sendto( ah->atph_socket, req_buf->atpbuf_info.atpbuf_data,
-           req_buf->atpbuf_dlen, 0, (struct sockaddr *) atpb->atp_saddr,
-           sizeof( struct sockaddr_at )) != req_buf->atpbuf_dlen ) {
-       atp_free_buf( req_buf );
-       return( -1 );
-    }
-#ifdef DROPPACKETS
-} else printf( "<%d> atp_sreq: dropped request\n", getpid() );
-#endif /* DROPPACKETS */
-
-    if ( atpb->atp_sreqto != 0 ) {
-       if ( ah->atph_reqpkt != NULL ) {
-           atp_free_buf( ah->atph_reqpkt );
-       }
-       ah->atph_reqto = atpb->atp_sreqto;
-       if ( atpb->atp_sreqtries == ATP_TRIES_INFINITE ) {
-           ah->atph_reqtries = ATP_TRIES_INFINITE;
-       } else {
-           /* we already sent one */
-           ah->atph_reqtries = atpb->atp_sreqtries - 1;
-       }
-       ah->atph_reqpkt = req_buf;
-       ah->atph_rbitmap = ( 1 << respcount ) - 1;
-       ah->atph_rrespcount = respcount;
-    } else {
-       atp_free_buf( req_buf );
-       ah->atph_rrespcount = 0;
-    }
-
-    return( 0 );
-}
diff --git a/libatalk/atp/atp_sresp.c b/libatalk/atp/atp_sresp.c
deleted file mode 100644 (file)
index 781760b..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * $Id: atp_sresp.c,v 1.6 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <sys/uio.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-
-#include <atalk/netddp.h>
-#include <atalk/atp.h>
-#include <atalk/util.h>
-
-#include "atp_internals.h"
-
-/* send a transaction response
-*/
-int atp_sresp(
-    ATP                        ah,             /* open atp handle */
-    struct atp_block   *atpb)          /* parameter block */
-{
-    int                        i;
-    u_int8_t           ctrlinfo;
-    struct atpbuf      *resp_buf;
-    struct atpbuf      *save_buf; /* uninitialized, OK 310105 */
-
-#ifdef EBUG
-    atp_print_bufuse( ah, "atp_sresp" );
-#endif /* EBUG */
-
-    /* check parameters
-    */
-    for ( i = atpb->atp_sresiovcnt - 1; i >= 0; --i ) {
-       if ( atpb->atp_sresiov[ i ].iov_len > ATP_MAXDATA ) 
-           break;
-    }
-    if ( i >= 0 || atpb->atp_sresiovcnt < 1 || atpb->atp_sresiovcnt > 8 ) {
-       errno = EINVAL;
-       return -1;
-    }
-
-    /* allocate a new buffer for reponse packet construction
-    */
-    if (( resp_buf = atp_alloc_buf()) == NULL ) {
-       return -1;
-    }
-
-    /* send all the response packets
-     * also need to attach list to ah for dup. detection (if XO)
-    */
-#ifdef EBUG
-    printf( "<%d> preparing to send %s response tid=%hu ", getpid(),
-           ah->atph_rxo ? "XO" : "", ah->atph_rtid );
-    atp_print_addr( " to", atpb->atp_saddr );
-    putchar( '\n' );
-#endif /* EBUG */
-    if ( ah->atph_rxo ) {
-       if (( save_buf = atp_alloc_buf()) == NULL ) {
-           return -1;
-       }
-       for ( i = 0; i < 8;
-               save_buf->atpbuf_info.atpbuf_xo.atpxo_packet[ i++ ] = NULL );
-    }
-    for ( i = 0; i < atpb->atp_sresiovcnt; ++i ) {
-       ctrlinfo = ATP_TRESP;
-#ifdef STS_RESPONSES
-       ctrlinfo |= ATP_STS;
-#endif /* STS_RESPONSES */
-       if ( i == atpb->atp_sresiovcnt-1 ) {
-           ctrlinfo |= ATP_EOM;
-       }
-       atp_build_resp_packet( resp_buf, ah->atph_rtid, ctrlinfo, atpb, i );
-
-       if ( ah->atph_rxo ) {
-           save_buf->atpbuf_info.atpbuf_xo.atpxo_packet[i] = resp_buf;
-       }
-#ifdef DROPPACKETS
-if (( random() % 3 ) != 2 ) {
-#endif /* DROPPACKETS */
-#ifdef EBUG
-printf( "<%d> sending packet tid=%hu serial no.=%d\n", getpid(),
-  ah->atph_rtid, i );
-bprint( resp_buf->atpbuf_info.atpbuf_data, resp_buf->atpbuf_dlen );
-#endif /* EBUG */
-       if ( netddp_sendto( ah->atph_socket, resp_buf->atpbuf_info.atpbuf_data,
-         resp_buf->atpbuf_dlen, 0, (struct sockaddr *) atpb->atp_saddr,
-         sizeof( struct sockaddr_at )) != resp_buf->atpbuf_dlen ) {
-           if ( ah->atph_rxo ) {
-               for ( ; i >= 0; --i ) {
-                   atp_free_buf( save_buf->atpbuf_info.atpbuf_xo.atpxo_packet[ i ] );
-               }
-               atp_free_buf( save_buf );
-           }
-           return -1;
-       }
-#ifdef DROPPACKETS
-} else printf( "<%d> atp_sresp: dropped serial no. %d\n", getpid(),  i );
-#endif /* DROPPACKETS */
-       /* allocate a buffer for next packet (if XO mode)
-       */
-       if ( ah->atph_rxo && ( resp_buf = atp_alloc_buf()) == NULL ) {
-           return -1;
-       }
-    }
-    atp_free_buf( resp_buf );
-    if ( ah->atph_rxo ) {
-       /* record timestamp, tid, release time, and destination address
-       */
-       gettimeofday( &save_buf->atpbuf_info.atpbuf_xo.atpxo_tv,
-               (struct timezone *) 0 );
-       save_buf->atpbuf_info.atpbuf_xo.atpxo_tid = ah->atph_rtid;
-       save_buf->atpbuf_info.atpbuf_xo.atpxo_reltime = ah->atph_rreltime;
-       memcpy( &save_buf->atpbuf_addr, atpb->atp_saddr, 
-               sizeof( struct sockaddr_at ));
-
-       /* add to list of packets we have sent
-       */
-       save_buf->atpbuf_next = ah->atph_sent;
-       ah->atph_sent = save_buf;
-#ifdef EBUG
-printf( "<%d> saved XO response\n", getpid());
-#endif /* EBUG */
-    }
-    return 0;
-}
index d6a8034d6be51576fcf1191cd9502217a3672fea..d6b17278abd378865158d88cfaa9bd2f5c3ff6aa 100644 (file)
@@ -10,7 +10,6 @@
 #include <unistd.h>
 #include <string.h>
 
-#include <netatalk/endian.h>
 #include <atalk/cnid.h>
 
 /* cnid_open.c */
index ff82c52cd6ebcb12be7eb64556c1f57f9cd3ae92..a1e69a76ac5446a37afde531b208c9cbdc1a46bf 100644 (file)
@@ -12,6 +12,7 @@
 #endif /* HAVE_CONFIG_H */
 
 #ifdef CNID_BACKEND_CDB
+#include <arpa/inet.h>
 #include "cnid_cdb_private.h"
 
 extern int cnid_cdb_update(struct _cnid_db *cdb, cnid_t id, const struct stat *st,
index e95033737544619d8b2a720ff8590884673ce891..1d14640af1fb68c77b2e9903a07385a36e47b619 100644 (file)
@@ -12,6 +12,7 @@
 #endif /* HAVE_CONFIG_H */
 
 #ifdef CNID_BACKEND_CDB
+#include <arpa/inet.h>
 #include "cnid_cdb_private.h"
 
 #define tid    NULL
index 9d65e44682360b8618b2aaadf885999998ee08da..ff28be84c9d399e309837bb0257fcf792d67a22c 100644 (file)
@@ -5,8 +5,6 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 
-#include <netatalk/endian.h>
-
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
@@ -16,6 +14,8 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <time.h>
+#include <arpa/inet.h>
+
 #include <db.h>
 
 #include <atalk/logger.h>
index 68136f9f196594325119d762eae8ec1154f06397..fae5067cd4a50447de5b0a58a1225b50411b6cc9 100644 (file)
@@ -29,6 +29,7 @@
 #include <atalk/list.h>
 #include <atalk/logger.h>
 #include <atalk/util.h>
+#include <atalk/compat.h>
 
 /* List of all registered modules. */
 static struct list_head modules = ATALK_LIST_HEAD_INIT(modules);
index e9d29fbbb26bbf06374f318a1282225eada1d2b8..12287ff0c35d551adb36544443b1e0a25fc3f2be 100644 (file)
@@ -26,8 +26,8 @@
 #include <errno.h>
 #include <netdb.h>
 #include <time.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/logger.h>
 #include <atalk/adouble.h>
 #include <atalk/cnid.h>
index 2f7e34c902551d97cba366ffa9c605556860aa07..fdba4c042a62591e3e771ed449ad7de6588986ca 100644 (file)
@@ -11,8 +11,8 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <string.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/cnid.h>
 
 extern struct _cnid_module cnid_dbd_module;
index 1ed78b4628e6fab46083488af4f7697c64d10e0e..5903d03fe449da281238818e9501c57e812cf9f1 100644 (file)
@@ -20,6 +20,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <arpa/inet.h>
 
 /* ------------------------ */
 cnid_t cnid_last_add(struct _cnid_db *cdb, const struct stat *st,
index ede35d479c49d7c777ca04e7f2c2a1b3d7830cb9..7fce6e7268d04462cd7506d5bc4b8981c4ca48d5 100644 (file)
@@ -10,7 +10,6 @@
 #include <unistd.h>
 #include <string.h>
 
-#include <netatalk/endian.h>
 #include <atalk/cnid.h>
 
 struct _cnid_last_private {
index 7e70102c5188520d4f30a78e1eb98a1bd7d5948c..5d17632420f3e7e968fc6cdf4c63467b3eb0d300 100644 (file)
@@ -9,10 +9,9 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <string.h>
-
 #include <sys/param.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/cnid.h>
 #include <atalk/cnid_private.h>
 #define STANDALONE 1
index 9aef79b53534aeabd9598c622c001b7b8f4904bc..383ff58b51a29c4b98623b15bf02657cd4a479db 100644 (file)
 #include <string.h>
 #include <signal.h>
 #include <sys/types.h>
+#include <arpa/inet.h>
 
 #include <atalk/dsi.h>
 #include <atalk/afp.h>
-#include <netatalk/endian.h>
 
 #ifndef MIN
 #define MIN(a,b) ((a) < (b) ? (a) : (b))
index d409814f5f82c038e736368b8b2bad3ca3138f06..42a65ecdf35493e36e5124c862579936ec3a8a5e 100644 (file)
@@ -11,8 +11,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <arpa/inet.h>
+
 #include <atalk/dsi.h>
-#include <netatalk/endian.h>
 
 void dsi_close(DSI *dsi)
 {
index f924da5a5e0429d6104f4f5bf494189ebefdcbac..4d5a904d199003b8930f6b87e93641ee6907a13d 100644 (file)
@@ -10,8 +10,9 @@
 #endif /* HAVE_CONFIG_H */
 
 #include <stdio.h>
+#include <arpa/inet.h>
+
 #include <atalk/dsi.h>
-#include <netatalk/endian.h>
 
 /* this assumes that the reply follows right after the command, saving
  * on a couple assignments. specifically, command, requestID, and
index 33e89fad3eda10c948fa29e5b6a06b5baa5c0df0..aec872ab0c15f1aaea351ddeb9febe44860e9f9a 100644 (file)
@@ -11,9 +11,9 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <arpa/inet.h>
 
 #include <atalk/dsi.h>
-#include <netatalk/endian.h>
 
 /* return the status and then delete the connection. most of the
  * fields are already set. */
index ad3169ee5657f1d7d3344fc7529309dc3a529485..c953afdc298b0fe1c4f51a7ad202eeeead38ab6a 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 #include <sys/types.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 extern int dsi_tcp_init (DSI *, const char * /*host*/, 
                             const char * /*address*/,
index 52209850988bf5c7e80749171cb18a5e2914052c..bb1bb1365f903f9635a10d4ab5a9234f32588b11 100644 (file)
@@ -35,7 +35,6 @@
 
 #include <atalk/logger.h>
 #include <atalk/dsi.h>
-#include <netatalk/endian.h>
 #include <atalk/util.h>
 
 #define min(a,b)  ((a) < (b) ? (a) : (b))
index e31fff09369d2d52af1db74cca26d0f52de353c9..b87c253b9c4a0f7e09cac95470235f02e44ca203 100644 (file)
@@ -51,7 +51,7 @@ int deny_severity = log_warning;
 #include <atalk/dsi.h>
 #include <atalk/compat.h>
 #include <atalk/util.h>
-#include <netatalk/endian.h>
+
 #include "dsi_private.h"
 
 #define min(a,b)  ((a) < (b) ? (a) : (b))
index 2a996539a968ba0201c8c19d1f62e9a53a8f7c25..bdc748c4b436f7da755c6372393f07e6b276a09b 100644 (file)
@@ -15,7 +15,6 @@
 #include <signal.h>
 
 #include <atalk/dsi.h>
-#include <netatalk/endian.h>
 
 /* server generated tickles. as this is only called by the tickle handler,
  * we don't need to block signals. */
index 84a6e9e602c00d3f594c88757960f81d06cdccd3..3e96489e4fd4b8deea3fe6843c9ea6ccceeb2274 100644 (file)
@@ -21,7 +21,6 @@
 #include <string.h>
 
 #include <atalk/dsi.h>
-#include <netatalk/endian.h>
 
 #ifndef MIN
 #define MIN(a,b)     ((a) < (b) ? (a) : (b))
index bf9c4632ace3610a4f97867e4e2380819d339d94..866510c9985c526309cac4e07c86d467c032c391 100644 (file)
@@ -1,6 +1,4 @@
 # Makefile.am for libatalk/locking/
 
 noinst_LTLIBRARIES = liblocking.la
-noinst_HEADERS = smb_share_modes.h
-
-liblocking_la_SOURCES = locking.c smb_share_modes.c
+liblocking_la_SOURCES = locking.c
index 1511c5d8fba1e08918c18d39393e6a4dc379e54e..db0b51399a5971cc0267fea2ae3fb3d2489c2c0b 100644 (file)
@@ -19,8 +19,6 @@
 #include <atalk/cnid.h>
 #include <atalk/paths.h>
 
-#include "smb_share_modes.h"
-
 /***************************************************************************
  * structures and defines
  ***************************************************************************/
@@ -80,7 +78,7 @@ int locktable_init(const char *path)
 {
     EC_INIT;
 
-    EC_NULL_LOG(tdb = smb_share_mode_db_open(path));
+//    EC_NULL_LOG(tdb = smb_share_mode_db_open(path));
 
 EC_CLEANUP:
     EC_EXIT;
diff --git a/libatalk/nbp/.gitignore b/libatalk/nbp/.gitignore
deleted file mode 100644 (file)
index aae291d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-*.lo
-*.la
-.deps
-.libs
-.gitignore
-nbp_lkup.o nbp_rgstr.o nbp_unrgstr.o nbp_util.o
diff --git a/libatalk/nbp/Makefile.am b/libatalk/nbp/Makefile.am
deleted file mode 100644 (file)
index 1a6404d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Makefile.am for libatalk/nbp/
-
-noinst_LTLIBRARIES = libnbp.la
-
-libnbp_la_SOURCES = nbp_util.c nbp_lkup.c nbp_rgstr.c nbp_unrgstr.c
-
-noinst_HEADERS = nbp_conf.h
diff --git a/libatalk/nbp/nbp_conf.h b/libatalk/nbp/nbp_conf.h
deleted file mode 100644 (file)
index 66029a6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * $Id: nbp_conf.h,v 1.3 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef NBP_CONF_H
-#define NBP_CONF_H 1
-
-#include <sys/cdefs.h>
-#include <atalk/nbp.h>
-
-extern char            nbp_send[ 1024 ];
-extern char            nbp_recv[ 1024 ];
-extern u_char          nbp_port;
-extern unsigned char    nbp_id;
-
-
-int nbp_parse (char *, struct nbpnve *, int);
-int nbp_match (struct nbpnve *, struct nbpnve *, int);
-
-#endif /* NBP_CONF_H */
diff --git a/libatalk/nbp/nbp_lkup.c b/libatalk/nbp/nbp_lkup.c
deleted file mode 100644 (file)
index 6a99126..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * $Id: nbp_lkup.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1997 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <netatalk/ddp.h>
-#include <atalk/compat.h>
-#include <atalk/nbp.h>
-#include <atalk/netddp.h>
-#include <atalk/ddp.h>
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif /* HAVE_NETDB_H */
-
-#include  "nbp_conf.h"
-
-/* FIXME/SOCKLEN_T: socklen_t is a unix98 feature. */
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
-#endif /* ! SOCKLEN_T */
-
-int nbp_lookup( const char *obj, const char *type, const char *zone, struct nbpnve *nn,
-    int                        nncnt,
-    const struct at_addr *ataddr)
-{
-    struct sockaddr_at addr, from;
-    struct timeval     tv, tv_begin, tv_end;
-    fd_set             fds;
-    struct nbpnve      nve;
-    struct nbphdr      nh;
-    struct nbptuple    nt;
-    struct servent     *se;
-    char               *data = nbp_send;
-    SOCKLEN_T          namelen;
-    int                        s, cnt, tries, sc, cc, i, c;
-
-    memset(&addr, 0, sizeof(addr));
-    memset(&from, 0, sizeof(from));
-    if (ataddr) 
-      memcpy(&addr.sat_addr, ataddr, sizeof(struct at_addr));
-    if ((s = netddp_open(&addr, &from)) < 0)
-      return -1;
-
-    *data++ = DDPTYPE_NBP;
-#ifdef MACOSX_SERVER
-    nh.nh_op = from.sat_addr.s_node ? NBPOP_BRRQ : NBPOP_LKUP;
-#else /* MACOSX_SERVER */
-    nh.nh_op = NBPOP_BRRQ;
-#endif /* MACOSX_SERVER */
-
-    nh.nh_cnt = 1;
-    nh.nh_id = ++nbp_id;
-    memcpy( data, &nh, SZ_NBPHDR );
-    data += SZ_NBPHDR;
-
-    memset(&nt, 0, sizeof(nt));
-    nt.nt_net = addr.sat_addr.s_net;
-    nt.nt_node = addr.sat_addr.s_node;
-    nt.nt_port = addr.sat_port;
-
-    memcpy( data, &nt, SZ_NBPTUPLE);
-    data += SZ_NBPTUPLE;
-
-    if ( obj ) {
-       if (( cc = strlen( obj )) > NBPSTRLEN ) goto lookup_err;
-       *data++ = cc;
-       memcpy( data, obj, cc );
-       data += cc;
-    } else {
-       *data++ = 1;
-       *data++ = '='; /* match anything */
-    }
-
-    if ( type ) {
-       if (( cc = strlen( type )) > NBPSTRLEN ) goto lookup_err;
-       *data++ = cc;
-       memcpy( data, type, cc );
-       data += cc;
-    } else {
-       *data++ = 1;
-       *data++ = '='; /* match anything */
-    }
-
-    if ( zone ) {
-       if (( cc = strlen( zone )) > NBPSTRLEN ) goto lookup_err;
-       *data++ = cc;
-       memcpy( data, zone, cc );
-       data += cc;
-    } else {
-       *data++ = 1;
-       *data++ = '*'; /* default zone */
-    }
-
-    if ( nbp_port == 0 ) {
-      if (( se = getservbyname( "nbp", "ddp" )) == NULL ) {
-                   nbp_port = 2;
-      } else {
-                   nbp_port = ntohs( se->s_port );
-      }
-    }
-
-#ifdef MACOSX_SERVER
-    if (from.sat_addr.s_node) {
-      memcpy(&addr.sat_addr, &from.sat_addr, sizeof(addr.sat_addr));
-    } else {
-      addr.sat_addr.s_net = ATADDR_ANYNET;
-      addr.sat_addr.s_node = ATADDR_BCAST;
-    }
-#endif /* MACOSX_SERVER */
-    addr.sat_port = nbp_port;
-
-    cnt = 0;
-    tries = 3;
-    sc = data - nbp_send;
-    while ( tries > 0 ) {
-       if ( netddp_sendto( s, nbp_send, sc, 0, (struct sockaddr *)&addr,
-               sizeof( struct sockaddr_at )) < 0 ) {
-           goto lookup_err;
-       }
-
-       tv.tv_sec = 2L;
-       tv.tv_usec = 0;
-
-       for (;;) {
-           FD_ZERO( &fds );
-           FD_SET( s, &fds );
-           if ( gettimeofday( &tv_begin, NULL ) < 0 ) {
-               goto lookup_err;
-           }
-           if (( c = select( s + 1, &fds, NULL, NULL, &tv )) < 0 ) {
-               goto lookup_err;
-           }
-           if ( c == 0 || FD_ISSET( s, &fds ) == 0 ) {
-               break;
-           }
-           if ( gettimeofday( &tv_end, NULL ) < 0 ) {
-               goto lookup_err;
-           }
-           if ( tv_begin.tv_usec > tv_end.tv_sec ) {
-               tv_end.tv_usec += 1000000;
-               tv_end.tv_sec -= 1;
-           }
-           if (( tv.tv_usec -= ( tv_end.tv_usec - tv_begin.tv_usec )) < 0 ) {
-               tv.tv_usec += 1000000;
-               tv.tv_sec -= 1;
-           }
-           if (( tv.tv_sec -= ( tv_end.tv_sec - tv_begin.tv_sec )) < 0 ) {
-               break;
-           }
-
-           namelen = sizeof( struct sockaddr_at );
-           if (( cc = netddp_recvfrom( s, nbp_recv, sizeof( nbp_recv ), 0,
-                   (struct sockaddr *)&from, &namelen )) < 0 ) {
-               goto lookup_err;
-           }
-
-           data = nbp_recv;
-           if ( *data++ != DDPTYPE_NBP ) {
-               continue;
-           }
-           cc--;
-
-           memcpy( &nh, data, SZ_NBPHDR );
-           data += SZ_NBPHDR;
-           if ( nh.nh_op != NBPOP_LKUPREPLY ) {
-               continue;
-           }
-           cc -= SZ_NBPHDR;
-
-           while (( i = nbp_parse( data, &nve, cc )) >= 0 ) {
-               data += cc - i;
-               cc = i;
-               /*
-                * Check to see if nve is already in nn. If not,
-                * put it in, and increment cnt.
-                */
-               for ( i = 0; i < cnt; i++ ) {
-                   if ( nbp_match( &nve, &nn[ i ],
-                           NBPMATCH_NOZONE|NBPMATCH_NOGLOB )) {
-                       break;
-                   }
-               }
-               if ( i == cnt ) {
-                   nn[ cnt++ ] = nve;
-               }
-               if ( cnt == nncnt ) {
-                   tries = 0;
-                   break;
-               }
-           }
-           if ( cnt == nncnt ) {
-               tries = 0;
-               break;
-           }
-       }
-       tries--;
-    }
-
-    netddp_close(s);
-    errno = 0;
-    return( cnt );
-
-lookup_err:
-    netddp_close(s);
-    return -1;
-}
diff --git a/libatalk/nbp/nbp_rgstr.c b/libatalk/nbp/nbp_rgstr.c
deleted file mode 100644 (file)
index d09e866..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * $Id: nbp_rgstr.c,v 1.6 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1990,1993 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <atalk/nbp.h>
-#include <atalk/ddp.h>
-#include <atalk/netddp.h>
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif /* HAVE_NETDB_H */
-#include  "nbp_conf.h"
-
-/* FIXME/SOCKLEN_T: socklen_t is a unix98 feature. */
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
-#endif /* ! SOCKLEN_T */
-
-int nbp_rgstr( struct sockaddr_at *sat, const char *obj, const char *type, const char *zone)
-{
-    struct sockaddr_at to;
-    struct nbpnve      nn;
-    struct nbphdr      nh;
-    struct nbptuple    nt;
-    struct timeval     timeout;
-    fd_set             readfd;
-    struct servent     *se;
-    char               *data;
-    int                        s, cc;
-    SOCKLEN_T          namelen;
-
-    if ( nbp_lookup( obj, type, zone, &nn, 1, &sat->sat_addr ) > 0 ) {
-        errno = EADDRINUSE;
-       return( -1 );
-    }
-
-    memset(&to, 0, sizeof(to));
-    if ((s = netddp_open(&to, NULL)) < 0)
-        return -1;
-
-    data = nbp_send;
-    *data++ = DDPTYPE_NBP;
-    nh.nh_op = NBPOP_RGSTR;
-    nh.nh_cnt = 1;
-    nh.nh_id = ++nbp_id;
-    memcpy( data, &nh, SZ_NBPHDR );
-    data += SZ_NBPHDR;
-
-    memset(&nt, 0, sizeof(nt));
-    nt.nt_net = sat->sat_addr.s_net;
-    nt.nt_node = sat->sat_addr.s_node;
-    nt.nt_port = sat->sat_port;
-    memcpy( data, &nt, SZ_NBPTUPLE);
-    data += SZ_NBPTUPLE;
-
-    if ( obj ) {
-       if (( cc = strlen( obj )) > NBPSTRLEN ) return( -1 );
-       *data++ = cc;
-       memcpy( data, obj, cc );
-       data += cc;
-    } else {
-       *data++ = 0;
-    }
-
-    if ( type ) {
-       if (( cc = strlen( type )) > NBPSTRLEN ) return( -1 );
-       *data++ = cc;
-       memcpy( data, type, cc );
-       data += cc;
-    } else {
-       *data++ = 0;
-    }
-
-    if ( zone ) {
-       if (( cc = strlen( zone )) > NBPSTRLEN ) return( -1 );
-       *data++ = cc;
-       memcpy( data, zone, cc );
-       data += cc;
-    } else {
-       *data++ = 1;
-       *data++ = '*'; /* default zone */
-    }
-
-    
-    if ( nbp_port == 0 ) {
-       if (( se = getservbyname( "nbp", "ddp" )) == NULL ) {
-           nbp_port = 2;
-       } else {
-           nbp_port = ntohs( se->s_port );
-       }
-    }
-    to.sat_port = nbp_port;
-
-    if ( netddp_sendto( s, nbp_send, data - nbp_send, 0, 
-                       (struct sockaddr *)&to,
-                       sizeof( struct sockaddr_at )) < 0 ) {
-        goto register_err;
-    }
-
-    FD_ZERO( &readfd );
-    FD_SET( s, &readfd );
-    timeout.tv_sec = 2;
-    timeout.tv_usec = 0;
-    if (( cc = select( s + 1, &readfd, NULL, NULL, &timeout )) < 0 ) {
-        goto register_err;
-    }
-    if ( cc == 0 ) {
-       errno = ETIMEDOUT;
-       goto register_err;
-    }
-
-    namelen = sizeof( struct sockaddr_at );
-    if (( cc = netddp_recvfrom( s, nbp_recv, sizeof( nbp_recv ), 0,
-                       (struct sockaddr *)&to, &namelen )) < 0 ) {
-        goto register_err;
-    }
-
-    netddp_close( s );
-
-    data = nbp_recv;
-    if ( *data++ != DDPTYPE_NBP ) {
-       return( -1 );
-    }
-    memcpy( &nh, data, SZ_NBPHDR );
-    if ( nh.nh_op != NBPOP_OK ) {
-        return -1;
-    }
-    return( 0 );
-
-register_err:
-    netddp_close(s);
-    return -1;
-}
diff --git a/libatalk/nbp/nbp_unrgstr.c b/libatalk/nbp/nbp_unrgstr.c
deleted file mode 100644 (file)
index b16497d..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $Id: nbp_unrgstr.c,v 1.6 2009-10-14 02:24:05 didg Exp $
- *
- * Copyright (c) 1990,1997 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <atalk/nbp.h>
-#include <atalk/netddp.h>
-#include <atalk/ddp.h>
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif /* HAVE_NETDB_H */
-#include  "nbp_conf.h"
-
-/* FIXME/SOCKLEN_T: socklen_t is a unix98 feature. */
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
-#endif /* ! SOCKLEN_T */
-
-int nbp_unrgstr(const char *obj,const char *type,const char  *zone, const struct at_addr *addr)
-{
-    struct sockaddr_at to;
-    struct nbphdr      nh;
-    struct timeval     timeout;
-    fd_set             readfd;
-    struct servent     *se;
-    char               *data;
-    int                        s, cc;
-    SOCKLEN_T          namelen;
-
-
-    memset(&to, 0, sizeof(to));
-    if ((s = netddp_open(&to, NULL)) < 0)
-       return -1;
-
-    data = nbp_send;
-    *data++ = DDPTYPE_NBP;
-    nh.nh_op = NBPOP_UNRGSTR;
-    nh.nh_cnt = 1;
-    nh.nh_id = ++nbp_id;
-    memcpy( data, &nh, SZ_NBPHDR );
-    data += SZ_NBPHDR;
-
-    memset(data, 0, SZ_NBPTUPLE);
-    data += SZ_NBPTUPLE;
-
-    if ( obj ) {
-       if (( cc = strlen( obj )) > NBPSTRLEN ) return( -1 );
-       *data++ = cc;
-       memcpy( data, obj, cc );
-       data += cc;
-    } else {
-       *data++ = 0;
-    }
-
-    if ( type ) {
-       if (( cc = strlen( type )) > NBPSTRLEN ) return( -1 );
-       *data++ = cc;
-       memcpy( data, type, cc );
-       data += cc;
-    } else {
-       *data++ = 0;
-    }
-
-    if ( zone ) {
-       if (( cc = strlen( zone )) > NBPSTRLEN ) return( -1 );
-       *data++ = cc;
-       memcpy( data, zone, cc );
-       data += cc;
-    } else {
-       *data++ = 0;
-    }
-
-    memset( &to, 0, sizeof( struct sockaddr_at ));
-    to.sat_family = AF_APPLETALK;
-    if (addr) 
-      memcpy(&to.sat_addr, addr, sizeof(struct at_addr));
-#ifdef BSD4_4
-    to.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-
-    if ( nbp_port == 0 ) {
-       if (( se = getservbyname( "nbp", "ddp" )) == NULL ) {
-           nbp_port = 2;
-       } else {
-           nbp_port = ntohs( se->s_port );
-       }
-    }
-    to.sat_port = nbp_port;
-
-    if ( netddp_sendto( s, nbp_send, data - nbp_send, 0,
-                       (struct sockaddr *)&to,
-                       sizeof( struct sockaddr_at )) < 0 ) {
-        goto unregister_err;
-    }
-
-    FD_ZERO( &readfd );
-    FD_SET( s, &readfd );
-    timeout.tv_sec = 2;
-    timeout.tv_usec = 0;
-    if (( cc = select( s + 1, &readfd, NULL, NULL, &timeout )) < 0 ) {
-        goto unregister_err;
-    }
-    if ( cc == 0 ) {
-       errno = ETIMEDOUT;
-        goto unregister_err;
-    }
-
-    namelen = sizeof( struct sockaddr_at );
-    if (( cc = netddp_recvfrom( s, nbp_recv, sizeof( nbp_recv ), 0,
-                       (struct sockaddr *)&to, &namelen )) < 0 ) {
-        goto unregister_err;
-    }
-    netddp_close( s );
-
-    data = nbp_recv;
-    if ( *data++ != DDPTYPE_NBP ) {
-       return( -1 );
-    }
-    memcpy( &nh, data, SZ_NBPHDR );
-    if ( nh.nh_op != NBPOP_OK ) {
-       return( -1 );
-    }
-    return( 0 );
-
-unregister_err:
-    netddp_close(s);
-    return -1;
-}
diff --git a/libatalk/nbp/nbp_util.c b/libatalk/nbp/nbp_util.c
deleted file mode 100644 (file)
index 4cbea4b..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * $Id: nbp_util.c,v 1.5 2009-10-13 22:55:37 didg Exp $
- *
- * Copyright (c) 1990,1997 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <signal.h>
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-
-#include <atalk/nbp.h>
-#include <atalk/ddp.h>
-#include <atalk/util.h>
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif /* HAVE_NETDB_H */
-
-#include  "nbp_conf.h"
-
-char           nbp_send[ 1024 ];
-char           nbp_recv[ 1024 ];
-u_char         nbp_port = 0;
-unsigned char   nbp_id = 0;
-
-int nbp_parse(char *data, struct nbpnve *nn, int len)
-{
-    struct nbptuple    nt;
-
-    memcpy( &nt, data, SZ_NBPTUPLE);
-    data += SZ_NBPTUPLE;
-    len -= SZ_NBPTUPLE;
-    if ( len < 0 ) {
-       return( -1 );
-    }
-
-#ifdef BSD4_4
-    nn->nn_sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    nn->nn_sat.sat_family = AF_APPLETALK;
-    nn->nn_sat.sat_addr.s_net = nt.nt_net;
-    nn->nn_sat.sat_addr.s_node = nt.nt_node;
-    nn->nn_sat.sat_port = nt.nt_port;
-
-    nn->nn_objlen = *data++;
-    len -= nn->nn_objlen + 1;
-    if ( len < 0 ) {
-       return( -1 );
-    }
-    if ( nn->nn_objlen > NBPSTRLEN ) {
-       return( -1 );
-    }
-    memcpy( nn->nn_obj, data, nn->nn_objlen );
-    data += nn->nn_objlen;
-
-    nn->nn_typelen = *data++;
-    len -= nn->nn_typelen + 1;
-    if ( len < 0 ) {
-       return( -1 );
-    }
-    if ( nn->nn_typelen > NBPSTRLEN ) {
-       return( 1 );
-    }
-    memcpy( nn->nn_type, data, nn->nn_typelen );
-
-    data += nn->nn_typelen;
-    nn->nn_zonelen = *data++;
-    len -= nn->nn_zonelen + 1;
-    if ( len < 0 ) {
-       return( -1 );
-    }
-    if ( nn->nn_zonelen > NBPSTRLEN ) {
-       return( 1 );
-    }
-    memcpy( nn->nn_zone, data, nn->nn_zonelen );
-
-    return( len );
-}
-
-#define NBPM_OBJ       (1<<1)
-#define NBPM_TYPE      (1<<2)
-#define NBPM_ZONE      (1<<3)
-
-int nbp_match(struct nbpnve *n1, struct nbpnve *n2, int flags)
-{
-    int                        match = 0;
-
-    if ( flags & NBPMATCH_NOZONE ) {
-       match |= NBPM_ZONE;
-    }
-
-    if ( !( flags & NBPMATCH_NOGLOB )) {
-       if ( n1->nn_objlen == 1 && n1->nn_obj[0] == '=' ) {
-           match |= NBPM_OBJ;
-       }
-       if ( n1->nn_typelen == 1 && n1->nn_type[0] == '=' ) {
-           match |= NBPM_TYPE;
-       }
-    }
-
-    if ( !( match & NBPM_OBJ )) {
-       if ( n1->nn_objlen != n2->nn_objlen ||
-               strndiacasecmp( n1->nn_obj, n2->nn_obj, n1->nn_objlen )) {
-           return( 0 );
-       }
-    }
-    if ( !( match & NBPM_TYPE )) {
-       if ( n1->nn_typelen != n2->nn_typelen ||
-               strndiacasecmp( n1->nn_type, n2->nn_type, n1->nn_typelen )) {
-           return( 0 );
-       }
-    }
-    if ( !( match & NBPM_ZONE )) {
-       if ( n1->nn_zonelen != n2->nn_zonelen ||
-               strndiacasecmp( n1->nn_zone, n2->nn_zone, n1->nn_zonelen )) {
-           return( 0 );
-       }
-    }
-
-    return( 1 );
-}
-
-int nbp_name(const char  *name, char **objp,char **typep,char **zonep)
-{
-    static char        buf[ 32 + 1 + 32 + 1 + 32 + 1 ];
-    char       *p;
-
-    if ( name ) {
-       if ( strlen( name ) + 1 > sizeof( buf )) {
-           return( -1 );
-       }
-       strcpy( buf, name );
-
-       if (( p = strrchr( buf, '@' )) != NULL ) {
-           *p++ = '\0';
-           *zonep = p;
-       }
-       if (( p = strrchr( buf, ':' )) != NULL ) {
-           *p++ = '\0';
-           *typep = p;
-       }
-       if ( *buf != '\0' ) {
-           *objp = buf;
-       }
-    }
-
-    return( 0 );
-}
diff --git a/libatalk/netddp/.gitignore b/libatalk/netddp/.gitignore
deleted file mode 100644 (file)
index b8c114c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-*.lo
-*.la
-.deps
-.libs
-.gitignore
-netddp_open.o netddp_recvfrom.o netddp_sendto.o
diff --git a/libatalk/netddp/Makefile.am b/libatalk/netddp/Makefile.am
deleted file mode 100644 (file)
index 9f62087..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Makefile.am for libatalk/netddp/
-
-noinst_LTLIBRARIES = libnetddp.la
-
-libnetddp_la_SOURCES = netddp_open.c netddp_sendto.c netddp_recvfrom.c
diff --git a/libatalk/netddp/netddp_open.c b/libatalk/netddp/netddp_open.c
deleted file mode 100644 (file)
index 20ab8ef..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/* 
- * $Id: netddp_open.c,v 1.9 2005-04-28 20:50:02 bfernhomberg Exp $
- *
- * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- * open a ddp socket and return the port and address assigned. return
- * various address info if requested as well.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#ifdef MACOSX_SERVER
-#include <netat/appletalk.h>
-#include <netat/ddp.h>
-#endif /* MACOSX_SERVER */
-
-#include <netatalk/at.h>
-#include <atalk/netddp.h>
-
-int netddp_open(struct sockaddr_at *addr, struct sockaddr_at *bridge)
-{
-
-#ifdef NO_DDP
-    return -1;
-#else /* !NO_DDP */
-
-    int s;
-
-#ifdef MACOSX_SERVER
-    at_inet_t address, baddress;
-
-    if ((s = ddp_open(addr ? &addr->sat_port : NULL)) < 0)
-        return -1;
-
-    if (!addr)
-      return s;
-
-    if (rtmp_netinfo(s, &address, &baddress) < 0) {
-        ddp_close(s);
-       return -1;
-    }
-    
-    memcpy(&addr->sat_addr.s_net, &address.net, sizeof(addr->sat_addr.s_net));
-    addr->sat_addr.s_node = address.node;
-    addr->sat_port = address.socket;
-    if (bridge) {
-      memcpy(&bridge->sat_addr.s_net, &baddress.net, 
-            sizeof(bridge->sat_addr.s_net));
-      bridge->sat_addr.s_node = baddress.node;
-      bridge->sat_port = baddress.socket;
-    }
-#else /* MACOSX_SERVER */
-    socklen_t len;
-
-    if ((s = socket( AF_APPLETALK, SOCK_DGRAM, 0 )) < 0) 
-       return -1;
-    
-    if (!addr)
-       return s;
-
-    addr->sat_family = AF_APPLETALK;
-    /* rest of address should be initialized by the caller */
-    if (bind(s, (struct sockaddr *) addr, sizeof( struct sockaddr_at )) < 0 ) {
-        close(s);
-       return -1;
-    }
-
-    /* get the real address from the kernel */
-    len = sizeof( struct sockaddr_at);
-    if ( getsockname( s, (struct sockaddr *) addr, &len ) != 0 ) {
-        close(s);
-       return -1;
-    }
-#endif /* MACOSX_SERVER */
-
-    return s;
-#endif /* NO_DDP */
-}
diff --git a/libatalk/netddp/netddp_recvfrom.c b/libatalk/netddp/netddp_recvfrom.c
deleted file mode 100644 (file)
index 6e7a942..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 
- * $Id: netddp_recvfrom.c,v 1.5 2003-02-17 02:02:25 srittau Exp $
- *
- * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- * receive data.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifndef NO_DDP
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <errno.h>
-
-#ifdef MACOSX_SERVER
-#include <netat/appletalk.h>
-#include <netat/ddp.h>
-#endif /* MACOSX_SERVER */
-
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <netatalk/ddp.h>
-#include <atalk/netddp.h>
-
-#ifndef MAX
-#define MAX(a, b)  ((a) < (b) ? (b) : (a))
-#endif /* ! MAX */
-
-#ifdef MACOSX_SERVER
-int netddp_recvfrom(int fd, void *buf, int buflen, unsigned int dummy, 
-                    struct sockaddr *addr, unsigned int *addrlen)
-{
-    ssize_t i;
-    struct ddpehdr ddphdr;
-    struct sockaddr_at *sat = (struct sockaddr_at *) addr;
-    struct iovec iov[2];
-
-    iov[0].iov_base = (void *) &ddphdr;
-    iov[0].iov_len = sizeof(ddphdr);
-    iov[1].iov_base = buf;
-    iov[1].iov_len = buflen;
-
-    while ((i = readv(fd, iov, 2)) < 0) {
-      if (errno != EINTR)
-       return -1;
-    }
-
-    if (addr) {
-      sat->sat_addr.s_net = ddphdr.deh_snet;
-      sat->sat_addr.s_node = ddphdr.deh_snode;
-      sat->sat_port = ddphdr.deh_sport;
-    }
-
-    return MAX(0, i - sizeof(ddphdr));
-}
-
-#endif /* os x server */
-#endif /* no ddp */
diff --git a/libatalk/netddp/netddp_sendto.c b/libatalk/netddp/netddp_sendto.c
deleted file mode 100644 (file)
index 407b94d..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* 
- * $Id: netddp_sendto.c,v 1.7 2005-04-28 20:50:02 bfernhomberg Exp $
- *
- * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- * send data.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifndef NO_DDP
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <errno.h>
-
-#ifdef MACOSX_SERVER
-#include <netat/appletalk.h>
-#include <netat/ddp.h>
-#endif /* MACOSX_SERVER */
-
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <netatalk/ddp.h>
-#include <atalk/netddp.h>
-
-#ifndef MAX
-#define MAX(a, b)  ((a) < (b) ? (b) : (a))
-#endif /* ! MAX */
-
-#ifdef MACOSX_SERVER
-int netddp_sendto(int fd, void *buf, size_t buflen, unsigned int dummy, 
-                 const struct sockaddr *addr, unsigned int addrlen)
-{
-    ssize_t i;
-    struct ddpehdr ddphdr;
-    const struct sockaddr_at *sat = (const struct sockaddr_at *) addr;
-    struct iovec iov[2];
-
-    iov[0].iov_base = (void *) &ddphdr;
-    iov[0].iov_len = sizeof(ddphdr);
-    iov[1].iov_base = buf;
-    iov[1].iov_len = buflen;
-
-    if (!addr)
-      return -1;
-
-    memset(&ddphdr, 0, sizeof(ddphdr));
-    ddphdr.deh_len = htons(sizeof(ddphdr) + (u_int16_t) buflen);
-    ddphdr.deh_dnet = sat->sat_addr.s_net;
-    ddphdr.deh_dnode = sat->sat_addr.s_node;
-    ddphdr.deh_dport = sat->sat_port;
-    while ((i = writev(fd, iov, 2)) < 0) {
-      if (errno != EINTR)
-       return -1;
-    }
-
-    return MAX(0, i - sizeof(ddphdr));
-}
-
-#endif /* os x server */
-#endif /* no ddp */
index 3cf3dccf4b84c5a6f10ec5cc8a0095fa29039399..b295b54cea367d9d3c9bc2a6299a74f21250956e 100644 (file)
@@ -20,7 +20,7 @@
 
 #ifndef _BYTEORDER_H
 #define _BYTEORDER_H
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 /*
    This file implements macros for machine independent short and 
index e4f6d2b3b2a86ac698ea38000e23406f0141250b..4a4dda5d5e294fa7f9f0a51c16ef5f27831f444e 100644 (file)
 #if HAVE_LANGINFO_H
 #include <langinfo.h>
 #endif
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/logger.h>
 #include <atalk/unicode.h>
 #include <atalk/util.h>
+#include <atalk/compat.h>
+
 #include "byteorder.h"
 
 
index 0fc36b758cc544e94d269b34af4e3771b956bea7..7b36997d804a035a4f6b86f1d0686d95df9b6759 100644 (file)
@@ -31,8 +31,8 @@
 #include <unistd.h>
 #include <string.h>
 #include <errno.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/unicode.h>
 #include <atalk/logger.h>
 
index 3effc6856ca1b076021fd1f6a30226501475ee31..40784be3c5deb0e632cd9200b9936801dc056c0a 100644 (file)
@@ -28,7 +28,8 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 #include <stdlib.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/unicode.h>
 
 #include "mac_centraleurope.h"
index d20a8cec851a0aeb7e60ef3f9165fe4e7753cb60..fde6486130d6ea1b3d8915afa5f30fe0060b1caf 100644 (file)
@@ -28,8 +28,8 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 #include <stdlib.h> /* for size_t */
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/unicode.h>
 
 #include "mac_cyrillic.h"
index 933ba3751ae33ccfcc5324700754acb64fa81f42..e48237b68ed066258a2a58912a19255ecd442ba6 100644 (file)
@@ -30,7 +30,8 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 #include <stdlib.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/unicode.h>
 
 #include "mac_greek.h"
index 8b7bdca94ddad58f72741a520c841de0744ebcd0..91a022bd330983a0dcb2df6eb5decefba8cbf7c6 100644 (file)
@@ -30,8 +30,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/unicode.h>
 #include <atalk/logger.h>
 
index e703d2149332fb38b806f5564f17755cb847d1ad..34ccaaf93ee7f0a93d837de63e07ed0a22ee9293 100644 (file)
@@ -29,7 +29,8 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 #include <stdlib.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/unicode.h>
 
 #include "mac_roman.h"
index 44b18a13ef3946086f9870f4a38e3332d7a43a7a..619f4b015ea6cbded179e81eb3a65230a3dd53c5 100644 (file)
@@ -28,7 +28,8 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 #include <stdlib.h>
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
+
 #include <atalk/unicode.h>
 
 #include "mac_turkish.h"
index 17125004d7fde59c4e3d39ff8af39bdd75d8a6e9..7c5eb67e3ce0ddd653696ef014d657d324e07c15 100644 (file)
@@ -39,8 +39,8 @@
 #ifdef HAVE_USABLE_ICONV
 #include <iconv.h>
 #endif
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/unicode.h>
 #include <atalk/logger.h>
 #include "byteorder.h"
index c3146d0c65caed582f04cea18babfe9fc5fcaf22..896a2611e6b4857485b7a5e85b7a2db146ecdc3c 100644 (file)
@@ -29,8 +29,8 @@
 #endif /* HAVE_CONFIG_H */
 #include <stdlib.h>
 #include <errno.h>
+#include <arpa/inet.h>
 
-#include <netatalk/endian.h>
 #include <atalk/unicode.h>
 #include <atalk/logger.h>
 #include <atalk/unicode.h>
index ef48f21b27841b3d2920cf19972e7c5b2e95ad18..da61a4371cc6968e84915e1bb2ba7eab0bc353ff 100644 (file)
@@ -9,8 +9,7 @@
 #include <sys/stat.h>
 #include <atalk/logger.h>
 #include <errno.h>
-
-#include <netatalk/endian.h>
+#include <arpa/inet.h>
 
 #include <atalk/unicode.h>
 #include "ucs2_casetable.h"
index 9b5938f8c0a22a61b4af3f470b707aa679a960d9..957bf527c14dc72e24ccb752667bbec558bb122f 100644 (file)
@@ -5,7 +5,6 @@ pkgconfdir = @PKGCONFDIR@
 noinst_LTLIBRARIES = libutil.la
 
 libutil_la_SOURCES = \
-       atalk_addr.c    \
        bprint.c        \
        fault.c         \
        ftw.c           \
diff --git a/libatalk/util/atalk_addr.c b/libatalk/util/atalk_addr.c
deleted file mode 100644 (file)
index 751c68e..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-#include <netatalk/at.h>
-#include <netatalk/endian.h>
-#include <atalk/util.h>
-#include <ctype.h>
-
-/* 
- * Check whether "cp" is a valid ascii representation
- * of an AppleTalk address and convert to a binary address.
- * Examples of accepted forms are (in decimal, net of 4321,
- * node of 65):
- *
- *     4321.65
- *     0x10E1.41
- *     16.225.65
- *     0x10.E1.41
- *
- * If hex is used, and the first digit is one of A-F, the leading
- * 0x is redundant. Returns 1 if the address is valid, 0 if not.
- *
- * Unlike Internet addresses, AppleTalk addresses can have leading
- * 0's. This means that we can't support octal addressing.
- */
-
-int atalk_aton(char *cp, struct at_addr *addr)
-{
-    u_int32_t val, base, n;
-    char c;
-
-    val = 0; base = 10;
-    if ( *cp == '0' && ( *++cp == 'x' || *cp == 'X' )) {
-       base = 16, cp++;
-    }
-    if ( !isdigit( *cp ) && isxdigit( *cp )) {
-       base = 16;
-    }
-
-    for ( n = 0;; n++ ) {
-       while (( c = *cp ) != '\0') {
-           if ( isascii( c ) && isdigit( c )) {
-               val = (val * base) + (c - '0');
-               cp++;
-               continue;
-           }
-
-           if ( base == 16 && isascii( c ) && isxdigit( c )) {
-               val = ( val << 4 ) + ( c + 10 - ( islower( c ) ? 'a' : 'A' ));
-               cp++;
-               continue;
-           }
-           break;
-       }
-
-       if ( c != '.' && c != '\0' ) {
-           return( 0 );
-       }
-
-       switch ( n ) {
-       case 0:
-           if ( addr ) {
-               if ( val > 65535 ) {
-                   return( 0 );
-               }
-               addr->s_net = val;
-           }
-           if ( *cp++ ) {
-               val = 0;
-           } else {
-               break;
-           }
-           continue;
-
-       case 2:
-           if ( addr ) {
-               if ( addr->s_net > 255 ) {
-                   return( 0 );
-               }
-               addr->s_net <<= 8;
-               addr->s_net += addr->s_node;
-           }
-           /*FALLTHROUGH*/
-
-       case 1:
-           if ( addr ) {
-               if ( val > 255 ) {
-                   return( 0 );
-               }
-               addr->s_node = val;
-           }
-           if ( *cp++ ) {
-               val = 0;
-           } else {
-               break;
-           }
-           continue;
-
-       default:
-           return( 0 );
-       }
-       break;
-    }
-
-    if ( n < 1 ) {
-       return( 0 );
-    }
-    if ( addr ) {
-       addr->s_net = htons( addr->s_net );
-    }
-    return (1);
-}
index ab0c25e53cf7669f90409a20b50ebf308c71b223..72545e5b632fd6eba24918003f1a0b171681871e 100644 (file)
@@ -40,6 +40,7 @@
 #include <atalk/vfs.h>
 #include <atalk/util.h>
 #include <atalk/unix.h>
+#include <atalk/compat.h>
 
 /*!
  * @brief get cwd in static buffer
index 032c045d3973a7eb9b358a33416eeb595f0a1261..7f9629b0053e19450c6d3e6a59edc10addc1373e 100644 (file)
@@ -25,6 +25,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <dirent.h>
+#include <arpa/inet.h>
 
 #include <atalk/adouble.h>
 #include <atalk/ea.h>
@@ -34,6 +35,7 @@
 #include <atalk/vfs.h>
 #include <atalk/util.h>
 #include <atalk/unix.h>
+#include <atalk/compat.h>
 
 /*
  * Store Extended Attributes inside .AppleDouble folders as follows:
index 014a7482905e810ec2b19b7b0716a12bcc0e5d87..a4fa75b5c97291f3a88d56665b27b68c4c8d1553 100644 (file)
@@ -25,6 +25,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <dirent.h>
+#include <arpa/inet.h>
 
 #include <atalk/adouble.h>
 #include <atalk/ea.h>
index ee2636b6bfc306410c216059b9a3a1687b3a6eab..0115c1534bca209cb9b43e82ed2ba32a8a93695b 100644 (file)
@@ -59,6 +59,7 @@
 #include <atalk/util.h>
 #include <atalk/logger.h>
 #include <atalk/ea.h>
+#include <atalk/compat.h>
 
 /******** Solaris EA helper function prototypes ********/
 #ifdef HAVE_ATTROPEN
index 91d7c5586c4aeccb4a4de8df083aad88800eac40..83c6016903e42e8615fe4232b2b4118b755ea4ce 100644 (file)
@@ -22,6 +22,7 @@
 #include <atalk/logger.h>
 #include <atalk/unix.h>
 #include <atalk/acl.h>
+#include <atalk/compat.h>
 
 /* -----------------------------
    a dropbox is a folder where w is set but not r eg:
index 15492a5d62a1edea8390423ae1167e2bb5c709e8..0eaacfaee8af8fc5f6babb34709d2e7f7c8022f9 100644 (file)
@@ -42,6 +42,7 @@
 #include <atalk/errchk.h>
 #include <atalk/bstrlib.h>
 #include <atalk/bstradd.h>
+#include <atalk/compat.h>
 
 struct perm {
     uid_t uid;
index d98062fb471b84aa39d7365a27fbdeb924b055a7..adca7de8a56d0cc9b27832b0b1f37fa9623b167e 100644 (file)
@@ -1,3 +1,3 @@
 # Makefile.am for man/
 
-SUBDIRS = man1 man3 man4 man5 man8
+SUBDIRS = man1 man5 man8
index 15371dba4abe3d969160d4ce9703e8351484ab86..ef56aadbbee9384ffb11b4207797bd42cc782483 100644 (file)
@@ -21,20 +21,6 @@ NONGENERATED_MANS    =       ad.1 \
                                dbd.1 \
                                netatalk-config.1
 
-ATALK_MANS = aecho.1 \
-                               getzones.1 \
-                               nbp.1 \
-                               nbplkup.1 \
-                               nbprgstr.1 \
-                               nbpunrgstr.1 \
-                               pap.1 \
-                               papstatus.1 \
-                               psorder.1
-
-if USE_APPLETALK
-NONGENERATED_MANS += $(ATALK_MANS)
-endif
-
 man_MANS = $(GENERATED_MANS) $(NONGENERATED_MANS)
 CLEANFILES = $(GENERATED_MANS)
 EXTRA_DIST = $(TEMPLATE_FILES) $(NONGENERATED_MANS) $(ATALK_MANS)
diff --git a/man/man1/aecho.1 b/man/man1/aecho.1
deleted file mode 100644 (file)
index 24e108a..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-'\" t
-.\"     Title: aecho
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 17 Dec 1991
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "AECHO" "1" "17 Dec 1991" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-aecho \- send AppleTalk Echo Protocol packets to network hosts
-.SH "SYNOPSIS"
-.PP
-\fBaecho\fR\fB\fR\fB\fR
-[
-\fB\-c\fR\fI count\fR
-] (
-\fBaddress\fR
-|
-\fBnbpname\fR
-)
-.SH "DESCRIPTION"
-.PP
-\fBaecho\fR
-repeatedly sends an Apple Echo Protocol (AEP) packet to the host specified by the given AppleTalk
-\fBaddress\fR
-or
-\fBnbpname\fR
-and reports whether a reply was received\&. Requests are sent at the rate of one per second\&.
-.PP
-\fBaddress\fR
-is parsed by
-\fBatalk_aton\fR(3)\&.
-\fBnbpname\fR
-is parsed by
-\fBnbp_name\fR(3)\&. The nbp type defaults to `\fBWorkstation\fR\'\&.
-.PP
-When
-\fBaecho\fR
-is terminated, it reports the number of packets sent, the number of responses received, and the percentage of packets lost\&. If any responses were received, the minimum, average, and maximum round trip times are reported\&.
-.SH "EXAMPLE"
-.PP
-Check to see if a particular host is up and responding to AEP packets:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-example% \fBaecho bloodsport
-\fR\fB11 bytes from 8195\&.13: aep_seq=0\&. time=10\&. ms
-11 bytes from 8195\&.13: aep_seq=1\&. time=10\&. ms
-11 bytes from 8195\&.13: aep_seq=2\&. time=10\&. ms
-11 bytes from 8195\&.13: aep_seq=3\&. time=10\&. ms
-11 bytes from 8195\&.13: aep_seq=4\&. time=10\&. ms
-11 bytes from 8195\&.13: aep_seq=5\&. time=9\&. ms\fR\fB
-\fR\fB\fB^C\fR\fR\fB
-\fR\fB\-\-\-\-8195\&.13 AEP Statistics\-\-\-\-
-6 packets sent, 6 packets received, 0% packet loss
-round\-trip (ms)  min/avg/max = 9/9/10
-\fR
-.fi
-.if n \{\
-.RE
-.\}
-.SH "OPTIONS"
-.PP
-\fB\-c\fR\fI count\fR
-.RS 4
-Stop after
-\fIcount\fR
-packets\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBping\fR(1),
-\fBatalk_aton\fR(3),
-\fBnbp_name\fR(3),
-\fBaep\fR(4),
-\fBatalkd\fR(8)\&.
diff --git a/man/man1/getzones.1 b/man/man1/getzones.1
deleted file mode 100644 (file)
index c601486..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-'\" t
-.\"     Title: getzones
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 17 Dec 1991
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "GETZONES" "1" "17 Dec 1991" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-getzones \- list AppleTalk zone names
-.SH "SYNOPSIS"
-.HP \w'\fBgetzones\fR\fB\fR\ 'u
-\fBgetzones\fR\fB\fR [\-m | \-l] [\fIaddress\fR]
-.SH "DESCRIPTION"
-.PP
-\fBGetzones\fR
-is used to obtain a list of AppleTalk zone names using the Zone Information Protocol (ZIP)\&. It sends a GetZoneList request to an AppleTalk router\&. By default, it sends the request to the locally running
-\fBatalkd\fR(8)\&.
-.SH "OPTIONS"
-.PP
-\fB\-m\fR
-.RS 4
-List the name of the local zone only; this is accomplished by sending a ZIP GetMyZone request\&.
-.RE
-.PP
-\fB\-l\fR
-.RS 4
-List the local zones; this is accomplished by sending a GetLocalZones request\&.
-.RE
-.PP
-\fIaddress\fR
-.RS 4
-Contact the AppleTalk router at
-\fIaddress\&.\fR
-\fIaddress\fR
-is parsed by
-\fBatalk_aton\fR(3)\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBatalk_aton\fR(3),
-\fBatalkd\fR(8)\&.
diff --git a/man/man1/nbp.1 b/man/man1/nbp.1
deleted file mode 100644 (file)
index 036cd31..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-'\" t
-.\"     Title: nbp
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 24 June 2004
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "NBP" "1" "24 June 2004" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-nbp, nbplkup, nbprgstr, nbpunrgstr \- access NBP database
-.SH "SYNOPSIS"
-.HP \w'\fBnbplkup\fR\fB\fR\fB\fR\fB\ \fR\ 'u
-\fBnbplkup\fR\fB\fR\fB\fR\fB \fR [\-r\ \fImaxresponses\fR] [\-A\ \fIaddress\fR] [\-m\ \fImaccodepage\fR] \fInbpname\fR
-.HP \w'\fBnbprgstr\fR\fB\fR\fB\ \fR\ 'u
-\fBnbprgstr\fR\fB\fR\fB \fR [\-A\ \fIaddress\fR] [\-p\ \fIport\fR] [\-m\ \fImaccodepage\fR] \fInbpname\fR
-.HP \w'\fBnbpunrgstr\fR\fB\fR\fB\ \fR\ 'u
-\fBnbpunrgstr\fR\fB\fR\fB \fR [\-A\ \fIaddress\fR] [\-m\ \fImaccodepage\fR] \fInbpname\fR
-.SH "DESCRIPTION"
-.PP
-\fBnbprgstr\fR
-registers
-\fInbpname\fR
-with
-\fBatalkd\fR(8), at the given
-\fIport\fR\&.
-\fBnbpunrgstr\fR
-informs
-\fBatalkd\fR
-that
-\fInbpname\fR
-is no longer to be advertised\&.
-.PP
-\fBnbplkup\fR
-displays up to
-\fImaxresponses\fR
-(default 1000) entities registered on the AppleTalk internet\&.
-\fI\fInbpname\fR\fR
-is parsed by
-\fBnbp_name\fR(3)\&. An `\fB=\fR\' for the
-\fIobject\fR
-or
-\fItype\fR
-matches anything, and an `\fB*\fR\' for
-\fIzone\fR
-means the local zone\&. The default values are taken from the
-\fBNBPLKUP\fR
-environment variable, parsed as an
-\fInbpname\fR\&.
-.SH "ENVIRONMENT VARIABLES"
-.PP
-NBPLKUP
-.RS 4
-default nbpname for nbplkup
-.RE
-.PP
-ATALK_MAC_CHARSET
-.RS 4
-the codepage used by the clients on the Appletalk network
-.RE
-.PP
-ATALK_UNIX_CHARSET
-.RS 4
-the codepage used to display extended characters on this shell\&.
-.RE
-.SH "EXAMPLE"
-.PP
-Find all devices of type
-\fBLaserWriter\fR
-in the local zone\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-example% \fBnbplkup :LaserWriter\fR
-               Petoskey:LaserWriter        7942\&.129:218
-             Gloucester:LaserWriter        8200\&.188:186
-                 Rahway:LaserWriter        7942\&.2:138
-             517 Center:LaserWriter        7942\&.2:132
-                  ionia:LaserWriter        7942\&.2:136
-     Evil DEC from Hell:LaserWriter        7942\&.2:130
-              Hamtramck:LaserWriter        7942\&.2:134
-         Iron Mountain :LaserWriter        7942\&.128:250
-example%
-.fi
-.if n \{\
-.RE
-.\}
-.SH "SEE ALSO"
-.PP
-\fBnbp_name\fR(3),
-\fBatalkd\fR(8)\&.
diff --git a/man/man1/nbplkup.1 b/man/man1/nbplkup.1
deleted file mode 100644 (file)
index ac41808..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/nbp.1
diff --git a/man/man1/nbprgstr.1 b/man/man1/nbprgstr.1
deleted file mode 100644 (file)
index ac41808..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/nbp.1
diff --git a/man/man1/nbpunrgstr.1 b/man/man1/nbpunrgstr.1
deleted file mode 100644 (file)
index ac41808..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/nbp.1
diff --git a/man/man1/pap.1 b/man/man1/pap.1
deleted file mode 100644 (file)
index 784ae4b..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-'\" t
-.\"     Title: pap
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 6 May 2002
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "PAP" "1" "6 May 2002" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-pap \- client interface to remote printers using Printer Access Protocol
-.SH "SYNOPSIS"
-.HP \w'\fBpap\fR\fB\fR\ 'u
-\fBpap\fR\fB\fR [\-A\ \fIaddress\fR] [\-c] [\-d] [\-e] [\-E] [\-p\ \fInbpname\fR] [\-s\ \fIstatusfile\fR] [\-w] [\-W] [\fIFILES\fR]
-.SH "DESCRIPTION"
-.PP
-\fBpap\fR
-is used to connect and send files to an AppleTalk connected printer using the Apple Printer Access Protocol (PAP)\&. When
-\fBpap\fR
-starts execution, it tries to open a session with the printer using PAP, and then downloads the
-\fIfiles\fR
-to the printer\&.
-.PP
-If no
-\fIfiles\fR
-are given on the command line,
-\fBpap\fR
-begins reading from standard input\&.
-.PP
-If no printer is specified on the command line,
-\fBpap\fR
-looks for a file called
-\fB\&.paprc\fR
-in the current working directory and reads it to obtain the
-\fInbpname\fR
-of a printer\&. Blank lines and lines that begin with a `\fB#\fR\' are ignored\&.
-\fItype\fR
-and
-\fIzone\fR
-default to
-\fBLaserWriter\fR
-and the zone of the local host, respectively\&.
-.PP
-Note that
-\fBpap\fR
-is designed to be useful as a communication filter for sending
-\fBlpd\fR(8)
-spooled print jobs to AppleTalk connected printers\&. See
-\fBpsf\fR(8)
-for hints on how to use it this way\&.
-.SH "OPTIONS"
-.PP
-\fB\-A \fR\fIaddress\fR
-.RS 4
-Connect to the printer with Appletalk address
-\fIaddress\fR
-and do not consult the
-\fB\&.paprc\fR
-file to find a printer name\&. See
-\fBatalk_aton\fR(3)
-for the syntax of
-\fIaddress\fR\&.
-.RE
-.PP
-\fB\-c\fR
-.RS 4
-Take cuts\&. The PAP protocol specified a simple queuing procedure, such that the clients tell the printer how long they have been waiting to print\&. This option causes
-\fBpap\fR
-to lie about how long it has been waiting\&.
-.RE
-.PP
-\fB\-d\fR
-.RS 4
-Enable debug output\&.
-.RE
-.PP
-\fB\-e\fR
-.RS 4
-Send any message from the printer to stderr instead of stdout\&.
-\fBpsf\fR(8)
-invokes
-\fBpap\fR
-with this option\&.
-.RE
-.PP
-\fB\-E\fR
-.RS 4
-Don\'t wait for EOF from the printer\&. This option is useful for printers which don\'t implement PAP correctly\&. In a correct implementation, the client side should wait for the printer to return EOF before closing the connection\&. Some clients don\'t wait, and hence some printers have related bugs in their implementation\&.
-.RE
-.PP
-\fB\-p\fR \fInbpname\fR
-.RS 4
-Connect to the printer named
-\fInbpname\fR
-and do not consult the
-\fB\&.paprc\fR
-file to find a printer name\&. See
-\fBnbp_name\fR(3)
-for the syntax of
-\fInbpname\fR\&.
-.RE
-.PP
-\fB\-s\fR \fIstatusfile\fR
-.RS 4
-Update the file called
-\fIstatusfile\fR
-to contain the most recent status message from the printer\&.
-\fBpap\fR
-gets the status from the printer when it is waiting for the printer to process input\&. The
-\fIstatusfile\fR
-will contain a single line terminated with a newline\&. This is useful when
-\fBpap\fR
-is invoked by
-\fBpsf\fR(8)
-within
-\fBlpd\fR\'s spool directory\&.
-.RE
-.PP
-\fB\-w\fR
-.RS 4
-Wait for the printer status to contain the word "waiting" before sending the job\&. This is to defeat printer\-side spool available on HP IV and V printers\&.
-.RE
-.PP
-\fB\-W\fR
-.RS 4
-Wait for the printer status to contain the word "idle" before sending the job\&. This is to defeat printer\-side spool available on HP IV and V printers\&.
-.RE
-.SH "FILES"
-.PP
-\fB\&.paprc\fR
-.RS 4
-file read to obtain printer name if not specified on command line
-.RE
-.SH "SEE ALSO"
-.PP
-\fBnbp_name\fR(3),
-\fBatalk_aton\fR(3),
-\fBlpd\fR(8),
-\fBpsf\fR(8)\&.
diff --git a/man/man1/papstatus.1 b/man/man1/papstatus.1
deleted file mode 100644 (file)
index 631797d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/pap.1
diff --git a/man/man1/psorder.1 b/man/man1/psorder.1
deleted file mode 100644 (file)
index 9f736cb..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-'\" t
-.\"     Title: psorder
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 17 Dec 1991
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "PSORDER" "1" "17 Dec 1991" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-psorder \- PostScript pageorder filter
-.SH "SYNOPSIS"
-.HP \w'\fBpsorder\fR\fB\fR\ 'u
-\fBpsorder\fR\fB\fR [\-duf] \fIsourcefile\fR
-.SH "DESCRIPTION"
-.PP
-\fBpsorder\fR
-is a filter that re\-orders the pages of a PostScript document\&. The result is written to the standard output\&. By default, documents are processed into ascending order (the lowest numbered page is printed first)\&. Some PostScript documents specify that the order of their pages should never be changed; the default action of
-\fBpsorder\fR
-is to follow this specification\&.
-.PP
-If no source file is given, or if
-\fIsourcefile\fR
-is `\fB\-\fR\',
-\fBpsorder\fR
-reads from the standard input file\&.
-.SH "OPTIONS"
-.PP
-\fB\-d\fR
-.RS 4
-Re\-order the pages of the document in downward or descending order\&. This is typically used to change the order of a document to be printed by a printer that stacks pages face\-up, such as an Apple LaserWriter or LaserWriter Plus\&.
-.RE
-.PP
-\fB\-u\fR
-.RS 4
-Specifies forward order, and is the default\&. It is used to try and ensure the correct ordering when a document will be printed by a printer that stacks the pages face\-down\&.
-.RE
-.PP
-\fB\-f\fR
-.RS 4
-Force
-\fBpsorder\fR
-to re\-order the pages, even if the document claims that its page order is not to be trifled with\&. This option should only be used experimentally, as it may cause documents to print incorrectly\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBpsf\fR(8),
-\fBlpr\fR(1)\&.
diff --git a/man/man3/.gitignore b/man/man3/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/man/man3/Makefile.am b/man/man3/Makefile.am
deleted file mode 100644 (file)
index 198f977..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Makefile.am for man/man3
-
-ATALK_MANS = atalk_aton.3 nbp_name.3
-
-if USE_APPLETALK
-man_MANS = $(ATALK_MANS)
-endif
-
-EXTRA_DIST = $(ATALK_MANS)
diff --git a/man/man3/atalk_aton.3 b/man/man3/atalk_aton.3
deleted file mode 100644 (file)
index f8420ea..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-'\" t
-.\"     Title: atalk_aton
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 12 Jan 1994
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "ATALK_ATON" "3" "12 Jan 1994" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-atalk_aton \- AppleTalk address parsing
-.SH "SYNOPSIS"
-.sp
-.ft B
-.nf
-#include <sys/types\&.h>
-#include <netatalk/at\&.h>
-.fi
-.ft
-.HP \w'atalk_aton('u
-.BI "atalk_aton(char\ *\ " "cp" ", struct\ at_addr\ *\ " "ata" ");"
-.SH "DESCRIPTION"
-.PP
-The
-\fBatalk_aton()\fR
-routine converts an ASCII representation of an AppleTalk address to a format appropriate for system calls\&. Acceptable ASCII representations include both hex and base 10, in triples or doubles\&. For instance, the address `0x1f6b\&.77\' has a network part of `8043\' and a node part of `119\'\&. This same address could be written `8043\&.119\', `31\&.107\&.119\', or `0x1f\&.6b\&.77\'\&. If the address is in hex and the first digit is one of `A\-F\', a leading `0x\' is redundant\&.
-.SH "SEE ALSO"
-.PP
-\fBatalk\fR(4)\&.
diff --git a/man/man3/nbp_name.3 b/man/man3/nbp_name.3
deleted file mode 100644 (file)
index 4a9e102..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-'\" t
-.\"     Title: nbp_name
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 12 Jan 1994
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "NBP_NAME" "3" "12 Jan 1994" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-nbp_name \- NBP name parsing
-.SH "SYNOPSIS"
-.HP \w'int\ nbp_name('u
-.BI "int nbp_name(char\ *" "name" ", char\ **" "obj" ", char\ **" "type" ", char\ **" "zone" ");"
-.SH "DESCRIPTION"
-.PP
-\fBnbp_name()\fR
-parses user supplied names into their component object, type, and zone\&.
-\fBobj\fR,
-\fBtype\fR, and
-\fIzone\fR
-should be passed by reference, and should point to the caller\'s default values\&.
-\fBnbp_name()\fR
-will change the pointers to the parsed\-out values\&.
-\fBname\fR
-is of the form
-\fIobject\fR\fB:\fR\fItype\fR\fB@\fR\fIzone\fR, where each of
-\fIobject\fR,
-\fB:\fR\fItype\fR\fB,\fR
-and
-\fB@\fR\fIzone\fR
-replace
-\fBobj\fR,
-\fBtype\fR, and
-\fBzone,\fR
-respectively\&.
-\fItype\fR
-must be proceeded by `\fB:\fR\', and
-\fIzone\fR
-must be preceded by `\fB@\fR\'\&.
-.SH "EXAMPLE"
-.PP
-The argument of
-\fBafpd\fR(8)\'s
-\fB\-n\fR
-option is parsed with
-\fBnbp_name()\fR\&. The default value of
-\fBobj\fR
-is the first component of the machine\'s hostname (as returned by
-\fBgethostbyname\fR(3))\&. The default value of
-\fBtype\fR
-is ``AFPServer\'\', and of
-\fIzone\fR
-is ``*\'\', the default zone\&. To cause
-\fBafpd\fR
-to register itself in some zone other than the default, one would invoke it as
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-afpd \-n @some\-other\-zone
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-\fBobj\fR
-and
-\fBtype\fR
-would retain their default values\&.
-.SH "BUGS"
-.PP
-\fBobj\fR,
-\fBtype\fR, and
-\fIzone\fR
-return pointers into static area which may be over\-written on each call\&.
diff --git a/man/man4/.gitignore b/man/man4/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/man/man4/Makefile.am b/man/man4/Makefile.am
deleted file mode 100644 (file)
index d0295d4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Makefile.am for man/man4/
-
-ATALK_MANS = atalk.4
-
-if USE_APPLETALK
-man_MANS = $(ATALK_MANS)
-endif
-
-EXTRA_DIST = $(ATALK_MANS)
diff --git a/man/man4/atalk.4 b/man/man4/atalk.4
deleted file mode 100644 (file)
index 24be709..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-'\" t
-.\"     Title: atalk
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 17 Dec 1991
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "ATALK" "4" "17 Dec 1991" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-atalk \- AppleTalk protocol family
-.SH "SYNOPSIS"
-.sp
-.ft B
-.nf
-#include <sys/types\&.h>
-#include <netatalk/at\&.h>
-.fi
-.ft
-.SH "DESCRIPTION"
-.PP
-The AppleTalk protocol family is a collection of protocols layered above the Datagram Delivery Protocol (DDP), and using AppleTalk address format\&. The AppleTalk family may provide SOCK_STREAM (ADSP), SOCK_DGRAM (DDP), SOCK_RDM (ATP), and SOCK_SEQPACKET (ASP)\&. Currently, only DDP is implemented in the kernel; ATP and ASP are implemented in user level libraries; and ADSP is planned\&.
-.SH "ADDRESSING"
-.PP
-AppleTalk addresses are three byte quantities, stored in network byte order\&. The include file <\fBnetatalk/at\&.h\fR> defines the AppleTalk address format\&.
-.PP
-Sockets in the AppleTalk protocol family use the following address structure:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-struct sockaddr_at {
-    short sat_family;
-    u_char sat_port;
-    struct at_addr sat_addr;
-    char sat_zero[ 8 ];
-};
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-The port of a socket may be set with
-\fBbind\fR(2)\&. The node for
-\fBbind\fR
-must always be
-\fBATADDR_ANYNODE\fR: ``this node\&.\'\' The net may be
-\fBATADDR_ANYNET\fR
-or
-\fBATADDR_LATENET\fR\&.
-\fBATADDR_ANYNET\fR
-coresponds to the machine\'s ``primary\'\' address (the first configured)\&.
-\fBATADDR_LATENET\fR
-causes the address in outgoing packets to be determined when a packet is sent, i\&.e\&. determined late\&.
-\fBATADDR_LATENET\fR
-is equivalent to opening one socket for each network interface\&. The port of a socket and either the primary address or
-\fBATADDR_LATENET\fR
-are returned with
-\fBgetsockname\fR(2)\&.
-.SH "SEE ALSO"
-.PP
-\fBbind\fR(2),
-\fBgetsockname\fR(2),
-\fBatalkd\fR(8)\&.
index e3d258c74e04e3e75b877a3206096ba7b61e602b..84dd7b9cff6c90dfaa0cd54ea46447ea9cc6cf17 100644 (file)
@@ -25,17 +25,10 @@ TEMPLATE_FILES = AppleVolumes.default.5.tmpl \
        afp_ldap.conf.5.tmpl \
        afp_signature.conf.5.tmpl
 
-ATALK_MANS = atalkd.conf.5.tmpl papd.conf.5.tmpl
-
-if USE_APPLETALK
-GENERATED_MANS += atalkd.conf.5 papd.conf.5
-TEMPLATE_FILES += $(ATALK_MANS)
-endif
-
 NONGENERATED_MANS = AppleVolumes.5 AppleVolumes.system.5
 
 man_MANS = $(GENERATED_MANS) $(NONGENERATED_MANS)
 
 CLEANFILES = $(GENERATED_MANS)
 
-EXTRA_DIST = $(TEMPLATE_FILES) $(NONGENERATED_MANS) $(ATALK_MANS)
+EXTRA_DIST = $(TEMPLATE_FILES) $(NONGENERATED_MANS)
diff --git a/man/man5/atalkd.conf.5.tmpl b/man/man5/atalkd.conf.5.tmpl
deleted file mode 100644 (file)
index b618c76..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-'\" t
-.\"     Title: atalkd.conf
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 22 September 2000
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "ATALKD\&.CONF" "5" "22 September 2000" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-atalkd.conf \- Configuration file used by atalkd(8) to determine the interfaces used by the master Netatalk daemon
-.SH "DESCRIPTION"
-.PP
-\fB:ETCDIR:/atalkd\&.conf\fR
-is the configuration file used by atalkd to configure the Appletalk interfaces and their behavior
-.PP
-Any line not prefixed with
-\fB#\fR
-is interpreted\&. The configuration lines are composed like:
-.PP
-\fIInterface\fR
-\fB[\fR
-\fIoptions\fR
-\fB]\fR
-.PP
-The simplest case is to have either no atalkd\&.conf, or to have one that has no active lines\&. In this case, atalkd should auto\-discover the local interfaces on the machine\&. Please note that you cannot split lines\&.
-.PP
-The interface is the network interface that this to work over, such as
-\fBeth0\fR
-for Linux, or
-\fBle0\fR
-for Sun\&.
-.PP
-The possible options and their meanings are:
-.PP
-\fB\-addr \fR\fB\fInet\&.node\fR\fR
-.RS 4
-Allows specification of the net and node numbers for this interface, specified in Appletalk numbering format (example:
-\fB\-addr 66\&.6\fR)\&.
-.RE
-.PP
-\fB\-dontroute\fR
-.RS 4
-Disables Appletalk routing\&. It is the opposite of
-\fB\-router\fR\&.
-.RE
-.PP
-\fB\-net first[\-last]\fR
-.RS 4
-Allows the available net to be set, optionally as a range\&.
-.RE
-.PP
-\fB\-noallmulti\fR (linux only)
-.RS 4
-On linux the interfaces, atalkd uses, are set to ALLMULTI by default caused by countless NICs having problems without being forced into this mode (some even don\'t work with allmulti set)\&. In case, you\'ve a NIC known to support multicasts properly, you might want to set this option causing less packets to be processed
-.RE
-.PP
-\fB\-phase ( 1 | 2 )\fR
-.RS 4
-Specifies the Appletalk phase that this interface is to use (either Phase 1 or Phase 2)\&.
-.RE
-.PP
-\fB\-router\fR
-.RS 4
-Like
-\fB\-seed\fR, but allows single interface routing\&. It is the opposite of
-\fB\-dontroute\fR\&.
-.RE
-.PP
-\fB\-seed\fR
-.RS 4
-The seed option only works if you have multiple interfaces\&. It also causes all missing arguments to be automagically configured from the network\&.
-.RE
-.PP
-\fB\-zone \fR\fB\fIzonename\fR\fR
-.RS 4
-Specifies a specific zone that this interface should appear on (example:
-\fB\-zone "Parking Lot"\fR)\&. Please note that zones with spaces and other special characters should be enclosed in parentheses\&.
-.RE
-.SH "SEE ALSO"
-.PP
-\fBatalkd\fR(8)
diff --git a/man/man5/papd.conf.5.tmpl b/man/man5/papd.conf.5.tmpl
deleted file mode 100644 (file)
index ca8103f..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-'\" t
-.\"     Title: papd.conf
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 06 Sep 2004
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "PAPD\&.CONF" "5" "06 Sep 2004" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-papd.conf \- Configuration file used by papd(8) to determine the configuration of printers used by the Netatalk printing daemon
-.SH "DESCRIPTION"
-.PP
-\fB:ETCDIR:/papd\&.conf\fR
-is the configuration file used by papd to configure the printing services offered by netatalk\&. Please note that papd must be enabled in
-\fB:ETCDIR:/netatalk\&.conf\fR
-for this to take any effect\&.
-\fBpapd\fR
-shares the same defaults as lpd on many systems, but not Solaris\&.
-.PP
-Any line not prefixed with
-\fB#\fR
-is interpreted\&. The configuration lines are composed like:
-.PP
-\fIprintername:[options]\fR
-.PP
-On systems running a System V printing system the simplest case is to have either no papd\&.conf, or to have one that has no active lines\&. In this case, atalkd should auto\-discover the local printers on the machine\&. Please note that you can split lines by using
-\fB\e\efR\&.\fR
-.PP
-printername may be just a name (\fBPrinter 1\fR), or it may be a full name in nbp_name format (\fBPrinter 1:LaserWriter@My Zone\fR)\&.
-.PP
-Systems using a BSD printing system should make use of a pipe to the printing command in question within the
-\fBpr\fR
-option (eg\&.
-\fBpr=|/usr/bin/lpr\fR)\&.
-.PP
-When CUPS support is compiled in, then
-\fBcupsautoadd \fR
-as the first entry in papd\&.conf will automagically share all CUPS printers by papd utilizing the PPDs assigned in CUPS (customizable \-\- see below)\&. This can be overwritten for individal printers by subsequently adding individual entries using the CUPS queue name as
-\fBpr \fR
-entry\&. Note: CUPS support is mutually exclusive with System V support described above\&.
-.PP
-The possible options are colon delimited (\fB:\fR), and lines must be terminated with colons\&. The possible options and flags are:
-.PP
-\fBam=(uams list)\fR
-.RS 4
-The
-\fBam\fR
-option allows specific UAMs to be specified for a particular printer\&. It has no effect if the
-\fBau\fR
-flag is not present or if papd authentication was not built into netatalk\&. Note: possible values are
-\fBuams_guest\&.so\fR
-and
-\fB uams_clrtxt\&.so\fR
-only\&. The first method requires a valid username, but no password\&. The second requires both a valid username and the correct password\&.
-.RE
-.PP
-\fBau\fR
-.RS 4
-If present, this flag enables authentication for the printer\&. Please note that papd authentication must be built into netatalk for this to take effect\&.
-.RE
-.PP
-\fBco=(CUPS options)\fR
-.RS 4
-The
-\fBco\fR
-option allows options to be passed through to CUPS (eg\&.
-\fBco="protocol=TBCP" \fR
-or
-\fBco="raw"\fR)\&.
-.RE
-.PP
-\fBcupsautoadd[:type][@zone]\fR
-.RS 4
-If used as the first entry in papd\&.conf this will share all CUPS printers via papd\&. type/zone settings as well as other parameters assigned to this special printer share will apply to all CUPS printers\&. Unless the
-\fBpd\fR
-option is set, the CUPS PPDs will be used\&. To overwrite these global settings for individual printers simply add them subsequently to papd\&.conf and assign different settings\&.
-.RE
-.PP
-\fBfo\fR
-.RS 4
-If present, this flag enables a hack to translate line endings originating from pre Mac OS X LaserWriter drivers to let
-\fBfoomatic\-rip\fR
-recognize foomatic PPD options set in the printer dialog\&. Attention: Use with caution since this might corrupt binary print jobs!
-.RE
-.PP
-\fBop=(operator)\fR
-.RS 4
-This specifies the operator name, for lpd spooling\&.
-.RE
-.PP
-\fBpa=(appletalk address)\fR
-.RS 4
-Allows specification of Appletalk addresses\&. Usually not needed\&.
-.RE
-.PP
-\fBpd=(path to ppd file)\fR
-.RS 4
-Specifies a particular PPD (printer description file) to associate with the selected printer\&.
-.RE
-.PP
-\fBpr=(lpd/CUPS printer name or pipe command)\fR
-.RS 4
-Sets the
-\fBlpd\fR
-or
-\fBCUPS\fR
-printer that this is spooled to\&.
-.RE
-.SH "EXAMPLES"
-.PP
-Unless CUPS support has been compiled in (which is default from Netatalk 2\&.0 on) one simply defines the lpd queue in question by setting the
-\fBpr\fR
-parameter to the queue name, in the following example "ps"\&. If no
-\fBpr\fR
-parameter is set, the default printer will be used\&.
-.PP
-\fBExample.\ \&papd.conf System V printing system examples\fR
-.PP
-The first spooler is known by the AppleTalk name Mac Printer Spooler, and uses a PPD file located in
-/usr/share/lib/ppd\&. In addition, the user mcs will be the owner of all jobs that are spooled\&. The second spooler is known as HP Printer and all options are the default\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-Mac Printer Spooler:\e
-   :pr=ps:\e
-   :pd=/usr/share/lib/ppd/HPLJ_4M\&.PPD:\e
-   :op=mcs:
-
-HP Printer:\e
-   :
-.fi
-.if n \{\
-.RE
-.\}
-
-.PP
-An alternative to the technique outlined above is to direct papd\'s output via a pipe into another program\&. Using this mechanism almost all printing systems can be driven\&.
-.PP
-\fBExample.\ \&papd.conf examples using pipes\fR
-.PP
-The first spooler is known as HP 8100\&. It pipes the print job to
-\fB/usr/bin/lpr\fR
-for printing\&. PSSP authenticated printing is enabled, as is CAP\-style authenticated printing\&. Both methods support guest and cleartext authentication as specified by the \'\fBam\fR\' option\&. The PPD used is
-/etc/atalk/ppds/hp8100\&.ppd\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-HP 8100:\e
-   :pr=|/usr/bin/lpr \-Plp:\e
-   :sp:\e
-   :ca=/tmp/print:\e
-   :am=uams_guest\&.so,uams_pam\&.so:\e
-   :pd=/etc/atalk/ppds/hp8100\&.ppd:
-      
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-
-.PP
-Starting with Netatalk 2\&.0 direct CUPS integration is available\&. In this case, defining only a queue name as
-\fBpr\fR
-parameter won\'t invoke the SysV lpd daemon but uses CUPS instead\&. Unless a specific PPD has been assigned using the
-\fBpd\fR
-switch, the PPD configured in CUPS will be used by
-\fBpapd\fR, too\&.
-.PP
-There exists one special share named "cupsautoadd"\&. If this is present as the first entry then all available CUPS queues will be served automagically using the parameters assigned to this global share\&. But subsequent printer definitions can be used to override these global settings for individual spoolers\&.
-.PP
-\fBExample.\ \&papd.conf CUPS examples\fR
-.PP
-The first entry sets up automatic sharing of all CUPS printers\&. All those shares appear in the zone "1st floor" and since no additional settings have been made, they use the CUPS printer name as NBP name and use the PPD configured in CUPS\&. The second entry defines different settings for one single CUPS printer\&. It\'s NBP name is differing from the printer\'s name and the registration happens in another zone\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-cupsautoadd@1st floor:op=root:
-
-Boss\' LaserWriter@2nd floor:\e
-   :pr=laserwriter\-chief:
-.fi
-.if n \{\
-.RE
-.\}
-
-.SH "SEE ALSO"
-.PP
-\fBpapd\fR(8),
-\fBatalkd.conf\fR(5),
-\fBlpd\fR(8),
-\fBlpoptions\fR(8)
index 26273d4378663bcbdaabe2e167fffd4a085cd202..8749bccedb8a5c17189eb7f77d6f5a17b98e98c2 100644 (file)
@@ -13,18 +13,11 @@ SUFFIXES = .tmpl .
            -e s@:NETATALK_VERSION:@${NETATALK_VERSION}@ \
            <$< >$@
 
-NONGENERATED_MANS = timelord.8
 GENERATED_MANS    = afpd.8 cnid_dbd.8 cnid_metad.8
 TEMPLATE_FILES    = afpd.8.tmpl cnid_dbd.8.tmpl cnid_metad.8.tmpl
-ATALK_MANS        = atalkd.8.tmpl papd.8.tmpl papstatus.8.tmpl psf.8.tmpl
 
-if USE_APPLETALK
-GENERATED_MANS += atalkd.8 papd.8 papstatus.8 psf.8
-TEMPLATE_FILES += $(ATALK_MANS)
-endif
-
-man_MANS = $(GENERATED_MANS) $(NONGENERATED_MANS)
+man_MANS = $(GENERATED_MANS)
 
 CLEANFILES = $(GENERATED_MANS)
 
-EXTRA_DIST = $(TEMPLATE_FILES) $(NONGENERATED_MANS) $(ATALK_MANS)
+EXTRA_DIST = $(TEMPLATE_FILES)
diff --git a/man/man8/atalkd.8.tmpl b/man/man8/atalkd.8.tmpl
deleted file mode 100644 (file)
index 3f478fa..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-'\" t
-.\"     Title: atalkd
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 06 Sep 2004
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "ATALKD" "8" "06 Sep 2004" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-atalkd \- AppleTalk RTMP, NBP, ZIP, and AEP manager
-.SH "SYNOPSIS"
-.HP \w'\fBatalkd\fR\fB\fR\fB\fR\fB\fR\fB\fR\fB\fR\fB\fR\ 'u
-\fBatalkd\fR\fB\fR\fB\fR\fB\fR\fB\fR\fB\fR\fB\fR [\-f\ \fIconfigfile\fR] [\-1] [\-2]
-.SH "DESCRIPTION"
-.PP
-\fBatalkd\fR
-is responsible for all user level AppleTalk network management\&. This includes routing, name registration and lookup, zone lookup, and the AppleTalk Echo Protocol (similar to
-\fBping\fR(8))\&.
-\fBatalkd\fR
-is typically started at boot time, out of
-/etc/rc\&. It first reads from its configuration file,
-:ETCDIR:/atalkd\&.conf\&. If there is no configuration file,
-\fBatalkd\fR
-will attempt to configure all available interfaces and will create a configuration file\&. The file consists of a series of interfaces, one per line\&. Lines with `#\' in the first column are ignored, as are blank lines\&. The syntax is
-.PP
-\fIinterface\fR
-[
-\fB\-seed\fR
-] [
-\fB\-phase\fR
-\fInumber\fR
-] [
-\fB\-net\fR
-\fInet\-range\fR
-] [
-\fB\-addr\fR
-\fIaddress\fR
-] [
-\fB\-zone\fR
-\fIzonename\fR
-] \&.\&.\&.
-.PP
-Note that all fields except the interface are optional\&. The loopback interface is configured automatically\&. If
-\fB\-seed\fR
-is specified, all other fields must be present\&. Also,
-\fBatalkd\fR
-will exit during bootstrap\%ping, if a router disagrees with its seed information\&. If
-\fB\-seed\fR
-is not given, all other information may be overriden during auto\-configuration\&. If no
-\fB\-phase\fR
-option is given, the default phase as given on the command line is used (the default is 2)\&. If
-\fB\-addr\fR
-is given and
-\fB\-net\fR
-is not, a net\-range of one is assumed\&.
-.PP
-The first \-zone directive for each interface is the ``default\'\' zone\&. Under Phase 1, there is only one zone\&. Under Phase 2, all routers on the network are configured with the default zone and must agree\&.
-\fBatalkd\fR
-maps ``*\'\' to the default zone of the first interface\&. Note: The default zone for a machine is determined by the configuration of the local routers; to appear in a non\-default zone, each service, e\&.g\&.
-\fBafpd\fR, must individually specify the desired zone\&. See also
-\fBnbp_name\fR(3)\&.
-.SH "ROUTING"
-.PP
-If you are connecting a netatalk router to an existing AppleTalk internet, you should first contact your local network administrators to obtain appropriate network addresses\&.
-.PP
-\fBatalkd\fR
-can provide routing between interfaces by configuring multiple interfaces\&. Each interface must be assigned a unique net\-range
-between 1 and 65279 (0 and 65535 are illegal, and addresses between 65280 and 65534 are reserved for startup)\&. It is best to choose the smallest useful net\-range, i\&.e\&. if you have three machines on an Ethernet, don\'t chose a net\-range of 1000\-2000\&. Each net\-range may have an arbitrary list of zones associated with it\&.
-.SH "EXAMPLES"
-.PP
-Below is an example configuration file for a sun4/40\&. The machine has two interfaces, ``le0\'\' and ``le1\'\'\&. The ``le0\'\' interface is configured automatically from other routers on the network\&. The machine is the only router for the ``le1\'\' interface\&.
-.PP
-.if n \{\
-.RS 4
-.\}
-.nf
-   le0
-   le1 \-seed \-net 9461\-9471 \-zone netatalk \-zone Argus
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-\fBatalkd\fR
-automatically acts as a router if there is more than one interface\&.
-.SH "FILES"
-.PP
-:ETCDIR:/atalkd\&.conf
-configuration file
-.SH "BUGS"
-.PP
-On some systems,
-\fBatalkd\fR
-can not be restarted\&.
-.SH "SEE ALSO"
-.PP
-\fBatalkd.conf\fR(5)
diff --git a/man/man8/papd.8.tmpl b/man/man8/papd.8.tmpl
deleted file mode 100644 (file)
index 3e94ed8..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-'\" t
-.\"     Title: papd
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 06 September 2004
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "PAPD" "8" "06 September 2004" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-papd \- AppleTalk print server daemon
-.SH "SYNOPSIS"
-.HP \w'\fBpapd\fR\fB\fR\fB\fR\ 'u
-\fBpapd\fR\fB\fR\fB\fR [\-d] [\-f\ configfile] [\-p\ printcap]
-.SH "DESCRIPTION"
-.PP
-\fBpapd\fR
-is the AppleTalk printer daemon\&. This daemon accepts print jobs from AppleTalk clients (typically Macintosh computers) using the Printer Access Protocol (PAP)\&. When used with System V printing systems,
-\fBpapd\fR
-spools jobs directly into an
-\fBlpd\fR(8)
-spool directory and wakes up
-\fBlpd\fR
-after accepting a job from the network to have it re\-examine the appropriate spool directory\&. The actual printing and spooling is handled entirely by
-\fBlpd\fR\&.
-.PP
-\fBpapd\fR
-can also pipe the print job to an external program for processing, and this is the preferred method on systems not using CUPS to avoid compatibility problems with all the flavours of
-\fBlpd\fR
-in use\&.
-.PP
-As of version 2\&.0, CUPS is also supported\&. Simply using
-\fBcupsautoadd\fR
-as first papd\&.conf entry will share all CUPS printers automagically using the PPD files configured in CUPS\&. It ist still possible to overwrite these defaults by individually define printer shares\&. See
-\fBpapd.conf\fR(5)
-for details\&.
-.PP
-\fBpapd\fR
-is typically started at boot time, out of system init scripts\&. It first reads from its configuration file,
-:ETCDIR:/papd\&.conf\&. The file is in the same format as
-/etc/printcap\&. See
-\fBprintcap\fR(5)
-for details\&. The name of the entry is registered with NBP\&.
-.PP
-The following options are supported:
-.TS
-tab(:);
-cB cB cB nB.
-T{
-Name
-T}:T{
-Type
-T}:T{
-Default
-T}:T{
-Description
-T}
-.T&
-c l l l
-c l l l
-c l l l
-c l l l
-c l l l
-c l l l
-c l l l
-c l l l
-c l l l
-c l l l.
-T{
-pd
-T}:T{
-str
-T}:T{
-\'\&.ppd\'
-T}:T{
-Pathname to PPD file
-T}
-T{
-pr
-T}:T{
-str
-T}:T{
-\'lp\'
-T}:T{
-LPD or CUPS printer name (or pipe to a print
-              command)
-T}
-T{
-op
-T}:T{
-str
-T}:T{
-\'operator\'
-T}:T{
-Operator name for LPD spooling
-T}
-T{
-au
-T}:T{
-bool
-T}:T{
-false
-T}:T{
-Whether to do authenticated printing or not
-T}
-T{
-ca
-T}:T{
-str
-T}:T{
-NULL
-T}:T{
-Pathname used for CAP\-style authentification
-T}
-T{
-sp
-T}:T{
-bool
-T}:T{
-false
-T}:T{
-PSSP\-style authetication
-T}
-T{
-am
-T}:T{
-str
-T}:T{
-NULL
-T}:T{
-UAMS to use for authentication
-T}
-T{
-pa
-T}:T{
-str
-T}:T{
-NULL
-T}:T{
-Printer\'s AppleTalk address
-T}
-T{
-co
-T}:T{
-str
-T}:T{
-NULL
-T}:T{
-CUPS options as supplied to the \fBlp\fR(1) command with "\-o"
-T}
-T{
-fo
-T}:T{
-bool
-T}:T{
-false
-T}:T{
-adjust lineending for foomatic\-rip
-T}
-.TE
-.sp 1
-If no configuration file is given, the hostname of the machine is used as the NBP name and all options take their default value\&.
-.SH "OPTIONS"
-.PP
-\-d
-.RS 4
-Do not fork or disassociate from the terminal\&. Write some debugging information to stderr\&.
-.RE
-.PP
-\-f \fIconfigfile\fR
-.RS 4
-Consult
-\fIconfigfile\fR
-instead of
-:ETCDIR:/papd\&.conf
-for the configuration information\&.
-.RE
-.PP
-\-p \fIprintcap\fR
-.RS 4
-Consult
-\fIprintcap\fR
-instead of
-/etc/printcap
-for LPD configuration information\&.
-.RE
-.SH "NOTES"
-.PP
-PSSP
-(Print Server Security Protocol) is an authentication protocol
-carried out through postscript printer queries to the print server\&. Using PSSP requires LaserWriter 8\&.6\&.1 or greater on the client mac\&. The user will be prompted to enter their username and password before they print\&. It may be necessary to re\-setup the printer on each client the first time PSSP is enabled, so that the client can figure out that authentication is required to print\&. You can enable PSSP on a per\-printer basis\&. PSSP is the recommended method of authenticating printers as it is more robust than CAP\-style authentication, described below\&.
-.PP
-CAP\-style authentication
-gets its name from the method the CAP (Columbia APpletalk) package used to authenticate its mac clients\' printing\&. This method requires that a user login to a file share before they print\&.
-\fBafpd\fR
-records the username in a temporary file named after the client\'s Appletalk address, and it deletes the temporary file when the user disconnects\&. Therefore CAP style authentification will
-\fInot\fR
-work for clients connected to
-\fBafpd\fR
-via TCP/IP\&.
-\fBpapd\fR
-gets the username from the file with the same Appletalk address as the machine connecting to it\&. CAP\-style authentication will work with any mac client\&. If both CAP and PSSP are enabled for a particular printer, CAP will be tried first, then
-\fBpapd\fR
-will fall back to PSSP\&.
-.PP
-The list of UAMs to use for authentication (specified with the \'am\' option) applies to all printers\&. It is not possible to define different authentication methods on each printer\&. You can specify the list of UAMS multiple times, but only the last setting will be used\&. Currently only uams_guest\&.so and uams_clrtxt\&.so are supported as printer authentication methods\&. The guest method requires a valid username, but not a password\&. The Cleartext UAM requires both a valid username and the correct password\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-.PP
-As of this writing, Mac OS X makes no use of PSSP authentication any longer\&. CAP\-style authentication normally won\'t be an option, too caused by the use of AFP over TCP these days\&.
-.sp .5v
-.RE
-.PP
-.SH "FILES"
-.PP
-:ETCDIR:/papd\&.conf
-.RS 4
-Default configuration file\&.
-.RE
-.PP
-/etc/printcap
-.RS 4
-Printer capabilities database\&.
-.RE
-.PP
-\&.ppd
-.RS 4
-PostScript Printer Description file\&. papd answers configuration and font queries from printing clients by consulting the configured PPD file\&. Such files are available for download from Adobe, Inc\&. (\m[blue]\fBhttp://www\&.adobe\&.com/support/downloads/main\&.htm\fR\m[]\&\s-2\u[1]\d\s+2), or from the printer\'s manufacturer\&. If no PPD file is configured, papd will return the default answer, possibly causing the client to send excessively large jobs\&.
-.RE
-.SH "CAVEATS"
-.PP
-\fBpapd\fR
-accepts characters with the high bit set (a full 8\-bits) from the clients, but some PostScript printers (including Apple Computer\'s LaserWriter family) only accept 7\-bit characters on their serial interface by default\&. The same applies for some printers when they\'re accessed via TCP/IP methods (remote LPR or socket)\&. You will need to configure your printer to accept a full 8 bits or take special precautions and convert the printjob\'s encoding (eg\&. by using
-\fBco="protocol=BCP"\fR
-when using CUPS 1\&.1\&.19 or above)\&.
-.PP
-When printing clients run MacOS 10\&.2 or above, take care that PPDs do not make use of
-\fB*cupsFilter:\fR
-comments unless the appropriate filters are installed at the client\'s side, too (remember: Starting with 10\&.2 Apple chose to integrate CUPS into MacOS X)\&. For in\-depth information on how CUPS uses PPDs see chapter 3\&.4 in
-\m[blue]\fBhttp://tinyurl\&.com/zbxn\fR\m[]\&\s-2\u[2]\d\s+2)\&.
-.SH "SEE ALSO"
-.PP
-\fBlpr\fR(1),\fBlprm\fR(1),\fBprintcap\fR(5),\fBlpc\fR(8),\fBlpd\fR(8),
-\fBlp\fR(1)\&.
-.SH "NOTES"
-.IP " 1." 4
-http://www.adobe.com/support/downloads/main.htm
-.RS 4
-\%http://www.adobe.com/support/downloads/main.html#Printer
-.RE
-.IP " 2." 4
-http://tinyurl.com/zbxn
-.RS 4
-\%http://tinyurl.com/zbxn
-.RE
diff --git a/man/man8/papstatus.8.tmpl b/man/man8/papstatus.8.tmpl
deleted file mode 100644 (file)
index ad4b6fb..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-'\" t
-.\"     Title: papstatus
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 17 Dec 1991
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "PAPSTATUS" "8" "17 Dec 1991" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-papstatus \- get the status of an AppleTalk\-connected printer
-.SH "SYNOPSIS"
-.HP \w'\fB:SBINDIR:/papstatus\fR\fB\fR\ 'u
-\fB:SBINDIR:/papstatus\fR\fB\fR [\-d] [\-p\ \fIprinter\fR] [\fIretrytime\fR]
-.SH "DESCRIPTION"
-.PP
-\fBpapstatus\fR
-is used to obtain the current status message from an AppleTalk connected printer\&. It uses the Printer Access Protocol (PAP) to obtain the status information\&.
-.PP
-If no printer is specified on the command line,
-\fBpapstatus\fR
-looks for a file called
-\fB\&.paprc\fR
-in the current directory and reads it to obtain the name of a printer\&. The
-\fB\&.paprc\fR
-file should contain a single line of the form
-\fIobject\fR\fB:\fR\fItype\fR\fB@\fR\fIzone\fR
-where each of
-\fIobject\fR,
-\fB:\fR\fItype\fR\fB,\fR
-and
-\fB@\fR\fIzone\fR
-are optional\&.
-\fItype\fR
-and
-\fIzone\fR
-must be proceeded by `\fB:\fR\' and `\fB@\fR\' respectively\&. Blank lines and lines the begin with a `\fB#\fR\' are ignored\&.
-\fItype\fR
-and
-\fIzone\fR
-default to
-\fBLaserWriter\fR
-and the zone of the local host, respectively\&.
-.SH "OPTIONS"
-.PP
-\fB\-d\fR
-.RS 4
-Turns on a debugging mode that prints some extra information to standard error\&.
-.RE
-.PP
-\fB\-p\fR \fIprinter\fR
-.RS 4
-Get status from
-\fIprinter\fR
-(do not consult any
-\fB\&.paprc\fR
-files to find a printer name)\&. The syntax for
-\fIprinter\fR
-is the same as discussed above for the
-\fB\&.paprc\fR
-file\&.
-.RE
-.PP
-\fIretrytime\fR
-.RS 4
-Normally,
-\fBpapstatus\fR
-only gets the status from the printer once\&. If
-\fIretrytime\fR
-is specified, the status is obtained repeatedly, with a sleep of
-\fIretrytime\fR
-seconds between inquiring the printer\&.
-.RE
-.SH "FILES"
-.PP
-\fB\&.paprc\fR
-.RS 4
-file that contains printer name
-.RE
-.SH "SEE ALSO"
-.PP
-\fBnbp\fR(1),
-\fBpap\fR(1)
diff --git a/man/man8/psf.8.tmpl b/man/man8/psf.8.tmpl
deleted file mode 100644 (file)
index 1891394..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-'\" t
-.\"     Title: psf
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 17 Dec 1991
-.\"    Manual: Netatalk 2.1
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "PSF" "8" "17 Dec 1991" "Netatalk 2.1" "Netatalk 2.1"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-psf \- PostScript filter
-.SH "SYNOPSIS"
-.HP \w'\fBpsf\fR\fB\fR\ 'u
-\fBpsf\fR\fB\fR [\-n\ \fIname\fR] [\-h\ \fIhost\fR] [\-w\ \fIwidth\fR] [\-l\ \fIlength\fR] [\-i\ \fIindent\fR] [\-c]
-.SH "DESCRIPTION"
-.PP
-\fBpsf\fR
-is an
-\fBlpd\fR
-filter for PostScript printing\&.
-\fBpsf\fR
-interprets the name it was called with to determine what filters to invoke\&. First, if the string ``pap\'\' appears anywhere in the name,
-\fBpsf\fR
-invokes
-\fBpap\fR
-to talk to a printer via AppleTalk\&. Next, if the string ``rev\'\' appears,
-\fBpsf\fR
-invokes
-\fBpsorder\fR
-to reverse the pages of the job\&. Finally, if
-\fBpsf\fR
-was called with a filter\'s name as the leading string, it invokes that filter\&. If there is no filter to run,
-\fBpsf\fR
-examines the magic number of the input, and if the input is not PostScript, converts it to PostScript\&.
-.SH "KLUDGE"
-.PP
-In the default configuration,
-\fBpsf\fR
-supports two kludges\&. The first causes
-\fBpsf\fR
-to check its name for the letter `m\'\&. If this letter is found and accounting is turned on,
-\fBpsf\fR
-calls
-\fBpap\fR
-twice, once to get an initial page count and to print the job, and another time to get a final page count\&. This is a work\-around for bugs in a variety of PAP implementions that cause printers to never properly close the PAP output file\&. A notable example is any printer by Hewlett\-Packard\&.
-.PP
-The second kludge causes
-\fBpsf\fR
-to examine its name for the letter `w\'\&. If this letter is found and accounting is turned on,
-\fBpsf\fR
-calls
-\fBpap\fR
-with the
-\fB\-w\fR
-flag\&. This flag causes
-\fBpap\fR
-to wait until the printer\'s status contains the string `idle\'\&. Once this string is found, the job is printed as normal\&. This kludge is a work\-around for printers, notably Hewlett\-Packard\'s LaserJet IV, which will report a page count while a previous jobs is still printing\&.
-.SH "EXAMPLE"
-.PP
-The sample
-\fBprintcap\fR
-entry below invokes
-\fBpsf\fR
-to print text files, PostScript files,
-\fBtroff\fR\'s C/A/T output, and
-\fBTeX\fR\'s DVI output, to an AppleTalk connected LaserWriter Plus\&. Since the LaserWriter Plus stacks pages in descending order, we reverse the pages and print the burst page last\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-laser|lp|LaserWriter Plus on AppleTalk:\e
-    :sd=/usr/spool/lpd/laser:\e
-    :lp=/usr/spool/lpd/laser/null:\e
-    :lf=/var/adm/lpd\-errs:pw#80:hl:\e
-    :of=:LIBEXECDIR:/ofpap:\e
-    :if=:LIBEXECDIR:/ifpaprev:\e
-    :tf=:LIBEXECDIR:/tfpaprev:\e
-    :df=:LIBEXECDIR:/dfpaprev:
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-Note that if the host in question spools to more than one AppleTalk printer,
-/dev/null
-should not be used for the
-\fBlp\fR
-capability\&. Instead, a null device should be created with
-\fBmknod\fR
-for each printer, as has been done above\&.
-.PP
-Finally, there is a file in the spool directory,
-/var/spool/lpd/laser, called
-\fB\&.paprc\fR, which
-\fBpap\fR
-reads for the AppleTalk name of the printer\&.
-.SH "SEE ALSO"
-.PP
-\fBpsorder\fR(1),
-\fBprintcap\fR(5),
-\fBlpd\fR(1),
-\fBmknod\fR(1),
-\fBpap\fR(1)\&.
diff --git a/man/man8/timelord.8 b/man/man8/timelord.8
deleted file mode 100644 (file)
index 46a6829..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-'\" t
-.\"     Title: timelord
-.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 27 Jun 2001
-.\"    Manual: The Netatalk Project
-.\"    Source: Netatalk 2.1
-.\"  Language: English
-.\"
-.TH "TIMELORD" "8" "27 Jun 2001" "Netatalk 2.1" "The Netatalk Project"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-timelord \- Macintosh time server daemon
-.SH "SYNOPSIS"
-.SH "SYNTAX"
-.PP
-timelord [\-d] [\-n
-\fIfilename\fR]
-.SH "DESCRIPTION"
-.PP
-\fBtimelord\fR
-is a simple time server for Macintosh computers that use the
-\fBtardis\fR
-client\&.
-.SH "OPTIONS"
-.PP
-\fB\-d\fR
-.RS 4
-Debug mode, i\&.e\&. don\'t disassociate from controlling TTY\&.
-.RE
-.PP
-\fB\-n\fR \fInbpname\fR
-.RS 4
-Register this server as
-\fInbpname\fR\&. This defaults to the hostname\&.
-.RE
diff --git a/sys/.gitignore b/sys/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/sys/Makefile.am b/sys/Makefile.am
deleted file mode 100644 (file)
index 00cea2a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# Makefile.am for sys/
-
-SUBDIRS = netatalk solaris netbsd sunos ultrix
diff --git a/sys/netatalk/.gitignore b/sys/netatalk/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/sys/netatalk/Makefile.am b/sys/netatalk/Makefile.am
deleted file mode 100644 (file)
index 14eeab7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Makefile.am for sys/netatalk/
-
-pkginclude_HEADERS = aarp.h at.h at_var.h ddp.h ddp_var.h endian.h phase2.h
-
-SOURCES = aarp.c at_control.c at_proto.c ddp_input.c ddp_output.c ddp_usrreq.c
-
-EXTRA_DIST = $(SOURCES)
diff --git a/sys/netatalk/aarp.c b/sys/netatalk/aarp.c
deleted file mode 100644 (file)
index ee18845..0000000
+++ /dev/null
@@ -1,802 +0,0 @@
-/*
- * $Id: aarp.c,v 1.3 2002-01-03 17:49:39 sibaz Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <syslog.h>
-#include <sys/param.h>
-#include <sys/mbuf.h>
-#include <sys/time.h>
-#ifndef _IBMR2
-#include <sys/kernel.h>
-#endif /* _IBMR2 */
-#include <net/if.h>
-#include <net/route.h>
-#include <net/af.h>
-#include <netinet/in.h>
-#undef s_net
-#include <netinet/if_ether.h>
-#ifdef _IBMR2
-#include <netinet/in_netarp.h>
-#include <net/spl.h>
-#include <sys/errno.h>
-#include <sys/err_rec.h>
-#endif /* _IBMR2 */
-
-#include "at.h"
-#include "at_var.h"
-#include "aarp.h"
-#include "ddp_var.h"
-#include "endian.h"
-#include "phase2.h"
-
-#ifdef GATEWAY
-#define AARPTAB_BSIZ   16
-#define AARPTAB_NB     37
-#else /* GATEWAY */
-#define AARPTAB_BSIZ   9
-#define AARPTAB_NB     19
-#endif /* GATEWAY */
-#define AARPTAB_SIZE   (AARPTAB_BSIZ * AARPTAB_NB)
-struct aarptab         aarptab[AARPTAB_SIZE];
-int                    aarptab_size = AARPTAB_SIZE;
-
-#define AARPTAB_HASH(a) \
-    ((((a).s_net << 8 ) + (a).s_node ) % AARPTAB_NB )
-
-#define AARPTAB_LOOK(aat,addr) { \
-    int                n; \
-    aat = &aarptab[ AARPTAB_HASH(addr) * AARPTAB_BSIZ ]; \
-    for ( n = 0; n < AARPTAB_BSIZ; n++, aat++ ) \
-       if ( aat->aat_ataddr.s_net == (addr).s_net && \
-            aat->aat_ataddr.s_node == (addr).s_node ) \
-           break; \
-       if ( n >= AARPTAB_BSIZ ) \
-           aat = 0; \
-}
-
-#define AARPT_AGE      (60 * 1)
-#define AARPT_KILLC    20
-#define AARPT_KILLI    3
-
-#ifdef sun
-extern struct ether_addr       etherbroadcastaddr;
-#else /* sun */
-extern u_char                  etherbroadcastaddr[6];
-#endif /* sun */
-
-u_char atmulticastaddr[ 6 ] = {
-    0x09, 0x00, 0x07, 0xff, 0xff, 0xff,
-};
-
-u_char at_org_code[ 3 ] = {
-    0x08, 0x00, 0x07,
-};
-u_char aarp_org_code[ 3 ] = {
-    0x00, 0x00, 0x00,
-};
-
-aarptimer()
-{
-    struct aarptab     *aat;
-    int                        i, s;
-
-    timeout( aarptimer, (caddr_t)0, AARPT_AGE * hz );
-    aat = aarptab;
-    for ( i = 0; i < AARPTAB_SIZE; i++, aat++ ) {
-       if ( aat->aat_flags == 0 || ( aat->aat_flags & ATF_PERM ))
-           continue;
-       if ( ++aat->aat_timer < (( aat->aat_flags & ATF_COM ) ?
-               AARPT_KILLC : AARPT_KILLI ))
-           continue;
-       s = splimp();
-       aarptfree( aat );
-       splx( s );
-    }
-}
-
-struct ifaddr *
-at_ifawithnet( sat, ifa )
-    struct sockaddr_at *sat;
-    struct ifaddr      *ifa;
-{
-    struct at_ifaddr   *aa;
-
-    for (; ifa; ifa = ifa->ifa_next ) {
-#ifdef BSD4_4
-       if ( ifa->ifa_addr->sa_family != AF_APPLETALK ) {
-           continue;
-       }
-       if ( satosat( ifa->ifa_addr )->sat_addr.s_net ==
-               sat->sat_addr.s_net ) {
-           break;
-       }
-#else /* BSD4_4 */
-       if ( ifa->ifa_addr.sa_family != AF_APPLETALK ) {
-           continue;
-       }
-       aa = (struct at_ifaddr *)ifa;
-       if ( ntohs( sat->sat_addr.s_net ) >= ntohs( aa->aa_firstnet ) &&
-               ntohs( sat->sat_addr.s_net ) <= ntohs( aa->aa_lastnet )) {
-           break;
-       }
-#endif /* BSD4_4 */
-    }
-    return( ifa );
-}
-
-aarpwhohas( ac, sat )
-    struct arpcom      *ac;
-    struct sockaddr_at *sat;
-{
-    struct mbuf                *m;
-    struct ether_header        *eh;
-    struct ether_aarp  *ea;
-    struct at_ifaddr   *aa;
-    struct llc         *llc;
-    struct sockaddr    sa;
-
-#ifdef BSD4_4
-    if (( m = m_gethdr( M_DONTWAIT, MT_DATA )) == NULL ) {
-       return;
-    }
-    m->m_len = sizeof( *ea );
-    m->m_pkthdr.len = sizeof( *ea );
-    MH_ALIGN( m, sizeof( *ea ));
-#else /* BSD4_4 */
-    if (( m = m_get( M_DONTWAIT, MT_DATA )) == NULL ) {
-       return;
-    }
-    m->m_len = sizeof( *ea );
-    m->m_off = MMAXOFF - sizeof( *ea );
-#endif /* BSD4_4 */
-
-    ea = mtod( m, struct ether_aarp *);
-    bzero((caddr_t)ea, sizeof( *ea ));
-
-    ea->aarp_hrd = htons( AARPHRD_ETHER );
-    ea->aarp_pro = htons( ETHERTYPE_AT );
-    ea->aarp_hln = sizeof( ea->aarp_sha );
-    ea->aarp_pln = sizeof( ea->aarp_spu );
-    ea->aarp_op = htons( AARPOP_REQUEST );
-#ifdef sun
-    bcopy((caddr_t)&ac->ac_enaddr, (caddr_t)ea->aarp_sha,
-           sizeof( ea->aarp_sha ));
-#else /* sun */
-    bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->aarp_sha,
-           sizeof( ea->aarp_sha ));
-#endif /* sun */
-
-    /*
-     * We need to check whether the output ethernet type should
-     * be phase 1 or 2. We have the interface that we'll be sending
-     * the aarp out. We need to find an AppleTalk network on that
-     * interface with the same address as we're looking for. If the
-     * net is phase 2, generate an 802.2 and SNAP header.
-     */
-    if (( aa = (struct at_ifaddr *)at_ifawithnet( sat, ac->ac_if.if_addrlist ))
-           == NULL ) {
-       m_freem( m );
-       return;
-    }
-
-    eh = (struct ether_header *)sa.sa_data;
-
-    if ( aa->aa_flags & AFA_PHASE2 ) {
-#ifdef sun
-       bcopy((caddr_t)atmulticastaddr, (caddr_t)&eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#else /* sun */
-       bcopy((caddr_t)atmulticastaddr, (caddr_t)eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#endif /* sun */
-#if defined( sun ) && defined( i386 )
-       eh->ether_type = htons( sizeof( struct llc ) +
-               sizeof( struct ether_aarp ));
-#else /* sun && i386 */
-       eh->ether_type = sizeof( struct llc ) + sizeof( struct ether_aarp );
-#endif /* sun && i386 */
-#ifdef BSD4_4
-       M_PREPEND( m, sizeof( struct llc ), M_WAIT );
-#else /* BSD4_4 */
-       m->m_len += sizeof( struct llc );
-       m->m_off -= sizeof( struct llc );
-#endif /* BSD4_4 */
-       llc = mtod( m, struct llc *);
-       llc->llc_dsap = llc->llc_ssap = LLC_SNAP_LSAP;
-       llc->llc_control = LLC_UI;
-       bcopy( aarp_org_code, llc->llc_org_code, sizeof( aarp_org_code ));
-       llc->llc_ether_type = htons( ETHERTYPE_AARP );
-
-       
-       bcopy( &AA_SAT( aa )->sat_addr.s_net, ea->aarp_spnet,
-               sizeof( ea->aarp_spnet ));
-       ea->aarp_spnode = AA_SAT( aa )->sat_addr.s_node;
-       bcopy( &sat->sat_addr.s_net, ea->aarp_tpnet,
-               sizeof( ea->aarp_tpnet ));
-       ea->aarp_tpnode = sat->sat_addr.s_node;
-    } else {
-#ifdef sun
-       bcopy((caddr_t)&etherbroadcastaddr, (caddr_t)&eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#else /* sun */
-       bcopy((caddr_t)etherbroadcastaddr, (caddr_t)eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#endif /* sun */
-#if defined( sun ) && defined( i386 )
-       eh->ether_type = htons( ETHERTYPE_AARP );
-#else /* sun && i386 */
-       eh->ether_type = ETHERTYPE_AARP;
-#endif /* sun && i386 */
-
-       ea->aarp_spa = AA_SAT( aa )->sat_addr.s_node;
-       ea->aarp_tpa = sat->sat_addr.s_node;
-    }
-
-#ifdef BSD4_4
-    sa.sa_len = sizeof( struct sockaddr );
-#endif /* BSD4_4 */
-    sa.sa_family = AF_UNSPEC;
-    (*ac->ac_if.if_output)(&ac->ac_if, m, &sa );
-}
-
-aarpresolve( ac, m, destsat, desten )
-    struct arpcom      *ac;
-    struct mbuf                *m;
-    struct sockaddr_at *destsat;
-#ifdef sun
-    struct ether_addr  *desten;
-#else /* sun */
-    u_char             *desten;
-#endif /* sun */
-{
-    struct at_ifaddr   *aa;
-    struct ifaddr      ifa;
-    struct aarptab     *aat;
-    int                        s;
-
-    if ( at_broadcast( destsat )) {
-       if (( aa = (struct at_ifaddr *)at_ifawithnet( destsat,
-               ((struct ifnet *)ac)->if_addrlist )) == NULL ) {
-           m_freem( m );
-           return( 0 );
-       }
-       if ( aa->aa_flags & AFA_PHASE2 ) {
-           bcopy( (caddr_t)atmulticastaddr, (caddr_t)desten,
-                   sizeof( atmulticastaddr ));
-       } else {
-#ifdef sun
-           bcopy( (caddr_t)&etherbroadcastaddr, (caddr_t)desten,
-                   sizeof( etherbroadcastaddr ));
-#else /* sun */
-           bcopy( (caddr_t)etherbroadcastaddr, (caddr_t)desten,
-                   sizeof( etherbroadcastaddr ));
-#endif /* sun */
-       }
-       return( 1 );
-    }
-
-    s = splimp();
-    AARPTAB_LOOK( aat, destsat->sat_addr );
-    if ( aat == 0 ) {                  /* No entry */
-       aat = aarptnew( &destsat->sat_addr );
-       if ( aat == 0 ) {
-           panic( "aarpresolve: no free entry" );
-       }
-       aat->aat_hold = m;
-       aarpwhohas( ac, destsat );
-       splx( s );
-       return( 0 );
-    }
-    /* found an entry */
-    aat->aat_timer = 0;
-    if ( aat->aat_flags & ATF_COM ) {  /* entry is COMplete */
-       bcopy( (caddr_t)aat->aat_enaddr, (caddr_t)desten,
-               sizeof( aat->aat_enaddr ));
-       splx( s );
-       return( 1 );
-    }
-    /* entry has not completed */
-    if ( aat->aat_hold ) {
-       m_freem( aat->aat_hold );
-    }
-    aat->aat_hold = m;
-    aarpwhohas( ac, destsat );
-    splx( s );
-    return( 0 );
-}
-
-aarpinput( ac, m )
-    struct arpcom      *ac;
-    struct mbuf                *m;
-{
-    struct arphdr      *ar;
-
-    if ( ac->ac_if.if_flags & IFF_NOARP )
-       goto out;
-
-#ifndef BSD4_4
-    IF_ADJ( m );
-#endif /* BSD4_4 */
-
-    if ( m->m_len < sizeof( struct arphdr )) {
-       goto out;
-    }
-
-    ar = mtod( m, struct arphdr *);
-    if ( ntohs( ar->ar_hrd ) != AARPHRD_ETHER ) {
-       goto out;
-    }
-    
-    if ( m->m_len < sizeof( struct arphdr ) + 2 * ar->ar_hln +
-           2 * ar->ar_pln ) {
-       goto out;
-    }
-    
-    switch( ntohs( ar->ar_pro )) {
-    case ETHERTYPE_AT :
-       at_aarpinput( ac, m );
-       return;
-
-    default:
-       break;
-    }
-
-out:
-    m_freem( m );
-}
-
-
-at_aarpinput( ac, m )
-    struct arpcom      *ac;
-    struct mbuf                *m;
-{
-    struct mbuf                *m0;
-    struct ether_aarp  *ea;
-    struct at_ifaddr   *aa;
-    struct aarptab     *aat;
-    struct ether_header        *eh;
-    struct llc         *llc;
-    struct sockaddr_at sat;
-    struct sockaddr    sa;
-    struct at_addr     spa, tpa, ma;
-    int                        op, s;
-    u_short            net;
-
-    ea = mtod( m, struct ether_aarp *);
-
-    /* Check to see if from my hardware address */
-#ifdef sun
-    if ( !bcmp(( caddr_t )ea->aarp_sha, ( caddr_t )&ac->ac_enaddr,
-           sizeof( ac->ac_enaddr ))) {
-       m_freem( m );
-       return;
-    }
-#else /* sun */
-    if ( !bcmp(( caddr_t )ea->aarp_sha, ( caddr_t )ac->ac_enaddr,
-           sizeof( ac->ac_enaddr ))) {
-       m_freem( m );
-       return;
-    }
-#endif /* sun */
-
-    /*
-     * Check if from broadcast address.  This could be a more robust
-     * check, since we could look for multicasts.
-     */
-#ifdef sun
-    if ( !bcmp(( caddr_t )ea->aarp_sha, ( caddr_t )&etherbroadcastaddr,
-           sizeof( etherbroadcastaddr ))) {
-       log( LOG_ERR, "aarp: source is broadcast!\n" );
-       m_freem( m );
-       return;
-    }
-#else /* sun */
-    if ( !bcmp(( caddr_t )ea->aarp_sha, ( caddr_t )etherbroadcastaddr,
-           sizeof( etherbroadcastaddr ))) {
-#ifndef _IBMR2
-#ifdef ultrix
-       mprintf( LOG_ERR,
-#else /* ultrix */
-       log( LOG_ERR,
-#endif /* ultrix */
-               "aarp: source is broadcast!\n" );
-#endif /* ! _IBMR2 */
-       m_freem( m );
-       return;
-    }
-#endif /* sun */
-
-    op = ntohs( ea->aarp_op );
-    bcopy( ea->aarp_tpnet, &net, sizeof( net ));
-
-    if ( net != 0 ) {
-       sat.sat_family = AF_APPLETALK;
-       sat.sat_addr.s_net = net;
-       if (( aa = (struct at_ifaddr *)at_ifawithnet( &sat,
-               ac->ac_if.if_addrlist )) == NULL ) {
-           m_freem( m );
-           return;
-       }
-       bcopy( ea->aarp_spnet, &spa.s_net, sizeof( spa.s_net ));
-       bcopy( ea->aarp_tpnet, &tpa.s_net, sizeof( tpa.s_net ));
-    } else {
-       /*
-        * Since we don't know the net, we just look for the first
-        * phase 1 address on the interface.
-        */
-       for ( aa = (struct at_ifaddr *)ac->ac_if.if_addrlist; aa;
-               aa = (struct at_ifaddr *)aa->aa_ifa.ifa_next ) {
-           if ( AA_SAT( aa )->sat_family == AF_APPLETALK &&
-                   ( aa->aa_flags & AFA_PHASE2 ) == 0 ) {
-               break;
-           }
-       }
-       if ( aa == NULL ) {
-           m_freem( m );
-           return;
-       }
-       tpa.s_net = spa.s_net = AA_SAT( aa )->sat_addr.s_net;
-    }
-
-    spa.s_node = ea->aarp_spnode;
-    tpa.s_node = ea->aarp_tpnode;
-    ma.s_net = AA_SAT( aa )->sat_addr.s_net;
-    ma.s_node = AA_SAT( aa )->sat_addr.s_node;
-
-    /*
-     * This looks like it's from us.
-     */
-    if ( spa.s_net == ma.s_net && spa.s_node == ma.s_node ) {
-       if ( aa->aa_flags & AFA_PROBING ) {
-           /*
-            * We're probing, someone either responded to our probe, or
-            * probed for the same address we'd like to use. Change the
-            * address we're probing for.
-            */
-           untimeout( aarpprobe, ac );
-           wakeup( aa );
-           m_freem( m );
-           return;
-       } else if ( op != AARPOP_PROBE ) {
-           /*
-            * This is not a probe, and we're not probing. This means
-            * that someone's saying they have the same source address
-            * as the one we're using. Get upset...
-            */
-#ifndef _IBMR2
-#ifdef ultrix
-           mprintf( LOG_ERR,
-#else /* ultrix */
-           log( LOG_ERR,
-#endif /* ultrix */
-                   "aarp: duplicate AT address!! %x:%x:%x:%x:%x:%x\n",
-                   ea->aarp_sha[ 0 ], ea->aarp_sha[ 1 ], ea->aarp_sha[ 2 ],
-                   ea->aarp_sha[ 3 ], ea->aarp_sha[ 4 ], ea->aarp_sha[ 5 ]);
-#endif /* ! _IBMR2 */
-           m_freem( m );
-           return;
-       }
-    }
-
-    AARPTAB_LOOK( aat, spa );
-    if ( aat ) {
-       if ( op == AARPOP_PROBE ) {
-           /*
-            * Someone's probing for spa, dealocate the one we've got,
-            * so that if the prober keeps the address, we'll be able
-            * to arp for him.
-            */
-           aarptfree( aat );
-           m_freem( m );
-           return;
-       }
-
-       bcopy(( caddr_t )ea->aarp_sha, ( caddr_t )aat->aat_enaddr,
-               sizeof( ea->aarp_sha ));
-       aat->aat_flags |= ATF_COM;
-       if ( aat->aat_hold ) {
-#ifdef _IBMR2
-           /*
-            * Like in ddp_output(), we can't rely on the if_output
-            * routine to resolve AF_APPLETALK addresses, on the rs6k.
-            * So, we fill the destination ethernet address here.
-            *
-            * This should really be replaced with something like
-            * rsif_output(). XXX Will have to be for phase 2.
-            */
-            /* XXX maybe fill in the rest of the frame header */
-           sat.sat_family = AF_UNSPEC;
-           bcopy( aat->aat_enaddr, (*(struct sockaddr *)&sat).sa_data,
-                   sizeof( aat->aat_enaddr ));
-#else /* _IBMR2 */
-           sat.sat_family = AF_APPLETALK;
-           sat.sat_addr = spa;
-#endif /* _IBMR2 */
-           (*ac->ac_if.if_output)( &ac->ac_if, aat->aat_hold,
-                   (struct sockaddr *)&sat );
-           aat->aat_hold = 0;
-       }
-    }
-
-    if ( aat == 0 && tpa.s_net == ma.s_net && tpa.s_node == ma.s_node
-           && op != AARPOP_PROBE ) {
-       if ( aat = aarptnew( &spa )) {
-           bcopy(( caddr_t )ea->aarp_sha, ( caddr_t )aat->aat_enaddr,
-                   sizeof( ea->aarp_sha ));
-           aat->aat_flags |= ATF_COM;
-       }
-    }
-
-    /*
-     * Don't respond to responses, and never respond if we're
-     * still probing.
-     */
-    if ( tpa.s_net != ma.s_net || tpa.s_node != ma.s_node ||
-           op == AARPOP_RESPONSE || ( aa->aa_flags & AFA_PROBING )) {
-       m_freem( m );
-       return;
-    }
-
-    bcopy(( caddr_t )ea->aarp_sha, ( caddr_t )ea->aarp_tha,
-           sizeof( ea->aarp_sha ));
-#ifdef sun
-    bcopy(( caddr_t )&ac->ac_enaddr, ( caddr_t )ea->aarp_sha,
-           sizeof( ea->aarp_sha ));
-#else /* sun */
-    bcopy(( caddr_t )ac->ac_enaddr, ( caddr_t )ea->aarp_sha,
-           sizeof( ea->aarp_sha ));
-#endif /* sun */
-
-    eh = (struct ether_header *)sa.sa_data;
-#ifdef sun
-    bcopy(( caddr_t )ea->aarp_tha, ( caddr_t )&eh->ether_dhost,
-           sizeof( eh->ether_dhost ));
-#else /* sun */
-    bcopy(( caddr_t )ea->aarp_tha, ( caddr_t )eh->ether_dhost,
-           sizeof( eh->ether_dhost ));
-#endif /* sun */
-
-    if ( aa->aa_flags & AFA_PHASE2 ) {
-#if defined( sun ) && defined( i386 )
-       eh->ether_type = htons( sizeof( struct llc ) +
-               sizeof( struct ether_aarp ));
-#else /* sun && i386 */
-       eh->ether_type = sizeof( struct llc ) + sizeof( struct ether_aarp );
-#endif /* sun && i386 */
-#ifdef BSD4_4
-       M_PREPEND( m, sizeof( struct llc ), M_DONTWAIT );
-       if ( m == NULL ) {
-           m_freem( m );
-           return;
-       }
-#else /* BSD4_4 */
-       MGET( m0, M_DONTWAIT, MT_HEADER );
-       if ( m0 == NULL ) {
-           m_freem( m );
-           return;
-       }
-       m0->m_next = m;
-       m = m0;
-       m->m_off = MMAXOFF - sizeof( struct llc );
-       m->m_len = sizeof ( struct llc );
-#endif /* BSD4_4 */
-       llc = mtod( m, struct llc *);
-       llc->llc_dsap = llc->llc_ssap = LLC_SNAP_LSAP;
-       llc->llc_control = LLC_UI;
-       bcopy( aarp_org_code, llc->llc_org_code, sizeof( aarp_org_code ));
-       llc->llc_ether_type = htons( ETHERTYPE_AARP );
-
-       bcopy( ea->aarp_spnet, ea->aarp_tpnet, sizeof( ea->aarp_tpnet ));
-       bcopy( &ma.s_net, ea->aarp_spnet, sizeof( ea->aarp_spnet ));
-    } else {
-#if defined( sun ) && defined( i386 )
-       eh->ether_type = htons( ETHERTYPE_AARP );
-#else /* sun && i386 */
-       eh->ether_type = ETHERTYPE_AARP;
-#endif /* sun && i386 */
-    }
-
-    ea->aarp_tpnode = ea->aarp_spnode;
-    ea->aarp_spnode = ma.s_node;
-    ea->aarp_op = htons( AARPOP_RESPONSE );
-
-#ifdef BSD4_4
-    sa.sa_len = sizeof( struct sockaddr );
-#endif /* BSD4_4 */
-    sa.sa_family = AF_UNSPEC;
-    (*ac->ac_if.if_output)( &ac->ac_if, m, &sa );
-    return;
-}
-
-aarptfree( aat )
-    struct aarptab     *aat;
-{
-
-    if ( aat->aat_hold )
-       m_freem( aat->aat_hold );
-    aat->aat_hold = 0;
-    aat->aat_timer = aat->aat_flags = 0;
-    aat->aat_ataddr.s_net = 0;
-    aat->aat_ataddr.s_node = 0;
-}
-
-    struct aarptab *
-aarptnew( addr )
-    struct at_addr     *addr;
-{
-    int                        n;
-    int                        oldest = -1;
-    struct aarptab     *aat, *aato = NULL;
-    static int         first = 1;
-
-    if ( first ) {
-       first = 0;
-       timeout( aarptimer, (caddr_t)0, hz );
-    }
-    aat = &aarptab[ AARPTAB_HASH( *addr ) * AARPTAB_BSIZ ];
-    for ( n = 0; n < AARPTAB_BSIZ; n++, aat++ ) {
-       if ( aat->aat_flags == 0 )
-           goto out;
-       if ( aat->aat_flags & ATF_PERM )
-           continue;
-       if ((int) aat->aat_timer > oldest ) {
-           oldest = aat->aat_timer;
-           aato = aat;
-       }
-    }
-    if ( aato == NULL )
-       return( NULL );
-    aat = aato;
-    aarptfree( aat );
-out:
-    aat->aat_ataddr = *addr;
-    aat->aat_flags = ATF_INUSE;
-    return( aat );
-}
-
-aarpprobe( ac )
-    struct arpcom      *ac;
-{
-    struct mbuf                *m;
-    struct ether_header        *eh;
-    struct ether_aarp  *ea;
-    struct at_ifaddr   *aa;
-    struct llc         *llc;
-    struct sockaddr    sa;
-
-    /*
-     * We need to check whether the output ethernet type should
-     * be phase 1 or 2. We have the interface that we'll be sending
-     * the aarp out. We need to find an AppleTalk network on that
-     * interface with the same address as we're looking for. If the
-     * net is phase 2, generate an 802.2 and SNAP header.
-     */
-    for ( aa = (struct at_ifaddr *)ac->ac_if.if_addrlist; aa;
-           aa = (struct at_ifaddr *)aa->aa_ifa.ifa_next ) {
-       if ( AA_SAT( aa )->sat_family == AF_APPLETALK &&
-               ( aa->aa_flags & AFA_PROBING )) {
-           break;
-       }
-    }
-    if ( aa == NULL ) {                /* serious error XXX */
-       printf( "aarpprobe why did this happen?!\n" );
-       return;
-    }
-
-    if ( aa->aa_probcnt <= 0 ) {
-       aa->aa_flags &= ~AFA_PROBING;
-       wakeup( aa );
-       return;
-    } else {
-       timeout( aarpprobe, (caddr_t)ac, hz / 5 );
-    }
-
-#ifdef BSD4_4
-    if (( m = m_gethdr( M_DONTWAIT, MT_DATA )) == NULL ) {
-       return;
-    }
-    m->m_len = sizeof( *ea );
-    m->m_pkthdr.len = sizeof( *ea );
-    MH_ALIGN( m, sizeof( *ea ));
-#else /* BSD4_4 */
-    if (( m = m_get( M_DONTWAIT, MT_DATA )) == NULL ) {
-       return;
-    }
-    m->m_len = sizeof( *ea );
-    m->m_off = MMAXOFF - sizeof( *ea );
-#endif /* BSD4_4 */
-
-    ea = mtod( m, struct ether_aarp *);
-    bzero((caddr_t)ea, sizeof( *ea ));
-
-    ea->aarp_hrd = htons( AARPHRD_ETHER );
-    ea->aarp_pro = htons( ETHERTYPE_AT );
-    ea->aarp_hln = sizeof( ea->aarp_sha );
-    ea->aarp_pln = sizeof( ea->aarp_spu );
-    ea->aarp_op = htons( AARPOP_PROBE );
-#ifdef sun
-    bcopy((caddr_t)&ac->ac_enaddr, (caddr_t)ea->aarp_sha,
-           sizeof( ea->aarp_sha ));
-#else /* sun */
-    bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->aarp_sha,
-           sizeof( ea->aarp_sha ));
-#endif /* sun */
-
-    eh = (struct ether_header *)sa.sa_data;
-
-    if ( aa->aa_flags & AFA_PHASE2 ) {
-#ifdef sun
-       bcopy((caddr_t)atmulticastaddr, (caddr_t)&eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#else /* sun */
-       bcopy((caddr_t)atmulticastaddr, (caddr_t)eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#endif /* sun */
-#if defined( sun ) && defined( i386 )
-       eh->ether_type = htons( sizeof( struct llc ) +
-               sizeof( struct ether_aarp ));
-#else /* sun && i386 */
-       eh->ether_type = sizeof( struct llc ) + sizeof( struct ether_aarp );
-#endif /* sun && i386 */
-#ifdef BSD4_4
-       M_PREPEND( m, sizeof( struct llc ), M_WAIT );
-#else /* BSD4_4 */
-       m->m_len += sizeof( struct llc );
-       m->m_off -= sizeof( struct llc );
-#endif /* BSD4_4 */
-       llc = mtod( m, struct llc *);
-       llc->llc_dsap = llc->llc_ssap = LLC_SNAP_LSAP;
-       llc->llc_control = LLC_UI;
-       bcopy( aarp_org_code, llc->llc_org_code, sizeof( aarp_org_code ));
-       llc->llc_ether_type = htons( ETHERTYPE_AARP );
-
-       bcopy( &AA_SAT( aa )->sat_addr.s_net, ea->aarp_spnet,
-               sizeof( ea->aarp_spnet ));
-       bcopy( &AA_SAT( aa )->sat_addr.s_net, ea->aarp_tpnet,
-               sizeof( ea->aarp_tpnet ));
-       ea->aarp_spnode = ea->aarp_tpnode = AA_SAT( aa )->sat_addr.s_node;
-    } else {
-#ifdef sun
-       bcopy((caddr_t)&etherbroadcastaddr, (caddr_t)&eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#else /* sun */
-       bcopy((caddr_t)etherbroadcastaddr, (caddr_t)eh->ether_dhost,
-               sizeof( eh->ether_dhost ));
-#endif /* sun */
-#if defined( sun ) && defined( i386 )
-       eh->ether_type = htons( ETHERTYPE_AARP );
-#else /* sun && i386 */
-       eh->ether_type = ETHERTYPE_AARP;
-#endif /* sun && i386 */
-       ea->aarp_spa = ea->aarp_tpa = AA_SAT( aa )->sat_addr.s_node;
-    }
-
-#ifdef BSD4_4
-    sa.sa_len = sizeof( struct sockaddr );
-#endif /* BSD4_4 */
-    sa.sa_family = AF_UNSPEC;
-    (*ac->ac_if.if_output)(&ac->ac_if, m, &sa );
-    aa->aa_probcnt--;
-}
-
-aarp_clean()
-{
-    struct aarptab     *aat;
-    int                        i;
-
-    untimeout( aarptimer, 0 );
-    for ( i = 0, aat = aarptab; i < AARPTAB_SIZE; i++, aat++ ) {
-       if ( aat->aat_hold ) {
-           m_freem( aat->aat_hold );
-       }
-    }
-}
diff --git a/sys/netatalk/aarp.h b/sys/netatalk/aarp.h
deleted file mode 100644 (file)
index a391aae..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $Id: aarp.h,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * This structure is used for both phase 1 and 2. Under phase 1
- * the net is not filled in. It is in phase 2. In both cases, the
- * hardware address length is (for some unknown reason) 4. If
- * anyone at Apple could program their way out of paper bag, it
- * would be 1 and 3 respectively for phase 1 and 2.
- */
-
-#ifndef _AARP_H
-#define _AARP_H 1
-
-union aapa {
-    u_char             ap_pa[4];
-    struct ap_node {
-       u_char          an_zero;
-       u_char          an_net[2];
-       u_char          an_node;
-    } ap_node;
-};
-
-struct ether_aarp {
-    struct arphdr      eaa_hdr;
-    u_char             aarp_sha[6];
-    union aapa         aarp_spu;
-    u_char             aarp_tha[6];
-    union aapa         aarp_tpu;
-};
-#define aarp_hrd       eaa_hdr.ar_hrd
-#define aarp_pro       eaa_hdr.ar_pro
-#define aarp_hln       eaa_hdr.ar_hln
-#define aarp_pln       eaa_hdr.ar_pln
-#define aarp_op                eaa_hdr.ar_op
-#define aarp_spa       aarp_spu.ap_node.an_node
-#define aarp_tpa       aarp_tpu.ap_node.an_node
-#define aarp_spnet     aarp_spu.ap_node.an_net
-#define aarp_tpnet     aarp_tpu.ap_node.an_net
-#define aarp_spnode    aarp_spu.ap_node.an_node
-#define aarp_tpnode    aarp_tpu.ap_node.an_node
-
-struct aarptab {
-    struct at_addr     aat_ataddr;
-    u_char             aat_enaddr[ 6 ];
-    u_char             aat_timer;
-    u_char             aat_flags;
-    struct mbuf                *aat_hold;
-};
-
-#define AARPHRD_ETHER  0x0001
-
-#define AARPOP_REQUEST 0x01
-#define AARPOP_RESPONSE        0x02
-#define AARPOP_PROBE   0x03
-
-#ifdef KERNEL
-struct aarptab         *aarptnew();
-int                    aarpprobe();
-#endif /* KERNEL */
-
-#endif /* _AARP_H */
diff --git a/sys/netatalk/at.h b/sys/netatalk/at.h
deleted file mode 100644 (file)
index ddb2ab5..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * $Id: at.h,v 1.6 2008-12-18 17:31:31 morgana Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- *
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifndef __AT_HEADER__
-#define __AT_HEADER__
-
-#if defined(linux) /* pull in the linux header */
-#include <sys/socket.h>
-#include <asm/types.h>
-#include <linux/atalk.h>
-
-#ifdef HAVE_ATALK_ADDR
-#define at_addr atalk_addr
-#define netrange atalk_netrange
-#endif /* HAVE_ATALK_ADDR */
-
-#else /* linux */
-
-#include <sys/types.h>
-#include <netinet/in.h> /* so that we can deal with sun's s_net #define */
-
-#if defined(MACOSX_SERVER) && (!defined(NO_DDP))
-#include <netat/appletalk.h>
-#endif /* MACOSX_SERVER */
-
-/*
- * Supported protocols
- */
-#ifdef ATPROTO_DDP
-#undef ATPROTO_DDP
-#endif /* ATPROTO_DDP */
-#define ATPROTO_DDP    0
-#define ATPROTO_AARP   254
-
-/*
- * Ethernet types, for DIX.
- * These should really be in some global header file, but we can't
- * count on them being there, and it's annoying to patch system files.
- */
-#ifndef ETHERTYPE_AT
-#define ETHERTYPE_AT   0x809B          /* AppleTalk protocol */
-#endif
-#ifndef ETHERTYPE_AARP
-#define ETHERTYPE_AARP 0x80F3          /* AppleTalk ARP */
-#endif
-
-#define DDP_MAXSZ      587
-
-/*
- * If ATPORT_FIRST <= Port < ATPORT_RESERVED,
- * Port was created by a privileged process.
- * If ATPORT_RESERVED <= Port < ATPORT_LAST,
- * Port was not necessarily created by a
- * privileged process.
- */
-#define ATPORT_FIRST   1
-#define ATPORT_RESERVED        128
-#define ATPORT_LAST    254 /* 254 is reserved on ether/tokentalk networks */
-
-/*
- * AppleTalk address.
- */
-#ifndef MACOSX_SERVER
-struct at_addr {
-#ifdef s_net
-#undef s_net
-#endif /* s_net */
-    u_short    s_net;
-    u_char     s_node;
-};
-#endif /* MACOSX_SERVER */
-
-#define ATADDR_ANYNET  (u_short)0x0000
-#define ATADDR_ANYNODE (u_char)0x00
-#define ATADDR_ANYPORT (u_char)0x00
-#define ATADDR_BCAST   (u_char)0xff            /* There is no BCAST for NET */
-
-/*
- * Socket address, AppleTalk style.  We keep magic information in the 
- * zero bytes.  There are three types, NONE, CONFIG which has the phase
- * and a net range, and IFACE which has the network address of an
- * interface.  IFACE may be filled in by the client, and is filled in
- * by the kernel.
- */
-#ifndef MACOSX_SERVER
-struct sockaddr_at {
-#ifdef BSD4_4
-    u_char             sat_len;
-    u_char             sat_family;
-#else /* BSD4_4 */
-    short              sat_family;
-#endif /* BSD4_4 */
-    u_char             sat_port;
-    struct at_addr     sat_addr;
-#ifdef notdef
-    struct {
-       u_char          sh_type;
-# define SATHINT_NONE  0
-# define SATHINT_CONFIG        1
-# define SATHINT_IFACE 2
-       union {
-           char                su_zero[ 7 ];   /* XXX check size */
-           struct {
-               u_char          sr_phase;
-               u_short         sr_firstnet, sr_lastnet;
-           } su_range;
-           u_short             su_interface;
-       } sh_un;
-    } sat_hints;
-#else /* notdef */
-    char               sat_zero[ 8 ];
-#endif /* notdef */
-};
-#endif /* MACOSX_SERVER */
-
-struct netrange {
-    u_char             nr_phase;
-    u_short            nr_firstnet;
-    u_short            nr_lastnet;
-};
-
-#ifdef KERNEL
-extern struct domain   atalkdomain;
-extern struct protosw  atalksw[];
-#endif /* KERNEL */
-
-#endif /* linux */
-#endif /* __AT_HEADER__ */
-
diff --git a/sys/netatalk/at_control.c b/sys/netatalk/at_control.c
deleted file mode 100644 (file)
index 3cc3a1e..0000000
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * $Id: at_control.c,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#ifdef ibm032
-#include <sys/dir.h>
-#endif /* ibm032 */
-#include <sys/user.h>
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/ioctl.h>
-#include <sys/mbuf.h>
-#ifndef _IBMR2
-#include <sys/kernel.h>
-#endif /* ! _IBMR2 */
-#include <sys/socket.h>
-#include <sys/socketvar.h>
-#include <net/if.h>
-#include <net/af.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#undef s_net
-#include <netinet/if_ether.h>
-#ifdef _IBMR2
-#include <net/spl.h>
-#endif /* _IBMR2 */
-
-#include "at.h"
-#include "at_var.h"
-#include "aarp.h"
-#include "phase2.h"
-
-#ifdef BSD4_4
-# define sateqaddr(a,b)        ((a)->sat_len == (b)->sat_len && \
-                   (a)->sat_family == (b)->sat_family && \
-                   (a)->sat_addr.s_net == (b)->sat_addr.s_net && \
-                   (a)->sat_addr.s_node == (b)->sat_addr.s_node )
-#else /* BSD4_4 */
-atalk_hash( sat, hp )
-    struct sockaddr_at *sat;
-    struct afhash      *hp;
-{
-    hp->afh_nethash = sat->sat_addr.s_net;
-    hp->afh_hosthash = ( sat->sat_addr.s_net << 8 ) +
-           sat->sat_addr.s_node;
-}
-
-/*
- * Note the magic to get ifa_ifwithnet() to work without adding an
- * ifaddr entry for each net in our local range.
- */
-atalk_netmatch( sat1, sat2 )
-    struct sockaddr_at *sat1, *sat2;
-{
-    struct at_ifaddr   *aa;
-
-    for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-       if ( AA_SAT( aa ) == sat1 ) {
-           break;
-       }
-    }
-    if ( aa ) {
-       return( ntohs( aa->aa_firstnet ) <= ntohs( sat2->sat_addr.s_net ) &&
-               ntohs( aa->aa_lastnet ) >= ntohs( sat2->sat_addr.s_net ));
-    }
-    return( sat1->sat_addr.s_net == sat2->sat_addr.s_net );
-}
-#endif /* BSD4_4 */
-
-at_control( cmd, data, ifp )
-    int                        cmd;
-    caddr_t            data;
-    struct ifnet       *ifp;
-{
-    struct ifreq       *ifr = (struct ifreq *)data;
-    struct sockaddr_at *sat;
-    struct netrange    *nr;
-#ifdef BSD4_4
-    struct at_aliasreq *ifra = (struct at_aliasreq *)data;
-    struct at_ifaddr   *aa0;
-#endif /* BSD4_4 */
-    struct at_ifaddr   *aa = 0;
-    struct mbuf                *m;
-    struct ifaddr      *ifa;
-
-    if ( ifp ) {
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if ( aa->aa_ifp == ifp ) break;
-       }
-    }
-
-    switch ( cmd ) {
-#ifdef BSD4_4
-    case SIOCAIFADDR:
-    case SIOCDIFADDR:
-       if ( ifra->ifra_addr.sat_family == AF_APPLETALK ) {
-           for ( ; aa; aa = aa->aa_next ) {
-               if ( aa->aa_ifp == ifp &&
-                       sateqaddr( &aa->aa_addr, &ifra->ifra_addr )) {
-                   break;
-               }
-           }
-       }
-       if ( cmd == SIOCDIFADDR && aa == 0 ) {
-           return( EADDRNOTAVAIL );
-       }
-       /*FALLTHROUGH*/
-#endif /* BSD4_4 */
-
-    case SIOCSIFADDR:
-#ifdef BSD4_4
-       /*
-        * What a great idea this is: Let's reverse the meaning of
-        * the return...
-        */
-       if ( suser( u.u_cred, &u.u_acflag )) {
-           return( EPERM );
-       }
-#else /* BSD4_4 */
-       if ( !suser()) {
-           return( EPERM );
-       }
-#endif /* BSD4_4 */
-
-       sat = satosat( &ifr->ifr_addr );
-       nr = (struct netrange *)sat->sat_zero;
-       if ( nr->nr_phase == 1 ) {
-           for ( ; aa; aa = aa->aa_next ) {
-               if ( aa->aa_ifp == ifp &&
-                       ( aa->aa_flags & AFA_PHASE2 ) == 0 ) {
-                   break;
-               }
-           }
-       } else {                /* default to phase 2 */
-           for ( ; aa; aa = aa->aa_next ) {
-               if ( aa->aa_ifp == ifp && ( aa->aa_flags & AFA_PHASE2 )) {
-                   break;
-               }
-           }
-       }
-
-       if ( ifp == 0 )
-           panic( "at_control" );
-
-       if ( aa == (struct at_ifaddr *) 0 ) {
-           m = m_getclr( M_WAIT, MT_IFADDR );
-           if ( m == (struct mbuf *)NULL ) {
-               return( ENOBUFS );
-           }
-
-           if (( aa = at_ifaddr ) != NULL ) {
-               /*
-                * Don't let the loopback be first, since the first
-                * address is the machine's default address for
-                * binding.
-                */
-               if ( at_ifaddr->aa_ifp->if_flags & IFF_LOOPBACK ) {
-                   aa = mtod( m, struct at_ifaddr *);
-                   aa->aa_next = at_ifaddr;
-                   at_ifaddr = aa;
-               } else {
-                   for ( ; aa->aa_next; aa = aa->aa_next )
-                       ;
-                   aa->aa_next = mtod( m, struct at_ifaddr *);
-               }
-           } else {
-               at_ifaddr = mtod( m, struct at_ifaddr *);
-           }
-
-           aa = mtod( m, struct at_ifaddr *);
-
-           if (( ifa = ifp->if_addrlist ) != NULL ) {
-               for ( ; ifa->ifa_next; ifa = ifa->ifa_next )
-                   ;
-               ifa->ifa_next = (struct ifaddr *)aa;
-           } else {
-               ifp->if_addrlist = (struct ifaddr *)aa;
-           }
-
-#ifdef BSD4_4
-           aa->aa_ifa.ifa_addr = (struct sockaddr *)&aa->aa_addr;
-           aa->aa_ifa.ifa_dstaddr = (struct sockaddr *)&aa->aa_addr;
-           aa->aa_ifa.ifa_netmask = (struct sockaddr *)&aa->aa_netmask;
-#endif /* BSD4_4 */
-
-           /*
-            * Set/clear the phase 2 bit.
-            */
-           if ( nr->nr_phase == 1 ) {
-               aa->aa_flags &= ~AFA_PHASE2;
-           } else {
-               aa->aa_flags |= AFA_PHASE2;
-           }
-           aa->aa_ifp = ifp;
-       } else {
-           at_scrub( ifp, aa );
-       }
-       break;
-
-    case SIOCGIFADDR :
-       sat = satosat( &ifr->ifr_addr );
-       nr = (struct netrange *)sat->sat_zero;
-       if ( nr->nr_phase == 1 ) {
-           for ( ; aa; aa = aa->aa_next ) {
-               if ( aa->aa_ifp == ifp &&
-                       ( aa->aa_flags & AFA_PHASE2 ) == 0 ) {
-                   break;
-               }
-           }
-       } else {                /* default to phase 2 */
-           for ( ; aa; aa = aa->aa_next ) {
-               if ( aa->aa_ifp == ifp && ( aa->aa_flags & AFA_PHASE2 )) {
-                   break;
-               }
-           }
-       }
-
-       if ( aa == (struct at_ifaddr *) 0 )
-           return( EADDRNOTAVAIL );
-       break;
-    }
-
-    switch ( cmd ) {
-    case SIOCGIFADDR:
-#ifdef BSD4_4
-       *(struct sockaddr_at *)&ifr->ifr_addr = aa->aa_addr;
-#else /* BSD4_4 */
-       ifr->ifr_addr = aa->aa_addr;
-#endif /* BSD4_4 */
-       break;
-
-    case SIOCSIFADDR:
-       return( at_ifinit( ifp, aa, (struct sockaddr_at *)&ifr->ifr_addr ));
-
-#ifdef BSD4_4
-    case SIOCAIFADDR:
-       if ( sateqaddr( &ifra->ifra_addr, &aa->aa_addr )) {
-           return( 0 );
-       }
-       return( at_ifinit( ifp, aa, (struct sockaddr_at *)&ifr->ifr_addr ));
-
-    case SIOCDIFADDR:
-       at_scrub( ifp, aa );
-       if (( ifa = ifp->if_addrlist ) == (struct ifaddr *)aa ) {
-           ifp->if_addrlist = ifa->ifa_next;
-       } else {
-           while ( ifa->ifa_next && ( ifa->ifa_next != (struct ifaddr *)aa )) {
-               ifa = ifa->ifa_next;
-           }
-           if ( ifa->ifa_next ) {
-               ifa->ifa_next = ((struct ifaddr *)aa)->ifa_next;
-           } else {
-               panic( "at_control" );
-           }
-       }
-
-       aa0 = aa;
-       if ( aa0 == ( aa = at_ifaddr )) {
-           at_ifaddr = aa->aa_next;
-       } else {
-           while ( aa->aa_next && ( aa->aa_next != aa0 )) {
-               aa = aa->aa_next;
-           }
-           if ( aa->aa_next ) {
-               aa->aa_next = aa0->aa_next;
-           } else {
-               panic( "at_control" );
-           }
-       }
-       m_free( dtom( aa0 ));
-       break;
-#endif /* BSD4_4 */
-
-    default:
-       if ( ifp == 0 || ifp->if_ioctl == 0 )
-           return( EOPNOTSUPP );
-       return( (*ifp->if_ioctl)( ifp, cmd, data ));
-    }
-    return( 0 );
-}
-
-at_scrub( ifp, aa )
-    struct ifnet       *ifp;
-    struct at_ifaddr   *aa;
-{
-#ifndef BSD4_4
-    struct sockaddr_at netsat;
-    int                        error;
-    u_short            net;
-#endif /* ! BSD4_4 */
-
-    if ( aa->aa_flags & AFA_ROUTE ) {
-#ifdef BSD4_4
-       if (( error = rtinit( &(aa->aa_ifa), RTM_DELETE,
-               ( ifp->if_flags & IFF_LOOPBACK ) ? RTF_HOST : 0 )) != 0 ) {
-           return( error );
-       }
-       aa->aa_ifa.ifa_flags &= ~IFA_ROUTE;
-#else /* BSD4_4 */
-       if ( ifp->if_flags & IFF_LOOPBACK ) {
-           rtinit( &aa->aa_addr, &aa->aa_addr, SIOCDELRT, RTF_HOST );
-       } else {
-           bzero( &netsat, sizeof( struct sockaddr_at ));
-           netsat.sat_family = AF_APPLETALK;
-           netsat.sat_addr.s_node = ATADDR_ANYNODE;
-
-           /*
-            * If the range is the full 0-fffe range, just use
-            * the default route.
-            */
-           if ( aa->aa_firstnet == htons( 0x0000 ) &&
-                   aa->aa_lastnet == htons( 0xfffe )) {
-               netsat.sat_addr.s_net = 0;
-               rtinit((struct sockaddr *)&netsat, &aa->aa_addr,
-                       (int)SIOCDELRT, 0 );
-           } else {
-               for ( net = ntohs( aa->aa_firstnet );
-                       net <= ntohs( aa->aa_lastnet ); net++ ) {
-                   netsat.sat_addr.s_net = htons( net );
-                   rtinit((struct sockaddr *)&netsat, &aa->aa_addr,
-                           (int)SIOCDELRT, 0 );
-               }
-           }
-       }
-#endif /* BSD4_4 */
-       aa->aa_flags &= ~AFA_ROUTE;
-    }
-    return( 0 );
-}
-
-extern struct timeval  time;
-
-at_ifinit( ifp, aa, sat )
-    struct ifnet       *ifp;
-    struct at_ifaddr   *aa;
-    struct sockaddr_at *sat;
-{
-    struct netrange    nr, onr;
-#ifdef BSD4_4
-    struct sockaddr_at oldaddr;
-#else /* BSD4_4 */
-    struct sockaddr    oldaddr;
-#endif /* BSD4_4 */
-    struct sockaddr_at netaddr;
-    int                        s = splimp(), error = 0, i, j, netinc, nodeinc, nnets;
-    u_short            net;
-
-    oldaddr = aa->aa_addr;
-    bzero( AA_SAT( aa ), sizeof( struct sockaddr_at ));
-    bcopy( sat->sat_zero, &nr, sizeof( struct netrange ));
-    nnets = ntohs( nr.nr_lastnet ) - ntohs( nr.nr_firstnet ) + 1;
-
-    onr.nr_firstnet = aa->aa_firstnet;
-    onr.nr_lastnet = aa->aa_lastnet;
-    aa->aa_firstnet = nr.nr_firstnet;
-    aa->aa_lastnet = nr.nr_lastnet;
-
-    /*
-     * We could eliminate the need for a second phase 1 probe (post
-     * autoconf) if we check whether we're resetting the node. Note
-     * that phase 1 probes use only nodes, not net.node pairs.  Under
-     * phase 2, both the net and node must be the same.
-     */
-    if ( ifp->if_flags & IFF_LOOPBACK ) {
-#ifdef BSD4_4
-       AA_SAT( aa )->sat_len = sat->sat_len;
-#endif /* BSD4_4 */
-       AA_SAT( aa )->sat_family = AF_APPLETALK;
-       AA_SAT( aa )->sat_addr.s_net = sat->sat_addr.s_net;
-       AA_SAT( aa )->sat_addr.s_node = sat->sat_addr.s_node;
-    } else {
-       aa->aa_flags |= AFA_PROBING;
-       AA_SAT( aa )->sat_family = AF_APPLETALK;
-       if ( aa->aa_flags & AFA_PHASE2 ) {
-           if ( sat->sat_addr.s_net == ATADDR_ANYNET ) {
-               if ( nnets != 1 ) {
-                   net = ntohs( nr.nr_firstnet ) + time.tv_sec % ( nnets - 1 );
-               } else {
-                   net = ntohs( nr.nr_firstnet );
-               }
-           } else {
-               if ( ntohs( sat->sat_addr.s_net ) < ntohs( nr.nr_firstnet ) ||
-                       ntohs( sat->sat_addr.s_net ) > ntohs( nr.nr_lastnet )) {
-                   aa->aa_addr = oldaddr;
-                   aa->aa_firstnet = onr.nr_firstnet;
-                   aa->aa_lastnet = onr.nr_lastnet;
-                   return( EINVAL );
-               }
-               net = ntohs( sat->sat_addr.s_net );
-           }
-       } else {
-           net = ntohs( sat->sat_addr.s_net );
-       }
-
-       if ( sat->sat_addr.s_node == ATADDR_ANYNODE ) {
-           AA_SAT( aa )->sat_addr.s_node = time.tv_sec;
-       } else {
-           AA_SAT( aa )->sat_addr.s_node = sat->sat_addr.s_node;
-       }
-
-       for ( i = nnets, netinc = 1; i > 0; net = ntohs( nr.nr_firstnet ) +
-               (( net - ntohs( nr.nr_firstnet ) + netinc ) % nnets ), i-- ) {
-           AA_SAT( aa )->sat_addr.s_net = htons( net );
-
-           for ( j = 0, nodeinc = time.tv_sec | 1; j < 256;
-                   j++, AA_SAT( aa )->sat_addr.s_node += nodeinc ) {
-               if ( AA_SAT( aa )->sat_addr.s_node > 253 ||
-                       AA_SAT( aa )->sat_addr.s_node < 1 ) {
-                   continue;
-               }
-               aa->aa_probcnt = 10;
-               timeout( aarpprobe, (caddr_t)ifp, hz / 5 );
-               splx( s );
-               if ( sleep( aa, PSLEP|PCATCH )) {
-                   printf( "at_ifinit why did this happen?!\n" );
-                   aa->aa_addr = oldaddr;
-                   aa->aa_firstnet = onr.nr_firstnet;
-                   aa->aa_lastnet = onr.nr_lastnet;
-                   return( EINTR );
-               }
-               s = splimp();
-               if (( aa->aa_flags & AFA_PROBING ) == 0 ) {
-                   break;
-               }
-           }
-           if (( aa->aa_flags & AFA_PROBING ) == 0 ) {
-               break;
-           }
-           /* reset node for next network */
-           AA_SAT( aa )->sat_addr.s_node = time.tv_sec;
-       }
-
-       if ( aa->aa_flags & AFA_PROBING ) {
-           aa->aa_addr = oldaddr;
-           aa->aa_firstnet = onr.nr_firstnet;
-           aa->aa_lastnet = onr.nr_lastnet;
-           splx( s );
-           return( EADDRINUSE );
-       }
-    }
-
-    if ( ifp->if_ioctl &&
-           ( error = (*ifp->if_ioctl)( ifp, SIOCSIFADDR, aa ))) {
-       splx( s );
-       aa->aa_addr = oldaddr;
-       aa->aa_firstnet = onr.nr_firstnet;
-       aa->aa_lastnet = onr.nr_lastnet;
-       return( error );
-    }
-
-#ifdef BSD4_4
-    aa->aa_netmask.sat_len = 6;
-    aa->aa_netmask.sat_family = AF_APPLETALK;
-    aa->aa_netmask.sat_addr.s_net = 0xffff;
-    aa->aa_netmask.sat_addr.s_node = 0;
-#endif /* BSD4_4 */
-
-    if ( ifp->if_flags & IFF_LOOPBACK ) {
-#ifndef BSD4_4
-       rtinit( &aa->aa_addr, &aa->aa_addr, (int)SIOCADDRT,
-               RTF_HOST|RTF_UP );
-#else /* ! BSD4_4 */
-       error = rtinit( &(aa->aa_ifa), (int)RTM_ADD, RTF_HOST|RTF_UP );
-#endif /* ! BSD4_4 */
-    } else {
-#ifndef BSD4_4
-       /*
-        * rtrequest looks for point-to-point links first. The
-        * broadaddr is in the same spot as the destaddr. So, if
-        * ATADDR_ANYNET is 0, and we don't fill in the broadaddr, we
-        * get 0.0 routed out the ether interface.  So, initialize the
-        * broadaddr, even tho we don't use it.
-        *
-        * We *could* use the broadaddr field to reduce some of the
-        * sockaddr_at overloading that we've done.  E.g. Just send
-        * to INTERFACE-NET.255, and have the kernel reroute that
-        * to broadaddr, which would be 0.255 for phase 2 interfaces,
-        * and IFACE-NET.255 for phase 1 interfaces.
-        */
-       ((struct sockaddr_at *)&aa->aa_broadaddr)->sat_addr.s_net =
-               sat->sat_addr.s_net;
-       ((struct sockaddr_at *)&aa->aa_broadaddr)->sat_addr.s_node =
-               ATADDR_BCAST;
-
-       bzero( &netaddr, sizeof( struct sockaddr_at ));
-       netaddr.sat_family = AF_APPLETALK;
-       netaddr.sat_addr.s_node = ATADDR_ANYNODE;
-       if (( aa->aa_flags & AFA_PHASE2 ) == 0 ) {
-           netaddr.sat_addr.s_net = AA_SAT( aa )->sat_addr.s_net;
-           rtinit((struct sockaddr *)&netaddr, &aa->aa_addr,
-                   (int)SIOCADDRT, RTF_UP );
-       } else {
-           /*
-            * If the range is the full 0-fffe range, just use
-            * the default route.
-            */
-           if ( aa->aa_firstnet == htons( 0x0000 ) &&
-                   aa->aa_lastnet == htons( 0xfffe )) {
-               netaddr.sat_addr.s_net = 0;
-               rtinit((struct sockaddr *)&netaddr, &aa->aa_addr,
-                       (int)SIOCADDRT, RTF_UP );
-           } else {
-               for ( net = ntohs( aa->aa_firstnet );
-                       net <= ntohs( aa->aa_lastnet ); net++ ) {
-                   netaddr.sat_addr.s_net = htons( net );
-                   rtinit((struct sockaddr *)&netaddr, &aa->aa_addr,
-                           (int)SIOCADDRT, RTF_UP );
-               }
-           }
-       }
-#else /* ! BSD4_4 */
-       error = rtinit( &(aa->aa_ifa), (int)RTM_ADD, RTF_UP );
-#endif /* ! BSD4_4 */
-    }
-    if ( error ) {
-       aa->aa_addr = oldaddr;
-       aa->aa_firstnet = onr.nr_firstnet;
-       aa->aa_lastnet = onr.nr_lastnet;
-       splx( s );
-       return( error );
-    }
-
-#ifdef BSD4_4
-    aa->aa_ifa.ifa_flags |= IFA_ROUTE;
-#endif /* BSD4_4 */
-    aa->aa_flags |= AFA_ROUTE;
-    splx( s );
-    return( 0 );
-}
-
-at_broadcast( sat )
-    struct sockaddr_at *sat;
-{
-    struct at_ifaddr   *aa;
-
-    if ( sat->sat_addr.s_node != ATADDR_BCAST ) {
-       return( 0 );
-    }
-    if ( sat->sat_addr.s_net == 0 ) {
-       return( 1 );
-    } else {
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if (( aa->aa_ifp->if_flags & IFF_BROADCAST ) &&
-                ( ntohs( sat->sat_addr.s_net ) >= ntohs( aa->aa_firstnet ) &&
-                ntohs( sat->sat_addr.s_net ) <= ntohs( aa->aa_lastnet ))) {
-               return( 1 );
-           }
-       }
-    }
-    return( 0 );
-}
-
-aa_clean()
-{
-    struct at_ifaddr   *aa;
-    struct ifaddr      *ifa;
-    struct ifnet       *ifp;
-
-    while ( aa = at_ifaddr ) {
-       ifp = aa->aa_ifp;
-       at_scrub( ifp, aa );
-       at_ifaddr = aa->aa_next;
-       if (( ifa = ifp->if_addrlist ) == (struct ifaddr *)aa ) {
-           ifp->if_addrlist = ifa->ifa_next;
-       } else {
-           while ( ifa->ifa_next &&
-                   ( ifa->ifa_next != (struct ifaddr *)aa )) {
-               ifa = ifa->ifa_next;
-           }
-           if ( ifa->ifa_next ) {
-               ifa->ifa_next = ((struct ifaddr *)aa)->ifa_next;
-           } else {
-               panic( "at_entry" );
-           }
-       }
-    }
-}
diff --git a/sys/netatalk/at_proto.c b/sys/netatalk/at_proto.c
deleted file mode 100644 (file)
index 21aa36a..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $Id: at_proto.c,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- *
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/protosw.h>
-#include <sys/domain.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include "at.h"
-
-extern int             ddp_usrreq();
-extern int             ddp_output();
-extern int             ddp_init();
-
-#ifdef ultrix
-extern int             ddp_ifoutput();
-extern int             ddp_ifinput();
-extern int             ddp_ifioctl();
-#endif /* ultrix */
-
-struct protosw         atalksw[] = {
-    {
-       /* Identifiers */
-       SOCK_DGRAM,     &atalkdomain,   ATPROTO_DDP,    PR_ATOMIC|PR_ADDR,
-       /*
-        * protocol-protocol interface.
-        * fields are pr_input, pr_output, pr_ctlinput, and pr_ctloutput.
-        * pr_input can be called from the udp protocol stack for iptalk
-        * packets bound for a local socket.
-        * pr_output can be used by higher level appletalk protocols, should
-        * they be included in the kernel.
-        */
-       0,              ddp_output,     0,              0,
-       /* socket-protocol interface. */
-       ddp_usrreq,
-       /* utility routines. */
-       ddp_init,       0,              0,              0,
-#ifdef ultrix
-       /* interface hooks */
-       ddp_ifoutput,   ddp_ifinput,    ddp_ifioctl,    0,
-#endif /* ultrix */
-    },
-};
-
-struct domain          atalkdomain = {
-    AF_APPLETALK,      "appletalk",    0,      0,      0,      atalksw,
-    &atalksw[ sizeof( atalksw ) / sizeof( atalksw[ 0 ] ) ]
-};
diff --git a/sys/netatalk/at_var.h b/sys/netatalk/at_var.h
deleted file mode 100644 (file)
index 87fe44a..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * $Id: at_var.h,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- *
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifndef _ATVAR_H
-#define _ATVAR_H 1
-
-/*
- * For phase2, we need to keep not only our address on an interface,
- * but also the legal networks on the interface.
- */
-struct at_ifaddr {
-    struct ifaddr      aa_ifa;
-# define aa_ifp                        aa_ifa.ifa_ifp
-#ifdef BSD4_4
-    struct sockaddr_at aa_addr;
-    struct sockaddr_at aa_broadaddr;
-    struct sockaddr_at aa_netmask;
-#else /* BSD4_4 */
-# define aa_addr               aa_ifa.ifa_addr
-# define aa_broadaddr          aa_ifa.ifa_broadaddr
-# define aa_dstaddr            aa_ifa.ifa_dstaddr
-#endif /* BSD4_4 */
-    int                        aa_flags;
-    u_short            aa_firstnet, aa_lastnet;
-    int                        aa_probcnt;
-    struct at_ifaddr   *aa_next;
-};
-
-#ifdef BSD4_4
-struct at_aliasreq {
-       char    ifra_name[IFNAMSIZ];            /* if name, e.g. "en0" */
-       struct  sockaddr_at ifra_addr;
-       struct  sockaddr_at ifra_broadaddr;
-#define ifra_dstaddr ifra_broadaddr
-       struct  sockaddr_at ifra_mask;
-};
-#endif /* BSD4_4 */
-
-#define AA_SAT(aa) \
-    ((struct sockaddr_at *)&((struct at_ifaddr *)(aa))->aa_addr)
-#define satosat(sa)    ((struct sockaddr_at *)(sa))
-
-#define AFA_ROUTE      0x0001
-#define AFA_PROBING    0x0002
-#define AFA_PHASE2     0x0004
-
-#ifdef KERNEL
-struct at_ifaddr       *at_ifaddr;
-struct ifqueue         atintrq1, atintrq2;
-int                    atdebug;
-#endif /* KERNEL */
-
-#endif /* _ATVAR_H */
diff --git a/sys/netatalk/ddp.h b/sys/netatalk/ddp.h
deleted file mode 100644 (file)
index 4388386..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $Id: ddp.h,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- *
- */
-
-/*
- * <-1byte(8bits) ->
- * +---------------+
- * | 0 | hopc  |len|
- * +---------------+
- * | len (cont)    |
- * +---------------+
- * |               |
- * +- DDP csum    -+
- * |               |
- * +---------------+
- * |               |
- * +- Dest NET    -+
- * |               |
- * +---------------+
- * |               |
- * +- Src NET     -+
- * |               |
- * +---------------+
- * | Dest NODE     |
- * +---------------+
- * | Src NODE      |
- * +---------------+
- * | Dest PORT     |
- * +---------------+
- * | Src PORT      |
- * +---------------+
- *
- * On Apples, there is also a ddp_type field, after src_port. However,
- * under this unix implementation, user level processes need to be able
- * to set the ddp_type. In later revisions, the ddp_type may only be
- * available in a raw_appletalk interface.
- */
-
-#ifndef _NETATALK_DDP_H
-#define _NETATALK_DDP_H 1
-
-#include <netatalk/endian.h>
-
-struct elaphdr {
-    u_char     el_dnode;
-    u_char     el_snode;
-    u_char     el_type;
-};
-
-#define        SZ_ELAPHDR      3
-
-#define ELAP_DDPSHORT  0x01
-#define ELAP_DDPEXTEND 0x02
-
-/*
- * Extended DDP header. Includes sickness for dealing with arbitrary
- * bitfields on a little-endian arch.
- */
-struct ddpehdr {
-    union {
-       struct {
-#if BYTE_ORDER == BIG_ENDIAN
-    unsigned           dub_pad:2;
-    unsigned           dub_hops:4;
-    unsigned           dub_len:10;
-    unsigned           dub_sum:16;
-#else /* BYTE_ORDER == BIG_ENDIAN */
-#if BYTE_ORDER == LITTLE_ENDIAN
-    unsigned           dub_sum:16;
-    unsigned           dub_len:10;
-    unsigned           dub_hops:4;
-    unsigned           dub_pad:2;
-#else /* BYTE_ORDER == LITTLE_ENDIAN */
-    OOPS!
-#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-#endif /* BYTE_ORDER == BIG_ENDIAN */
-       } du_bits;
-       unsigned        du_bytes;
-    } deh_u;
-#define deh_pad                deh_u.du_bits.dub_pad
-#define deh_hops       deh_u.du_bits.dub_hops
-#define deh_len                deh_u.du_bits.dub_len
-#define deh_sum                deh_u.du_bits.dub_sum
-#define deh_bytes      deh_u.du_bytes
-    u_short            deh_dnet;
-    u_short            deh_snet;
-    u_char             deh_dnode;
-    u_char             deh_snode;
-    u_char             deh_dport;
-    u_char             deh_sport;
-};
-
-#define SZ_DDPEHDR      12
-
-#define DDP_MAXHOPS    15
-
-struct ddpshdr {
-    union {
-       struct {
-#if BYTE_ORDER == BIG_ENDIAN
-    unsigned           dub_pad:6;
-    unsigned           dub_len:10;
-    unsigned           dub_dport:8;
-    unsigned           dub_sport:8;
-#endif /* BYTE_ORDER == BIG_ENDIAN */
-#if BYTE_ORDER == LITTLE_ENDIAN
-    unsigned           dub_sport:8;
-    unsigned           dub_dport:8;
-    unsigned           dub_len:10;
-    unsigned           dub_pad:6;
-#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-       } du_bits;
-       unsigned        du_bytes;
-    } dsh_u;
-#define dsh_pad                dsh_u.du_bits.dub_pad
-#define dsh_len                dsh_u.du_bits.dub_len
-#define dsh_dport      dsh_u.du_bits.dub_dport
-#define dsh_sport      dsh_u.du_bits.dub_sport
-#define dsh_bytes      dsh_u.du_bytes
-};
-#define SZ_DDPSHDR      4
-
-#endif /* netatalk/ddp.h */
diff --git a/sys/netatalk/ddp_input.c b/sys/netatalk/ddp_input.c
deleted file mode 100644 (file)
index 74501f9..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * $Id: ddp_input.c,v 1.4 2002-01-04 04:45:48 sibaz Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/socketvar.h>
-#include <atalk/logger.h>
-#include <net/if.h>
-#include <net/route.h>
-#ifdef _IBMR2
-#include <net/spl.h>
-#endif /* _IBMR2 */
-
-#include "at.h"
-#include "at_var.h"
-#include "endian.h"
-#include "ddp.h"
-#include "ddp_var.h"
-
-int            ddp_forward = 1;
-int            ddp_firewall = 0;
-extern int     ddp_cksum;
-extern u_short at_cksum();
-
-/*
- * Could probably merge these two code segments a little better...
- */
-atintr()
-{
-    struct elaphdr     *elhp, elh;
-    struct ifnet       *ifp;
-    struct mbuf                *m;
-    struct at_ifaddr   *aa;
-    int                        s;
-
-    for (;;) {
-#ifndef _IBMR2
-       s = splimp();
-#endif /* ! _IBMR2 */
-
-#ifdef BSD4_4
-       IF_DEQUEUE( &atintrq2, m );
-#else /* BSD4_4 */
-       IF_DEQUEUEIF( &atintrq2, m, ifp );
-#endif /* BSD4_4 */
-
-#ifndef _IBMR2
-       splx( s );
-#endif /* ! _IBMR2 */
-
-       if ( m == 0 ) {                 /* no more queued packets */
-           break;
-       }
-
-#ifdef BSD4_4
-       ifp = m->m_pkthdr.rcvif;
-#endif /* BSD4_4 */
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if ( aa->aa_ifp == ifp && ( aa->aa_flags & AFA_PHASE2 )) {
-               break;
-           }
-       }
-       if ( aa == NULL ) {             /* ifp not an appletalk interface */
-           m_freem( m );
-           continue;
-       }
-
-       ddp_input( m, ifp, (struct elaphdr *)NULL, 2 );
-    }
-
-    for (;;) {
-#ifndef _IBMR2
-       s = splimp();
-#endif /* ! _IBMR2 */
-
-#ifdef BSD4_4
-       IF_DEQUEUE( &atintrq1, m );
-#else /* BSD4_4 */
-       IF_DEQUEUEIF( &atintrq1, m, ifp );
-#endif /* BSD4_4 */
-
-#ifndef _IBMR2
-       splx( s );
-#endif /* ! _IBMR2 */
-
-       if ( m == 0 ) {                 /* no more queued packets */
-           break;
-       }
-
-#ifdef BSD4_4
-       ifp = m->m_pkthdr.rcvif;
-#endif /* BSD4_4 */
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if ( aa->aa_ifp == ifp && ( aa->aa_flags & AFA_PHASE2 ) == 0 ) {
-               break;
-           }
-       }
-       if ( aa == NULL ) {             /* ifp not an appletalk interface */
-           m_freem( m );
-           continue;
-       }
-
-       if ( m->m_len < SZ_ELAPHDR &&
-               (( m = m_pullup( m, SZ_ELAPHDR )) == 0 )) {
-           ddpstat.ddps_tooshort++;
-           continue;
-       }
-
-       elhp = mtod( m, struct elaphdr *);
-       m_adj( m, SZ_ELAPHDR );
-
-       if ( elhp->el_type == ELAP_DDPEXTEND ) {
-           ddp_input( m, ifp, (struct elaphdr *)NULL, 1 );
-       } else {
-           bcopy((caddr_t)elhp, (caddr_t)&elh, SZ_ELAPHDR );
-           ddp_input( m, ifp, &elh, 1 );
-       }
-    }
-    return;
-}
-
-struct route   forwro;
-
-ddp_input( m, ifp, elh, phase )
-    struct mbuf                *m;
-    struct ifnet       *ifp;
-    struct elaphdr     *elh;
-    int                        phase;
-{
-    struct sockaddr_at from, to;
-    struct ddpshdr     *dsh, ddps;
-    struct at_ifaddr   *aa;
-    struct ddpehdr     *deh, ddpe;
-#ifndef BSD4_4
-    struct mbuf                *mp;
-#endif /* BSD4_4 */
-    struct ddpcb       *ddp;
-    int                        dlen, mlen;
-    u_short            cksum;
-
-    bzero( (caddr_t)&from, sizeof( struct sockaddr_at ));
-    if ( elh ) {
-       ddpstat.ddps_short++;
-
-       if ( m->m_len < sizeof( struct ddpshdr ) &&
-               (( m = m_pullup( m, sizeof( struct ddpshdr ))) == 0 )) {
-           ddpstat.ddps_tooshort++;
-           return;
-       }
-
-       dsh = mtod( m, struct ddpshdr *);
-       bcopy( (caddr_t)dsh, (caddr_t)&ddps, sizeof( struct ddpshdr ));
-       ddps.dsh_bytes = ntohl( ddps.dsh_bytes );
-       dlen = ddps.dsh_len;
-
-       to.sat_addr.s_net = 0;
-       to.sat_addr.s_node = elh->el_dnode;
-       to.sat_port = ddps.dsh_dport;
-       from.sat_addr.s_net = 0;
-       from.sat_addr.s_node = elh->el_snode;
-       from.sat_port = ddps.dsh_sport;
-
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if ( aa->aa_ifp == ifp && ( aa->aa_flags & AFA_PHASE2 ) == 0 &&
-                   ( AA_SAT( aa )->sat_addr.s_node == to.sat_addr.s_node ||
-                   to.sat_addr.s_node == ATADDR_BCAST )) {
-               break;
-           }
-       }
-       if ( aa == NULL ) {
-           m_freem( m );
-           return;
-       }
-    } else {
-       ddpstat.ddps_long++;
-
-       if ( m->m_len < sizeof( struct ddpehdr ) &&
-               (( m = m_pullup( m, sizeof( struct ddpehdr ))) == 0 )) {
-           ddpstat.ddps_tooshort++;
-           return;
-       }
-
-       deh = mtod( m, struct ddpehdr *);
-       bcopy( (caddr_t)deh, (caddr_t)&ddpe, sizeof( struct ddpehdr ));
-       ddpe.deh_bytes = ntohl( ddpe.deh_bytes );
-       dlen = ddpe.deh_len;
-
-       if (( cksum = ddpe.deh_sum ) == 0 ) {
-           ddpstat.ddps_nosum++;
-       }
-
-       from.sat_addr.s_net = ddpe.deh_snet;
-       from.sat_addr.s_node = ddpe.deh_snode;
-       from.sat_port = ddpe.deh_sport;
-       to.sat_addr.s_net = ddpe.deh_dnet;
-       to.sat_addr.s_node = ddpe.deh_dnode;
-       to.sat_port = ddpe.deh_dport;
-
-       if ( to.sat_addr.s_net == 0 ) {
-           for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-               if ( phase == 1 && ( aa->aa_flags & AFA_PHASE2 )) {
-                   continue;
-               }
-               if ( phase == 2 && ( aa->aa_flags & AFA_PHASE2 ) == 0 ) {
-                   continue;
-               }
-               if ( aa->aa_ifp == ifp &&
-                       ( AA_SAT( aa )->sat_addr.s_node == to.sat_addr.s_node ||
-                       to.sat_addr.s_node == ATADDR_BCAST ||
-                       ( ifp->if_flags & IFF_LOOPBACK ))) {
-                   break;
-               }
-           }
-       } else {
-           for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-               if ( to.sat_addr.s_net == aa->aa_firstnet &&
-                       to.sat_addr.s_node == 0 ) {
-                   break;
-               }
-               if (( ntohs( to.sat_addr.s_net ) < ntohs( aa->aa_firstnet ) ||
-                       ntohs( to.sat_addr.s_net ) > ntohs( aa->aa_lastnet )) &&
-                       ( ntohs( to.sat_addr.s_net ) < 0xff00 ||
-                       ntohs( to.sat_addr.s_net ) > 0xfffe)) {
-                   continue;
-               }
-               if ( to.sat_addr.s_node != AA_SAT( aa )->sat_addr.s_node &&
-                       to.sat_addr.s_node != ATADDR_BCAST ) {
-                   continue;
-               }
-               break;
-           }
-       }
-    }
-
-    /*
-     * Adjust the length, removing any padding that may have been added
-     * at a link layer.  We do this before we attempt to forward a packet,
-     * possibly on a different media.
-     */
-#ifdef BSD4_4
-    mlen = m->m_pkthdr.len;
-#else /* BSD4_4 */
-    for ( mlen = 0, mp = m; mp; mp = mp->m_next ) {
-       mlen += mp->m_len;
-    }
-#endif /* BSD4_4 */
-    if ( mlen < dlen ) {
-       ddpstat.ddps_toosmall++;
-       m_freem( m );
-       return;
-    }
-    if ( mlen > dlen ) {
-       m_adj( m, dlen - mlen );
-    }
-
-    /*
-     * XXX Should we deliver broadcasts locally, also, or rely on the
-     * link layer to give us a copy?  For the moment, the latter.
-     */
-    if ( aa == NULL || ( to.sat_addr.s_node == ATADDR_BCAST &&
-           aa->aa_ifp != ifp && ( ifp->if_flags & IFF_LOOPBACK ) == 0 )) {
-       if ( ddp_forward == 0 ) {
-           m_freem( m );
-           return;
-       }
-       if ( forwro.ro_rt && ( satosat( &forwro.ro_dst )->sat_addr.s_net !=
-               to.sat_addr.s_net ||
-               satosat( &forwro.ro_dst )->sat_addr.s_node !=
-               to.sat_addr.s_node )) {
-#ifdef ultrix
-           rtfree( forwro.ro_rt );
-#else /* ultrix */
-           RTFREE( forwro.ro_rt );
-#endif /* ultrix */
-           forwro.ro_rt = (struct rtentry *)0;
-       }
-       if ( forwro.ro_rt == (struct rtentry *)0 ||
-            forwro.ro_rt->rt_ifp == (struct ifnet *)0 ) {
-#ifdef BSD4_4
-           forwro.ro_dst.sa_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-           forwro.ro_dst.sa_family = AF_APPLETALK;
-           satosat( &forwro.ro_dst )->sat_addr.s_net = to.sat_addr.s_net;
-           satosat( &forwro.ro_dst )->sat_addr.s_node = to.sat_addr.s_node;
-           rtalloc( &forwro );
-       }
-
-       if ( to.sat_addr.s_net != satosat( &forwro.ro_dst )->sat_addr.s_net &&
-               ddpe.deh_hops == DDP_MAXHOPS ) {
-           m_freem( m );
-           return;
-       }
-
-       if ( ddp_firewall &&
-               ( forwro.ro_rt == NULL || ( forwro.ro_rt->rt_ifp != ifp &&
-               forwro.ro_rt->rt_ifp != at_ifaddr->aa_ifp ))) {
-           m_freem( m );
-           return;
-       }
-
-       ddpe.deh_hops++;
-       ddpe.deh_bytes = htonl( ddpe.deh_bytes );
-       bcopy( (caddr_t)&ddpe, (caddr_t)deh, sizeof( u_short ));
-       if ( ddp_route( m, &forwro )) {
-           ddpstat.ddps_cantforward++;
-       } else {
-           ddpstat.ddps_forward++;
-       }
-       return;
-    }
-
-#ifdef BSD4_4
-    from.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    from.sat_family = AF_APPLETALK;
-
-    if ( elh ) {
-       m_adj( m, sizeof( struct ddpshdr ));
-    } else {
-       if ( ddp_cksum && cksum && cksum != at_cksum( m, sizeof( int ))) {
-           ddpstat.ddps_badsum++;
-           m_freem( m );
-           return;
-       }
-       m_adj( m, sizeof( struct ddpehdr ));
-    }
-
-    if (( ddp = ddp_search( &from, &to, aa )) == NULL ) {
-       m_freem( m );
-       return;
-    }
-
-    if ( sbappendaddr( &ddp->ddp_socket->so_rcv, (struct sockaddr *)&from,
-           m, (struct mbuf *)0 ) == 0 ) {
-       ddpstat.ddps_nosockspace++;
-       m_freem( m );
-       return;
-    }
-    sorwakeup( ddp->ddp_socket );
-}
-
-m_printm( m )
-    struct mbuf        *m;
-{
-    for (; m; m = m->m_next ) {
-       bprint( mtod( m, char * ), m->m_len );
-    }
-}
-
-#define BPXLEN 48
-#define BPALEN 16
-#include <ctype.h>
-char   hexdig[] = "0123456789ABCDEF";
-
-bprint( data, len )
-    char       *data;
-    int                len;
-{
-    char       xout[ BPXLEN ], aout[ BPALEN ];
-    int                i = 0;
-
-    bzero( xout, BPXLEN );
-    bzero( aout, BPALEN );
-
-    for ( ;; ) {
-       if ( len < 1 ) {
-           if ( i != 0 ) {
-               printf( "%s\t%s\n", xout, aout );
-           }
-           printf( "%s\n", "(end)" );
-           break;
-       }
-
-       xout[ (i*3) ] = hexdig[ ( *data & 0xf0 ) >> 4 ];
-       xout[ (i*3) + 1 ] = hexdig[ *data & 0x0f ];
-
-       if ( (u_char)*data < 0x7f && (u_char)*data > 0x20 ) {
-           aout[ i ] = *data;
-       } else {
-           aout[ i ] = '.';
-       }
-
-       xout[ (i*3) + 2 ] = ' ';
-
-       i++;
-       len--;
-       data++;
-
-       if ( i > BPALEN - 2 ) {
-           printf( "%s\t%s\n", xout, aout );
-           bzero( xout, BPXLEN );
-           bzero( aout, BPALEN );
-           i = 0;
-           continue;
-       }
-    }
-}
diff --git a/sys/netatalk/ddp_output.c b/sys/netatalk/ddp_output.c
deleted file mode 100644 (file)
index 75fe9cb..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * $Id: ddp_output.c,v 1.4 2002-01-04 04:45:49 sibaz Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved. See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/errno.h>
-#include <atalk/logger.h>
-
-#include <net/if.h>
-#include <net/route.h>
-
-#include <netinet/in.h>
-#undef s_net
-#include <netinet/if_ether.h>
-
-#include "at.h"
-#include "at_var.h"
-#include "endian.h"
-#include "ddp.h"
-#include "ddp_var.h"
-
-u_short        at_cksum();
-int    ddp_cksum = 1;
-
-ddp_output( ddp, m )
-    struct ddpcb       *ddp;
-    struct mbuf                *m;
-{
-#ifndef BSD4_4
-    struct mbuf                *m0;
-    int                        len;
-#endif /* ! BSD4_4 */
-    struct ifnet       *ifp;
-    struct at_ifaddr   *aa = NULL;
-    struct ddpehdr     *deh;
-    u_short            net;
-
-#ifdef BSD4_4
-    M_PREPEND( m, sizeof( struct ddpehdr ), M_WAIT );
-#else /* BSD4_4 */
-    for ( len = 0, m0 = m; m; m = m->m_next ) {
-       len += m->m_len;
-    }
-    MGET( m, M_WAIT, MT_HEADER );
-    if ( m == 0 ) {
-       m_freem( m0 );
-       return( ENOBUFS );
-    }
-    m->m_next = m0;
-#endif /* BSD4_4 */
-
-#ifndef BSD4_4
-# define align(a)      (((a)+3)&0xfc)
-    m->m_off = MMINOFF + align( SZ_ELAPHDR );
-    m->m_len = sizeof( struct ddpehdr );
-#endif /* ! BSD4_4 */
-
-    deh = mtod( m, struct ddpehdr *);
-    deh->deh_pad = 0;
-    deh->deh_hops = 0;
-
-#ifdef BSD4_4
-    deh->deh_len = m->m_pkthdr.len;
-#else /* BSD4_4 */
-    deh->deh_len = len + sizeof( struct ddpehdr );
-#endif /* BSD4_4 */
-
-    deh->deh_dnet = ddp->ddp_fsat.sat_addr.s_net;
-    deh->deh_dnode = ddp->ddp_fsat.sat_addr.s_node;
-    deh->deh_dport = ddp->ddp_fsat.sat_port;
-    deh->deh_snet = ddp->ddp_lsat.sat_addr.s_net;
-    deh->deh_snode = ddp->ddp_lsat.sat_addr.s_node;
-    deh->deh_sport = ddp->ddp_lsat.sat_port;
-
-    /*
-     * The checksum calculation is done after all of the other bytes have
-     * been filled in.
-     */
-    if ( ddp_cksum ) {
-       deh->deh_sum = at_cksum( m, sizeof( int ));
-    } else {
-       deh->deh_sum = 0;
-    }
-    deh->deh_bytes = htonl( deh->deh_bytes );
-
-    return( ddp_route( m, &ddp->ddp_route ));
-}
-
-    u_short
-at_cksum( m, skip )
-    struct mbuf        *m;
-    int                skip;
-{
-    u_char     *data, *end;
-    u_int32_t  cksum = 0;
-
-    for (; m; m = m->m_next ) {
-       for ( data = mtod( m, u_char * ), end = data + m->m_len; data < end;
-               data++ ) {
-           if ( skip ) {
-               skip--;
-               continue;
-           }
-           cksum = ( cksum + *data ) << 1;
-           if ( cksum & 0x00010000 ) {
-               cksum++;
-           }
-           cksum &= 0x0000ffff;
-       }
-    }
-
-    if ( cksum == 0 ) {
-       cksum = 0x0000ffff;
-    }
-    return( (u_short)cksum );
-}
-
-ddp_route( m, ro )
-    struct mbuf                *m;
-    struct route       *ro;
-{
-    struct sockaddr_at gate;
-    struct elaphdr     *elh;
-    struct mbuf                *m0;
-    struct at_ifaddr   *aa = NULL;
-    struct ifnet       *ifp;
-    int                        mlen;
-    u_short            net;
-
-    if ( ro->ro_rt && ( ifp = ro->ro_rt->rt_ifp )) {
-#ifdef BSD4_4
-       net = satosat( ro->ro_rt->rt_gateway )->sat_addr.s_net;
-#else /* BSD4_4 */
-       net = satosat( &ro->ro_rt->rt_gateway )->sat_addr.s_net;
-#endif /* BSD4_4 */
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if ( aa->aa_ifp == ifp &&
-                   ntohs( net ) >= ntohs( aa->aa_firstnet ) &&
-                   ntohs( net ) <= ntohs( aa->aa_lastnet )) {
-               break;
-           }
-       }
-    }
-    if ( aa == NULL ) {
-       m_freem( m );
-       return( EINVAL );
-    }
-
-    /*
-     * There are several places in the kernel where data is added to
-     * an mbuf without ensuring that the mbuf pointer is aligned.
-     * This is bad for transition routing, since phase 1 and phase 2
-     * packets end up poorly aligned due to the three byte elap header.
-     */
-    if ( aa->aa_flags & AFA_PHASE2 ) {
-       for ( mlen = 0, m0 = m; m0; m0 = m0->m_next ) {
-           mlen += m0->m_len;
-       }
-       if (( m = m_pullup( m, MIN( MLEN, mlen ))) == 0 ) {
-           return( ENOBUFS );
-       }
-    } else {
-# ifdef notdef
-#ifdef BSD4_4
-       M_PREPEND( m, SZ_ELAPHDR, M_DONTWAIT );
-       if ( m == NULL ) {
-           return( ENOBUFS );
-       }
-#else /* BSD4_4 */
-       m->m_off -= SZ_ELAPHDR;
-       m->m_len += SZ_ELAPHDR;
-#endif /* BSD4_4 */
-# endif /* notdef */
-
-       MGET( m0, M_WAIT, MT_HEADER );
-       if ( m0 == 0 ) {
-           m_freem( m );
-           return( ENOBUFS );
-       }
-       m0->m_next = m;
-       m0->m_off = MMINOFF + align( sizeof( struct ether_header ));
-       m0->m_len = SZ_ELAPHDR;
-       m = m0;
-
-       elh = mtod( m, struct elaphdr *);
-       elh->el_snode = satosat( &aa->aa_addr )->sat_addr.s_node;
-       elh->el_type = ELAP_DDPEXTEND;
-       if ( ntohs( satosat( &ro->ro_dst )->sat_addr.s_net ) >=
-               ntohs( aa->aa_firstnet ) &&
-               ntohs( satosat( &ro->ro_dst )->sat_addr.s_net ) <=
-               ntohs( aa->aa_lastnet )) {
-           elh->el_dnode = satosat( &ro->ro_dst )->sat_addr.s_node;
-       } else {
-#ifdef BSD4_4
-           elh->el_dnode = satosat( ro->ro_rt->rt_gateway )->sat_addr.s_node;
-#else /* BSD4_4 */
-           elh->el_dnode = satosat( &ro->ro_rt->rt_gateway )->sat_addr.s_node;
-#endif /* BSD4_4 */
-       }
-    }
-
-    if ( ntohs( satosat( &ro->ro_dst )->sat_addr.s_net ) >=
-           ntohs( aa->aa_firstnet ) &&
-           ntohs( satosat( &ro->ro_dst )->sat_addr.s_net ) <=
-           ntohs( aa->aa_lastnet )) {
-       gate = *satosat( &ro->ro_dst );
-    } else {
-#ifdef BSD4_4
-       gate = *satosat( ro->ro_rt->rt_gateway );
-#else /* BSD4_4 */
-       gate = *satosat( &ro->ro_rt->rt_gateway );
-#endif /* BSD4_4 */
-    }
-    ro->ro_rt->rt_use++;
-
-#ifdef ultrix
-    /*
-     * SAIEW: We can't make changes to net/if_loop.c, so we don't route
-     * further than this: if it's going to go through the lookback,
-     * short-circuit to ddp_input(). Who needs queuing?
-     *
-     * Note: Passing NULL for the elaphdr is cool, since we'll only ever
-     * try to send long form ddp throught the loopback.
-     */
-    if ( ifp->if_flags & IFF_LOOPBACK ) {
-#ifdef notdef
-       m->m_off += SZ_ELAPHDR;
-       m->m_len -= SZ_ELAPHDR;
-#endif /* notdef */
-       ddp_input( m, ifp, (struct elaphdr *)NULL, 2 );
-       return( 0 );
-    }
-#endif /* ultrix */
-
-#ifdef _IBMR2
-    /*
-     * We can't make changes to the interface routines on RS6ks, and
-     * they don't provide hooks for if_output, so we just resolve
-     * our address here, and pass the packet as a raw ethernet packet.
-     * This doesn't work particularly well, if we aren't *on* ethernet,
-     * but it's ok for the moment.
-     */
-    if ( ! ( ifp->if_flags & IFF_LOOPBACK )) {
-       struct ether_header     eh;
-
-       if ( !aarpresolve(( struct arpcom *)ifp, m,
-               &gate, eh.ether_dhost )) {
-           return( 0 );
-       }
-       eh.ether_type = htons( ETHERTYPE_AT );
-       gate.sat_family = AF_UNSPEC;
-       bcopy( &eh, (*(struct sockaddr *)&gate).sa_data,
-               sizeof( (*(struct sockaddr *)&gate).sa_data ));
-    }
-#endif /* _IBMR2 */
-    return((*ifp->if_output)( ifp, m, &gate ));
-}
diff --git a/sys/netatalk/ddp_usrreq.c b/sys/netatalk/ddp_usrreq.c
deleted file mode 100644 (file)
index 50c0202..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * $Id: ddp_usrreq.c,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/errno.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/systm.h>
-#ifdef ibm032
-#include <sys/dir.h>
-#endif /* ibm032 */
-#include <sys/user.h>
-#include <sys/mbuf.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <sys/socketvar.h>
-#include <sys/protosw.h>
-#include <net/if.h>
-#include <net/route.h>
-#ifdef _IBMR2
-#include <net/spl.h>
-#endif /* _IBMR2 */
-
-#include "at.h"
-#include "at_var.h"
-#include "ddp_var.h"
-#include "endian.h"
-
-struct ddpcb   *ddpcb = NULL;
-u_int32_t              ddp_sendspace = DDP_MAXSZ; /* Max ddp size + 1 (ddp_type) */
-u_int32_t              ddp_recvspace = 10 * ( 587 + sizeof( struct sockaddr_at ));
-
-/*ARGSUSED*/
-ddp_usrreq( so, req, m, addr, rights )
-    struct socket      *so;
-    int                        req;
-    struct mbuf                *m, *addr, *rights;
-{
-    struct ddpcb       *ddp;
-    int                        error = 0;
-
-    ddp = sotoddpcb( so );
-
-    if ( req == PRU_CONTROL ) {
-       return( at_control( (int) m, (caddr_t) addr,
-               (struct ifnet *) rights ));
-    }
-
-    if ( rights && rights->m_len ) {
-       error = EINVAL;
-       goto release;
-    }
-
-    if ( ddp == NULL && req != PRU_ATTACH ) {
-       error = EINVAL;
-       goto release;
-    }
-
-    switch ( req ) {
-    case PRU_ATTACH :
-       if ( ddp != NULL ) {
-           error = EINVAL;
-           break;
-       }
-       if (( error = at_pcballoc( so )) != 0 ) {
-           break;
-       }
-       error = soreserve( so, ddp_sendspace, ddp_recvspace );
-       break;
-
-    case PRU_DETACH :
-       at_pcbdetach( so, ddp );
-       break;
-
-    case PRU_BIND :
-       error = at_pcbsetaddr( ddp, addr );
-       break;
-    
-    case PRU_SOCKADDR :
-       at_sockaddr( ddp, addr );
-       break;
-
-    case PRU_CONNECT:
-       if ( ddp->ddp_fsat.sat_port != ATADDR_ANYPORT ) {
-           error = EISCONN;
-           break;
-       }
-
-       error = at_pcbconnect( ddp, addr );
-       if ( error == 0 )
-           soisconnected( so );
-       break;
-
-    case PRU_DISCONNECT:
-       if ( ddp->ddp_fsat.sat_addr.s_node == ATADDR_ANYNODE ) {
-           error = ENOTCONN;
-           break;
-       }
-       at_pcbdisconnect( ddp );
-       soisdisconnected( so );
-       break;
-
-    case PRU_SHUTDOWN:
-       socantsendmore( so );
-       break;
-
-    case PRU_SEND: {
-       int     s;
-
-       if ( addr ) {
-           if ( ddp->ddp_fsat.sat_port != ATADDR_ANYPORT ) {
-               error = EISCONN;
-               break;
-           }
-
-           s = splnet();
-           error = at_pcbconnect( ddp, addr );
-           if ( error ) {
-               splx( s );
-               break;
-           }
-       } else {
-           if ( ddp->ddp_fsat.sat_port == ATADDR_ANYPORT ) {
-               error = ENOTCONN;
-               break;
-           }
-       }
-
-       error = ddp_output( ddp, m );
-       m = NULL;
-       if ( addr ) {
-           at_pcbdisconnect( ddp );
-           splx( s );
-       }
-       }
-       break;
-
-    case PRU_ABORT:
-       soisdisconnected( so );
-       at_pcbdetach( so, ddp );
-       break;
-
-    case PRU_LISTEN:
-    case PRU_CONNECT2:
-    case PRU_ACCEPT:
-    case PRU_SENDOOB:
-    case PRU_FASTTIMO:
-    case PRU_SLOWTIMO:
-    case PRU_PROTORCV:
-    case PRU_PROTOSEND:
-       error = EOPNOTSUPP;
-       break;
-
-    case PRU_RCVD:
-    case PRU_RCVOOB:
-       /*
-        * Don't mfree. Good architecture...
-        */
-       return( EOPNOTSUPP );
-
-    case PRU_SENSE:
-       /*
-        * 1. Don't return block size.
-        * 2. Don't mfree.
-        */
-       return( 0 );
-
-    default:
-       error = EOPNOTSUPP;
-    }
-
-release:
-    if ( m != NULL ) {
-       m_freem( m );
-    }
-    return( error );
-}
-
-at_sockaddr( ddp, addr )
-    struct ddpcb       *ddp;
-    struct mbuf                *addr;
-{
-    struct sockaddr_at *sat;
-
-    addr->m_len = sizeof( struct sockaddr_at );
-    sat = mtod( addr, struct sockaddr_at *);
-    *sat = ddp->ddp_lsat;
-}
-
-at_pcbsetaddr( ddp, addr )
-    struct ddpcb       *ddp;
-    struct mbuf                *addr;
-{
-    struct sockaddr_at lsat, *sat;
-    struct at_ifaddr   *aa;
-    struct ddpcb       *ddpp;
-
-    if ( ddp->ddp_lsat.sat_port != ATADDR_ANYPORT ) { /* shouldn't be bound */
-       return( EINVAL );
-    }
-
-    if ( addr != 0 ) {                 /* validate passed address */
-       sat = mtod( addr, struct sockaddr_at *);
-       if ( addr->m_len != sizeof( *sat )) {
-           return( EINVAL );
-       }
-       if ( sat->sat_family != AF_APPLETALK ) {
-           return( EAFNOSUPPORT );
-       }
-
-       if ( sat->sat_addr.s_node != ATADDR_ANYNODE ||
-               sat->sat_addr.s_net != ATADDR_ANYNET ) {
-           for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-               if (( sat->sat_addr.s_net == AA_SAT( aa )->sat_addr.s_net ) &&
-                ( sat->sat_addr.s_node == AA_SAT( aa )->sat_addr.s_node )) {
-                   break;
-               }
-           }
-           if ( !aa ) {
-               return( EADDRNOTAVAIL );
-           }
-       }
-
-       if ( sat->sat_port != ATADDR_ANYPORT ) {
-           if ( sat->sat_port < ATPORT_FIRST ||
-                   sat->sat_port >= ATPORT_LAST ) {
-               return( EINVAL );
-           }
-#ifdef BSD4_4
-           if ( sat->sat_port < ATPORT_RESERVED &&
-                   suser( u.u_cred, &u.u_acflag )) {
-               return( EACCES );
-           }
-#else /* BSD4_4 */
-           if ( sat->sat_port < ATPORT_RESERVED && ( !suser())) {
-               return( EACCES );
-           }
-#endif /* BSD4_4 */
-       }
-    } else {
-       bzero( (caddr_t)&lsat, sizeof( struct sockaddr_at ));
-       lsat.sat_family = AF_APPLETALK;
-       sat = &lsat;
-    }
-
-    if ( sat->sat_addr.s_node == ATADDR_ANYNODE &&
-           sat->sat_addr.s_net == ATADDR_ANYNET ) {
-       if ( at_ifaddr == NULL ) {
-           return( EADDRNOTAVAIL );
-       }
-       sat->sat_addr = AA_SAT( at_ifaddr )->sat_addr;
-    }
-    ddp->ddp_lsat = *sat;
-
-    /*
-     * Choose port.
-     */
-    if ( sat->sat_port == ATADDR_ANYPORT ) {
-       for ( sat->sat_port = ATPORT_RESERVED;
-               sat->sat_port < ATPORT_LAST; sat->sat_port++ ) {
-           if ( ddp_ports[ sat->sat_port - 1 ] == 0 ) {
-               break;
-           }
-       }
-       if ( sat->sat_port == ATPORT_LAST ) {
-           return( EADDRNOTAVAIL );
-       }
-       ddp->ddp_lsat.sat_port = sat->sat_port;
-       ddp_ports[ sat->sat_port - 1 ] = ddp;
-    } else {
-       for ( ddpp = ddp_ports[ sat->sat_port - 1 ]; ddpp;
-               ddpp = ddpp->ddp_pnext ) {
-           if ( ddpp->ddp_lsat.sat_addr.s_net == sat->sat_addr.s_net &&
-                   ddpp->ddp_lsat.sat_addr.s_node == sat->sat_addr.s_node ) {
-               break;
-           }
-       }
-       if ( ddpp != NULL ) {
-           return( EADDRINUSE );
-       }
-       ddp->ddp_pnext = ddp_ports[ sat->sat_port - 1 ];
-       ddp_ports[ sat->sat_port - 1 ] = ddp;
-       if ( ddp->ddp_pnext ) {
-           ddp->ddp_pnext->ddp_pprev = ddp;
-       }
-    }
-
-    return( 0 );
-}
-
-at_pcbconnect( ddp, addr )
-    struct ddpcb       *ddp;
-    struct mbuf                *addr;
-{
-    struct sockaddr_at *sat = mtod( addr, struct sockaddr_at *);
-    struct route       *ro;
-    struct at_ifaddr   *aa = 0;
-    struct ifnet       *ifp;
-    u_short            hintnet = 0, net;
-
-    if ( addr->m_len != sizeof( *sat ))
-       return( EINVAL );
-    if ( sat->sat_family != AF_APPLETALK ) {
-       return( EAFNOSUPPORT );
-    }
-
-    /*
-     * Under phase 2, network 0 means "the network".  We take "the
-     * network" to mean the network the control block is bound to.
-     * If the control block is not bound, there is an error.
-     */
-    if ( sat->sat_addr.s_net == 0 && sat->sat_addr.s_node != ATADDR_ANYNODE ) {
-       if ( ddp->ddp_lsat.sat_port == ATADDR_ANYPORT ) {
-           return( EADDRNOTAVAIL );
-       }
-       hintnet = ddp->ddp_lsat.sat_addr.s_net;
-    }
-
-    ro = &ddp->ddp_route;
-    /*
-     * If we've got an old route for this pcb, check that it is valid.
-     * If we've changed our address, we may have an old "good looking"
-     * route here.  Attempt to detect it.
-     */
-    if ( ro->ro_rt ) {
-       if ( hintnet ) {
-           net = hintnet;
-       } else {
-           net = sat->sat_addr.s_net;
-       }
-       aa = 0;
-       if ( ifp = ro->ro_rt->rt_ifp ) {
-           for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-               if ( aa->aa_ifp == ifp &&
-                       ntohs( net ) >= ntohs( aa->aa_firstnet ) &&
-                       ntohs( net ) <= ntohs( aa->aa_lastnet )) {
-                   break;
-               }
-           }
-       }
-       if ( aa == NULL || ( satosat( &ro->ro_dst )->sat_addr.s_net !=
-               ( hintnet ? hintnet : sat->sat_addr.s_net ) ||
-               satosat( &ro->ro_dst )->sat_addr.s_node !=
-               sat->sat_addr.s_node )) {
-#ifdef ultrix
-           rtfree( ro->ro_rt );
-#else /* ultrix */
-           RTFREE( ro->ro_rt );
-#endif /* ultrix */
-           ro->ro_rt = (struct rtentry *)0;
-       }
-    }
-
-    /*
-     * If we've got no route for this interface, try to find one.
-     */
-    if ( ro->ro_rt == (struct rtentry *)0 ||
-        ro->ro_rt->rt_ifp == (struct ifnet *)0 ) {
-#ifdef BSD4_4
-       ro->ro_dst.sa_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-       ro->ro_dst.sa_family = AF_APPLETALK;
-       if ( hintnet != 0 ) {
-           satosat( &ro->ro_dst )->sat_addr.s_net = hintnet;
-       } else {
-           satosat( &ro->ro_dst )->sat_addr.s_net = sat->sat_addr.s_net;
-       }
-       satosat( &ro->ro_dst )->sat_addr.s_node = sat->sat_addr.s_node;
-       rtalloc( ro );
-    }
-
-    /*
-     * Make sure any route that we have has a valid interface.
-     */
-    aa = 0;
-    if ( ro->ro_rt && ( ifp = ro->ro_rt->rt_ifp )) {
-       for ( aa = at_ifaddr; aa; aa = aa->aa_next ) {
-           if ( aa->aa_ifp == ifp ) {
-               break;
-           }
-       }
-    }
-    if ( aa == 0 ) {
-       return( ENETUNREACH );
-    }
-
-    ddp->ddp_fsat = *sat;
-    if ( ddp->ddp_lsat.sat_port == ATADDR_ANYPORT ) {
-       return( at_pcbsetaddr( ddp, (struct mbuf *)0 ));
-    }
-    return( 0 );
-}
-
-at_pcbdisconnect( ddp )
-    struct ddpcb       *ddp;
-{
-    ddp->ddp_fsat.sat_addr.s_net = ATADDR_ANYNET;
-    ddp->ddp_fsat.sat_addr.s_node = ATADDR_ANYNODE;
-    ddp->ddp_fsat.sat_port = ATADDR_ANYPORT;
-}
-
-at_pcballoc( so )
-    struct socket      *so;
-{
-    struct ddpcb       *ddp;
-    struct mbuf                *m;
-
-    m = m_getclr( M_WAIT, MT_PCB );
-    ddp = mtod( m, struct ddpcb * );
-    ddp->ddp_lsat.sat_port = ATADDR_ANYPORT;
-
-    ddp->ddp_next = ddpcb;
-    ddp->ddp_prev = NULL;
-    ddp->ddp_pprev = NULL;
-    ddp->ddp_pnext = NULL;
-    if ( ddpcb ) {
-       ddpcb->ddp_prev = ddp;
-    }
-    ddpcb = ddp;
-
-    ddp->ddp_socket = so;
-    so->so_pcb = (caddr_t)ddp;
-    return( 0 );
-}
-
-at_pcbdetach( so, ddp )
-    struct socket      *so;
-    struct ddpcb       *ddp;
-{
-    soisdisconnected( so );
-    so->so_pcb = 0;
-    sofree( so );
-
-    /* remove ddp from ddp_ports list */
-    if ( ddp->ddp_lsat.sat_port != ATADDR_ANYPORT &&
-           ddp_ports[ ddp->ddp_lsat.sat_port - 1 ] != NULL ) {
-       if ( ddp->ddp_pprev != NULL ) {
-           ddp->ddp_pprev->ddp_pnext = ddp->ddp_pnext;
-       } else {
-           ddp_ports[ ddp->ddp_lsat.sat_port - 1 ] = ddp->ddp_pnext;
-       }
-       if ( ddp->ddp_pnext != NULL ) {
-           ddp->ddp_pnext->ddp_pprev = ddp->ddp_pprev;
-       }
-    }
-
-    if ( ddp->ddp_route.ro_rt ) {
-       rtfree( ddp->ddp_route.ro_rt );
-    }
-
-    if ( ddp->ddp_prev ) {
-       ddp->ddp_prev->ddp_next = ddp->ddp_next;
-    } else {
-       ddpcb = ddp->ddp_next;
-    }
-    if ( ddp->ddp_next ) {
-       ddp->ddp_next->ddp_prev = ddp->ddp_prev;
-    }
-
-    (void) m_free( dtom( ddp ));
-}
-
-/*
- * For the moment, this just find the pcb with the correct local address.
- * In the future, this will actually do some real searching, so we can use
- * the sender's address to do de-multiplexing on a single port to many
- * sockets (pcbs).
- */
-    struct ddpcb *
-ddp_search( from, to, aa )
-    struct sockaddr_at *from, *to;
-    struct at_ifaddr   *aa;
-{
-    struct ddpcb       *ddp;
-
-    /*
-     * Check for bad ports.
-     */
-    if ( to->sat_port < ATPORT_FIRST || to->sat_port >= ATPORT_LAST ) {
-       return( NULL );
-    }
-
-    /*
-     * Make sure the local address matches the sent address.  What about
-     * the interface?
-     */
-    for ( ddp = ddp_ports[ to->sat_port - 1 ]; ddp; ddp = ddp->ddp_pnext ) {
-       /* XXX should we handle 0.YY? */
-
-       /* XXXX.YY to socket on destination interface */
-       if ( to->sat_addr.s_net == ddp->ddp_lsat.sat_addr.s_net &&
-               to->sat_addr.s_node == ddp->ddp_lsat.sat_addr.s_node ) {
-           break;
-       }
-
-       /* 0.255 to socket on receiving interface */
-       if ( to->sat_addr.s_node == ATADDR_BCAST && ( to->sat_addr.s_net == 0 ||
-               to->sat_addr.s_net == ddp->ddp_lsat.sat_addr.s_net ) &&
-               ddp->ddp_lsat.sat_addr.s_net == AA_SAT( aa )->sat_addr.s_net ) {
-           break;
-       }
-
-       /* XXXX.0 to socket on destination interface */
-       if ( to->sat_addr.s_net == aa->aa_firstnet &&
-               to->sat_addr.s_node == 0 &&
-               ntohs( ddp->ddp_lsat.sat_addr.s_net ) >=
-               ntohs( aa->aa_firstnet ) &&
-               ntohs( ddp->ddp_lsat.sat_addr.s_net ) <=
-               ntohs( aa->aa_lastnet )) {
-           break;
-       }
-    }
-    return( ddp );
-}
-
-ddp_init()
-{
-    atintrq1.ifq_maxlen = IFQ_MAXLEN;
-    atintrq2.ifq_maxlen = IFQ_MAXLEN;
-}
-
-ddp_clean()
-{
-    struct ddpcb       *ddp;
-
-    for ( ddp = ddpcb; ddp; ddp = ddp->ddp_next ) {
-       at_pcbdetach( ddp->ddp_socket, ddp );
-    }
-}
diff --git a/sys/netatalk/ddp_var.h b/sys/netatalk/ddp_var.h
deleted file mode 100644 (file)
index 42654a2..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * $Id: ddp_var.h,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1994 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifndef _NETATALK_DDP_VAR_H
-#define _NETATALK_DDP_VAR_H 1
-
-#include <netatalk/endian.h>
-
-struct ddpcb {
-    struct sockaddr_at ddp_fsat, ddp_lsat;
-    struct route       ddp_route;
-    struct socket      *ddp_socket;
-    struct ddpcb       *ddp_prev, *ddp_next;
-    struct ddpcb       *ddp_pprev, *ddp_pnext;
-};
-
-#define sotoddpcb(so)  ((struct ddpcb *)(so)->so_pcb)
-
-struct ddpstat {
-    u_int32_t  ddps_short;             /* short header packets received */
-    u_int32_t  ddps_long;              /* long header packets received */
-    u_int32_t  ddps_nosum;             /* no checksum */
-    u_int32_t  ddps_badsum;            /* bad checksum */
-    u_int32_t  ddps_tooshort;          /* packet too short */
-    u_int32_t  ddps_toosmall;          /* not enough data */
-    u_int32_t  ddps_forward;           /* packets forwarded */
-    u_int32_t  ddps_encap;             /* packets encapsulated */
-    u_int32_t  ddps_cantforward;       /* packets rcvd for unreachable dest */
-    u_int32_t  ddps_nosockspace;       /* no space in sockbuf for packet */
-};
-
-#ifdef KERNEL
-struct ddpcb           *ddp_ports[ ATPORT_LAST ];
-struct ddpcb           *ddpcb;
-struct ddpstat         ddpstat;
-struct ddpcb           *ddp_search();
-#endif /* KERNEL */
-
-#endif /* netatalk/ddp_var.h */
diff --git a/sys/netatalk/phase2.h b/sys/netatalk/phase2.h
deleted file mode 100644 (file)
index ec9735b..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Id: phase2.h,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- */
-
-# if defined( ultrix ) || defined( BSD4_4 )
-#include <net/if_llc.h>
-# else /* ultrix || BSD4_4 */
-
-#if defined( sun ) && !defined( __svr4__ )
-#include <net/if_ieee802.h>
-#endif /* sun && !__svr4__ */
-
-/*
- * Copyright (c) 1988 Regents of the University of California.
- * All rights reserved.
- *
- *      @(#)if_llc.h   7.2 (Berkeley) 6/28/90
- */
-
-/*
- * IEEE 802.2 Link Level Control headers, for use in conjunction with
- * 802.{3,4,5} media access control methods.
- *
- * Headers here do not use bit fields due to shortcommings in many
- * compilers.
- */
-
-struct llc {
-       u_char  llc_dsap;
-       u_char  llc_ssap;
-       union {
-           struct {
-               u_char control;
-               u_char format_id;
-               u_char class;
-               u_char window_x2;
-           } type_u;
-           struct {
-               u_char num_snd_x2;
-               u_char num_rcv_x2;
-           } type_i;
-           struct {
-               u_char control;
-               u_char num_rcv_x2;
-           } type_s;
-           struct {
-               u_char control;
-               u_char org_code[3];
-               u_short ether_type;
-           } type_snap;
-       } llc_un;
-};
-#define llc_control llc_un.type_u.control
-#define llc_fid llc_un.type_u.format_id
-#define llc_class llc_un.type_u.class
-#define llc_window llc_un.type_u.window_x2
-#define llc_org_code llc_un.type_snap.org_code
-#define llc_ether_type llc_un.type_snap.ether_type
-
-#define LLC_UI         0x3
-#define LLC_UI_P       0x13
-#define LLC_XID                0xaf
-#define LLC_XID_P      0xbf
-#define LLC_TEST       0xe3
-#define LLC_TEST_P     0xf3
-
-#define LLC_ISO_LSAP   0xfe
-#define LLC_SNAP_LSAP  0xaa
-
-# endif /* ultrix && BSD4_4 */
-
-#if defined( sun ) || defined( ibm032 )
-#define SIOCPHASE1     _IOW(i, 100, struct ifreq)      /* AppleTalk phase 1 */
-#define SIOCPHASE2     _IOW(i, 101, struct ifreq)      /* AppleTalk phase 2 */
-#endif /* sun || ibm032 */
-
-#if defined( ultrix ) || defined( BSD4_4 ) || defined( _IBMR2 )
-#define SIOCPHASE1     _IOW('i', 100, struct ifreq)    /* AppleTalk phase 1 */
-#define SIOCPHASE2     _IOW('i', 101, struct ifreq)    /* AppleTalk phase 2 */
-#endif /* ultrix || BSD4_4 || _IBMR2 */
diff --git a/sys/netbsd/.gitignore b/sys/netbsd/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/sys/netbsd/Makefile.am b/sys/netbsd/Makefile.am
deleted file mode 100644 (file)
index 454fafe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = netatalk
diff --git a/sys/netbsd/netatalk/.gitignore b/sys/netbsd/netatalk/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/sys/netbsd/netatalk/Makefile.am b/sys/netbsd/netatalk/Makefile.am
deleted file mode 100644 (file)
index f4ec9dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = endian.h
diff --git a/sys/netbsd/netatalk/endian.h b/sys/netbsd/netatalk/endian.h
deleted file mode 100644 (file)
index a1957e2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-/*
- * netatalk/endian.h
- *
- * This file is a dummy replacement for endian.h. NetBSD includes
- * machine/endian.h in sys/types.h, and it was decided that a
- * second include file was not needed. This file is included to
- * make all the source code compile correctly.
- */
diff --git a/sys/solaris/.gitignore b/sys/solaris/.gitignore
deleted file mode 100644 (file)
index 2f9b1d7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-ddp
-.gitignore
-*.o
diff --git a/sys/solaris/Makefile.in b/sys/solaris/Makefile.in
deleted file mode 100644 (file)
index 9f6c89a..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-# Solaris specific defines, passed to subdirectories.
-# To use Sun CC, uncomment the CC and KFLAGS variables.
-#
-# $Id: Makefile.in,v 1.6 2009-11-25 14:58:26 franklahm Exp $
-# This Makefile.in is not automake generated
-# copy and paste from automake Makefile.in
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-# end copy and paste
-
-CC     = @CC@
-# LD hardcoded to sun ld, GNU ld has been reported to cause some trouble with 64 bit
-LD     = /usr/ccs/bin/ld
-
-INSTALL = @INSTALL@
-GREP=@GREP@
-
-
-# -D_ISOC9X_SOURCE is handled by OSVERSION. basically, it's not needed
-# with 2.5.1.
-DEFS=  -D__svr4__ -DSOLARIS -I../../sys/generic \
-       -I.. @DEFS@
-
-# Variables
-KCFLAGS=@KCFLAGS@
-KLDFLAGS=@KLDFLAGS@
-COMPILE_KERNEL_GCC=@COMPILE_KERNEL_GCC@
-SPARC64=@COMPILE_64BIT_KMODULE@
-SOLARIS_MODULE_FALSE=@SOLARIS_MODULE_FALSE@
-SOLARIS_MODULE_TRUE=@SOLARIS_MODULE_TRUE@
-USE_SOLARIS_TRUE=@USE_SOLARIS_TRUE@
-USE_SOLARIS_FALSE=@USE_SOLARIS_FALSE@
-
-OPTOPTS=
-
-# Local build stuff.
-
-SRC= linkage.c tpi.c dlpi.c ioc.c if.c aarp.c ddp.c sock.c rt.c
-OBJ= linkage.o tpi.o dlpi.o ioc.o if.o aarp.o ddp.o sock.o rt.o
-HEADERS= if.h ioc.h rt.h sock.h
-EXTRA_DIST= ddp.conf Makefile.in $(SRC) $(HEADERS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-INCPATH=       -I../../include -I../netatalk -I../..
-CFLAGS=        ${DEFS} ${OPTOPTS} ${INCPATH} ${KCFLAGS}
-
-# Not building on Solaris
-@USE_SOLARIS_FALSE@all:
-
-# No Solaris kernel module build
-@USE_SOLARIS_TRUE@@SOLARIS_MODULE_FALSE@all:
-@USE_SOLARIS_TRUE@@SOLARIS_MODULE_FALSE@       @echo
-@USE_SOLARIS_TRUE@@SOLARIS_MODULE_FALSE@       @echo "Solaris kernel module cannot be build"
-@SOLARIS_MODULE_FALSE@install:
-@SOLARIS_MODULE_FALSE@
-@SOLARIS_MODULE_FALSE@uninstall:
-
-# Build Solaris kernel module
-@SOLARIS_MODULE_TRUE@all :     kernel
-
-@SOLARIS_MODULE_TRUE@kernel: ddp 
-
-@SOLARIS_MODULE_TRUE@FRC: 
-
-@SOLARIS_MODULE_TRUE@ddp :     ${OBJ}
-@SOLARIS_MODULE_TRUE@  ${LD} ${KLDFLAGS} -r -o ddp ${OBJ}
-
-@SOLARIS_MODULE_TRUE@linkage.o : linkage.c
-@SOLARIS_MODULE_TRUE@  ${CC} ${CFLAGS} -DVERSION=\"`cat ../../VERSION`\" -c linkage.c
-
-@SOLARIS_MODULE_TRUE@kuninstall : FRC
-@SOLARIS_MODULE_TRUE@  @if [ x"${SPARC64}" = x"yes" ] ; then \
-@SOLARIS_MODULE_TRUE@          ${RM} /usr/kernel/drv/sparcv9/ddp; \
-@SOLARIS_MODULE_TRUE@          ${RM} /usr/kernel/strmod/sparcv9/ddp; \
-@SOLARIS_MODULE_TRUE@  else \
-@SOLARIS_MODULE_TRUE@          ${RM} /usr/kernel/drv/ddp; \
-@SOLARIS_MODULE_TRUE@          ${RM} /usr/kernel/strmod/ddp; \
-@SOLARIS_MODULE_TRUE@  fi
-@SOLARIS_MODULE_TRUE@  ${RM} /usr/kernel/drv/ddp.conf
-@SOLARIS_MODULE_TRUE@  -rem_drv ddp
-@SOLARIS_MODULE_TRUE@  sync;sync;sync
-
-@SOLARIS_MODULE_TRUE@kinstall : kernel kuninstall
-@SOLARIS_MODULE_TRUE@  @if [ x"${SPARC64}" = x"yes" ]; then \
-@SOLARIS_MODULE_TRUE@          ${INSTALL} -o root -g sys -c ddp /usr/kernel/drv/sparcv9/ddp; \
-@SOLARIS_MODULE_TRUE@          ln /usr/kernel/drv/sparcv9/ddp /usr/kernel/strmod/sparcv9/ddp; \
-@SOLARIS_MODULE_TRUE@  else \
-@SOLARIS_MODULE_TRUE@          ${INSTALL} -o root -g sys -c ddp /usr/kernel/drv/ddp; \
-@SOLARIS_MODULE_TRUE@          ln /usr/kernel/drv/ddp /usr/kernel/strmod/ddp; \
-@SOLARIS_MODULE_TRUE@  fi
-@SOLARIS_MODULE_TRUE@  ${INSTALL} -o root -g sys -c ddp.conf /usr/kernel/drv/ddp.conf
-@SOLARIS_MODULE_TRUE@  add_drv -m '* 0666 root sys' ddp
-@SOLARIS_MODULE_TRUE@  sync;sync;sync
-@SOLARIS_MODULE_TRUE@  @if ${GREP} 'ddp' /etc/netconfig; then \
-@SOLARIS_MODULE_TRUE@            echo "netconfig already contains a ddp module, skipping"; \
-@SOLARIS_MODULE_TRUE@        else \
-@SOLARIS_MODULE_TRUE@            echo "adding ddp module to netconfig"; \
-@SOLARIS_MODULE_TRUE@            echo "ddp        tpi_clts      -    appletalk ddp   /dev/ddp        -" >> /etc/netconfig; \
-@SOLARIS_MODULE_TRUE@  fi
-@SOLARIS_MODULE_TRUE@  @echo "Installed Solaris kernel module"
-
-
-@SOLARIS_MODULE_TRUE@install:
-@SOLARIS_MODULE_TRUE@  @echo
-@SOLARIS_MODULE_TRUE@  @echo "To install the Solaris kernel module type 'make kinstall' as root user"
-
-@SOLARIS_MODULE_TRUE@uninstall:
-@SOLARIS_MODULE_TRUE@  @echo
-@SOLARIS_MODULE_TRUE@  @echo "To uninstall the Solaris kernel module type 'make kuninstall' as root user"
-
-# copy and paste from automake Makefile.in
-distdir : $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
-         if test -d $$d/$$file; then \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-           fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-         else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
-           || exit 1; \
-         fi; \
-       done
-# end copy and paste
-
-clean : sysclean
-
-klean sysclean :
-       rm -f a.out core* *.o *.bak *[Ee]rrs tags
-       rm -f ddp
-
-distclean: clean
-        -rm -f Makefile
-
-maintainer-clean: distclean
-
-depend :
-
-check:
-
-tags:
-
-dvi:
-
-installcheck:
-
-install-exec:
-
-# DO NOT DELETE THIS LINE
-
diff --git a/sys/solaris/aarp.c b/sys/solaris/aarp.c
deleted file mode 100644 (file)
index ea3cf67..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * $Id: aarp.c,v 1.4 2005-04-28 20:50:07 bfernhomberg Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/byteorder.h>
-#include <sys/errno.h>
-#include <sys/stream.h>
-#include <sys/ethernet.h>
-#include <sys/kmem.h>
-#include <sys/cmn_err.h>
-#include <sys/ddi.h>
-#include <netinet/arp.h>
-#include <net/if.h>
-
-#ifdef STDC_HEADERS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include <netatalk/at.h>
-#include <netatalk/aarp.h>
-#include <netatalk/phase2.h>
-
-#include "if.h"
-
-struct aarplist {
-    struct aarplist    *aal_next, *aal_prev;
-    struct at_addr     aal_addr;
-    u_char             aal_hwaddr[ ETHERADDRL ];
-    u_char             aal_age;
-    u_char             aal_flags;
-    mblk_t             *aal_m;
-};
-
-    struct aarplist *
-aarp_find( struct atif_data *aid, ushort net, unchar node )
-{
-    struct aarplist    *aal;
-
-    for ( aal = aid->aid_aarplist; aal != NULL; aal = aal->aal_next ) {
-       if ( aal->aal_addr.s_net == net && aal->aal_addr.s_node == node ) {
-           break;
-       }
-    }
-    return( aal );
-}
-
-    struct aarplist *
-aarp_alloc( struct atif_data *aid, ushort net, unchar node )
-{
-    struct aarplist    *aal;
-
-    for ( aal = aid->aid_aarplist; aal != NULL; aal = aal->aal_next ) {
-       if ( aal->aal_addr.s_net == net && aal->aal_addr.s_node == node ) {
-           return( aal );
-       }
-    }
-
-    if ( aid->aid_aarpflist == NULL ) {
-        if (( aal = (struct aarplist *)kmem_alloc( sizeof( struct aarplist ),
-                KM_NOSLEEP )) == NULL ) {
-            return( NULL );
-        }
-    } else {
-       aal = aid->aid_aarpflist;
-       aid->aid_aarpflist = aal->aal_next;
-       if ( aid->aid_aarpflist != NULL ) {
-           aid->aid_aarpflist->aal_prev = NULL;
-       }
-    }
-
-    aal->aal_addr.s_net = net;
-    aal->aal_addr.s_node = node;
-    bzero( aal->aal_hwaddr, sizeof( aal->aal_hwaddr ));
-    aal->aal_age = 0;
-    aal->aal_flags = 0;
-    aal->aal_m = NULL;
-
-    aal->aal_next = aid->aid_aarplist;
-    aal->aal_prev = NULL;
-    if ( aid->aid_aarplist != NULL ) {
-       aid->aid_aarplist->aal_prev = aal;
-    }
-    aid->aid_aarplist = aal;
-
-    return( aal );
-}
-
-/*
- * Move entry to free list.
- */
-    void
-aarp_free( struct atif_data *aid, struct aarplist *aal )
-{
-    if ( aal->aal_next != NULL ) {
-       aal->aal_next->aal_prev = aal->aal_prev;
-    }
-    if ( aal->aal_prev != NULL ) {
-       aal->aal_prev->aal_next = aal->aal_next;
-    }
-    if ( aid->aid_aarplist == aal ) {
-       aid->aid_aarplist = aal->aal_next;
-    }
-
-    if ( aal->aal_m != NULL ) {
-       freemsg( aal->aal_m );
-       aal->aal_m = NULL;
-    }
-
-    aal->aal_prev = NULL;
-    aal->aal_next = aid->aid_aarpflist;
-    if ( aid->aid_aarpflist != NULL ) {
-       aid->aid_aarpflist->aal_prev = aal;
-    }
-    aid->aid_aarpflist = aal;
-    return;
-}
-
-    void
-aarp_timeout( void *ptr )
-{
-    struct atif_data   *aid = (struct atif_data *) ptr;
-    struct aarplist    *aal, *p;
-
-    aid->aid_aarptimeo = qtimeout( aid->aid_q, aarp_timeout,
-           (caddr_t)aid, 60 * hz );
-    for ( aal = aid->aid_aarplist; aal != NULL; aal = p ) {
-       p = aal->aal_next;
-       if ( ++aal->aal_age < (( aal->aal_flags ) ? 5 : 3 )) {
-           continue;
-       }
-       aarp_free( aid, aal );
-    }
-    return;
-}
-
-    void
-aarp_init( struct atif_data *aid )
-{
-    aid->aid_aarptimeo = qtimeout( aid->aid_q, aarp_timeout,
-           (caddr_t)aid, 60 * hz );
-    return;
-}
-
-    void
-aarp_clean( struct atif_data *aid )
-{
-    struct aarplist *aal, *p;
-
-    if ( aid->aid_aarptimeo != 0 ) {
-       quntimeout( aid->aid_q, aid->aid_aarptimeo );
-       aid->aid_aarptimeo = 0;
-    }
-
-    for ( aal = aid->aid_aarplist; aal != NULL; aal = p ) {
-       p = aal->aal_next;
-       if ( aal->aal_m != NULL ) {
-           freemsg( aal->aal_m );
-           aal->aal_m = NULL;
-       }
-       kmem_free( aal, sizeof( struct aarplist ));
-    }
-    aid->aid_aarplist = NULL;
-
-    for ( aal = aid->aid_aarpflist; aal != NULL; aal = p ) {
-       p = aal->aal_next;
-       if ( aal->aal_m != NULL ) {
-           freemsg( aal->aal_m );
-           aal->aal_m = NULL;
-       }
-       kmem_free( aal, sizeof( struct aarplist ));
-    }
-    aid->aid_aarpflist = NULL;
-
-    return;
-}
-
-    int
-aarp_rput( queue_t *q, mblk_t *m )
-{
-    struct atif_data   *aid = (struct atif_data *)q->q_ptr;
-    struct ether_aarp  *ea;
-    struct aarplist    *aal;
-    ushort             tpnet, spnet, op;
-
-    if ( m->b_wptr - m->b_rptr < sizeof( struct ether_aarp )) {
-       cmn_err( CE_NOTE, "aarp_rput short packet\n" );
-       goto done;
-    }
-
-    ea = (struct ether_aarp *)m->b_rptr;
-
-    if ( ea->aarp_hrd != htons( AARPHRD_ETHER ) ||
-           ea->aarp_pro != htons( ETHERTYPE_AT ) ||
-           ea->aarp_hln != sizeof( ea->aarp_sha ) ||
-           ea->aarp_pln != sizeof( ea->aarp_spu )) {
-       cmn_err( CE_NOTE, "aarp_rput bad constants\n" );
-       goto done;
-    }
-
-    if ( bcmp( ea->aarp_sha, aid->aid_hwaddr, sizeof( ea->aarp_sha )) == 0 ) {
-       goto done;
-    }
-
-    op = ntohs( ea->aarp_op );
-    bcopy( ea->aarp_tpnet, &tpnet, sizeof( tpnet ));
-    bcopy( ea->aarp_spnet, &spnet, sizeof( spnet ));
-
-    if ( aid->aid_flags & AIDF_PROBING ) {
-       if ( tpnet == aid->aid_sat.sat_addr.s_net &&
-               ea->aarp_tpnode == aid->aid_sat.sat_addr.s_node ) {
-           aid->aid_flags &= ~AIDF_PROBING;
-           aid->aid_flags |= AIDF_PROBEFAILED;
-           cmn_err( CE_NOTE, "aarp_rput probe collision %s\n", aid->aid_name );
-       }
-    } else {
-       if ( tpnet == aid->aid_sat.sat_addr.s_net &&
-               ea->aarp_tpnode == aid->aid_sat.sat_addr.s_node ) {
-           switch ( op ) {
-           case AARPOP_REQUEST :
-               aal = aarp_alloc( aid, spnet, ea->aarp_spnode );
-               bcopy( ea->aarp_sha, aal->aal_hwaddr, sizeof( ea->aarp_sha ));
-               aal->aal_age = 0;
-               aal->aal_flags = 1;             /* complete */
-           case AARPOP_PROBE :
-               aarp_send( aid, AARPOP_RESPONSE, ea->aarp_sha,
-                       spnet, ea->aarp_spnode );
-               break;
-
-           case AARPOP_RESPONSE :
-               if (( aal =
-                       aarp_find( aid, spnet, ea->aarp_spnode )) == NULL ) {
-                   break;
-               }
-               bcopy( ea->aarp_sha, aal->aal_hwaddr, sizeof( ea->aarp_sha ));
-               aal->aal_age = 0;
-               aal->aal_flags = 1;             /* complete */
-               if ( aal->aal_m != NULL ) {
-                   dl_unitdata_req( WR( q ), aal->aal_m, ETHERTYPE_AT,
-                           aal->aal_hwaddr );
-                   aal->aal_m = NULL;
-               }
-               break;
-
-           default :
-               cmn_err( CE_NOTE, "aarp_rput bad op %X\n", op );
-               break;
-           }
-       } else {
-           switch ( op ) {
-           case AARPOP_REQUEST :
-               break;
-           case AARPOP_PROBE :
-               if (( aal =
-                       aarp_find( aid, spnet, ea->aarp_spnode )) != NULL ) {
-                   aarp_free( aid, aal );
-               }
-               break;
-
-           case AARPOP_RESPONSE :
-               cmn_err( CE_NOTE, "aarp_rput someone using our address\n" );
-               break;
-
-           default :
-               cmn_err( CE_NOTE, "aarp_rput bad op %X\n", op );
-               break;
-           }
-       }
-    }
-
-done :
-    freemsg( m );
-    return( 0 );
-}
-
-    void
-aarp_send( struct atif_data *aid, int op, caddr_t hwaddr,
-       ushort net, unchar node )
-{
-    mblk_t             *m;
-    struct ether_aarp  *ea;
-
-    if (( m = allocb( sizeof( struct ether_aarp ), BPRI_HI )) == NULL ) {
-       return;
-    }
-    m->b_wptr = m->b_rptr + sizeof( struct ether_aarp );
-    ea = (struct ether_aarp *)m->b_rptr;
-    bzero( (caddr_t)ea, sizeof( struct ether_aarp ));
-
-    ea->aarp_hrd = htons( AARPHRD_ETHER );
-    ea->aarp_pro = htons( ETHERTYPE_AT );
-    ea->aarp_hln = sizeof( ea->aarp_sha );
-    ea->aarp_pln = sizeof( ea->aarp_spu );
-    ea->aarp_op = htons( op );
-    bcopy( aid->aid_hwaddr, ea->aarp_sha, sizeof( ea->aarp_sha ));
-
-    if ( hwaddr == NULL ) {
-       bzero( ea->aarp_tha, sizeof( ea->aarp_tha ));
-    } else {
-       bcopy( hwaddr, ea->aarp_tha, sizeof( ea->aarp_tha ));
-    }
-
-    ea->aarp_tpnode = node;
-    bcopy( &aid->aid_sat.sat_addr.s_net, ea->aarp_spnet,
-           sizeof( ea->aarp_spnet ));
-    bcopy( &net, ea->aarp_tpnet, sizeof( ea->aarp_tpnet ));
-    ea->aarp_spnode = aid->aid_sat.sat_addr.s_node;
-    ea->aarp_tpnode = node;
-
-    if ( hwaddr == NULL ) {
-       dl_unitdata_req( WR( aid->aid_q ), m, ETHERTYPE_AARP,
-               at_multicastaddr );
-    } else {
-       dl_unitdata_req( WR( aid->aid_q ), m, ETHERTYPE_AARP, hwaddr );
-    }
-    return;
-}
-
-    int
-aarp_resolve( struct atif_data *aid, mblk_t *m, struct sockaddr_at *sat )
-{
-    struct aarplist    *aal;
-
-    if ( sat->sat_addr.s_node == ATADDR_BCAST ) {
-       dl_unitdata_req( WR( aid->aid_q ), m, ETHERTYPE_AT, at_multicastaddr );
-       return( 0 );
-    }
-
-    if (( aal = aarp_alloc( aid, sat->sat_addr.s_net, sat->sat_addr.s_node )) ==
-           NULL ) {
-       freemsg( m );
-       return( ENOMEM );
-    }
-    aal->aal_age = 0;
-
-    if ( aal->aal_flags ) {    /* complete */
-       dl_unitdata_req( WR( aid->aid_q ), m, ETHERTYPE_AT, aal->aal_hwaddr );
-    } else {
-       /* send aarp request */
-       if ( aal->aal_m != NULL ) {
-           freemsg( aal->aal_m );
-       }
-       /* either freed above, in timeout, or sent in aarp_rput() */
-       aal->aal_m = m; 
-       aarp_send( aid, AARPOP_REQUEST, NULL,
-               sat->sat_addr.s_net, sat->sat_addr.s_node );
-    }
-    return( 0 );
-}
diff --git a/sys/solaris/ddp.c b/sys/solaris/ddp.c
deleted file mode 100644 (file)
index 526c5f8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Id: ddp.c,v 1.3 2002-01-17 06:13:02 srittau Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/stream.h>
-#include <sys/cmn_err.h>
-#include <sys/socket.h>
-#include <sys/errno.h>
-#include <sys/tihdr.h>
-#include <sys/ddi.h>
-#include <sys/ethernet.h>
-#include <net/if.h>
-
-#ifdef STDC_HEADERS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include <netatalk/endian.h>
-#include <netatalk/ddp.h>
-#include <netatalk/at.h>
-
-#include "if.h"
-#include "sock.h"
-
-    int
-ddp_rput( struct atif_data *aid, mblk_t *m )
-{
-    struct atif_data   *daid;
-    struct ddpehdr     *deh;
-    struct sockaddr_at sat;
-    struct sock_data   *sd;
-
-    if ( m->b_wptr - m->b_rptr < sizeof( struct ddpehdr )) {
-       cmn_err( CE_NOTE, "ddp_rput short packet\n" );
-       freemsg( m );
-       return( EINVAL );
-    }
-
-    deh = (struct ddpehdr *)m->b_rptr;
-
-    sat.sat_addr.s_net = deh->deh_dnet;
-    sat.sat_addr.s_node = deh->deh_dnode;
-    sat.sat_port = deh->deh_dport;
-
-    if (( daid = if_dest( aid, &sat )) != NULL ) {
-       if (( sd = sock_dest( daid, &sat )) != NULL ) {
-           if ( sd->sd_state != TS_IDLE ) {
-               freemsg( m );
-               return( EHOSTDOWN );
-           }
-           bzero( (caddr_t)&sat, sizeof( struct sockaddr_at ));
-           sat.sat_family = AF_APPLETALK;
-           sat.sat_addr.s_net = deh->deh_snet;
-           sat.sat_addr.s_node = deh->deh_snode;
-           sat.sat_port = deh->deh_sport;
-           adjmsg( m, sizeof( struct ddpehdr ));
-           t_unitdata_ind( WR( sd->sd_q ), m, &sat );
-       } else {
-           /* toss it */
-           freemsg( m );
-           return( EHOSTDOWN );
-       }
-    } else {
-       /* route it */
-       freemsg( m );
-       return( ENETUNREACH );
-    }
-    return( 0 );
-}
diff --git a/sys/solaris/ddp.conf b/sys/solaris/ddp.conf
deleted file mode 100644 (file)
index e0257ad..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Netatalk driver's configuration file
-#
-
-name="ddp" parent="pseudo" instance=0;
diff --git a/sys/solaris/dlpi.c b/sys/solaris/dlpi.c
deleted file mode 100644 (file)
index 2be6de3..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-/* $Id: dlpi.c,v 1.2 2002-01-17 06:13:02 srittau Exp $
- */
-
-#include <config.h>
-
-#include <sys/types.h>
-#include <sys/kmem.h>
-#include <sys/stream.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/cmn_err.h>
-#include <sys/ddi.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/dlpi.h>
-#include <sys/ethernet.h>
-#include <sys/byteorder.h>
-#include <sys/sunddi.h>
-#include <net/if.h>
-#include <errno.h>
-
-#include <netatalk/phase2.h>
-#include <netatalk/at.h>
-
-#include "ioc.h"
-#include "if.h"
-
-u_char at_multicastaddr[ ETHERADDRL ] = {
-    0x09, 0x00, 0x07, 0xff, 0xff, 0xff,
-};
-u_char at_org_code[ 3 ] = {
-    0x08, 0x00, 0x07,
-};
-u_char aarp_org_code[ 3 ] = {
-    0x00, 0x00, 0x00,
-};
-
-    static int
-dlpi_open( queue_t *q, dev_t *dev, int oflag, int sflag, cred_t *cred )
-{
-    struct atif_data   *aid;
-    int                        err = 0;
-
-    if (( err = drv_priv( cred )) != 0 ) {
-       return( err );
-    }
-    if (( aid = if_alloc( q )) == NULL ) {
-       return( ENOMEM );
-    }
-    q->q_ptr = (void *)aid;
-
-    qprocson( q );
-    return( err );
-}
-
-    static int
-dlpi_close( queue_t *q, int oflag, cred_t *cred )
-{
-    struct atif_data   *aid = (struct atif_data *)q->q_ptr;
-
-    qprocsoff( q );
-    if_free( aid );
-    return( 0 );
-}
-
-    static int
-dl_bind_req( queue_t *q, ulong sap )
-{
-    union DL_primitives        *dl;
-    mblk_t             *m;
-
-    if (( m = allocb( DL_BIND_REQ_SIZE, BPRI_HI )) == NULL ) {
-       return( ENOMEM );
-    }
-    m->b_wptr = m->b_rptr + DL_BIND_REQ_SIZE;
-    m->b_datap->db_type = M_PROTO;
-
-    dl = (union DL_primitives *)m->b_rptr;
-    dl->dl_primitive = DL_BIND_REQ;
-    dl->bind_req.dl_sap = sap;
-    dl->bind_req.dl_max_conind = 0;
-    dl->bind_req.dl_service_mode = DL_CLDLS;
-    dl->bind_req.dl_conn_mgmt = 0;
-    dl->bind_req.dl_xidtest_flg = 0;   /* XXX */
-    putnext( q, m );
-    return( 0 );
-}
-
-    static int
-dl_attach_req( queue_t *q, ulong ppa )
-{
-    union DL_primitives        *dl;
-    mblk_t             *m;
-
-    if (( m = allocb( DL_ATTACH_REQ_SIZE, BPRI_HI )) == NULL ) {
-       return( ENOMEM );
-    }
-    m->b_wptr = m->b_rptr + DL_ATTACH_REQ_SIZE;
-    m->b_datap->db_type = M_PROTO;
-
-    dl = (union DL_primitives *)m->b_rptr;
-    dl->dl_primitive = DL_ATTACH_REQ;
-    dl->attach_req.dl_ppa = ppa;
-    putnext( q, m );
-    return( 0 );
-}
-
-    int
-dl_enabmulti_req( queue_t *q, caddr_t addr )
-{
-    union DL_primitives        *dl;
-    mblk_t             *m;
-
-    if (( m = allocb( DL_ENABMULTI_REQ_SIZE + ETHERADDRL, BPRI_HI )) == NULL ) {
-       return( ENOMEM );
-    }
-    m->b_wptr = m->b_rptr + DL_ENABMULTI_REQ_SIZE;
-    m->b_datap->db_type = M_PROTO;
-
-    dl = (union DL_primitives *)m->b_rptr;
-    dl->dl_primitive = DL_ENABMULTI_REQ;
-    dl->enabmulti_req.dl_addr_length = ETHERADDRL;
-    dl->enabmulti_req.dl_addr_offset = m->b_wptr - m->b_rptr;
-    bcopy( addr, m->b_wptr, ETHERADDRL );
-    m->b_wptr += ETHERADDRL;
-    putnext( q, m );
-    return( 0 );
-}
-
-    int
-dl_unitdata_req( queue_t *q, mblk_t *m0, ushort type, caddr_t addr )
-{
-    union DL_primitives        *dl;
-    struct llc         *llc;
-    mblk_t             *m1, *m;
-    ushort              len;
-
-    /* len = msgdsize( m0 ) + sizeof( struct llc ); */
-
-    if (( m1 = allocb( sizeof( struct llc ), BPRI_HI )) == NULL ) {
-       cmn_err( CE_NOTE, "dl_unitdate_req NOMEM 1\n" );
-       return( ENOMEM );
-    }
-    m1->b_wptr = m1->b_rptr + sizeof( struct llc );
-    m1->b_datap->db_type = M_DATA;
-    llc = (struct llc *)m1->b_rptr;
-
-    llc->llc_dsap = llc->llc_ssap = LLC_SNAP_LSAP;
-    llc->llc_control = LLC_UI;
-    if ( type == ETHERTYPE_AARP ) {
-       bcopy( aarp_org_code, llc->llc_org_code, sizeof( aarp_org_code ));
-    } else if ( type == ETHERTYPE_AT ) {
-       bcopy( at_org_code, llc->llc_org_code, sizeof( aarp_org_code ));
-    } else {
-       cmn_err( CE_NOTE, "dl_unitdate_req type %X\n", type );
-       return( EINVAL );
-    }
-    llc->llc_ether_type = htons( type );
-    linkb( m1, m0 );
-
-    if (( m = allocb( DL_UNITDATA_REQ_SIZE + ETHERADDRL + sizeof( ushort ),
-                     BPRI_HI )) == NULL ) {
-       cmn_err( CE_NOTE, "dl_unitdate_req NOMEM 2\n" );
-       return( ENOMEM );
-    }
-    m->b_wptr = m->b_rptr + DL_UNITDATA_REQ_SIZE;
-    m->b_datap->db_type = M_PROTO;
-    linkb( m, m1 );
-
-    dl = (union DL_primitives *)m->b_rptr;
-    dl->dl_primitive = DL_UNITDATA_REQ;
-    dl->unitdata_req.dl_dest_addr_length = ETHERADDRL + sizeof ( ushort );
-    dl->unitdata_req.dl_dest_addr_offset = m->b_wptr - m->b_rptr;
-
-    bcopy(addr, m->b_wptr, ETHERADDRL );
-    m->b_wptr += ETHERADDRL;
-    len = 0;
-    bcopy( &len, m->b_wptr, sizeof( ushort ));
-    m->b_wptr += sizeof( ushort );
-    putnext( q, m );
-    return( 0 );
-}
-
-    static int
-dlpi_rput( queue_t *q, mblk_t *m )
-{
-    struct atif_data   *aid = (struct atif_data *)q->q_ptr;
-    union DL_primitives        *dl;
-    mblk_t             *m0;
-    struct llc         *llc;
-
-    switch ( m->b_datap->db_type ) {
-    case M_IOCNAK :
-       putnext( q, m );
-       return( 0 );
-
-    case M_PCPROTO :
-    case M_PROTO :
-       if ( m->b_wptr - m->b_rptr < sizeof( dl->dl_primitive )) {
-           break;
-       }
-       dl = (union DL_primitives *)m->b_rptr;
-       switch ( dl->dl_primitive ) {
-       case DL_UNITDATA_IND :
-           if ( m->b_wptr - m->b_rptr < sizeof( DL_UNITDATA_IND_SIZE )) {
-               break;
-           }
-           if (( m0 = unlinkb( m )) == NULL ) {
-               break;
-           }
-           if ( m0->b_wptr - m0->b_rptr < sizeof( struct llc )) {
-               freemsg( m0 );
-               break;
-           }
-           llc = (struct llc *)m0->b_rptr;
-           if ( llc->llc_dsap != LLC_SNAP_LSAP ||
-                   llc->llc_ssap != LLC_SNAP_LSAP ||
-                   llc->llc_control != LLC_UI ) {
-               freemsg( m0 );
-               break;
-           }
-
-           if ( bcmp( llc->llc_org_code, at_org_code,
-                   sizeof( at_org_code )) == 0 &&
-                   ntohs( llc->llc_ether_type ) == ETHERTYPE_AT ) {
-               adjmsg( m0, sizeof( struct llc ));
-               ddp_rput( aid, m0 );
-           } else if ( bcmp( llc->llc_org_code, aarp_org_code,
-                   sizeof( aarp_org_code )) == 0 &&
-                   ntohs( llc->llc_ether_type ) == ETHERTYPE_AARP ) {
-               adjmsg( m0, sizeof( struct llc ));
-               aarp_rput( q, m0 );
-           } else {
-               freemsg( m0 );
-           }
-           break;
-
-       case DL_OK_ACK :
-           if ( m->b_wptr - m->b_rptr < sizeof( DL_OK_ACK_SIZE )) {
-               break;
-           }
-           switch ( dl->ok_ack.dl_correct_primitive ) {
-           case DL_ATTACH_REQ :
-               if ( aid->aid_state != DL_ATTACH_PENDING ) {
-                   cmn_err( CE_NOTE, "dlpi_rput DL_OK_ACK attach state %d\n",
-                           aid->aid_state );
-                   break;
-               }
-               if ( aid->aid_c.c_type != IF_UNITSEL ) {
-                   cmn_err( CE_NOTE, "dlpi_rput DL_OK_ACK attach context %x\n",
-                           aid->aid_c.c_type );
-                   break;
-               }
-
-               if ( WR(q)->q_next == NULL || WR(q)->q_next->q_qinfo == NULL ||
-                       WR(q)->q_next->q_qinfo->qi_minfo == NULL ||
-                       WR(q)->q_next->q_qinfo->qi_minfo->mi_idname == NULL ) {
-                   cmn_err( CE_NOTE, "dlpi_rput can't get interface name\n" );
-                   break;
-               }
-
-               if_name( aid, WR(q)->q_next->q_qinfo->qi_minfo->mi_idname,
-                       aid->aid_c.c_u.u_unit.uu_ppa );
-
-               aid->aid_state = DL_BIND_PENDING;
-
-#ifdef i386
-               /*
-                * As of Solaris 7 (nice name), the i386 arch needs to be
-                * bound as 0 to receive 802 frames.  However, in the same
-                * OS, Sparcs must be bound as ETHERMTU (or at least not 0)
-                * to receive the same frames.  A bug?  In the Solaris 7
-                * (nice name) kernel?
-                */
-               dl_bind_req( WR( q ), 0 );
-#else /* i386 */
-               dl_bind_req( WR( q ), ETHERMTU );
-#endif /* i386 */
-               break;
-
-           case DL_ENABMULTI_REQ :
-               if ( aid->aid_c.c_type != SIOCADDMULTI ) {
-                   cmn_err( CE_NOTE,
-                           "dlpi_rput DL_OK_ACK enabmulti context %x\n",
-                           aid->aid_c.c_type );
-                   break;
-               }
-
-               ioc_ok_ack( aid->aid_c.c_u.u_multi.um_q,
-                       aid->aid_c.c_u.u_multi.um_m, 0 );
-               aid->aid_c.c_type = 0;
-               aid->aid_c.c_u.u_multi.um_q = NULL;
-               aid->aid_c.c_u.u_multi.um_m = 0;
-               break;
-
-           default :
-               cmn_err( CE_CONT, "!dlpi_rput DL_OK_ACK unhandled %d\n",
-                       dl->ok_ack.dl_correct_primitive );
-               break;
-           }
-           break;
-
-       case DL_BIND_ACK :
-           if ( m->b_wptr - m->b_rptr < sizeof( DL_BIND_ACK_SIZE )) {
-               break;
-           }
-           if ( aid->aid_state != DL_BIND_PENDING ) {
-               break;
-           }
-           if ( aid->aid_c.c_type != IF_UNITSEL ) {
-               break;
-           }
-           bcopy( m->b_rptr + dl->bind_ack.dl_addr_offset, aid->aid_hwaddr, 
-                   dl->bind_ack.dl_addr_length );
-           aid->aid_state = DL_IDLE;
-           ioc_ok_ack( WR(q), aid->aid_c.c_u.u_unit.uu_m, 0 );
-           aid->aid_c.c_type = 0;
-           aid->aid_c.c_u.u_unit.uu_m = NULL;
-           aid->aid_c.c_u.u_unit.uu_ppa = 0;
-           break;
-
-       case DL_ERROR_ACK :
-           if ( m->b_wptr - m->b_rptr < sizeof( DL_ERROR_ACK_SIZE )) {
-               break;
-           }
-
-           switch ( aid->aid_c.c_type ) {
-           case IF_UNITSEL :
-               if ( dl->error_ack.dl_errno == DL_SYSERR ) {
-                   ioc_error_ack( WR(q), aid->aid_c.c_u.u_unit.uu_m,
-                           dl->error_ack.dl_unix_errno );
-               } else {
-                   cmn_err( CE_CONT, "dlpi_rput DL_ERROR_ACK 0x%x\n",
-                           dl->error_ack.dl_errno );
-                   ioc_error_ack( WR(q), aid->aid_c.c_u.u_unit.uu_m, EINVAL );
-               }
-               aid->aid_c.c_type = 0;
-               aid->aid_c.c_u.u_unit.uu_m = NULL;
-               aid->aid_c.c_u.u_unit.uu_ppa = 0;
-               break;
-
-           default :
-               cmn_err( CE_NOTE, "dlpi_rput DL_ERROR_ACK unhandled %d %d %d\n",
-                       dl->error_ack.dl_error_primitive,
-                       dl->error_ack.dl_errno, dl->error_ack.dl_unix_errno );
-               break;
-           }
-           break;
-
-       default :
-           cmn_err( CE_NOTE, "dlpi_rput M_PCPROTO 0x%x\n", dl->dl_primitive );
-           break;
-       }
-       break;
-
-    default :
-       cmn_err( CE_NOTE, "dlpi_rput 0x%X\n", m->b_datap->db_type );
-       break;
-    }
-
-    freemsg( m );
-    return( 0 );
-}
-
-    static int
-dlpi_wput( queue_t *q, mblk_t *m )
-{
-    struct atif_data           *aid = (struct atif_data *)RD(q)->q_ptr;
-    struct iocblk              *ioc;
-    int                                rc;
-
-    switch ( m->b_datap->db_type ) {
-    case M_IOCTL :
-       if ( m->b_wptr - m->b_rptr < sizeof( struct iocblk )) {
-           freemsg( m );
-           break;
-       }
-       ioc = (struct iocblk *)m->b_rptr;
-       switch ( ioc->ioc_cmd ) {
-       case IF_UNITSEL :
-           if ( ioc->ioc_count != TRANSPARENT ) {
-               cmn_err( CE_NOTE, "dlpi_wput IF_UNITSEL non-TRANSPARENT\n" );
-               ioc_error_ack( q, m, EINVAL );
-               break;
-           }
-           if ( m->b_cont == NULL ) {
-               cmn_err( CE_NOTE, "dlpi_wput IF_UNITSEL no arg\n" );
-               ioc_error_ack( q, m, EINVAL );
-               break;
-           }
-           if ( aid->aid_state != DL_UNATTACHED ) {
-               cmn_err( CE_NOTE, "dlpi_wput IF_UNITSEL already attached\n" );
-               ioc_error_ack( q, m, EINVAL );
-               break;
-           }
-           if ( aid->aid_c.c_type != 0 ) {
-               cmn_err( CE_NOTE, "dlpi_wput IF_UNITSEL context %x\n",
-                       aid->aid_c.c_type );
-               ioc_error_ack( q, m, EINVAL );
-               break;
-           }
-
-           aid->aid_state = DL_ATTACH_PENDING;
-           aid->aid_c.c_type = IF_UNITSEL;
-           aid->aid_c.c_u.u_unit.uu_m = m;
-           aid->aid_c.c_u.u_unit.uu_ppa = *(ulong *)m->b_cont->b_rptr;
-           if (( rc = dl_attach_req( q, aid->aid_c.c_u.u_unit.uu_ppa )) < 0 ) {
-               ioc_error_ack( q, m, rc );
-               break;
-           }
-           break;
-
-       default :
-           cmn_err( CE_NOTE, "dlpi_wput M_IOCTL 0x%X\n", ioc->ioc_cmd );
-           putnext( q, m );
-           break;
-       }
-       break;
-
-    default :
-       cmn_err( CE_NOTE, "dlpi_wput 0x%X\n", m->b_datap->db_type );
-       freemsg( m );
-       break;
-    }
-
-    return( 0 );
-}
-
-static struct module_info      dlpi_info = {
-    0,
-    "ddp",
-    0,
-    1500,
-    3000,
-    64
-};
-
-static struct qinit            dlpi_rinit = {
-    dlpi_rput,         /* qi_putp */
-    NULL,              /* qi_srvp */
-    dlpi_open,         /* qi_qopen */
-    dlpi_close,                /* qi_qclose */
-    NULL,
-    &dlpi_info,                /* qi_minfo */
-    NULL,
-};
-
-static struct qinit            dlpi_winit = {
-    dlpi_wput,         /* qi_putp */
-    NULL,              /* qi_srvp */
-    NULL,              /* qi_qopen */
-    NULL,              /* qi_qclose */
-    NULL,
-    &dlpi_info,                /* qi_minfo */
-    NULL,
-};
-
-static struct streamtab                dlpi_stream = {
-    &dlpi_rinit,
-    &dlpi_winit,
-    NULL,
-    NULL
-};
-
-static struct fmodsw           dlpi_fmodsw = {
-    "ddp",
-    &dlpi_stream,
-    D_NEW | D_MP | D_MTPERMOD
-};
-
-/*
- * DDP Streams module.  This module is pushed on DLPI drivers by atalkd.
- */
-struct modlstrmod              dlpi_lstrmod = {
-    &mod_strmodops,
-    "DDP Streams module",
-    &dlpi_fmodsw,
-};
diff --git a/sys/solaris/if.c b/sys/solaris/if.c
deleted file mode 100644 (file)
index 7e0918f..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-/* $Id: if.c,v 1.3 2005-04-28 20:50:07 bfernhomberg Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/stream.h>
-#include <sys/kmem.h>
-#include <sys/dlpi.h>
-#include <sys/cmn_err.h>
-#include <sys/errno.h>
-#include <sys/byteorder.h>
-#include <sys/ethernet.h>
-#include <sys/ddi.h>
-#include <net/if.h>
-#include <netinet/arp.h>
-
-#ifdef STDC_HEADERS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include <netatalk/at.h>
-#include <netatalk/aarp.h>
-
-#include "if.h"
-#include "rt.h"
-#include "ioc.h"
-
-static struct atif_data        *interfaces = NULL;
-
-    struct atif_data *
-if_primary()
-{
-    return( interfaces );
-}
-
-    struct atif_data *
-if_alloc( queue_t *q )
-{
-    struct atif_data   *aid;
-
-    if (( aid = kmem_zalloc( sizeof( struct atif_data ), KM_SLEEP )) == NULL ) {
-       return( NULL );
-    }
-    aid->aid_q = q;
-    aid->aid_state = DL_UNATTACHED;
-
-    return( aid );
-}
-
-/*
- * Name an interface, insert it in our list of interfaces.  If this is the
- * first interface, create the loopback interface.  If it's not the first
- * interfaces, keep the first interface the same, i.e. the first configured
- * interface should be the primary interface.
- */
-    int
-if_name( struct atif_data *aid, char *name, ulong ppa )
-{
-    sprintf( aid->aid_name, "%s%ld", name, ppa );
-
-    if ( interfaces == NULL ) {                /* create fake loopback */
-       if (( interfaces = if_alloc( NULL )) == NULL ) {
-           return( ENOMEM );
-       }
-       strcpy( interfaces->aid_name, "lo0" );
-       interfaces->aid_state = DL_IDLE;
-       bzero( interfaces->aid_hwaddr, sizeof( interfaces->aid_hwaddr ));
-       interfaces->aid_flags = AIDF_LOOPBACK;
-       interfaces->aid_c.c_type = 0;
-
-       aid->aid_next = interfaces;
-       aid->aid_next->aid_prev = aid;
-       interfaces = aid;
-    } else {
-       aid->aid_next = interfaces->aid_next;
-       aid->aid_prev = interfaces;
-       aid->aid_next->aid_prev = aid;
-       interfaces->aid_next = aid;
-    }
-
-    aarp_init( aid );
-    return( 0 );
-}
-
-    void
-if_free( struct atif_data *aid )
-{
-    if ( aid->aid_c.c_type != 0 ) {
-       cmn_err( CE_NOTE, "if_free context %x\n", aid->aid_c.c_type );
-       return;
-    }
-
-    aarp_clean( aid );
-
-    if ( aid->aid_next != NULL ) {
-       aid->aid_next->aid_prev = aid->aid_prev;
-    }
-    if ( aid->aid_prev != NULL ) {
-       aid->aid_prev->aid_next = aid->aid_next;
-    }
-    if ( aid == interfaces ) {
-       interfaces = aid->aid_next;
-    }
-    kmem_free( aid, sizeof( struct atif_data ));
-
-    if ( interfaces != NULL && interfaces->aid_next == NULL ) {
-       kmem_free( interfaces, sizeof( struct atif_data ));
-       interfaces = NULL;
-    }
-    return;
-}
-
-    int
-if_getaddr( char *name, struct sockaddr_at *sat )
-{
-    struct atif_data   *aid;
-
-    for ( aid = interfaces; aid != NULL; aid = aid->aid_next ) {
-       if ( strcmp( name, aid->aid_name ) == 0 ) {
-           break;
-       }
-    }
-    if ( aid == NULL ) {
-       return( EADDRNOTAVAIL );
-    }
-
-    bcopy( &aid->aid_sat, sat, sizeof( struct sockaddr_at ));
-    return( 0 );
-}
-
-    int
-if_addmulti( queue_t *q, mblk_t *m, char *name, struct sockaddr *sa )
-{
-    struct atif_data   *aid;
-
-    for ( aid = interfaces; aid != NULL; aid = aid->aid_next ) {
-       if ( strcmp( name, aid->aid_name ) == 0 ) {
-           break;
-       }
-    }
-    if ( aid == NULL ) {
-       return( EADDRNOTAVAIL );
-    }
-
-    if ( aid->aid_c.c_type != 0 ) {
-       cmn_err( CE_NOTE, "if_addmulti context %x\n", aid->aid_c.c_type );
-       return( EINVAL );
-    }
-
-    aid->aid_c.c_type = SIOCADDMULTI;
-    aid->aid_c.c_u.u_multi.um_q = q;
-    aid->aid_c.c_u.u_multi.um_m = m;
-    dl_enabmulti_req( WR( aid->aid_q ), sa->sa_data );
-
-    return( 0 );
-}
-
-    void
-if_pickaddr( void *ptr )
-{
-    struct atif_data *aid = (struct atif_data*) ptr;
-
-    if ( aid->aid_c.c_type != SIOCSIFADDR ) {
-       cmn_err( CE_NOTE, "if_pickaddr context %x\n", aid->aid_c.c_type );
-       return;
-    }
-
-    if ( aid->aid_flags & AIDF_PROBEFAILED ) {
-       aid->aid_flags &= ~AIDF_PROBEFAILED;
-       /* choose new address */
-       for (;;) {
-           if ( aid->aid_c.c_u.u_addr.ua_nodecnt == 0 ) {
-               /* if we've exausted all addresses, fail */
-               if ( aid->aid_c.c_u.u_addr.ua_netcnt == 0 ) {
-                   ioc_error_ack( aid->aid_c.c_u.u_addr.ua_q,
-                           aid->aid_c.c_u.u_addr.ua_m, EADDRINUSE );
-                   aid->aid_c.c_type = 0;
-                   aid->aid_c.c_u.u_addr.ua_q = NULL;
-                   aid->aid_c.c_u.u_addr.ua_m = NULL;
-                   aid->aid_c.c_u.u_addr.ua_probecnt = 0;
-                   aid->aid_c.c_u.u_addr.ua_netcnt = 0;
-                   aid->aid_c.c_u.u_addr.ua_nodecnt = 0;
-               } else {
-                   aid->aid_c.c_u.u_addr.ua_nodecnt = 256;
-                   aid->aid_c.c_u.u_addr.ua_netcnt--;
-                   if ( ntohs(aid->aid_sat.sat_addr.s_net) >
-                           ntohs(aid->aid_nr.nr_lastnet) ) {
-                       aid->aid_sat.sat_addr.s_net = aid->aid_nr.nr_firstnet;
-                   } else
-                     aid->aid_sat.sat_addr.s_net = 
-                       htons(ntohs(aid->aid_sat.sat_addr.s_net) + 1);
-               }
-           } else {
-               aid->aid_sat.sat_addr.s_node++;
-               aid->aid_c.c_u.u_addr.ua_nodecnt--;
-               if ( aid->aid_sat.sat_addr.s_node == 0 || 
-                       aid->aid_sat.sat_addr.s_node == 255 || 
-                       aid->aid_sat.sat_addr.s_node == 254 ) {
-                   continue;
-               }
-               break;
-           }
-       }
-    }
-    if ( aid->aid_c.c_u.u_addr.ua_probecnt-- <= 0 ) {
-       aid->aid_flags &= ~AIDF_PROBING;
-       /* worked, send ioctl reponse */
-       ioc_ok_ack( aid->aid_c.c_u.u_addr.ua_q, aid->aid_c.c_u.u_addr.ua_m, 0 );
-       aid->aid_c.c_type = 0;
-       aid->aid_c.c_u.u_addr.ua_q = NULL;
-       aid->aid_c.c_u.u_addr.ua_m = NULL;
-       aid->aid_c.c_u.u_addr.ua_probecnt = 0;
-       aid->aid_c.c_u.u_addr.ua_netcnt = 0;
-       aid->aid_c.c_u.u_addr.ua_nodecnt = 0;
-       return;
-    }
-
-    aarp_send( aid, AARPOP_PROBE, NULL,
-           aid->aid_sat.sat_addr.s_net, aid->aid_sat.sat_addr.s_node );
-    qtimeout( aid->aid_q, if_pickaddr, (caddr_t)aid, hz / 5 );
-}
-
-    int
-if_setaddr( queue_t *q, mblk_t *m, char *name, struct sockaddr_at *sat )
-{
-    struct atif_data   *aid;
-    struct netrange    nr;
-    ulong              time;
-
-    for ( aid = interfaces; aid != NULL; aid = aid->aid_next ) {
-       if ( strcmp( name, aid->aid_name ) == 0 ) {
-           break;
-       }
-    }
-    if ( aid == NULL ) {
-       return( EADDRNOTAVAIL );
-    }
-
-    if ( aid->aid_c.c_type != 0 ) {
-       cmn_err( CE_NOTE, "if_setaddr context %x\n", aid->aid_c.c_type );
-       return( EINVAL );
-    }
-
-    bcopy( sat->sat_zero, &nr, sizeof( struct netrange ));
-
-    if ( aid->aid_flags & AIDF_LOOPBACK ) {
-       aid->aid_sat = *sat;
-       aid->aid_nr = nr;
-
-       /* routes? */
-
-       ioc_ok_ack( q, m, 0 );
-       return( 0 );
-    }
-
-    drv_getparm( TIME, &time );
-    if ( sat->sat_addr.s_net == ATADDR_ANYNET ) {
-       if ( nr.nr_lastnet == nr.nr_firstnet ) {
-           sat->sat_addr.s_net = nr.nr_firstnet;
-       } else {
-           sat->sat_addr.s_net = htons(ntohs(nr.nr_firstnet) + time %
-                   (ntohs(nr.nr_lastnet) - ntohs(nr.nr_firstnet)));
-       }
-    } else {
-       if ( ntohs( sat->sat_addr.s_net ) < ntohs( nr.nr_firstnet ) ||
-               ntohs( sat->sat_addr.s_net ) > ntohs( nr.nr_lastnet )) {
-           return( EINVAL );
-       }
-    }
-
-    if ( sat->sat_addr.s_node == ATADDR_ANYNODE ) {
-       sat->sat_addr.s_node = time;
-    }
-
-    aid->aid_flags |= AIDF_PROBING;
-    aid->aid_sat = *sat;
-    aid->aid_nr = nr;
-
-    aid->aid_c.c_type = SIOCSIFADDR;
-    aid->aid_c.c_u.u_addr.ua_q = q;
-    aid->aid_c.c_u.u_addr.ua_m = m;
-    aid->aid_c.c_u.u_addr.ua_probecnt = 10;
-    aid->aid_c.c_u.u_addr.ua_netcnt = ntohs(nr.nr_lastnet) - 
-      ntohs(nr.nr_firstnet);
-    aid->aid_c.c_u.u_addr.ua_nodecnt = 256;
-    qtimeout( aid->aid_q, if_pickaddr, (caddr_t)aid, 0 );
-    return( 0 );
-}
-
-/*
- * These three routines are all a big mess...
- */
-    struct atif_data *
-if_dest( struct atif_data *aid, struct sockaddr_at *sat )
-{
-    struct atif_data   *dest;
-
-    for ( dest = interfaces; dest != NULL; dest = dest->aid_next ) {
-       if ((( sat->sat_addr.s_net == 0 && aid == dest ) ||
-               ( ntohs(sat->sat_addr.s_net) >= 
-                 ntohs(dest->aid_nr.nr_firstnet) &&
-               ntohs(sat->sat_addr.s_net) <= 
-                 ntohs(dest->aid_nr.nr_lastnet) )) &&
-               ( sat->sat_addr.s_node == dest->aid_sat.sat_addr.s_node ||
-               sat->sat_addr.s_node == ATADDR_BCAST )) {
-           break;
-       }
-    }
-    if ( dest == NULL ) {
-       return( NULL );
-    }
-    return( dest );
-}
-
-    struct atif_data *
-if_withaddr( struct sockaddr_at *sat )
-{
-    struct atif_data   *dest;
-
-    for ( dest = interfaces; dest != NULL; dest = dest->aid_next ) {
-       if ( sat->sat_addr.s_net == dest->aid_sat.sat_addr.s_net &&
-               sat->sat_addr.s_node == dest->aid_sat.sat_addr.s_node ) {
-           break;
-       }
-    }
-    return( dest );
-}
-
-    struct atif_data *
-if_withnet( struct sockaddr_at *sat )
-{
-    struct atif_data   *dest;
-
-    for ( dest = interfaces; dest != NULL; dest = dest->aid_next ) {
-       if ( ntohs(sat->sat_addr.s_net) >= ntohs(dest->aid_nr.nr_firstnet) &&
-               ntohs(sat->sat_addr.s_net) <= ntohs(dest->aid_nr.nr_lastnet)) {
-           break;
-       }
-    }
-    return( dest );
-}
-
-    int
-if_route( struct atif_data *aid, mblk_t *m, struct sockaddr_at *sat )
-{
-    struct sockaddr_at gate;
-
-    if ( sat->sat_addr.s_net == 0 ) {
-       if ( sat->sat_addr.s_node == 0 ) {
-           aid = if_withaddr( sat );
-       }
-       if ( aid == NULL ) {
-           freemsg( m );
-           return( ENETUNREACH );
-       }
-       gate = *sat;
-    } else {
-       if ( rt_gate( sat, &gate ) < 0 ) {      /* no route */
-           gate = *sat;
-       }
-       if (( aid = if_withaddr( &gate )) == NULL ) {
-           if (( aid = if_withnet( &gate )) == NULL ) {
-               freemsg( m );
-               return( ENETUNREACH );
-           }
-       }
-    }
-
-    if ( aid->aid_flags & AIDF_LOOPBACK ) {
-       return( ddp_rput( aid, m ));
-    } else {
-       /* the aarp layer is expected to send broadcast packets appropriately */
-       return( aarp_resolve( aid, m, &gate ));
-    }
-}
diff --git a/sys/solaris/if.h b/sys/solaris/if.h
deleted file mode 100644 (file)
index 0348d10..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-struct atif_data {
-    struct atif_data   *aid_next, *aid_prev;
-    char               aid_name[ IFNAMSIZ ];
-    unchar             aid_hwaddr[ ETHERADDRL ];
-    queue_t            *aid_q;                         /* RD() side */
-    int                        aid_state;
-    int                        aid_flags;
-    struct sockaddr_at aid_sat;
-    struct netrange    aid_nr;
-    struct aarplist    *aid_aarplist, *aid_aarpflist;
-    /* solaris 7 wants timeout_id_t, but solaris 2.6 doesn't have that.
-     * so, we compromise with an unsigned long as we know that's big
-     * enough to hold a pointer. */
-#ifdef HAVE_TIMEOUT_ID_T
-    timeout_id_t       aid_aarptimeo;
-#else
-    unsigned long      aid_aarptimeo;
-#endif
-    /*
-     * A little bit of cleverness, to overcome the inability of
-     * streams to sleep.  The type of context must be checked before
-     * the data is accessed.  The atif_data can't be freed if the
-     * type is non-zero.
-     */
-    struct {
-       int             c_type;                 /* ioctl command */
-       union {
-           struct {                            /* unit select */
-               mblk_t          *uu_m;
-               ulong           uu_ppa;
-           }           u_unit;
-           struct {                            /* set addr */
-               mblk_t          *ua_m;
-               queue_t         *ua_q;
-               int             ua_probecnt;
-               int             ua_netcnt;
-               int             ua_nodecnt;
-           }           u_addr;
-           struct {                            /* add multi */
-               mblk_t          *um_m;
-               queue_t         *um_q;
-           }           u_multi;
-       }               c_u;
-    }                  aid_c;
-};
-
-#define AIDF_LOOPBACK  (1<<0)
-#define AIDF_PROBING   (1<<1)
-#define AIDF_PROBEFAILED       (1<<2)
-
-extern u_char  at_multicastaddr[ ETHERADDRL ];
-extern u_char  at_org_code[ 3 ];
-extern u_char  aarp_org_code[ 3 ];
-
-int                    if_setaddr( queue_t *, mblk_t *, char *,
-                               struct sockaddr_at * );
-int                    if_getaddr(  char *, struct sockaddr_at * );
-int                    if_addmulti( queue_t *, mblk_t *, char *,
-                               struct sockaddr * );
-
-struct atif_data       *if_alloc( queue_t * );
-void                   if_free( struct atif_data * );
-int                    if_name( struct atif_data *, char *, ulong );
-int                    if_attach( struct atif_data *, char * );
-struct atif_data       *if_primary( void );
-struct atif_data       *if_dest( struct atif_data *, struct sockaddr_at * );
-struct atif_data       *if_withaddr( struct sockaddr_at * );
-struct atif_data       *if_withnet( struct sockaddr_at * );
-int                    if_route( struct atif_data *, mblk_t *,
-                               struct sockaddr_at * );
-
-int                    dl_unitdata_req( queue_t *, mblk_t *, ushort, caddr_t );
-int                    dl_enabmulti_req( queue_t *, caddr_t );
-void                   aarp_send( struct atif_data *, int, caddr_t,
-                               ushort, unchar );
-int                    aarp_rput( queue_t *, mblk_t * );
-int                    aarp_resolve( struct atif_data *, mblk_t *,
-                               struct sockaddr_at *);
-void                   aarp_init( struct atif_data * );
-void                   aarp_clean( struct atif_data * );
-int                    ddp_rput( struct atif_data *, mblk_t * );
diff --git a/sys/solaris/ioc.c b/sys/solaris/ioc.c
deleted file mode 100644 (file)
index 4a53f9a..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/* $Id: ioc.c,v 1.3 2005-04-28 20:50:07 bfernhomberg Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/stream.h>
-#include <sys/cmn_err.h>
-
-#ifdef STDC_HEADERS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include "ioc.h"
-
-    void
-ioc_ok_ack( queue_t *q, mblk_t *m, int rval )
-{
-    struct iocblk      *ioc;
-    mblk_t             *m0;
-
-    if (( m0 = unlinkb( m )) != NULL ) {
-       freemsg( m0 );
-    }
-
-    if ( m->b_wptr - m->b_rptr < sizeof( struct iocblk )) {
-       cmn_err( CE_CONT, "ioc_ok_ack too small\n" );
-       freemsg( m );
-       return;
-    }
-    m->b_datap->db_type = M_IOCACK;
-    m->b_wptr = m->b_rptr + sizeof( struct iocblk );
-    ioc = (struct iocblk *)m->b_rptr;
-    ioc->ioc_error = 0;
-    ioc->ioc_count = 0;
-    ioc->ioc_rval = rval;
-    qreply( q, m );
-    return;
-}
-
-    void
-ioc_error_ack( queue_t *q, mblk_t *m, int errno )
-{
-    struct iocblk      *ioc;
-    mblk_t             *m0;
-
-    if (( m0 = unlinkb( m )) != NULL ) {
-       freemsg( m0 );
-    }
-
-    if ( m->b_wptr - m->b_rptr < sizeof( struct iocblk )) {
-       cmn_err( CE_CONT, "ioc_error_ack too small\n" );
-       freemsg( m );
-       return;
-    }
-    m->b_datap->db_type = M_IOCNAK;
-    m->b_wptr = m->b_rptr + sizeof( struct iocblk );
-    ioc = (struct iocblk *)m->b_rptr;
-    ioc->ioc_error = errno;
-    ioc->ioc_count = 0;
-    ioc->ioc_rval = -1;
-    qreply( q, m );
-    return;
-}
-
-    void
-ioc_copyin( queue_t *q, mblk_t *m, mblk_t *private, caddr_t addr, uint size )
-{
-    struct copyreq     *cq;
-    mblk_t             *m0;
-
-    if (( m0 = unlinkb( m )) != NULL ) {
-       freemsg( m0 );
-    }
-
-#ifdef notdef
-    /* supposedly this will fit anyway */
-    if ( m->b_wptr - m->b_rptr < sizeof( struct copyreq )) {
-       cmn_err( CE_CONT, "ioc_copyin too small\n" );
-       freemsg( m );
-       return;
-    }
-#endif /* notdef */
-    m->b_datap->db_type = M_COPYIN;
-    m->b_wptr = m->b_rptr + sizeof( struct copyreq );
-    cq = (struct copyreq *)m->b_rptr;
-    cq->cq_addr = addr;
-    cq->cq_size = size;
-    cq->cq_flag = 0;
-    cq->cq_private = private;
-    qreply( q, m );
-    return;
-}
-
-    void
-ioc_copyout( queue_t *q, mblk_t *m, mblk_t *private, caddr_t data,
-       caddr_t addr, uint size )
-{
-    struct copyreq     *cq;
-    mblk_t             *m0;
-
-    if (( m0 = unlinkb( m )) != NULL ) {
-       freemsg( m0 );
-    }
-
-#ifdef notdef
-    /* supposedly this will fit anyway */
-    if ( m->b_wptr - m->b_rptr < sizeof( struct copyreq )) {
-       cmn_err( CE_CONT, "ioc_copyout too small\n" );
-       freemsg( m );
-       return;
-    }
-#endif /* notdef */
-    if (( m0 = allocb( size, BPRI_MED )) == NULL ) {
-       cmn_err( CE_CONT, "ioc_copyout nomem\n" );
-       freemsg( m );
-       return;
-    }
-    m0->b_wptr = m0->b_rptr + size;
-    bcopy( data, m0->b_rptr, size );
-    linkb( m, m0 );
-
-    m->b_datap->db_type = M_COPYOUT;
-    m->b_wptr = m->b_rptr + sizeof( struct copyreq );
-    cq = (struct copyreq *)m->b_rptr;
-    cq->cq_addr = addr;
-    cq->cq_size = size;
-    cq->cq_flag = 0;
-    cq->cq_private = private;
-
-    qreply( q, m );
-    return;
-}
diff --git a/sys/solaris/ioc.h b/sys/solaris/ioc.h
deleted file mode 100644 (file)
index 4b1424a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-void ioc_ok_ack( queue_t *, mblk_t *, int );
-void ioc_error_ack( queue_t *, mblk_t *, int );
-void ioc_copyin( queue_t *, mblk_t *, mblk_t *, caddr_t, uint );
-void ioc_copyout( queue_t *, mblk_t *, mblk_t *, caddr_t, caddr_t, uint );
diff --git a/sys/solaris/linkage.c b/sys/solaris/linkage.c
deleted file mode 100644 (file)
index 7917607..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Linkage information.  Mostly this is Solaris specific, but not all.
- * Code to do real work is in other files, this file just has the crap
- * to get the real code loaded and called.
- */
-
-#include <sys/types.h>
-#include <sys/modctl.h>
-#include <sys/cmn_err.h>
-
-char   *netatalk_version = VERSION;
-
-extern struct modldrv tpi_ldrv;
-extern struct modldrv dlpi_lstrmod;
-
-static struct modlinkage       ddp_linkage = {
-    MODREV_1,
-    {
-       (void *)&tpi_ldrv,
-       (void *)&dlpi_lstrmod,
-       NULL,
-    }
-};
-
-/*
- * While these are code, they're mostly related to linkage, so
- * we leave them here.
- */
-    int
-_init( void )
-{
-    cmn_err( CE_CONT, "?netatalk %s\n", netatalk_version );
-    return( mod_install( &ddp_linkage ));
-}
-
-    int
- _info( struct modinfo *modinfop )
-{
-    return( mod_info( &ddp_linkage, modinfop ));
-}
-
-    int
-_fini( void )
-{
-    return( mod_remove( &ddp_linkage ));
-}
diff --git a/sys/solaris/rt.c b/sys/solaris/rt.c
deleted file mode 100644 (file)
index 95bd1e2..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/cmn_err.h>
-#include <sys/kmem.h>
-#include <net/route.h>
-#include <netatalk/at.h>
-#include <errno.h>
-
-#include "rt.h"
-
-struct rtab {
-    struct rtab                *r_next, *r_prev;
-    struct sockaddr_at r_dst;
-    struct sockaddr_at r_gate;
-};
-
-static struct rtab     *rt_net = NULL;
-static struct rtab     *rt_host = NULL;
-
-    int
-rt_add( struct sockaddr_at *dst, struct sockaddr_at *gate, int flags )
-{
-    struct rtab                *r;
-    struct rtab                *rtab;
-
-    if ( flags & RTF_HOST ) {
-       rtab = rt_host;
-    } else {
-       rtab = rt_net;
-    }
-    for ( r = rtab; r != NULL; r = r->r_next ) {
-       if (( r->r_dst.sat_addr.s_net == dst->sat_addr.s_net ) &&
-               (( flags & RTF_HOST ) ?
-               r->r_dst.sat_addr.s_node == dst->sat_addr.s_node : 1 )) {
-           return( EEXIST );
-       }
-    }
-
-    if (( r = kmem_alloc( sizeof( struct rtab ), KM_NOSLEEP )) == NULL ) {
-       return( ENOMEM );
-    }
-    r->r_dst = *dst;
-    r->r_gate = *gate;
-
-    r->r_prev = NULL;
-    r->r_next = rtab;
-    if ( rtab != NULL ) {
-       rtab->r_prev = r;
-    }
-    if ( flags & RTF_HOST ) {
-       rt_host = r;
-    } else {
-       rt_net = r;
-    }
-    return( 0 );
-}
-
-    int
-rt_del( struct sockaddr_at *dst, struct sockaddr_at *gate, int flags )
-{
-    struct rtab                *r;
-    struct rtab                *rtab;
-
-    if ( flags & RTF_HOST ) {
-       rtab = rt_host;
-    } else {
-       rtab = rt_net;
-    }
-    for ( r = rtab; r != NULL; r = r->r_next ) {
-       if (( r->r_dst.sat_addr.s_net == dst->sat_addr.s_net ) &&
-               (( flags & RTF_HOST ) ?
-               r->r_dst.sat_addr.s_node == dst->sat_addr.s_node : 1 )) {
-           break;
-       }
-    }
-    if ( r == NULL ) {
-       return( ESRCH );
-    }
-
-    if ( r == rtab ) {
-       if ( flags & RTF_HOST ) {
-           rt_host = r->r_next;
-       } else {
-           rt_net = r->r_next;
-       }
-    }
-    if ( r->r_next != NULL ) {
-       r->r_next->r_prev = r->r_prev;
-    }
-    if ( r->r_prev != NULL ) {
-       r->r_prev->r_next = r->r_next;
-    }
-    kmem_free( r, sizeof( struct rtab ));
-    return( 0 );
-}
-
-    int
-rt_gate( struct sockaddr_at *dst, struct sockaddr_at *gate )
-{
-    struct rtab                *r;
-
-    for ( r = rt_host; r != NULL; r = r->r_next ) {
-       if ( r->r_dst.sat_addr.s_net == dst->sat_addr.s_net &&
-               r->r_dst.sat_addr.s_node == dst->sat_addr.s_node ) {
-           break;
-       }
-    }
-    if ( r != NULL ) {
-       *gate = r->r_gate;
-       return( 0 );
-    }
-
-    for ( r = rt_net; r != NULL; r = r->r_next ) {
-       if ( r->r_dst.sat_addr.s_net == dst->sat_addr.s_net ) {
-           break;
-       }
-    }
-    if ( r == NULL ) {
-       return( -1 );
-    }
-
-    *gate = r->r_gate;
-    return( 0 );
-}
diff --git a/sys/solaris/rt.h b/sys/solaris/rt.h
deleted file mode 100644 (file)
index ef7e17f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-int    rt_add( struct sockaddr_at *, struct sockaddr_at *, int );
-int    rt_del( struct sockaddr_at *, struct sockaddr_at *, int );
-int    rt_gate( struct sockaddr_at *, struct sockaddr_at * );
diff --git a/sys/solaris/sock.c b/sys/solaris/sock.c
deleted file mode 100644 (file)
index 0a3fb79..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/* $Id: sock.c,v 1.2 2002-01-17 07:11:13 srittau Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <sys/types.h>
-#include <sys/stream.h>
-#include <sys/socket.h>
-#include <sys/errno.h>
-#include <sys/kmem.h>
-#include <sys/cmn_err.h>
-#include <sys/tihdr.h>
-#include <sys/ethernet.h>
-#include <net/if.h>
-
-#ifdef STDC_HEADERS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include <netatalk/at.h>
-
-#include "if.h"
-#include "sock.h"
-
-static struct sock_data        *sockets = NULL;
-
-    struct sock_data *
-sock_alloc( queue_t *q )
-{
-    struct sock_data   *sd;
-
-    if (( sd = kmem_alloc( sizeof( struct sock_data ), KM_SLEEP )) == NULL ) {
-       return( NULL );
-    }
-    sd->sd_state = TS_UNBND;
-    sd->sd_q = q;
-    sd->sd_next = sd->sd_prev = NULL;
-    bzero( (caddr_t)&sd->sd_sat, sizeof( struct sockaddr_at ));
-
-    sd->sd_next = sockets;
-    if ( sockets != NULL ) {
-       sockets->sd_prev = sd;
-    }
-    sockets = sd;
-
-    return( sd );
-}
-
-    void
-sock_free( struct sock_data *sd )
-{
-    if ( sd == sockets ) {
-       sockets = sd->sd_next;
-    }
-    if ( sd->sd_next != NULL ) {
-       sd->sd_next->sd_prev = sd->sd_prev;
-    }
-    if ( sd->sd_prev != NULL ) {
-       sd->sd_prev->sd_next = sd->sd_next;
-    }
-    kmem_free( sd, sizeof( struct sock_data ));
-    return;
-}
-
-    struct sock_data *
-sock_dest( struct atif_data *aid, struct sockaddr_at *sat )
-{
-    struct sock_data   *sd;
-
-    for ( sd = sockets; sd != NULL; sd = sd->sd_next ) {
-       if ( sat->sat_port == sd->sd_sat.sat_port &&
-               /* huh? */
-               aid->aid_sat.sat_addr.s_net == sd->sd_sat.sat_addr.s_net &&
-               ( sat->sat_addr.s_node == sd->sd_sat.sat_addr.s_node ||
-               sat->sat_addr.s_node == ATADDR_BCAST )) {
-           break;
-       }
-    }
-    return( sd );
-}
-
-/*
- * This is a change in semantics.  The port must be ATADDR_ANYPORT for
- * ATADDR_ANYNET/NODE to not mean the loopback.
- */
-    int
-sock_bind( struct sock_data *sd, struct sockaddr_at *sat )
-{
-    struct atif_data   *paid;
-    struct sock_data   *psd;
-    struct sockaddr_at psat;
-    u_short            port;
-
-    psat = *sat;
-    if ( psat.sat_family != AF_APPLETALK ) {
-       cmn_err( CE_CONT, "sock_bind non-AppleTalk\n" );
-       return( EPROTOTYPE );
-    }
-
-    if ( psat.sat_port == ATADDR_ANYPORT ) {
-       if ( psat.sat_addr.s_net == ATADDR_ANYNET &&
-               psat.sat_addr.s_node == ATADDR_ANYNODE ) {
-           /* chose primary interface */
-           if (( paid = if_primary()) == NULL ) {
-               return( EADDRNOTAVAIL );
-           }
-           psat.sat_addr.s_net = paid->aid_sat.sat_addr.s_net;
-           psat.sat_addr.s_node = paid->aid_sat.sat_addr.s_node;
-       }
-
-       /* pick unused port */
-       for ( port = ATPORT_RESERVED; port < ATPORT_LAST; port++ ) {
-           for ( psd = sockets; psd != NULL; psd = psd->sd_next ) {
-               if ( port == psd->sd_sat.sat_port &&
-                       psat.sat_addr.s_net == psd->sd_sat.sat_addr.s_net &&
-                       psat.sat_addr.s_node == psd->sd_sat.sat_addr.s_node ) {
-                   break;
-               }
-           }
-           if ( psd == NULL ) {
-               break;
-           }
-       }
-       if ( psd != NULL ) {
-           return( EADDRINUSE );
-       }
-       psat.sat_port = port;
-    }
-
-    sd->sd_sat = psat;
-    sd->sd_state = TS_IDLE;
-    return( 0 );
-}
diff --git a/sys/solaris/sock.h b/sys/solaris/sock.h
deleted file mode 100644 (file)
index 2397bd7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-struct sock_data {
-    struct sock_data   *sd_next, *sd_prev;
-    int                        sd_state;
-    queue_t            *sd_q;
-    struct sockaddr_at sd_sat;
-};
-
-struct sock_data       *sock_alloc( queue_t * );
-void                   sock_free( struct sock_data * );
-struct sock_data       *sock_dest( struct atif_data *, struct sockaddr_at * );
-int                    sock_bind( struct sock_data *, struct sockaddr_at * );
-void           t_unitdata_ind( queue_t *, mblk_t *, struct sockaddr_at * );
diff --git a/sys/solaris/tpi.c b/sys/solaris/tpi.c
deleted file mode 100644 (file)
index 0bf89ed..0000000
+++ /dev/null
@@ -1,728 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-#include <sys/types.h>
-#include <sys/kmem.h>
-#include <sys/conf.h>
-#include <sys/stream.h>
-#include <sys/devops.h>
-#include <sys/modctl.h>
-#include <sys/ddi.h>
-#include <sys/stat.h>
-#include <sys/sockio.h>
-#include <sys/socket.h>
-#include <sys/tihdr.h>
-#include <sys/tiuser.h>
-#include <sys/timod.h>
-#include <sys/sunddi.h>
-#include <sys/ethernet.h>
-#include <net/if.h>
-#include <net/route.h>
-#include <errno.h>
-
-#include <netatalk/endian.h>
-#include <netatalk/at.h>
-#include <netatalk/ddp.h>
-
-#include "ioc.h"
-#include "if.h"
-#include "sock.h"
-#include "rt.h"
-
-    static int
-tpi_getinfo( dev_info_t *dip, ddi_info_cmd_t cmd, void *arg, void **resultp )
-{
-    *resultp = NULL;
-    return( DDI_FAILURE );
-}
-
-/* Solaris 10 removed DDI_IDENTIFIED and replaced "identify" with "nulldev" */
-#ifdef DDI_IDENTIFIED
-    static int
-tpi_identify( dev_info_t *dip )
-{
-    char *tmp;
-
-    /* don't use strcmp under Solaris 9, problem loading kernel module */
-    tmp = ddi_get_name( dip );
-    if ((tmp[0]== 'd') && (tmp[1]=='d') && (tmp[2]=='p') && tmp[3]==0) {
-       return( DDI_IDENTIFIED );
-    } else {
-       return( DDI_NOT_IDENTIFIED );
-    }
-}
-#endif /* DDI_IDENTIFIED */
-
-    static int
-tpi_attach( dev_info_t *dip, ddi_attach_cmd_t cmd )
-{
-    int                rc;
-
-    if ( cmd != DDI_ATTACH ) {
-       return( DDI_FAILURE );
-    }
-
-    if (( rc = ddi_create_minor_node( dip, "ddp", S_IFCHR, 0, DDI_PSEUDO,
-           CLONE_DEV )) != DDI_SUCCESS ) {
-       /* undo anything */
-    }
-    return( rc );
-}
-
-    static int
-tpi_detach( dev_info_t *dip, ddi_detach_cmd_t cmd )
-{
-    if ( cmd != DDI_DETACH ) {
-       return( DDI_FAILURE );
-    }
-
-    ddi_remove_minor_node( dip, "ddp" );
-
-    return( DDI_SUCCESS );
-}
-
-    static int
-tpi_open( queue_t *q, dev_t *dev, int oflag, int sflag, cred_t *cred )
-{
-    static minor_t     minor = 1;
-
-    if ( sflag != CLONEOPEN ) {
-       return( EINVAL );
-    }
-    if (( q->q_ptr = (void *)sock_alloc( q )) == NULL ) {
-       return( ENOMEM );
-    }
-
-    *dev = makedevice( getmajor( *dev ), minor++ );
-    qprocson( q );
-    return( 0 );
-}
-
-    static int
-tpi_close( queue_t *q, int oflag, cred_t *cred )
-{
-    struct sock_data   *sd = (struct sock_data *)q->q_ptr;
-
-    qprocsoff( q );
-    sock_free( sd );
-    return( 0 );
-}
-
-    static int
-tpi_rput( queue_t *q,  mblk_t *m )
-{
-    cmn_err( CE_NOTE, "tpi_rput dp_type = 0x%X\n", m->b_datap->db_type );
-    freemsg( m );
-    return( 0 );
-}
-
-    void
-t_bind_ack( queue_t *q, struct sockaddr_at *sat )
-{
-    mblk_t             *m;
-    struct T_bind_ack  *t;
-
-    if (( m = allocb( sizeof( struct T_bind_ack ) +
-           sizeof( struct sockaddr_at ), BPRI_HI )) == NULL ) {
-       return;
-    }
-    m->b_wptr = m->b_rptr + sizeof( struct T_bind_ack );
-    m->b_datap->db_type = M_PCPROTO;
-
-    t = (struct T_bind_ack *)m->b_rptr;
-    t->PRIM_type = T_BIND_ACK;
-    t->ADDR_length = sizeof( struct sockaddr_at );
-    t->ADDR_offset = m->b_wptr - m->b_rptr;
-    t->CONIND_number = 0;
-
-    bcopy( (caddr_t)sat, m->b_wptr, sizeof( struct sockaddr_at ));
-    m->b_wptr += sizeof( struct sockaddr_at );
-
-    qreply( q, m );
-    return;
-}
-
-    void
-t_ok_ack( queue_t *q, long prim )
-{
-    mblk_t             *m;
-    struct T_ok_ack    *t;
-
-
-    if (( m = allocb( sizeof( struct T_ok_ack ), BPRI_HI )) == NULL ) {
-       return;
-    }
-    m->b_wptr = m->b_rptr + sizeof( struct T_ok_ack );
-    m->b_datap->db_type = M_PCPROTO;
-
-    t = (struct T_ok_ack *)m->b_rptr;
-    t->PRIM_type = T_OK_ACK;
-    t->CORRECT_prim = prim;
-    qreply( q, m );
-    return;
-}
-
-    void
-t_error_ack( queue_t *q, long prim, long terror, long uerror )
-{
-    mblk_t             *m;
-    struct T_error_ack *t;
-
-
-    if (( m = allocb( sizeof( struct T_error_ack ), BPRI_HI )) == NULL ) {
-       return;
-    }
-    m->b_wptr = m->b_rptr + sizeof( struct T_error_ack );
-    m->b_datap->db_type = M_PCPROTO;
-
-    t = (struct T_error_ack *)m->b_rptr;
-    t->PRIM_type = T_ERROR_ACK;
-    t->ERROR_prim = prim;
-    t->TLI_error = terror;
-    t->UNIX_error = uerror;
-    qreply( q, m );
-    return;
-}
-
-    void
-t_info_ack( queue_t *q, long state )
-{
-    mblk_t             *m;
-    struct T_info_ack  *t;
-
-
-    if (( m = allocb( sizeof( struct T_info_ack ), BPRI_HI )) == NULL ) {
-       return;
-    }
-    m->b_wptr = m->b_rptr + sizeof( struct T_info_ack );
-    m->b_datap->db_type = M_PCPROTO;
-
-    t = (struct T_info_ack *)m->b_rptr;
-    t->PRIM_type = T_INFO_ACK;
-    t->TSDU_size = 586;
-    t->ETSDU_size = -2;
-    t->CDATA_size = -2;
-    t->DDATA_size = -2;
-    t->ADDR_size = sizeof( struct sockaddr_at );
-    t->OPT_size = 64;
-    t->TIDU_size = 1024;
-    t->SERV_type = T_CLTS;
-    t->CURRENT_state = state;
-    t->PROVIDER_flag = 0;
-    qreply( q, m );
-    return;
-}
-
-    void
-t_unitdata_ind( queue_t *q, mblk_t *m0, struct sockaddr_at *sat )
-{
-    mblk_t                     *m;
-    struct T_unitdata_ind      *t;
-
-    if (( m = allocb( sizeof( struct T_unitdata_ind ) +
-           sizeof( struct sockaddr_at ), BPRI_HI )) == NULL ) {
-       return;
-    }
-    m->b_wptr = m->b_rptr + sizeof( struct T_unitdata_ind );
-    m->b_datap->db_type = M_PROTO;
-
-    t = (struct T_unitdata_ind *)m->b_rptr;
-    t->PRIM_type = T_UNITDATA_IND;
-    t->SRC_length = sizeof( struct sockaddr_at );
-    t->SRC_offset = m->b_wptr - m->b_rptr;
-    bcopy( (caddr_t)sat, m->b_wptr, sizeof( struct sockaddr_at ));
-    m->b_wptr += sizeof( struct sockaddr_at );
-    t->OPT_length = 0;
-    t->OPT_offset = 0;
-    linkb( m, m0 );
-
-    qreply( q, m );
-    return;
-}
-
-struct ioc_state {
-    int                is_state;
-    int                is_count;
-    caddr_t    is_addr;
-};
-
-    static int
-tpi_wput( queue_t *q,  mblk_t *m )
-{
-    struct sock_data   *sd = (struct sock_data *)RD(q)->q_ptr;
-    union T_primitives *tl;
-    struct iocblk      *ioc;
-    struct copyresp    *cp;
-    struct ioc_state   *is;
-    struct ddpehdr     *deh;
-    mblk_t             *m0;
-    struct sockaddr_at sat;
-    struct netbuf      nb;
-    struct rtentry     rt;
-    struct ifreq       ifr;
-    int                        err;
-
-    switch ( m->b_datap->db_type ) {
-    case M_PCPROTO :
-    case M_PROTO :
-       if ( m->b_wptr - m->b_rptr < sizeof( tl->type )) {
-           freemsg( m );
-           break;
-       }
-       tl = (union T_primitives *)m->b_rptr;
-       switch ( tl->type ) {
-       case T_INFO_REQ :
-           t_info_ack( q, sd->sd_state );
-           freemsg( m );
-           break;
-
-       case T_UNBIND_REQ :
-           if ( m->b_wptr - m->b_rptr < sizeof( struct T_unbind_req )) {
-               freemsg( m );
-               break;
-           }
-           if ( sd->sd_state != TS_IDLE ) {
-               t_error_ack( q, T_BIND_REQ, TOUTSTATE, 0 );
-               freemsg( m );
-               break;
-           }
-           bzero( (caddr_t)&sd->sd_sat, sizeof( struct sockaddr_at ));
-           sd->sd_state = TS_UNBND;
-           t_ok_ack( q, T_UNBIND_REQ );
-           break;
-
-       case T_BIND_REQ :
-           if ( m->b_wptr - m->b_rptr < sizeof( struct T_bind_req )) {
-               freemsg( m );
-               break;
-           }
-           if ( sd->sd_state != TS_UNBND ) {
-               t_error_ack( q, T_BIND_REQ, TOUTSTATE, 0 );
-               freemsg( m );
-               break;
-           }
-
-           if ( tl->bind_req.ADDR_length == 0 ) {
-               bzero( (caddr_t)&sat, sizeof( struct sockaddr_at ));
-               sat.sat_family = AF_APPLETALK;
-           } else {
-               if ( tl->bind_req.ADDR_length != sizeof( struct sockaddr ) ||
-                       m->b_wptr - m->b_rptr <
-                       tl->bind_req.ADDR_offset + tl->bind_req.ADDR_length ) {
-                   cmn_err( CE_CONT, "tpi_wput T_BIND_REQ wierd\n" );
-                   freemsg( m );
-                   break;
-               }
-               sat = *(struct sockaddr_at *)(m->b_rptr +
-                       tl->bind_req.ADDR_offset );
-           }
-
-           if (( err = sock_bind( sd, &sat )) != 0 ) {
-               t_error_ack( q, T_BIND_REQ, TSYSERR, err );
-           } else {
-               /* seems like we must return the requested address */
-               t_bind_ack( q, &sat );
-           }
-           freemsg( m );
-           break;
-
-       case T_UNITDATA_REQ :
-           if ( m->b_wptr - m->b_rptr < sizeof( struct T_unitdata_req )) {
-               freemsg( m );
-               break;
-           }
-           if ( sd->sd_state != TS_IDLE ) {
-               cmn_err( CE_NOTE, "tpi_wput unitdata on unbound socket\n" );
-               t_error_ack( q, T_UNITDATA_REQ, TOUTSTATE, 0 );
-               freemsg( m );
-               break;
-           }
-           if ( tl->unitdata_req.DEST_length != sizeof( struct sockaddr )) {
-               cmn_err( CE_NOTE, "tpi_wput T_UNITDATA_REQ %d\n",
-                       tl->unitdata_req.DEST_length );
-               freemsg( m );
-               break;
-           }
-
-#ifdef notdef
-           /*
-            * Sometimes, the socket layer gives us crap...  Sound like a bug?
-            */
-           if ( m->b_rptr + tl->unitdata_req.DEST_offset +
-                   tl->unitdata_req.DEST_length > m->b_wptr ) {
-cmn_err( CE_CONT, "tpi_wput T_UNITDATA_REQ mblk size %X %X\n", m->b_rptr + tl->unitdata_req.DEST_offset + tl->unitdata_req.DEST_length, m->b_wptr );
-               freemsg( m );
-               break;
-           }
-#endif /* notdef */
-
-           sat = *(struct sockaddr_at *)(m->b_rptr +
-                   tl->unitdata_req.DEST_offset );
-           if ( sat.sat_family != AF_APPLETALK ) {
-               cmn_err( CE_CONT, "tpi_wput non-AppleTalk\n" );
-               freemsg( m );
-               break;
-           }
-
-           if ( m->b_wptr - m->b_rptr < sizeof( struct ddpehdr )) {
-               cmn_err( CE_CONT, "tpi_wput m too short\n" );
-               freemsg( m );
-               break;
-           }
-           m->b_wptr = m->b_rptr + sizeof( struct ddpehdr );
-           m->b_datap->db_type = M_DATA;
-           deh = (struct ddpehdr *)m->b_rptr;
-           deh->deh_pad = 0;
-           deh->deh_hops = 0;
-           deh->deh_len = msgdsize( m );
-
-           deh->deh_dnet = sat.sat_addr.s_net;
-           deh->deh_dnode = sat.sat_addr.s_node;
-           deh->deh_dport = sat.sat_port;
-
-           deh->deh_snet = sd->sd_sat.sat_addr.s_net;
-           deh->deh_snode = sd->sd_sat.sat_addr.s_node;
-           deh->deh_sport = sd->sd_sat.sat_port;
-
-           deh->deh_sum = 0;                   /* XXX */
-           deh->deh_bytes = htonl( deh->deh_bytes );
-           return( if_route( if_withaddr( &sd->sd_sat ), m, &sat ));
-
-       default :
-           /* cmn_err( CE_NOTE, "tpi_wput M_PCPROTO 0x%X\n", tl->type ); */
-           t_error_ack( q, tl->type, TNOTSUPPORT, 0 );
-           freemsg( m );
-           break;
-       }
-       break;
-
-    case M_IOCTL :
-       if ( m->b_wptr - m->b_rptr < sizeof( struct iocblk )) {
-           freemsg( m );
-           break;
-       }
-       ioc = (struct iocblk *)m->b_rptr;
-       if ( ioc->ioc_count != TRANSPARENT ) {
-           cmn_err( CE_CONT, "tpi_wput non-TRANSPARENT %X\n", ioc->ioc_cmd );
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-       if ( m->b_cont == NULL ) {
-           cmn_err( CE_CONT, "tpi_wput M_IOCTL no arg\n" );
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-
-       /* de-allocated after M_IOCDATA processing */
-       if (( m0 = allocb( sizeof( struct ioc_state ), BPRI_HI )) == NULL ) {
-           cmn_err( CE_CONT, "tpi_wput m0 no mem\n" );
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-       m0->b_wptr = m->b_rptr + sizeof( struct ioc_state );
-       is = (struct ioc_state *)m0->b_rptr;
-
-       switch ( ioc->ioc_cmd ) {
-       case SIOCADDRT :
-       case SIOCDELRT :
-           if (( err = drv_priv( ioc->ioc_cr )) != 0 ) {
-               ioc_error_ack( q, m, err );
-               break;
-           }
-           is->is_state = M_COPYIN;
-           is->is_addr = *(caddr_t *)m->b_cont->b_rptr;
-           ioc_copyin( q, m, m0, is->is_addr, sizeof( struct rtentry ));
-           break;
-
-       case SIOCADDMULTI :
-       case SIOCSIFADDR :
-           if (( err = drv_priv( ioc->ioc_cr )) != 0 ) {
-               ioc_error_ack( q, m, err );
-               break;
-           }
-
-       case SIOCGIFADDR :
-           is->is_state = M_COPYIN;
-           is->is_addr = *(caddr_t *)m->b_cont->b_rptr;
-           ioc_copyin( q, m, m0, is->is_addr, sizeof( struct ifreq ));
-           break;
-
-       case TI_GETMYNAME :
-           is->is_state = M_COPYIN;
-           is->is_addr = *(caddr_t *)m->b_cont->b_rptr;
-           ioc_copyin( q, m, m0, is->is_addr, sizeof( struct netbuf ));
-           break;
-
-       default :
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-       break;
-
-    case M_IOCDATA :
-       if ( m->b_wptr - m->b_rptr < sizeof( struct copyresp )) {
-           freemsg( m );
-           break;
-       }
-       cp = (struct copyresp *)m->b_rptr;
-       if ( cp->cp_rval != 0 ) {
-           cmn_err( CE_CONT, "tpi_wput IOCDATA failed %s\n", cp->cp_rval );
-           freemsg( m );
-           break;
-       }
-
-       if (( m0 = cp->cp_private ) == NULL ) {
-           cmn_err( CE_CONT, "tpi_wput IOCDATA no state\n" );
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-       if ( m0->b_wptr - m0->b_rptr < sizeof( struct ioc_state )) {
-           cmn_err( CE_CONT, "tpi_wput IOCDATA private too short\n" );
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-       is = (struct ioc_state *)m0->b_rptr;
-
-       switch ( cp->cp_cmd ) {
-       case TI_GETMYNAME :
-           switch ( is->is_state ) {
-           case M_COPYIN :
-               if ( m->b_cont == NULL ) {
-                   cmn_err( CE_CONT, "tpi_wput TI_GETMYNAME COPYIN no arg\n" );
-                   ioc_error_ack( q, m, EINVAL );
-                   break;
-               }
-               nb = *(struct netbuf *)m->b_cont->b_rptr;
-               nb.len = sizeof( struct sockaddr_at );
-               /* copy out netbuf */
-               is->is_state = M_COPYOUT;
-               is->is_count = 1;
-               ioc_copyout( q, m, m0, (caddr_t)&nb, is->is_addr,
-                       sizeof( struct netbuf ));
-               is->is_addr = nb.buf;
-               return( 0 );
-
-           case M_COPYOUT :
-               switch ( is->is_count ) {
-               case 1 :
-                   /* copy out address to nb.buf */
-                   is->is_state = M_COPYOUT;
-                   is->is_count = 2;
-                   ioc_copyout( q, m, m0, (caddr_t)&sd->sd_sat, is->is_addr,
-                           sizeof( struct sockaddr_at ));
-                   return( 0 );
-
-               case 2 :
-                   ioc_ok_ack( q, m, 0 );
-                   break;
-
-               default :
-                   cmn_err( CE_NOTE, "tpi_wput TI_GETMYNAME count %d\n",
-                           is->is_count );
-                   ioc_error_ack( q, m, EINVAL );
-                   break;
-               }
-               break;
-
-           default :
-               cmn_err( CE_NOTE, "tpi_wput TI_GETMYNAME state %d\n",
-                       is->is_state );
-               ioc_error_ack( q, m, EINVAL );
-               break;
-           }
-           break;
-
-       case SIOCADDRT :        /* manipulate routing table */
-       case SIOCDELRT :
-           if (( err = drv_priv( cp->cp_cr )) != 0 ) {
-               ioc_error_ack( q, m, err );
-               break;
-           }
-           if ( is->is_state != M_COPYIN ) {
-               cmn_err( CE_CONT, "tpi_wput SIOC(ADD|DEL)RT bad state\n" );
-               freemsg( m );
-               break;
-           }
-
-           rt = *(struct rtentry *)m->b_cont->b_rptr;
-
-           if ( cp->cp_cmd == SIOCADDRT ) {
-               err = rt_add( (struct sockaddr_at *)&rt.rt_dst,
-                       (struct sockaddr_at *)&rt.rt_gateway, rt.rt_flags );
-           } else if ( cp->cp_cmd == SIOCDELRT ) {
-               err = rt_del( (struct sockaddr_at *)&rt.rt_dst,
-                       (struct sockaddr_at *)&rt.rt_gateway, rt.rt_flags );
-           } else {
-               cmn_err( CE_CONT, "tpi_wput SIOC(ADD|DEL)RT bad cmd\n" );
-               freemsg( m );
-               break;
-           }
-           if ( err != 0 ) {
-               ioc_error_ack( q, m, err );
-           } else {
-               ioc_ok_ack( q, m, 0 );
-           }
-           break;
-
-       /*
-        * These both require lower messages to be sent.
-        */
-       case SIOCADDMULTI :
-       case SIOCSIFADDR :
-           if (( err = drv_priv( cp->cp_cr )) != 0 ) {
-               ioc_error_ack( q, m, err );
-               break;
-           }
-           if ( is->is_state != M_COPYIN ) {
-               cmn_err( CE_CONT, "tpi_wput SIOCSIFADDR bad state\n" );
-               freemsg( m );
-               break;
-           }
-
-           ifr = *(struct ifreq *)m->b_cont->b_rptr;
-
-           /* initiate command, pass q and m (current context to be saved */
-           if ( cp->cp_cmd == SIOCSIFADDR ) {
-               err = if_setaddr( q, m, ifr.ifr_name,
-                       (struct sockaddr_at *)&ifr.ifr_addr );
-           } else {
-               err = if_addmulti( q, m, ifr.ifr_name, &ifr.ifr_addr );
-           }
-           if ( err != 0 ) {
-               ioc_error_ack( q, m, err );
-               break;
-           }
-           break;
-
-       case SIOCGIFADDR :      /* get interface address */
-           switch ( is->is_state ) {
-           case M_COPYOUT :
-               /* ack the original ioctl */
-               ioc_ok_ack( q, m, 0 );
-               break;
-
-           case M_COPYIN :
-               if ( m->b_cont == NULL ) {
-                   cmn_err( CE_CONT, "tpi_wput SIOCGIFADDR COPYIN no arg\n" );
-                   ioc_error_ack( q, m, EINVAL );
-                   break;
-               }
-
-               /* size??? */
-               ifr = *(struct ifreq *)m->b_cont->b_rptr;
-               if (( err = if_getaddr( ifr.ifr_name,
-                       (struct sockaddr_at *)&ifr.ifr_addr )) != 0 ) {
-                   ioc_error_ack( q, m, err );
-               }
-               is->is_state = M_COPYOUT;
-               ioc_copyout( q, m, m0, (caddr_t)&ifr, is->is_addr,
-                       sizeof( struct ifreq ));
-               return( 0 );    /* avoid freemsg( m0 ) below */
-
-           default :
-               cmn_err( CE_CONT, "tpi_wput SIOCGIFADDR bad state\n" );
-               freemsg( m );
-               break;
-           }
-           break;
-
-       default :
-           cmn_err( CE_NOTE, "tpi_wput M_IOCDATA 0x%X\n", cp->cp_cmd );
-           ioc_error_ack( q, m, EINVAL );
-           break;
-       }
-       freemsg( m0 );
-       break;
-
-    default :
-       cmn_err( CE_NOTE, "!tpi_wput dp_type = 0x%X\n", m->b_datap->db_type );
-       freemsg( m );
-       break;
-    }
-
-    return( 0 );
-}
-
-static struct module_info      tpi_info = {
-    0,                 /* XXX */
-    "ddp",
-    0,
-    1500,
-    3000,
-    64
-};
-
-static struct qinit            tpi_rinit = {
-    tpi_rput,                  /* qi_putp */
-    NULL,                      /* qi_srvp */
-    tpi_open,                  /* qi_qopen */
-    tpi_close,                 /* qi_qclose */
-    NULL,
-    &tpi_info,                 /* qi_minfo */
-    NULL,
-};
-
-static struct qinit            tpi_winit = {
-    tpi_wput,                  /* qi_putp */
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    &tpi_info,
-    NULL,
-};
-
-static struct streamtab                tpi_stream = {
-    &tpi_rinit,
-    &tpi_winit,
-    NULL,
-    NULL
-};
-
-static struct cb_ops           tpi_cbops = {
-    nulldev,           /* cb_open */
-    nulldev,           /* cb_close */
-    nodev,
-    nodev,
-    nodev,
-    nodev,
-    nodev,
-    nodev,
-    nodev,
-    nodev,
-    nodev,
-    nochpoll,
-    ddi_prop_op,
-    &tpi_stream,
-    D_NEW | D_MP | D_MTPERMOD, /* cb_flag */
-    CB_REV,            /* cb_rev */
-    nodev,             /* cb_aread */
-    nodev,             /* cb_awrite */
-};
-
-static struct dev_ops          tpi_devops = {
-    DEVO_REV,
-    0,
-    tpi_getinfo,
-#ifdef DDI_IDENTIFIED
-    tpi_identify,
-#else
-    nulldev,
-#endif
-    nulldev,
-    tpi_attach,
-    tpi_detach,
-    nodev,
-    &tpi_cbops,
-    (struct bus_ops *)NULL,
-    NULL,
-};
-
-/*
- * DDP Streams device.  This device is opened by socket().
- */
-struct modldrv                 tpi_ldrv = {
-    &mod_driverops,
-    "DDP Streams device",
-    &tpi_devops,
-};
diff --git a/sys/sunos/.gitignore b/sys/sunos/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/sys/sunos/Makefile.am b/sys/sunos/Makefile.am
deleted file mode 100644 (file)
index ad9b76c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = Makefile.kernel at_sun.c
diff --git a/sys/sunos/Makefile.kernel b/sys/sunos/Makefile.kernel
deleted file mode 100644 (file)
index e489af1..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-# Sun specific defines, passed to subdirectories.
-DEFS= -DBSD4_3 -DUSE_OLD_RQUOTA -DUSE_UFS_QUOTA_H -DUSE_MNTENT_H \
-       -DDLSYM_PREPEND_UNDERSCORE
-OPTOPTS=       -O
-CC=    gcc
-INSTALL=       install
-# use -lbind instead of -lresolv if you're using BIND >= 8.x
-AFPLIBS=-lresolv
-ADDLIBS=
-
-#CSHAREDFLAGS=   -pic
-CSHAREDFLAGS=   -fPIC
-
-#LDFLAGS_EXPORT=
-LDSHARED=      ld
-LDSHAREDFLAGS=  -assert pure-text
-LIBSHARED=      -ldl
-
-
-# source for kernel module
-SRC=   at_sun.c aarp.c at_control.c at_proto.c ddp_input.c ddp_output.c \
-       ddp_usrreq.c
-OBJ=   at_sun.o aarp.o at_control.o at_proto.o ddp_input.o ddp_output.o \
-       ddp_usrreq.o
-
-INCPATH = -I../../include -I../netatalk
-CFLAGS=        ${DEFS} ${OPTOPTS} ${INCPATH}
-
-ALL=   ../../libatalk ../../include ../../bin ../../etc ../../man
-
-all:   kernel ${ALL}
-
-kernel : netatalk.o
-
-netatalk.o:    ${OBJ}
-       ${LD} -r -o netatalk.o ${OBJ}
-
-at_sun.o:      at_sun.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c at_sun.c
-
-aarp.o:        ../netatalk/aarp.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c ../netatalk/aarp.c
-
-at_control.o:  ../netatalk/at_control.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c ../netatalk/at_control.c
-
-at_proto.o:    ../netatalk/at_proto.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c ../netatalk/at_proto.c
-
-ddp_input.o:   ../netatalk/ddp_input.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c ../netatalk/ddp_input.c
-
-ddp_output.o:  ../netatalk/ddp_output.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c ../netatalk/ddp_output.c
-
-ddp_usrreq.o:  ../netatalk/ddp_usrreq.c
-       ${CC} ${CFLAGS} -DKERNEL -D`arch -k` -c ../netatalk/ddp_usrreq.c
-
-../../bin ../../etc:   ../../libatalk
-
-${ALL}:        FRC
-       cd $@; ${MAKE} ${MFLAGS} CC="${CC}" \
-           ADDLIBS="${ADDLIBS}" DEFS="${DEFS}" OPTOPTS="${OPTOPTS}" \
-           SBINDIR="${SBINDIR}" BINDIR="${BINDIR}" RESDIR="${RESDIR}" \
-           ETCDIR="${ETCDIR}" LIBDIR="${LIBDIR}" INCDIR="${INCDIR}" \
-           AFPLIBS="${AFPLIBS}" LDSHARED="${LDSHARED}" \
-           LDFLAGS_EXPORT="${LDFLAGS_EXPORT}" \
-           LDSHAREDFLAGS="${LDSHAREDFLAGS}" CSHAREDFLAGS="${CSHAREDFLAGS}" \
-           LIBSHARED="${LIBSHARED}" \
-           all
-
-FRC:
-
-kinstall :     kernel
-       -mkdir ${DESTDIR}
-       -mkdir ${ETCDIR}
-       ${INSTALL} -c netatalk.o ${ETCDIR}
-
-install :      kinstall
-       -mkdir ${DESTDIR}
-       -mkdir ${SBINDIR}
-       -mkdir ${BINDIR}
-       -mkdir ${ETCDIR}
-       -mkdir ${LIBDIR}
-       for i in ${ALL}; \
-           do (cd $$i; ${MAKE} ${MFLAGS} CC="${CC}" \
-               ADDLIBS="${ADDLIBS}" DEFS="${DEFS}" OPTOPTS="${OPTOPTS}" \
-               SBINDIR="${SBINDIR}" BINDIR="${BINDIR}" RESDIR="${RESDIR}" \
-               ETCDIR="${ETCDIR}" LIBDIR="${LIBDIR}" INCDIR="${INCDIR}" \
-               DESTDIR="${DESTDIR}" MANDIR="${MANDIR}" AFPLIBS="${AFPLIBS}" \
-               AFSDIR="${AFSDIR}" KRBDIR="${KRBDIR}" \
-               LDSHARED="${LDSHARED}" LDFLAGS_EXPORT="${LDFLAGS_EXPORT}" \
-               LDSHAREDFLAGS="${LDSHAREDFLAGS}" \
-               CSHAREDFLAGS="${CSHAREDFLAGS}" LIBSHARED="${LIBSHARED}" \
-               INSTALL="${INSTALL}" $@); \
-       done
-       rm -f ${ETCDIR}/rc.atalk
-       sed -e s@:DESTDIR:@${DESTDIR}@ -e s@:SBINDIR:@${SBINDIR}@ \
-               -e s@:BINDIR:@${BINDIR}@ -e s@:RESDIR:@${RESDIR}@ \
-               -e s@:ETCDIR:@${ETCDIR}@ -e s@:LIBDIR:@${LIBDIR}@ \
-               -e s@:INCDIR:@${INCDIR}@ -e 's@^##@@' \
-           < ../../distrib/initscripts/rc.atalk.bsd > ${ETCDIR}/rc.atalk
-       if [ -f ${ETCDIR}/afpd.conf ]; then \
-               echo "Retaining old afpd.conf file.";  \
-       else \
-               sed -e s@:DESTDIR:@${DESTDIR}@ -e s@:SBINDIR:@${SBINDIR}@ \
-                       -e s@:BINDIR:@${BINDIR}@ -e s@:RESDIR:@${RESDIR}@ \
-                       -e s@:ETCDIR:@${ETCDIR}@ -e s@:LIBDIR:@${LIBDIR}@ \
-                       -e s@:INCDIR:@${INCDIR}@ \
-                       < ../../config/afpd.conf > ${ETCDIR}/afpd.conf; \
-       fi
-       @echo
-       @echo "Install is done.  Don't forget to add lines from"
-       @echo "services.atalk to /etc/services and to call rc.atalk"
-       @echo "in /etc/rc.  See README and README.SUN for more"
-       @echo "information."
-
-clean : sysclean
-       for i in ${ALL}; \
-           do (cd $$i; ${MAKE} ${MFLAGS} clean); \
-       done
-
-sysclean :
-       rm -f a.out core* *.o *.bak *[Ee]rrs tags
-       rm -f netatalk.o
-
-depend :
-       for i in ${ALL}; \
-           do (cd $$i; ${MAKE} ${MFLAGS} DEFS=${DEFS} depend); \
-       done
-       for i in ${SRC} ; do \
-           ${CC} -M ${DEFS} ${INCPATH} $$i | \
-           awk ' { if ($$1 != prev) { print rec; rec = $$0; prev = $$1; } \
-               else { if (length(rec $$2) > 78) { print rec; rec = $$0; } \
-               else rec = rec " " $$2 } } \
-               END { print rec } ' >> makedep; done
-       sed -n '1,/^# DO NOT DELETE THIS LINE/p' Makefile > Makefile.tmp
-       cat makedep >> Makefile.tmp
-       rm makedep
-       echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile.tmp
-       echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile.tmp
-       echo '# see make depend above' >> Makefile.tmp
-       rm -f Makefile.bak
-       cp Makefile Makefile.bak
-       mv Makefile.tmp Makefile
-
-# DO NOT DELETE THIS LINE
-
diff --git a/sys/sunos/at_sun.c b/sys/sunos/at_sun.c
deleted file mode 100644 (file)
index 1cfc020..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * $Id: at_sun.c,v 1.2 2001-08-06 13:39:30 rufustfirefly Exp $
- */
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/mbuf.h>
-#include <sys/protosw.h>
-#include <sys/domain.h>
-#include <sys/errno.h>
-
-#include <net/if_arp.h>
-#include <net/if.h>
-#include <net/route.h>
-#include <net/af.h>
-#include <net/netisr.h>
-
-#include <sun/vddrv.h>
-
-#include <netinet/in.h>
-#undef s_net
-#include <netinet/if_ether.h>
-
-#include <netatalk/at.h>
-#include <netatalk/at_var.h>
-#include <netatalk/ddp_var.h>
-#include <netatalk/phase2.h>
-
-struct vdlat {
-    int                vda_magic;
-    char       *vda_name;
-}      atvdl = {
-    VDMAGIC_USER, "netatalk"
-};
-
-struct ifqueue *atef_input();
-int            atef_output();
-extern int     atintr();
-
-extern u_char  aarp_org_code[ 3 ];
-extern u_char  at_org_code[ 3 ];
-
-/*
- * Entries in this table are inserted into the ether_families linked
- * list at the beginnning. As such, they will be searched by the input
- * and output routines opposite to the order here.
- *
- * In order to do both phase 1 and phase 2 during output, we have a
- * special entry (the AF_APPLETALK entry) whose ethertype field is
- * changed by the output function, to reflect the actual link layer
- * to be used. This ether_family entry is never seen during Ethernet
- * input, since the earlier entry captures all packets (it is seen
- * during loopback input, in that the input function is called directly
- * on loopback output).
- */
-struct ether_family    ether_atalk[] = {
-    {
-       AF_APPLETALK,   0,      /* Changed by atef_output() */
-       atef_input,     atef_output,    atintr,
-    },
-    {
-       0,              ETHERTYPE_AARP,
-       atef_input,     0,              0,
-    },
-    {
-       0,              ETHERTYPE_AT,
-       atef_input,     0,              atintr,
-    },
-    {
-       0,              EF_8023_TYPE,
-       atef_input,     0,              atintr,
-    },
-};
-int    ether_atalkN = sizeof( ether_atalk ) / sizeof( ether_atalk[ 0 ] );
-
-extern struct ether_family     *ether_families;
-
-extern int                     atalk_hash(), atalk_netmatch();
-extern int                     null_hash(), null_netmatch();
-
-xxxinit( cmd, vdd, vdi, vds )
-    unsigned int       cmd;
-    struct vddrv       *vdd;
-    addr_t             vdi;
-    struct vdstat      *vds;
-{
-    struct ether_family        *ef;
-    struct domain      *dom;
-    struct protosw     *pr;
-    int                        i;
-
-    switch( cmd ) {
-       case VDLOAD :
-           vdd->vdd_vdtab = (struct vdlinkage *)&atvdl;
-
-           /*
-            * Register with the network-interface layer (ethernet).
-            */
-           for ( i = 0; i < ether_atalkN; i++ ) {
-               ether_register( &ether_atalk[ i ] );
-           }
-
-           /*
-            * Register with the socket layer.
-            */
-           atalkdomain.dom_next = domains;
-           domains = &atalkdomain;
-           if ( atalkdomain.dom_init ) {
-               (*atalkdomain.dom_init)();
-           }
-           for ( pr = atalkdomain.dom_protosw;
-                   pr < atalkdomain.dom_protoswNPROTOSW; pr++ ) {
-               if ( pr->pr_init ) {
-                   (*pr->pr_init)();
-               }
-           }
-
-           /*
-            * Cobble ourselves into the routing table.
-            */
-           afswitch[ AF_APPLETALK ].af_hash = atalk_hash;
-           afswitch[ AF_APPLETALK ].af_netmatch = atalk_netmatch;
-           return( 0 );
-
-       case VDUNLOAD :
-           /*
-            * Make sure that there are no open appletalk sockets.
-            */
-           if ( ddpcb != NULL ) {
-               return( EMFILE );
-           }
-
-           /*
-            * There is no ether_unregister(), so we'll have to do it
-            * our selves...
-            */
-           for ( i = 0; i < ether_atalkN; i++ ) {
-               if ( ether_families == &ether_atalk[ i ] ) {
-                   ether_families = ether_families->ef_next;
-                   continue;
-               } else {
-                   for ( ef = ether_families; ef->ef_next; ef = ef->ef_next ) {
-                       if ( ef->ef_next == &ether_atalk[ i ] ) {
-                           ef->ef_next = ef->ef_next->ef_next;
-                           break;
-                       }
-                   }
-               }
-           }
-
-           /*
-            * Remove aarp timers and held packets.
-            */
-           aarp_clean();
-
-           /*
-            * Remove AppleTalk interface addresses.
-            */
-           aa_clean();
-
-           /*
-            * Remove our routines from the routing table.
-            */
-           afswitch[ AF_APPLETALK ].af_hash = null_hash;
-           afswitch[ AF_APPLETALK ].af_netmatch = null_netmatch;
-
-           /*
-            * Remove atalkdomain from the domains list.
-            * Unlikely, but someone may have registered after us.
-            */
-           if ( domains == &atalkdomain ) {
-               domains = domains->dom_next;
-           } else {
-               for ( dom = domains; dom->dom_next; dom = dom->dom_next ) {
-                   if ( dom->dom_next == &atalkdomain ) {
-                       dom->dom_next = dom->dom_next->dom_next;
-                       break;
-                   }
-               }
-           }
-           return( 0 );
-
-       case VDSTAT :
-           return( 0 );
-       default :
-           return( EIO );
-    }
-}
-
-/*
- * Input routine for netatalk on suns.  There are five possible
- * packets.  First, packets received on the loopback interface
- * are immediately sent to the phase 1 interrupt queue (this will
- * have to change if we ever do a phase 2 only version).  Second,
- * IEEE802 packet are sent to either the aarpinput() routine or
- * the phase 2 interrupt queue.  Finally, DIX packets are sent
- * to either aarpinput() or the phase 1 interrupt queue.
- */
-    struct ifqueue *
-atef_input( ifp, m, header )
-    struct ifnet       *ifp;
-    struct mbuf                *m;
-    struct ether_header        *header;
-{
-    struct llc         llc;
-    struct mbuf                *n = 0;
-
-    /*
-     * Check first for LOOPBACK flag, since loopback code passes NULL for
-     * the header.
-     */
-    if ( ifp->if_flags & IFF_LOOPBACK ) {
-       return( &atintrq2 );
-    }
-
-    /*
-     * Before SunOS 4.1, the ether_type was passed as is from the
-     * packet.  After SunOS 4.1, the ether_type is swapped in
-     * do_protocol(), before the ether_family routines are called.
-     */
-#if defined( sun ) && defined( i386 )
-    header->ether_type = ntohs( header->ether_type );
-#endif /* sun i386 */
-
-    if ( header->ether_type <= ETHERMTU ) {    /* IEEE802 */
-       /*
-        * We need to remove the interface pointer from the beginning of this
-        * packet.  We can't always use IF_ADJ(), since it can (and will,
-        * very often) MFREE() the first mbuf in our chain.  If IF_ADJ()
-        * would free the first mbuf, we just advance our pointer to the
-        * next mbuf.  Since our calling routine passes m by value, we're
-        * not actually losing m.  Later, we don't need to put the interface
-        * pointer back on, since the caller still has it in its copy of m.
-        */
-       if ( m->m_len == sizeof( struct ifnet * )) {
-           n = m;
-           m = m->m_next;
-       } else {
-           IF_ADJ( m );
-       }
-
-       /*
-        * We can't call m_pullup(), since we need to preserve
-        * the value of m.
-        */
-       if ( m->m_len < sizeof( struct llc )) {
-printf( "atef_input size llc\n" );
-           ( n ) ? m_freem( n ) : m_freem( m );
-           return( 0 );
-       }
-       bcopy( mtod( m, caddr_t ), &llc, sizeof( struct llc ));
-       if ( llc.llc_dsap != LLC_SNAP_LSAP || llc.llc_ssap != LLC_SNAP_LSAP ||
-               llc.llc_control != LLC_UI ) {
-           ( n ) ? m_freem( n ) : m_freem( m );
-           return( 0 );
-       }
-
-       /*
-        * See IF_ADJ() above.  Here we prepend ifp to the mbuf chain.  If we
-        * didn't remove it earlier, we don't replace it here.
-        */
-       if ( n ) {
-           m_adj( m, sizeof( struct llc ));
-       } else {
-           m_adj( m, sizeof( struct llc ) - sizeof( struct ifnet *));
-           if ( m->m_len < sizeof( struct ifnet * )) {
-printf( "atef_input too small!\n" );
-               m_freem( m );
-               return( 0 );
-           }
-           *mtod( m, struct ifnet ** ) = ifp;
-       }
-
-       if ( ntohs( llc.llc_ether_type ) == ETHERTYPE_AT &&
-               bcmp( llc.llc_org_code, at_org_code,
-               sizeof( at_org_code )) == 0 ) {
-           return( &atintrq2 );
-       }
-
-       /* do we really want to pass m, here?  what happened to n? XXX */
-       if ( ntohs( llc.llc_ether_type ) == ETHERTYPE_AARP &&
-               bcmp( llc.llc_org_code, aarp_org_code,
-               sizeof( aarp_org_code )) == 0 ) {
-           aarpinput( ifp, n ? n : m );
-           return( 0 );
-       }
-
-    } else {                                   /* DIX */
-       switch ( header->ether_type ) {
-       case ETHERTYPE_AT :
-           return( &atintrq1 );
-
-       case ETHERTYPE_AARP :
-           aarpinput( ifp, m );
-           return( 0 );
-       }
-    }
-
-    ( n ) ? m_freem( n ) : m_freem( m );
-    return( 0 );
-}
-
-/*
- * If the destination is on a 802.3 wire, do phase 2 encapsulation,
- * adding the 802.2 and SNAP headers.  Always fill in the edst with the
- * ethernet address of the destination.
- */
-atef_output( dst, m, ifp, edst )
-    struct sockaddr_at *dst;
-    struct mbuf                *m;
-    struct ifnet       *ifp;
-    struct ether_addr  *edst;
-{
-    struct at_ifaddr   *aa;
-    struct mbuf                *m0;
-    struct llc         llc;
-    int                        s;
-
-    s = splimp();
-    if ( !aarpresolve( ifp, m, dst, edst )) {
-       (void) splx( s );
-       return( 1 );
-    }
-    (void) splx( s );
-
-    /*
-     * ifaddr is the first thing in at_ifaddr
-     */
-    if (( aa = (struct at_ifaddr *)at_ifawithnet( dst, ifp->if_addrlist ))
-           == 0 ) {
-       m_freem( m );
-       return( 1 );
-    }
-
-    /*
-     * In the phase 2 case, we need to prepend an mbuf for the llc header.
-     * Since we must preserve the value of m, which is passed to us by
-     * value, we m_copy() the first mbuf, and use it for our llc header.
-     *
-     * We could worry about leaving space for the ether header, but
-     * since we'll have to go through all sorts of hoops, including a
-     * possibly large copy, there's really no sense.
-     */
-    if ( aa->aa_flags & AFA_PHASE2 ) {
-       if ( M_HASCL( m ) || m->m_off - MMINOFF < sizeof( struct llc )) {
-           if (( m0 = m_copy( m, 0, m->m_len )) == 0 ) {
-               m_freem( m );
-               return( 1 );
-           }
-           if ( M_HASCL( m )) {        /* m is a cluster */
-               int s = splimp();
-
-               mclput( m );
-               splx( s );
-           }
-
-           m0->m_next = m->m_next;
-           m->m_next = m0;
-           m->m_off = MMAXOFF - sizeof( struct llc );
-           m->m_len = sizeof( struct llc );
-       } else {
-           m->m_off -= sizeof( struct llc );
-           m->m_len += sizeof( struct llc );
-       }
-
-       llc.llc_dsap = llc.llc_ssap = LLC_SNAP_LSAP;
-       llc.llc_control = LLC_UI;
-       bcopy( at_org_code, llc.llc_org_code, sizeof( at_org_code ));
-       llc.llc_ether_type = htons( ETHERTYPE_AT );
-       bcopy( &llc, mtod( m, caddr_t ), sizeof( struct llc ));
-       ether_atalk[ 0 ].ef_ethertype = EF_8023_TYPE;
-       return( 0 );
-    } else {
-       ether_atalk[ 0 ].ef_ethertype = ETHERTYPE_AT;
-       return( 0 );
-    }
-}
diff --git a/sys/ultrix/.gitignore b/sys/ultrix/.gitignore
deleted file mode 100644 (file)
index 895a5e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.gitignore
-*.o
diff --git a/sys/ultrix/Makefile.am b/sys/ultrix/Makefile.am
deleted file mode 100644 (file)
index 9906f2c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = Makefile.kernel at_ultrix.c kpatch-4.1 kpatch-4.2
diff --git a/sys/ultrix/Makefile.kernel b/sys/ultrix/Makefile.kernel
deleted file mode 100644 (file)
index e3aa638..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-# Ultrix specific defines, passed to subdirectories.
-# i believe that the current setup will break with this.
-#DEFS=
-DEFS=-I../../sys/generic -DUSE_OLD_RQUOTA
-OPTOPTS=
-#CC=   cc 
-CC = gcc 
-CSHAREDFLAGS=   -fPIC
-LDSHARED=      gcc
-LDSHAREDFLAGS=  -shared
-LDFLAGS_EXPORT=-rdynamic
-
-INSTALL=       install
-
-LIBSHARED=      -ldl
-AFPLIBS= 
-ADDLIBS=
-
-INCPATH = -I../../include -I../netatalk
-CFLAGS=        ${DEFS} ${OPTOPTS} ${INCPATH}
-
-ALL=   ../../libatalk ../../include ../../bin ../../etc ../../man
-
-oops:
-       @echo "Read README again.  Don't type 'make' here."
-       @exit 1
-
-all:    ${ALL}
-
-../../bin ../../etc:   ../../libatalk
-
-${ALL}:        FRC
-       cd $@; ${MAKE} ${MFLAGS} CC="${CC}" \
-           ADDLIBS="${ADDLIBS}" DEFS="${DEFS}" OPTOPTS="${OPTOPTS}" \
-           SBINDIR="${SBINDIR}" BINDIR="${BINDIR}" RESDIR="${RESDIR}" \
-           ETCDIR="${ETCDIR}" LIBDIR="${LIBDIR}" INCDIR="${INCDIR}" \
-           DESTDIR="${DESTDIR}" AFSDIR="${AFSDIR}" KRBDIR="${KRBDIR}" \
-           AFPLIBS="${AFPLIBS}" LDSHARED="${LDSHARED}" \
-           LDFLAGS_EXPORT="${LDFLAGS_EXPORT}" \
-           LDSHAREDFLAGS="${LDSHAREDFLAGS}" CSHAREDFLAGS="${CSHAREDFLAGS}" \
-           LIBSHARED="${LIBSHARED}" \
-           all
-
-FRC: kpatch-4.3 kpatch-4.4
-
-kpatch-4.3:
-       -ln -s kpatch-4.2 kpatch-4.3
-kpatch-4.4:
-       -ln -s kpatch-4.2 kpatch-4.4
-
-install :
-       -mkdir ${DESTDIR}
-       for i in ${ALL}; \
-           do (cd $$i; ${MAKE} ${MFLAGS} CC="${CC}" \
-               ADDLIBS="${ADDLIBS}" DEFS="${DEFS}" OPTOPTS="${OPTOPTS}" \
-               SBINDIR="${SBINDIR}" BINDIR="${BINDIR}" RESDIR="${RESDIR}" \
-               ETCDIR="${ETCDIR}" LIBDIR="${LIBDIR}" INCDIR="${INCDIR}" \
-               DESTDIR="${DESTDIR}" MANDIR="${MANDIR}" \
-               AFSDIR="${AFSDIR}" KRBDIR="${KRBDIR}" AFPLIBS="${AFPLIBS}" \
-               LDSHARED="${LDSHARED}" LDFLAGS_EXPORT="${LDFLAGS_EXPORT}" \
-               LDSHAREDFLAGS="${LDSHAREDFLAGS}" \
-               CSHAREDFLAGS="${CSHAREDFLAGS}" LIBSHARED="${LIBSHARED}" \
-               INSTALL="${INSTALL}" $@); \
-       done
-       rm -f ${ETCDIR}/rc.atalk
-       sed -e s@:DESTDIR:@${DESTDIR}@ -e s@:SBINDIR:@${SBINDIR}@ \
-               -e s@:BINDIR:@${BINDIR}@ -e s@:RESDIR:@${RESDIR}@ \
-               -e s@:ETCDIR:@${ETCDIR}@ -e s@:LIBDIR:@${LIBDIR}@ \
-               -e s@:INCDIR:@${INCDIR}@ \
-           < ../../distrib/initscripts/rc.atalk.bsd > ${ETCDIR}/rc.atalk
-       @echo
-       @echo "Install is done.  Don't forget to add lines from"
-       @echo "services.atalk to /etc/services and to call rc.atalk
-       @echo "in /etc/rc.  Next, install the kernel patches."
-       @echo "See README.ULTRIX for more information."
-
-kpatch :
-       @echo "WARNING!!!  This patches your kernel!!!"
-       @echo -n "(hit control-c with in 10 seconds, to stop)"
-       @sleep 10
-       @echo
-       @echo
-       @if grep -s -w atalk /sys/conf/files; then \
-           echo "You already have a version of netatalk installed."; \
-           echo "You will have to remove this old version.  See"; \
-           echo "README.ULTRIX for specific instructions."; \
-           exit 1; \
-       else \
-           case `/bin/uname -r` in \
-               4.1) echo -n "Applying 4.1 patches..."; \
-                   patch -s -d /sys -p0 < kpatch-4.1;  \
-                   echo " done."; \
-                   ;; \
-               4.2|4.3|4.4) echo -n "Applying 4.2/4.3/4.4 patches..."; \
-                   patch -s -d /sys -p0 < kpatch-4.2;  \
-                   echo " done."; \
-                   ;; \
-               *) echo "Unknown release of Ultrix"; exit 1; \
-                   ;; \
-           esac; \
-       fi
-       @echo
-       @echo "Next, install the netatalk kernel files.  See README.ULTRIX"
-       @echo "for specific instructions."
-
-kinstall :
-       @echo "Copying netatalk to kernel building area..."
-       -mkdir /sys/net/netatalk
-       cp ../netatalk/*.[ch] *.[ch] /sys/net/netatalk
-       @echo "Done."
-       @echo
-       @echo "Next, make a new kernel.  See README.ULTRIX"
-       @echo "for specific instructions."
-
-clean :
-       for i in ${ALL}; \
-           do (cd $$i; ${MAKE} ${MFLAGS} clean); \
-       done
-
-sysclean :
-
-depend :
-       for i in ${ALL}; \
-           do (cd $$i; ${MAKE} ${MFLAGS} DEFS="${DEFS}" depend); \
-       done
-       for i in ${SRC} ; do \
-           ${CC} -M ${DEFS} ${INCPATH} $$i | \
-           awk ' { if ($$1 != prev) { print rec; rec = $$0; prev = $$1; } \
-               else { if (length(rec $$2) > 78) { print rec; rec = $$0; } \
-               else rec = rec " " $$2 } } \
-               END { print rec } ' >> makedep; done
-       sed -n '1,/^# DO NOT DELETE THIS LINE/p' Makefile > Makefile.tmp
-       cat makedep >> Makefile.tmp
-       rm makedep
-       echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile.tmp
-       echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile.tmp
-       echo '# see make depend above' >> Makefile.tmp
-       rm -f Makefile.bak
-       cp Makefile Makefile.bak
-       mv Makefile.tmp Makefile
-
-# DO NOT DELETE THIS LINE
-
diff --git a/sys/ultrix/at_ultrix.c b/sys/ultrix/at_ultrix.c
deleted file mode 100644 (file)
index e53fb39..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#include <sys/types.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/protosw.h>
-#include <sys/ioctl.h>
-#include <sys/errno.h>
-#include <net/if.h>
-#include <net/if_llc.h>
-#include <net/if_to_proto.h>
-#include <net/netisr.h>
-#include <netinet/in.h>
-#undef s_net
-#include <netinet/if_ether.h>
-
-#include "at.h"
-#include "at_var.h"
-
-extern u_char  at_org_code[ 3 ];
-extern u_char  aarp_org_code[ 3 ];
-
-/*
- * This is the magic input routine, for all AppleTalk related packets.
- * It will pick up *all* packets received, on all interfaces, apparently.
- * If it turns out that receiving all packets in this fashion causes
- * DLI to not receive packets what it should, we may need to call DLI
- * directly from within the AppleTalk input routines.  Ick.
- */
-struct mbuf *
-ddp_ifinput( m, ifp, inq, eh )
-    struct mbuf                *m;
-    struct ifnet       *ifp;
-    struct ifqueue     **inq;
-    struct ether_header        *eh;
-{
-    struct llc         llc;
-    struct if_family   *ifam;
-
-    switch ( eh->ether_type ) {
-    case ETHERTYPE_AT :
-       *inq = &atintrq1;
-       smp_lock( &(*inq)->lk_ifqueue, LK_RETRY );
-       schednetisr( NETISR_AT );
-       return( m );
-
-    case ETHERTYPE_AARP :
-       aarpinput( ifp, m );
-       return( 0 );
-
-    default :
-       if ( eh->ether_type <= ETHERMTU ) {             /* ieee802 */
-           if ( m->m_len < sizeof( struct llc )) {
-               break;
-           }
-
-           bcopy( mtod( m, caddr_t ), &llc, sizeof( struct llc ));
-           if ( llc.llc_dsap != LLC_SNAP_LSAP ||
-                   llc.llc_ssap != LLC_SNAP_LSAP ||
-                   llc.llc_control != LLC_UI ) {
-               break;
-           }
-
-           if ( bcmp( llc.llc_org_code, at_org_code,
-                   sizeof( at_org_code )) == 0 &&
-                   ntohs( llc.llc_ether_type ) == ETHERTYPE_AT ) {
-               m_adj( m, sizeof( struct llc ));
-               *inq = &atintrq2;
-               smp_lock( &(*inq)->lk_ifqueue, LK_RETRY );
-               schednetisr( NETISR_AT );
-               return( m );
-           }
-
-           if ( bcmp( llc.llc_org_code, aarp_org_code,
-                   sizeof( aarp_org_code )) == 0 &&
-                   ntohs( llc.llc_ether_type ) == ETHERTYPE_AARP ) {
-               m_adj( m, sizeof( struct llc ));
-               aarpinput( ifp, m );
-               return( 0 );
-           }
-       }
-    }
-
-    /*
-     * Check is anyone else wants this packet.
-     */
-    for ( ifam = if_family; ifam->domain != -1; ifam++ ) {
-       if (( eh->ether_type == ifam->if_type || ifam->if_type == -1 ) &&
-               ifam->prswitch &&
-               ifam->prswitch->pr_ifinput != (int (*)())ddp_ifinput ) {
-           break;
-       }
-    }
-    if ( ifam->domain != -1 && ifam->prswitch->pr_ifinput ) {
-       return( (struct mbuf *)(*ifam->prswitch->pr_ifinput)( m, ifp,
-               inq, eh ));
-    }
-
-    m_freem( m );
-    return( 0 );
-}
-
-/*
- * Fill in type and odst. odst is the media output address, i.e.
- * the MAC layer address. Type is the MAC type. Should be 0 to
- * indicate IEEE addressing.
- *
- * Stupidly enough, there's no way to say "can't send this now."
- * So, we just let the first packet go into the air. Not much
- * else to be done, except maybe bitch at DEC. Note: we're not
- * passing the mbuf to aarpresolve() -- that way it doesn't get
- * mfree-ed twice.
- */
-ddp_ifoutput( ifp, m, dst, type, odst )
-    struct ifnet       *ifp;
-    struct mbuf                *m;
-    struct sockaddr_at *dst;
-    short              *type;
-    char               *odst;
-{
-    struct at_ifaddr   *aa;
-    struct llc         *llc;
-    struct mbuf                *m0;
-
-    if ( !aarpresolve( ifp, 0, dst, odst )) {
-       *type = 0xffff;
-       return( 0 );
-    }
-
-    if (( aa = (struct at_ifaddr *)at_ifawithnet( dst, ifp->if_addrlist ))
-           == 0 ) {
-       *type = 0xffff;
-       return( 0 );
-    }
-
-    if ( aa->aa_flags & AFA_PHASE2 ) {
-       /*
-        * This code needs to be modeled after the similar code in
-        * at_sun.c -- you can't just MGET() and bcopy(), since we might be
-        * dealing with mbufs which are really pages.
-        */
-       MGET( m0, M_WAIT, MT_HEADER );
-       if ( m0 == 0 ) {
-           *type = 0xffff;
-           return( 0 );
-       }
-       m0->m_next = m->m_next;
-       m0->m_off = m->m_off;
-       m0->m_len = m->m_len;
-       bcopy( mtod( m, caddr_t ), mtod( m0, caddr_t ), m->m_len );
-       m->m_next = m0;
-       m->m_off = MMINOFF;
-       m->m_len = sizeof( struct llc );
-
-       llc = mtod( m, struct llc *);
-       llc->llc_dsap = llc->llc_ssap = LLC_SNAP_LSAP;
-       llc->llc_control = LLC_UI;
-       bcopy( at_org_code, llc->llc_org_code, sizeof( at_org_code ));
-       llc->llc_ether_type = htons( ETHERTYPE_AT );
-
-       /*
-        * Set the type to be the length of the packet, instead of 0.
-        * Ultrix used to put the length in the packet when we set type
-        * to 0, however, now we do it ourselves.
-        */
-       for ( *type = 0; m; m = m->m_next ) {
-           *type += m->m_len;
-       }
-    } else {
-       *type = ETHERTYPE_AT;
-    }
-
-    return( 1 );
-}
-
-ddp_ifioctl( ifp, cmd, data )
-    struct ifnet       *ifp;
-    int                        cmd;
-    caddr_t            data;
-{
-    switch( cmd ) {
-    case SIOCSIFADDR :
-       aarpwhohas((struct arpcom *)ifp,
-               &AA_SAT((struct ifaddr *)data)->sat_addr );
-       break;
-    default :
-       return( EINVAL );
-    }
-    return( 0 );
-}
diff --git a/sys/ultrix/kpatch-4.1 b/sys/ultrix/kpatch-4.1
deleted file mode 100644 (file)
index 8a30e43..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-*** ../sys.old/conf/files      Fri Jul  6 10:19:49 1990
---- ./conf/files       Thu Mar 12 17:33:58 1992
-***************
-*** 75,80 ****
---- 75,87 ----
-  net/netinet/tcp_timer.c      optional inet Binary
-  net/netinet/tcp_usrreq.c     optional inet Binary
-  net/netinet/udp_usrreq.c     optional inet Binary
-+ net/netatalk/aarp.c  optional atalk
-+ net/netatalk/at_control.c    optional atalk
-+ net/netatalk/at_proto.c      optional atalk
-+ net/netatalk/at_ultrix.c     optional atalk
-+ net/netatalk/ddp_input.c     optional atalk
-+ net/netatalk/ddp_output.c    optional atalk
-+ net/netatalk/ddp_usrreq.c    optional atalk
-  net/netbsc/bsc_pcb.c optional bsc Binary
-  net/netbsc/bsc_proto.c       optional bsc 
-  net/netbsc/bsc_states.c      optional bsc Binary
-*** ../sys.old/data/af_data.c  Fri Jul  6 09:40:50 1990
---- ./data/af_data.c   Thu Mar 12 17:34:03 1992
-***************
-*** 69,74 ****
---- 69,82 ----
-  #define AFNS AFNULL
-  #endif NS
-  
-+ #ifdef ATALK
-+ extern int atalk_hash(), atalk_netmatch();
-+ #define AFATALK \
-+      { atalk_hash,   atalk_netmatch }
-+ #else
-+ #define AFATALK      AFNULL
-+ #endif
-+ 
-  #ifdef BINARY
-  
-  extern       struct afswitch afswitch[];
-***************
-*** 78,83 ****
-  struct afswitch afswitch[AF_MAX] = {
-       AFNULL, AFNULL, AFINET, AFINET, AFPUP,
-       AFNULL, AFNS,   AFNULL, AFNULL, AFNULL,
-!      AFNULL
-  };
-  #endif
---- 86,92 ----
-  struct afswitch afswitch[AF_MAX] = {
-       AFNULL, AFNULL, AFINET, AFINET, AFPUP,
-       AFNULL, AFNS,   AFNULL, AFNULL, AFNULL,
-!      AFNULL, AFNULL, AFNULL, AFNULL, AFNULL,
-!      AFNULL, AFATALK, AFNULL, AFNULL, AFNULL,
-  };
-  #endif
-*** ../sys.old/data/if_to_proto_data.c Fri Jul  6 09:40:26 1990
---- ./data/if_to_proto_data.c  Thu Jun  3 11:53:44 1993
-***************
-*** 135,140 ****
---- 135,156 ----
-          { ETHERTYPE_RC,         AF_DLI,         0,              0 }
-  #endif
-  
-+ /*
-+  * Hook for netatalk.  We receive all packets.  If we're not interested
-+  * in the packet, we do a normal search on if_family for someone else
-+  * who might want the packet.
-+  * (Not yet. XXX)
-+  */
-+ #ifdef ATALK
-+ #include "atalk.h"
-+ #undef s_net
-+ #include "../net/netatalk/at.h"
-+ #define ETHER_ATALK \
-+      { -1,                   AF_APPLETALK,   ATPROTO_DDP,    0 }
-+ #else ATALK
-+ #define ETHER_ATALK  IFNULL
-+ #endif ATALK
-+ 
-  #ifdef       BINARY
-  
-  extern struct if_family if_family[];
-***************
-*** 145,151 ****
-  
-  struct if_family if_family[] = {
-!      ETHER_DECNET,   ETHER_LAT,      ETHER_APPLE, ETHER_APPLEARP,
-       ETHER_NS,       ETHER_DLI,      IFEND
-  };
-  
-  #endif
---- 162,168 ----
-  
-  struct if_family if_family[] = {
-!      ETHER_ATALK,    ETHER_DECNET,   ETHER_LAT,      ETHER_APPLE, ETHER_APPLEARP,
-       ETHER_NS,       ETHER_DLI,      IFEND
-  };
-  
-  #endif
-*** ../sys.old/data/uipc_domain_data.c Fri Jul  6 09:40:44 1990
---- ./data/uipc_domain_data.c  Thu Mar 12 17:38:18 1992
-***************
-*** 107,112 ****
---- 107,116 ----
-       ADDDOMAIN(ccitt);
-  #endif CCITT
-  #endif
-+ #ifdef ATALK
-+ #include "atalk.h"
-+      ADDDOMAIN(atalk);
-+ #endif ATALK
-  
-       for (dp = domains; dp; dp = dp->dom_next)
-               for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
-*** ../sys.old/net/net/conf_net.c      Fri Jul  6 10:03:25 1990
---- ./net/net/conf_net.c       Thu Mar 12 17:39:11 1992
-***************
-*** 236,241 ****
---- 236,245 ----
-  extern int ddpintr();
-  #endif
-  
-+ #ifdef ATALK
-+ extern int atintr();
-+ #endif
-+ 
-  #include "../net/net/netisr.h" 
-  /*
-   * table of interrupt vectors - scanned in locore when sofware 
-***************
-*** 280,285 ****
---- 284,292 ----
-  #ifdef OSI
-          {NETISR_OSI,osiintr},
-  #endif OSI
-+ #ifdef ATALK
-+      {NETISR_AT,atintr},
-+ #endif ATALK
-       {-1     ,0}
-  };
-  
-*** ../sys.old/net/net/netisr.h        Fri Jul  6 10:03:28 1990
---- ./net/net/netisr.h Thu Mar 12 17:39:45 1992
-***************
-*** 66,71 ****
---- 66,72 ----
-  #define NETISR_DLI   13              /* same as AF_DLI */
-  #define NETISR_LAT   14              /* same as AF_LAT */
-  #define NETISR_BSC   15              /* same as AF_BSC */
-+ #define NETISR_AT    16              /* same as AF_APPLETALK */
-  #define NETISR_OSI      19              /* same as AF_OSI */
-  
-  #define      schednetisr(anisr)      { set_bit_atomic(anisr,&netisr); setsoftnet(); }
diff --git a/sys/ultrix/kpatch-4.2 b/sys/ultrix/kpatch-4.2
deleted file mode 100644 (file)
index 0c8fa8e..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-*** ../sys.old/conf/files      Wed Jun 19 14:23:30 1991
---- ./conf/files       Fri Mar  6 18:06:45 1992
-***************
-*** 75,80 ****
---- 75,87 ----
-  net/netinet/tcp_timer.c      optional inet Binary
-  net/netinet/tcp_usrreq.c     optional inet Binary
-  net/netinet/udp_usrreq.c     optional inet Binary
-+ net/netatalk/aarp.c  optional atalk
-+ net/netatalk/at_control.c    optional atalk
-+ net/netatalk/at_proto.c      optional atalk
-+ net/netatalk/at_ultrix.c     optional atalk
-+ net/netatalk/ddp_input.c     optional atalk
-+ net/netatalk/ddp_output.c    optional atalk
-+ net/netatalk/ddp_usrreq.c    optional atalk
-  net/netbsc/bsc_pcb.c optional bsc Binary
-  net/netbsc/bsc_proto.c       optional bsc 
-  net/netbsc/bsc_states.c      optional bsc Binary
-*** ../sys.old/data/af_data.c  Mon Apr 29 15:45:53 1991
---- ./data/af_data.c   Sun Mar  8 22:25:15 1992
-***************
-*** 69,74 ****
---- 69,82 ----
-  #define AFNS AFNULL
-  #endif NS
-  
-+ #ifdef ATALK
-+ extern int atalk_hash(), atalk_netmatch();
-+ #define AFATALK \
-+      { atalk_hash,   atalk_netmatch }
-+ #else
-+ #define AFATALK      AFNULL
-+ #endif
-+ 
-  #ifdef BINARY
-  
-  extern       struct afswitch afswitch[];
-***************
-*** 78,83 ****
-  struct afswitch afswitch[AF_MAX] = {
-       AFNULL, AFNULL, AFINET, AFINET, AFPUP,
-       AFNULL, AFNS,   AFNULL, AFNULL, AFNULL,
-!      AFNULL
-  };
-  #endif
---- 86,92 ----
-  struct afswitch afswitch[AF_MAX] = {
-       AFNULL, AFNULL, AFINET, AFINET, AFPUP,
-       AFNULL, AFNS,   AFNULL, AFNULL, AFNULL,
-!      AFNULL, AFNULL, AFNULL, AFNULL, AFNULL,
-!      AFNULL, AFATALK, AFNULL, AFNULL, AFNULL,
-  };
-  #endif
-*** ../sys.old/data/if_to_proto_data.c Mon Apr 29 15:46:34 1991
---- ./data/if_to_proto_data.c  Thu Jun  3 11:53:44 1993
-***************
-*** 125,130 ****
---- 125,143 ----
-          { ETHERTYPE_RC,         AF_DLI,         0,              0 }
-  #endif
-  
-+ /*
-+  * Hook for netatalk.  We receive all packets.  If we're not interested
-+  * in the packet, we do a normal search on if_family for someone else
-+  * who might want the packet.
-+  */
-+ #ifdef ATALK
-+ #include "atalk.h"
-+ #undef s_net
-+ #include "../net/netatalk/at.h"
-+ #define ETHER_ATALK \
-+      { -1,                   AF_APPLETALK,   ATPROTO_DDP,    0 }
-+ #endif ATALK
-+ 
-  #ifdef       BINARY
-  
-  extern struct if_family if_family[];
-***************
-*** 134,139 ****
---- 148,156 ----
-  /* INET specific stuff is kept in drivers for now */
-  
-  struct if_family if_family[] = {
-+ #ifdef ETHER_ATALK
-+      ETHER_ATALK,
-+ #endif
-  #ifdef ETHER_DECNET
-       ETHER_DECNET,
-  #endif
-*** ../sys.old/data/uipc_domain_data.c Mon Apr 29 15:47:08 1991
---- ./data/uipc_domain_data.c  Mon Mar  2 15:24:28 1992
-***************
-*** 123,128 ****
---- 123,132 ----
-       ADDDOMAIN(x25);
-  #endif XXXVNATV
-  #endif X25_DONE
-+ #ifdef ATALK
-+ #include "atalk.h"
-+      ADDDOMAIN(atalk);
-+ #endif ATALK
-  
-  #endif
-  
-*** ../sys.old/net/net/conf_net.c      Mon Apr 29 16:16:23 1991
---- ./net/net/conf_net.c       Sun Mar  8 22:28:32 1992
-***************
-*** 233,238 ****
---- 233,242 ----
-  extern int ddpintr();
-  #endif
-  
-+ #ifdef ATALK
-+ extern int atintr();
-+ #endif
-+ 
-  #include "../net/net/netisr.h" 
-  /*
-   * table of interrupt vectors - scanned in locore when sofware 
-***************
-*** 272,277 ****
---- 276,284 ----
-  #if NLAT == 1
-       {NETISR_LAT,latintr},
-  #endif /* NLAT */
-+ #ifdef ATALK
-+      {NETISR_AT,atintr},
-+ #endif ATALK
-  #ifdef APPLETALK
-       {NETISR_DDP,ddpintr},
-  #endif APPLETALK
-*** ../sys.old/net/net/netisr.h        Mon Apr 29 16:16:21 1991
---- ./net/net/netisr.h Sun Mar  8 22:29:04 1992
-***************
-*** 72,77 ****
---- 72,78 ----
-  #define NETISR_DLI   13              /* same as AF_DLI */
-  #define NETISR_LAT   14              /* same as AF_LAT */
-  #define NETISR_BSC   15              /* same as AF_BSC */
-+ #define NETISR_AT    16              /* same as AF_APPLETALK */
-  #define NETISR_DLO      19              /* same as AF_OSI */
-  
-  #define      schednetisr(anisr)      { set_bit_atomic(anisr,&netisr); setsoftnet(); }