#ifndef _ENET_H #define _ENET_H /* Generic Ethernet constants and templates */ #ifndef _GLOBAL_H #include "global.h" #endif #ifndef _MBUF_H #include "mbuf.h" #endif #ifndef _IFACE_H #include "iface.h" #endif #define EADDR_LEN 6 /* Format of an Ethernet header */ struct ether { char dest[EADDR_LEN]; char source[EADDR_LEN]; int16 type; }; #define ETHERLEN 14 /* Ethernet broadcast address */ extern char Ether_bdcst[]; /* Ethernet type fields */ #define IP_TYPE 0x800 /* Type field for IP */ #define ARP_TYPE 0x806 /* Type field for ARP */ #define REVARP_TYPE 0x8035 /* Type field for reverse ARP */ #define RUNT 60 /* smallest legal size packet, no fcs */ #define GIANT 1514 /* largest legal size packet, no fcs */ #define MAXTRIES 16 /* Maximum number of transmission attempts */ /* In file enet.c: */ char *pether __ARGS((char *out,char *addr)); int gether __ARGS((char *out,char *cp)); int enet_send __ARGS((struct mbuf *bp,struct iface *iface,int32 gateway,int tos)); int enet_output __ARGS((struct iface *iface,char dest[],char source[],int16 type, struct mbuf *data)); void eproc __ARGS((struct iface *iface,struct mbuf *bp)); /* In enethdr.c: */ struct mbuf *htonether __ARGS((struct ether *ether,struct mbuf *data)); int ntohether __ARGS((struct ether *ether,struct mbuf **bpp)); #endif /* _ENET_H */