home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 3
/
hamradioversion3.0examsandprograms1992.iso
/
misc
/
9q920411
/
pktdrvr.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-26
|
4KB
|
120 lines
#ifndef _PKTDRVR_H
#define _PKTDRVR_H
#ifndef _MBUF_H
#include "mbuf.h"
#endif
#ifndef _IFACE_H
#include "iface.h"
#endif
#define PK_MAX 3 /* Add extra interrupt hooks if you increase this */
/* Packet driver interface classes */
#define CL_NONE 0
#define CL_ETHERNET 1
#define CL_PRONET_10 2
#define CL_IEEE8025 3
#define CL_OMNINET 4
#define CL_APPLETALK 5
#define CL_SERIAL_LINE 6
#define CL_STARLAN 7
#define CL_ARCNET 8
#define CL_AX25 9
#define CL_KISS 10
#define CL_IEEE8023 11
#define CL_FDDI 12
#define CL_INTERNET_X25 13
#define CL_LANSTAR 14
#define CL_SLFP 15
#define CL_NETROM 16
#define CL_PPP 17
#define NCLASS 18
#ifdef MSDOS
/* Packet driver interface types (not a complete list) */
#define TC500 1
#define PC2000 10
#define WD8003 14
#define PC8250 15
#define ANYTYPE 0xffff
/* Packet driver function call numbers. From Appendix B. */
#define DRIVER_INFO 1
#define ACCESS_TYPE 2
#define RELEASE_TYPE 3
#define SEND_PKT 4
#define TERMINATE 5
#define GET_ADDRESS 6
#define RESET_INTERFACE 7
#define GET_PARAMETERS 10
#define AS_SEND_PKT 11
#define SET_RCV_MODE 20
#define GET_RCV_MODE 21
#define SET_MULTICAST_LIST 22
#define GET_MULTICAST_LIST 23
#define GET_STATISTICS 24
#define SET_ADDRESS 25
/* Packet driver error return codes. From Appendix C. */
#define NO_ERROR 0
#define BAD_HANDLE 1 /* invalid handle number */
#define NO_CLASS 2 /* no interfaces of specified class found */
#define NO_TYPE 3 /* no interfaces of specified type found */
#define NO_NUMBER 4 /* no interfaces of specified number found */
#define BAD_TYPE 5 /* bad packet type specified */
#define NO_MULTICAST 6 /* this interface does not support multicast */
#define CANT_TERMINATE 7 /* this packet driver cannot terminate */
#define BAD_MODE 8 /* an invalid receiver mode was specified */
#define NO_SPACE 9 /* operation failed because of insufficient space */
#define TYPE_INUSE 10 /* the type had previously been accessed, and not released */
#define BAD_COMMAND 11 /* the command was out of range, or not implemented */
#define CANT_SEND 12 /* the packet couldn't be sent (usually hardware error) */
#define CANT_SET 13 /* hardware address couldn't be changed (> 1 handle open) */
#define BAD_ADDRESS 14 /* hardware address has bad length or format */
#define CANT_RESET 15 /* couldn't reset interface (> 1 handle open) */
typedef union {
struct {
unsigned char lo;
unsigned char hi;
} byte;
unsigned short word;
} ureg;
#define CARRY_FLAG 0x1
struct pktdrvr {
int class; /* Interface class (ether/slip/etc) */
int intno; /* Interrupt vector */
short handle1; /* Driver handle(s) */
short handle2;
short handle3;
struct mbuf *buffer; /* Currently allocated rx buffer */
struct mbuf *rcvq; /* Receive queue */
struct iface *iface;
};
extern struct pktdrvr Pktdrvr[];
/* In pktdrvr.c: */
INTERRUPT pkint __ARGS((unsigned short bp, unsigned short di,
unsigned short si, unsigned short ds, unsigned short es,
unsigned short dx, unsigned short cx, unsigned short bx,
unsigned short ax, unsigned short ip, unsigned short cs,
unsigned short flags, int dev));
void pk_tx __ARGS((int dev,void *arg1,void *unused));
int pk_send __ARGS((struct mbuf *bp,struct iface *iface,int32 gateway,int tos));
/* In pkvec.asm: */
INTERRUPT pkvec0 __ARGS((void));
INTERRUPT pkvec1 __ARGS((void));
INTERRUPT pkvec2 __ARGS((void));
#endif /* MSDOS */
#endif /* _PKTDRVR_H */