home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / devcon / milan_1991 / devcon91.2 / network / sana2 / include / sana2device.h < prev    next >
C/C++ Source or Header  |  1992-09-01  |  8KB  |  261 lines

  1. #ifndef SANA2_SANA2DEVICE_H
  2. #define SANA2_SANA2DEVICE_H 1
  3. /*
  4. **    $Filename: sana2device.h $
  5. **    $Release: Developer Information$
  6. **    $Revision: 1.10 $
  7. **    $Date: 91/05/14 $
  8. **
  9. **    Structure definitions for SANA-II devices.
  10. **
  11. **    (C) Copyright 1991 Raymond S. Brand
  12. **        All Rights Reserved
  13. **
  14. **    (C) Copyright 1991 Commodore-Amiga Inc.
  15. **        All Rights Reserved
  16. */
  17.  
  18. /*
  19. ** Contributions from:
  20. **    Raymond S. Brand,   rsbx@cbmvax.commodore.com,  (215) 431-9100
  21. **    Martin Hunt,      martin@cbmvax.commodore.com,  (215) 431-9100
  22. **    Perry Kivolowitz,           ASDG Incorporated,  (608) 273-6585
  23. */
  24.  
  25.  
  26. #ifndef EXEC_TYPES_H
  27. #include <exec/types.h>
  28. #endif /* !EXEC_TYPES_H */
  29. #ifndef EXEC_PORTS_H
  30. #include <exec/ports.h>
  31. #endif /* !EXEC_PORTS_H */
  32. #ifndef EXEC_IO_H
  33. #include <exec/io.h>
  34. #endif /* !EXEC_IO_H */
  35. #ifndef DEVICES_TIMER_H
  36. #include <devices/timer.h>
  37. #endif /* !DEVICES_TIMER_H */
  38. #ifndef LIBRARIES_NETBUFF_H
  39. #include <libraries/netbuff.h>
  40. #endif /* !LIBRARIES_NETBUFF_H */
  41.  
  42.  
  43. #define SANA2_MAX_ADDR_BITS    (128)
  44. #define SANA2_MAX_ADDR_BYTES    ((SANA2_MAX_ADDR_BITS+7)/8)
  45.  
  46.  
  47. struct IOSana2Req
  48.     {
  49.     struct Message S2io_Message;
  50.     struct Device *S2io_Device;    /* device node pointer        */
  51.     struct Unit   *S2io_Unit;    /* unit (driver private)    */
  52.  
  53.     UWORD S2io_Command;        /* device command        */
  54.     UBYTE S2io_Flags;        /* command flags        */
  55.     BYTE  S2io_Error;        /* generic error or warning    */
  56.     ULONG S2io_WireError;        /* wire type specific error    */
  57.  
  58.     struct Sana2PacketType *S2io_PacketType;    /* packet type    */
  59.     UBYTE S2io_SrcAddr[SANA2_MAX_ADDR_BYTES];    /* source addr    */
  60.     UBYTE S2io_DstAddr[SANA2_MAX_ADDR_BYTES];    /* dest address    */
  61.     ULONG S2io_DataLength;        /* from header            */
  62.     struct NetBuff S2io_Body;    /* packet data            */
  63.     void *S2io_StatData;        /* statics data pointer        */
  64.     };
  65.  
  66.  
  67. /*
  68.  * defines for the S2io_Flags field
  69.  */
  70.  
  71. #define SANA2IOB_RAW    (7)        /* raw packet IO requested    */
  72. #define SANA2IOF_RAW    (1<<SANA2IOB_RAW)
  73.  
  74. #define    SANA2IOB_BCAST    (6)        /* broadcast packet (received)    */
  75. #define    SANA2IOF_BCAST    (1<<SANA2IOB_BCAST)
  76.  
  77. #define    SANA2IOB_MCAST    (5)        /* multicast packet (received)    */
  78. #define    SANA2IOF_MCAST    (1<<SANA2IOB_MCAST)
  79.  
  80. #define SANA2IOB_QUICK    (IOB_QUICK)    /* quick IO requested (0)    */
  81. #define SANA2IOF_QUICK    (IOF_QUICK)
  82.  
  83.  
  84. /*
  85.  * defines for OpenDevice()
  86.  */
  87.  
  88. #define SANA2OPB_MINE    (0)        /* exclusive access requested    */
  89. #define SANA2OPF_MINE    (1<<SANA2OPB_MINE)
  90.  
  91. #define SANA2OPB_PROM    (1)        /* promiscuous mode requested    */
  92. #define SANA2OPF_PROM    (1<<SANA2OPB_PROM)
  93.  
  94.  
  95. struct Sana2PacketType
  96.     {
  97.     ULONG CanonicalType;        /* used by higher levels    */
  98.     ULONG Magic;            /* interpretation code        */
  99.     ULONG Length;            /* length of match data        */
  100.     UBYTE *Match;            /* bytes to compare        */
  101.     UBYTE *Mask;            /* mask for comparison        */
  102.     };
  103.  
  104.  
  105. struct Sana2DeviceQuery
  106.     {
  107.     /*
  108.      * Standard information
  109.      */
  110.     ULONG    SizeAvailable;        /* bytes available        */
  111.     ULONG    SizeSupplied;        /* bytes supplied        */
  112.     LONG    DevQueryFormat;        /* this is type 0        */
  113.     LONG    DeviceLevel;        /* this document is level 0    */
  114.     /*
  115.      * Common information
  116.      */
  117.     UWORD    AddrFieldSize;        /* address size in bits        */
  118.     ULONG    MTU;            /* maximum packet data size    */
  119.     LONG    bps;            /* line rate (bits/sec)        */
  120.     LONG    HardwareType;        /* what the wire is        */
  121.     /*
  122.      * Format specific information
  123.      */
  124.     };
  125.  
  126.  
  127. /*
  128.  * defined Hardware types
  129.  */
  130.  
  131. #define S2WireType_Ethernet        1
  132. #define S2WireType_Arcnet        2
  133.  
  134.  
  135. struct Sana2PacketTypeStats
  136.     {
  137.     LONG PacketsSent;        /* transmitted count        */
  138.     LONG PacketsReceived;        /* received count        */
  139.     LONG BytesSent;            /* bytes transmitted count    */
  140.     LONG BytesReceived;        /* bytes received count        */
  141.     LONG PacketsDropped;        /* packets dropped count    */
  142.     };
  143.  
  144.  
  145. struct Sana2SpecialStatRecord
  146.     {
  147.     ULONG Type;            /* statistic identifier        */
  148.     LONG Count;            /* the statistic        */
  149.     char *String;            /* statistic name        */
  150.     };
  151.  
  152.  
  153. struct Sana2SpecialStatHeader
  154.     {
  155.     ULONG RecordCountMax;        /* room available        */
  156.     ULONG RecordCountSupplied;    /* number supplied        */
  157.     /* struct Sana2SpecialStatRecord[RecordCountMax]; */
  158.     };
  159.  
  160.  
  161. struct Sana2DeviceStats
  162.     {
  163.     LONG packets_received;        /* received count        */
  164.     LONG packets_sent;        /* transmitted count        */
  165.     LONG framing_errors;        /* framming errors found    */
  166.     LONG bad_data;            /* bad packets received        */
  167.     LONG hard_misses;        /* hardware miss count        */
  168.     LONG soft_misses;        /* software miss count        */
  169.     LONG unknown_types_received;    /* orphan count            */
  170.     LONG fifo_overruns;        /* hardware overruns        */
  171.     LONG fifo_underruns;        /* hardware underruns        */
  172.     LONG reconfigurations;        /* network reconfigurations    */
  173.     struct timeval last_start;    /* time of last online        */
  174.     };
  175.  
  176.  
  177. /*
  178.  * Device Commands
  179.  */
  180.  
  181. #define SANA2_CMD_START            (CMD_NONSTD)
  182.  
  183. #define SANA2CMD_DEVICEQUERY        (SANA2_CMD_START+ 0)
  184. #define SANA2CMD_GETSTATIONADDRESS    (SANA2_CMD_START+ 1)
  185. #define SANA2CMD_CONFIGINTERFACE    (SANA2_CMD_START+ 2)
  186. #define SANA2CMD_ADDSTATIONALIAS    (SANA2_CMD_START+ 3)
  187. #define SANA2CMD_DELSTATIONALIAS    (SANA2_CMD_START+ 4)
  188. #define SANA2CMD_ADDMULTICASTADDRESS    (SANA2_CMD_START+ 5)
  189. #define SANA2CMD_DELMULTICASTADDRESS    (SANA2_CMD_START+ 6)
  190. #define SANA2CMD_MULTICAST        (SANA2_CMD_START+ 7)
  191. #define SANA2CMD_BROADCAST        (SANA2_CMD_START+ 8)
  192. #define SANA2CMD_TRACKTYPE        (SANA2_CMD_START+ 9)
  193. #define SANA2CMD_UNTRACKTYPE        (SANA2_CMD_START+10)
  194. #define SANA2CMD_GETTYPESTATS        (SANA2_CMD_START+11)
  195. #define SANA2CMD_GETSPECIALSTATS    (SANA2_CMD_START+12)
  196. #define SANA2CMD_GETGLOBALSTATS        (SANA2_CMD_START+13)
  197. #define SANA2CMD_ONEVENT        (SANA2_CMD_START+14)
  198. #define SANA2CMD_READORPHAN        (SANA2_CMD_START+15)
  199. #define SANA2CMD_ONLINE            (SANA2_CMD_START+16)
  200. #define SANA2CMD_OFFLINE        (SANA2_CMD_START+17)
  201.  
  202. #define SANA2_CMD_END            (SANA2_CMD_START+18)
  203.  
  204.  
  205. /*
  206.  * defined errors for S2io_Error
  207.  */
  208.  
  209. #define S2ERR_NO_ERROR        0    /* peachy-keen            */
  210. #define S2ERR_NO_RESOURCES    1    /* resource allocation failure    */
  211. #define S2ERR_UNKNOWN_ENTITY    2    /* unable to find something    */
  212. #define S2ERR_BAD_ARGUMENT    3    /* garbage somewhere        */
  213. #define S2ERR_BAD_STATE        4    /* inappropriate state        */
  214. #define S2ERR_BAD_ADDRESS    5    /* who?                */
  215. #define    S2ERR_MTU_EXCEEDED    6    /* too much to chew        */
  216. #define    S2ERR_BAD_PROTOCOL    7    /* bad packet type structure    */
  217. #define S2ERR_NOT_SUPPORTED    8    /* command not supported    */
  218. #define S2ERR_SOFTWARE        9    /* software error detected    */
  219.  
  220.  
  221. /*
  222.  * defined errors for S2io_WireError
  223.  */
  224.  
  225. #define S2WERR_GENERIC_ERROR    0    /* no specific info available    */
  226. #define    S2WERR_NOT_CONFIGURED    1    /* unit not configured        */
  227. #define S2WERR_UNIT_ONLINE    2    /* unit is currently online    */
  228. #define S2WERR_UNIT_OFFLINE    3    /* unit is currently offline    */
  229. #define    S2WERR_ALREADY_TRACKED    4    /* protocol already tracked    */
  230. #define    S2WERR_NOT_TRACKED    5    /* protocol not tracked        */
  231. #define S2WERR_NETBUFF_ERROR    6    /* netbuff.lib returned error    */
  232. #define S2WERR_SRC_ADDRESS    7    /* source address problem    */
  233. #define S2WERR_DST_ADDRESS    8    /* destination address problem    */
  234. #define S2WERR_BAD_BROADCAST    9    /* broadcast address problem    */
  235. #define S2WERR_BAD_MULTICAST    10    /* multicast address problem    */
  236. #define S2WERR_ALIAS_LIST_FULL    11    /* station alias list full    */
  237. #define S2WERR_BAD_ALIAS    12    /* bad station alias        */
  238. #define S2WERR_MULTICAST_FULL    13    /* multicast address list full    */
  239. #define S2WERR_BAD_EVENT    14    /* unsupported event class      */
  240. #define S2WERR_BAD_STATDATA    15    /* statdata failed sanity check */
  241. #define S2WERR_PROTOCOL_UNKNOWN    16    /* unknown protocol type        */
  242. #define S2WERR_IS_CONFIGURED    17    /* attempt to config twice      */
  243. #define S2WERR_NULL_POINTER    18    /* null pointer detected        */
  244.  
  245.  
  246. /*
  247.  * defined events
  248.  */
  249.  
  250. #define    S2EVENT_ERROR        0    /* error catch all        */
  251. #define    S2EVENT_TX        1    /* transmitter error catch all    */
  252. #define    S2EVENT_RX        2    /* receiver error catch all    */
  253. #define    S2EVENT_ONLINE        3    /* unit is in service        */
  254. #define    S2EVENT_OFFLINE        4    /* unit is not in service    */
  255. #define    S2EVENT_NETBUF        5    /* NetBuff error catch all    */
  256. #define S2EVENT_HARDWARE    6    /* hardware error catch all    */
  257. #define S2EVENT_SOFTWARE    7    /* software error catch all    */
  258.  
  259.  
  260. #endif    /* SANA2_SANA2DEVICE_H */
  261.