diff options
Diffstat (limited to 'contrib/ipfilter/ipsend/sdlpi.c')
-rw-r--r-- | contrib/ipfilter/ipsend/sdlpi.c | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/contrib/ipfilter/ipsend/sdlpi.c b/contrib/ipfilter/ipsend/sdlpi.c deleted file mode 100644 index 1ce8946..0000000 --- a/contrib/ipfilter/ipsend/sdlpi.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * (C)opyright 1992-1998 Darren Reed. (from tcplog) - * - * See the IPFILTER.LICENCE file for details on licencing. - * - */ - -#include <stdio.h> -#include <netdb.h> -#include <ctype.h> -#include <fcntl.h> -#include <signal.h> -#include <errno.h> -#include <sys/types.h> -#include <sys/time.h> -#include <sys/timeb.h> -#include <sys/socket.h> -#include <sys/file.h> -#include <sys/ioctl.h> -#include <sys/stropts.h> - -#ifdef sun -# include <sys/pfmod.h> -# include <sys/bufmod.h> -#endif -#ifdef __osf__ -# include <sys/dlpihdr.h> -# include "radix_ipf_local.h" -#else -# include <sys/dlpi.h> -#endif -#ifdef __hpux -# include <sys/dlpi_ext.h> -#endif - -#include <net/if.h> -#include <netinet/in.h> -#include <netinet/in_systm.h> -#include <netinet/ip.h> -#include <netinet/if_ether.h> -#include <netinet/ip_var.h> -#include <netinet/udp.h> -#include <netinet/udp_var.h> -#include <netinet/tcp.h> - -#include "ipsend.h" - -#if !defined(lint) -static const char sccsid[] = "@(#)sdlpi.c 1.3 10/30/95 (C)1995 Darren Reed"; -static const char rcsid[] = "@(#)$Id: sdlpi.c,v 2.8.2.2 2007/02/17 12:41:51 darrenr Exp $"; -#endif - -#define CHUNKSIZE 8192 -#define BUFSPACE (4*CHUNKSIZE) - - -/* - * Be careful to only include those defined in the flags option for the - * interface are included in the header size. - */ -int initdevice(device, tout) -char *device; -int tout; -{ - char devname[16], *s, buf[256]; - int i, fd; - - (void) strcpy(devname, "/dev/"); - (void) strncat(devname, device, sizeof(devname) - strlen(devname)); - - s = devname + 5; - while (*s && !ISDIGIT(*s)) - s++; - if (!*s) - { - fprintf(stderr, "bad device name %s\n", devname); - exit(-1); - } - i = atoi(s); - *s = '\0'; - /* - * For writing - */ - if ((fd = open(devname, O_RDWR)) < 0) - { - fprintf(stderr, "O_RDWR(1) "); - perror(devname); - exit(-1); - } - - if (dlattachreq(fd, i) == -1) - { - fprintf(stderr, "dlattachreq: DLPI error\n"); - exit(-1); - } - else if (dlokack(fd, buf) == -1) - { - fprintf(stderr, "dlokack(attach): DLPI error\n"); - exit(-1); - } -#ifdef DL_HP_RAWDLS - if (dlpromisconreq(fd, DL_PROMISC_SAP) < 0) - { - fprintf(stderr, "dlpromisconreq: DL_PROMISC_PHYS error\n"); - exit(-1); - } - else if (dlokack(fd, buf) < 0) - { - fprintf(stderr, "dlokack(promisc): DLPI error\n"); - exit(-1); - } - /* 22 is INSAP as per the HP-UX DLPI Programmer's Guide */ - - dlbindreq(fd, 22, 1, DL_HP_RAWDLS, 0, 0); -#else - dlbindreq(fd, ETHERTYPE_IP, 0, DL_CLDLS, 0, 0); -#endif - dlbindack(fd, buf); - /* - * write full headers - */ -#ifdef DLIOCRAW /* we require RAW DLPI mode, which is a Sun extension */ - if (strioctl(fd, DLIOCRAW, -1, 0, NULL) == -1) - { - fprintf(stderr, "DLIOCRAW error\n"); - exit(-1); - } -#endif - return fd; -} - - -/* - * output an IP packet onto a fd opened for /dev/nit - */ -int sendip(fd, pkt, len) -int fd, len; -char *pkt; -{ - struct strbuf dbuf, *dp = &dbuf, *cp = NULL; - int pri = 0; -#ifdef DL_HP_RAWDLS - struct strbuf cbuf; - dl_hp_rawdata_req_t raw; - - cp = &cbuf; - raw.dl_primitive = DL_HP_RAWDATA_REQ; - cp->len = sizeof(raw); - cp->buf = (char *)&raw; - cp->maxlen = cp->len; - pri = MSG_HIPRI; -#endif - /* - * construct NIT STREAMS messages, first control then data. - */ - dp->buf = pkt; - dp->len = len; - dp->maxlen = dp->len; - - if (putmsg(fd, cp, dp, pri) == -1) - { - perror("putmsg"); - return -1; - } - if (ioctl(fd, I_FLUSH, FLUSHW) == -1) - { - perror("I_FLUSHW"); - return -1; - } - return len; -} - |