home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nics / root.2 / usr / include / sys / scodlpi.h / scodlpi
Text File  |  1998-08-19  |  9KB  |  304 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef _IO_ND_SYS_SCODLPI_H  /* wrapper symbol for kernel use */
  12. #define _IO_ND_SYS_SCODLPI_H  /* subject to change without notice */
  13.  
  14. #ident "@(#)scodlpi.h    26.1"
  15. #ident "$Header: $"
  16. /*
  17.  *      Copyright (C) The Santa Cruz Operation, 1993-1997.
  18.  *      This Module contains Proprietary Information of
  19.  *      The Santa Cruz Operation and should be treated
  20.  *      as Confidential.
  21.  */
  22.  
  23. #if defined(__cplusplus)
  24. extern "C" {
  25. #endif
  26.  
  27. #include <sys/dlpi.h>
  28.  
  29. #ifndef dlpi_frame_test
  30. #define dlpi_frame_test
  31. #endif
  32.  
  33. /*
  34.  * scodlpi.h header for SCO specific extensions to AT&T DLPI V2.0
  35.  */
  36.  
  37. #define MAC_ADDR_SZ    6
  38.  
  39. /*
  40.  * Media types not defined by AT&T DLPI
  41.  */
  42.         /* SCO TCP/IP Drivers */
  43. #define    DL_SLIP        0x60    /* Serial-Line IP (RFC 1055) */
  44. #define    DL_PPP        0x61    /* Point-to-point Protocol (RFC 117[12]) */
  45. #define    DL_LOOP        0x62    /* Loopback */
  46.  
  47. #define LLC_OFF        0        /* LLC and SNAP off */
  48. #define LLC_SNAP    1        /* LLC 1 framing on for SNAP */
  49. #define LLC_1         2        /* LLC 1 framing on */
  50.  
  51. /* LLC commands and bits */
  52. #define LLC_CMD_UI    0x03
  53. #define LLC_CMD_XID    0xaf
  54. #define LLC_CMD_TEST    0xe3
  55. #define LLC_POLL_FINAL    0x10
  56. #define LLC_RESPONSE    0x01
  57.  
  58.     /* Values for dl_saptype */
  59. #define FR_ETHER_II    0
  60. #define FR_XNS        1
  61. #define FR_LLC        2
  62. #define FR_SNAP        3
  63. #define FR_ISDN        4
  64.  
  65.     /* Values for dl_srmode */
  66. #define SR_NON        0
  67. #define SR_AUTO        1
  68. #define SR_STACK    2
  69.  
  70.     /* Values for dl_sap in DL_BIND_REQ */
  71. #define SNAP_SAP    0x000000aa
  72. #define LLC_DEFAULT_SAP    0xfffffffe
  73. #define XNS_SAP        0x000000ff
  74.  
  75. struct mac_counters {
  76.     ulong    mac_bcast;        /* #Frames Broadcast */
  77.     ulong    mac_mcast;        /* #Frames Multicast */
  78.     ulong    mac_ucast;        /* #Frames Unicast */
  79.     ulong    mac_error;        /* #Frames with errors */
  80.     ulong    mac_octets;        /* #MAC Octets sent/received */
  81.     ulong    mac_queue_len;        /* #Frames queued for tx/on rx */
  82. };
  83.  
  84. struct dlpi_stats {
  85.     /* DLPI module info */
  86.     ulong    dl_nsaps;        /* #SAPs currently bound to DLPI */
  87.     ulong    dl_maxsaps;        /* Max. #SAPs usable */
  88.     ulong    dl_rxunbound;        /* #frames received not delivered */
  89.  
  90.     /* Source Routing info */
  91.     ulong    dl_nroutes;        /* #Source Routes currently in use */
  92.     ulong    dl_maxroutes;        /* Max #Source Routes usable */
  93.  
  94.     /* MAC Driver info */
  95.     ulong    mac_driver_version;
  96.     ulong    mac_media_type;        /* Ethernet/T-R/FDDI */
  97.     ulong    mac_max_sdu;        /* SDU MAX at MDI layer */
  98.     ulong    mac_min_sdu;        /* SDU MIN at MDI layer */
  99.     ulong    mac_addr_length;    /* ADDR SIZE at MDI layer */
  100.  
  101.     ulong    mac_stats_len;        /* Size of h/w dep. stats struct */
  102.     ulong    mac_ifspeed;        /* Speed of interface in bits/sec */
  103.     struct    mac_counters mac_tx;    /* Data collected for sends */
  104.     struct    mac_counters mac_rx;    /* Data collected for receives */
  105.  
  106.     ulong    mac_suspended;        /* is ddi8 driver suspended? */
  107.     ulong    mac_suspenddrops;    /* # of data frames dropped that 
  108.                      * were sent from stack while driver 
  109.                      * was suspended
  110.                      */
  111.  
  112.     ulong    mac_reserved[6];    /* reserved */
  113. };
  114.  
  115. struct dlpi_counters {
  116.     ulong    dl_bcast;        /* #Broadcast frames */
  117.     ulong    dl_mcast;        /* #Multicast frames */
  118.     ulong    dl_ucast_xid;        /* #Unicast LLC XID Frames */
  119.     ulong    dl_ucast_test;        /* #Unicast LLC TEST Frames */
  120.     ulong    dl_ucast;        /* #Unicast frames not covered above */
  121.     ulong    dl_error;        /* #Frames with errors */
  122.     ulong    dl_octets;        /* #MAC Octets sent/received */
  123.     ulong    dl_queue_len;        /* #Frames on the send/receive queue */
  124. };
  125.  
  126. #define DL_USER_SZ    32
  127. struct dlpi_sapstats {
  128.     ulong    dl_saptype;        /* Ethernet-II/XNS/LLC/SNAP */
  129.     ulong    dl_sap;        /* Bind address */
  130.     char    dl_user[DL_USER_SZ];    /* Name of module bound to DLPI */
  131.     ulong    dl_llcmode;        /* LLC_OFF or LLC_1 */
  132.  
  133.     struct dlpi_counters dl_tx;    /* Statistics for sends */
  134.     struct dlpi_counters dl_rx;    /* Statistics for receives */
  135.  
  136.     ulong    dl_srmode;        /* SR_NON or SR_AUTO or SR_STACK */
  137. };
  138.  
  139. #define SR_ROUTE_SZ    30
  140. struct sr_table_entry {
  141.     unchar    sr_remote_mac[MAC_ADDR_SZ]; /* Remote MAC address */
  142.     unchar    sr_state;        /* State machine's state */
  143.     unchar    sr_route_len;        /* #Valid hops in sr_route */
  144.     time_t    sr_timeout;        /* Time @ next timeout */
  145.     ulong    sr_max_pdu;    /* Max. PDU size allowed to sr_remote_mac */
  146.     ushort    sr_route[SR_ROUTE_SZ];    /* Best Route to sr_remote_mac */
  147. };
  148.  
  149. typedef struct sco_snap_sap {
  150.     ulong    prot_id;
  151.     ushort    type;
  152.     ushort    reserved;
  153. } sco_snap_sap_t;
  154.  
  155. /******************************************************************************
  156.  * SCO Specific DLPI Primitives.  This section describes the new DLPI
  157.  * primitives which replace LLI 3.1 MACIOC ioctls.
  158.  *
  159.  ******************************************************************************/
  160.  
  161. #define SCODLPI_BASE    500
  162. #define DL_CLR_STATISTICS_REQ    (SCODLPI_BASE+0x00)
  163. #define DL_SAP_STATISTICS_REQ    (SCODLPI_BASE+0x01)
  164. #define DL_SAP_STATISTICS_ACK    (SCODLPI_BASE+0x02)
  165. #define DL_SET_SRMODE_REQ    (SCODLPI_BASE+0x03)
  166. #define DL_SRTABLE_REQ        (SCODLPI_BASE+0x04)
  167. #define DL_SRTABLE_ACK        (SCODLPI_BASE+0x05)
  168. #define DL_SR_REQ        (SCODLPI_BASE+0x06)
  169. #define DL_SR_ACK        (SCODLPI_BASE+0x07)
  170. #define DL_SET_SR_REQ        (SCODLPI_BASE+0x08)
  171. #define DL_CLR_SR_REQ        (SCODLPI_BASE+0x09)
  172. #define DL_MCTABLE_REQ        (SCODLPI_BASE+0x0a)
  173. #define DL_MCTABLE_ACK        (SCODLPI_BASE+0x0b)
  174. #define DL_SET_SRPARMS_REQ    (SCODLPI_BASE+0x0c)
  175. #define DL_ISDN_MSG        (SCODLPI_BASE+0x0d)  /* ISDN message, must */
  176.                              /* be same as         */
  177.                              /* MAC_ISDN_MSG in    */
  178.                              /* mdi.h */
  179. #define DL_ENABALLMULTI_REQ    (SCODLPI_BASE+0x0e)
  180. #define DL_DISABALLMULTI_REQ    (SCODLPI_BASE+0x0f)
  181.  
  182. #define DL_FILTER_REQ        (SCODLPI_BASE+0x10)  /* filter set request */
  183.  
  184. #ifdef dlpi_frame_test
  185. #define DL_DLPI_BILOOPMODE    (SCODLPI_BASE+0x70)
  186. #endif
  187.  
  188. #define DLPIMIOC(x)           (('m' << 8) | (x))
  189. #define DLPI_ISDN_MDATA_ON    DLPIMIOC(11)
  190. #define DLPI_ISDN_MDATA_OFF    DLPIMIOC(12)
  191.  
  192. struct sco_prim {
  193.     ulong    dl_primitive;
  194. };
  195. typedef struct sco_prim dl_clr_statistics_req_t;
  196. typedef struct sco_prim dl_sap_statistics_req_t;
  197. typedef struct sco_prim dl_srtable_req_t;
  198. typedef struct sco_prim dl_mctable_req_t;
  199. typedef struct sco_prim dl_enaballmulti_req_t;
  200. typedef struct sco_prim dl_disaballmulti_req_t;
  201.  
  202. #ifdef dlpi_frame_test
  203. typedef struct {
  204.     ulong    dl_primitive;            /* DL_DLPI_BILOOPMODE */
  205.     ulong    dl_biloopmode;
  206. } dl_set_biloopmode_req_t;
  207. #endif
  208.  
  209. typedef struct {
  210.     ulong    dl_primitive;                /* DL_SET_SRMODE_REQ */
  211.     ulong    dl_srmode;
  212. } dl_set_srmode_req_t;
  213.  
  214. typedef struct {
  215.     ulong    dl_primitive;                /* DL_SR_REQ */
  216.     ulong    dl_addr_len;
  217.     ulong    dl_addr_offset;
  218. } dl_sr_req_t;
  219.  
  220. typedef struct {
  221.     ulong    dl_primitive;                /* DL_SET_SR_REQ */
  222.     ulong    dl_addr_len;
  223.     ulong    dl_addr_offset;
  224.     ulong    dl_route_len;
  225.     ulong    dl_route_offset;
  226. } dl_set_sr_req_t;
  227.  
  228. typedef struct {
  229.     ulong    dl_primitive;                /* DL_CLR_SR_REQ */
  230.     ulong    dl_addr_len;
  231.     ulong    dl_addr_offset;
  232. } dl_clr_sr_req_t;
  233.  
  234. typedef struct {
  235.     ulong    dl_primitive;                /* DL_SET_SRPARMS_REQ */
  236.     ulong    dl_parms_len;
  237.     ulong     dl_parms_offset;
  238. } dl_set_srparms_req_t;
  239.  
  240. typedef struct {
  241.     ulong    dl_primitive;            /* DL_SAP_STATISTICS_ACK */
  242.     ulong    dl_sapstats_len;
  243.     ulong    dl_sapstats_offset;        /* of struct dlpi_sap_stats */
  244. } dl_sap_statistics_ack_t;
  245.  
  246. typedef struct {
  247.     ulong    dl_primitive;            /* DL_SRTABLE_ACK */
  248.     ulong    dl_srtable_len;
  249.     time_t    dl_time_now;    /* lbolt */
  250.     ulong    dl_route_table_sz;/* Number of entrys in the table */
  251.     ulong    dl_routes_in_use;/* Number of entrys currently being used */
  252.     int    dl_tx_resp;    /* timeout for responding to rx */
  253.     int     dl_rx_ARE;     /* window for rejecting more AREs */
  254.     int    dl_rx_STE_bcs; /* # STE bcs before invalidating route entry
  255.                     * and find new route */
  256.     int    dl_rx_STE_ucs; /* # STE ucs before invalidating route entry
  257.                     * and find new route */
  258.     int     dl_max_tx;    /* upper limit for tx "recur" window */
  259.     int    dl_min_tx;    /* lower limit for tx "recur" window */
  260.     int    dl_tx_recur;    /* detected "recurs" before tx STE */
  261.     int    dl_ARE_disa;    /* disable sending ARE frames */
  262. } dl_srtable_ack_t;
  263.  
  264. typedef struct {
  265.     ulong    dl_primitive;            /* DL_MCTABLE_ACK */
  266.     ulong    dl_mctable_len;
  267.     ulong    dl_mctable_offset;
  268.     ulong    dl_all_mca;    /* all multicasts enabled */
  269.     ulong    dl_mca_count;    /* number of multicast addrs enabled */ 
  270. } dl_mctable_ack_t;
  271.  
  272. typedef struct {
  273.     ulong    dl_primitive;            /* DL_SR_ACK */
  274.     ulong    dl_srtablee_len;
  275.     ulong    dl_srtablee_offset;
  276. } dl_sr_ack_t;
  277.  
  278. /* valid values for filter direction */
  279.  
  280. #define DL_FILTER_INCOMING 0
  281. #define DL_FILTER_OUTGOING 1
  282.  
  283. /*
  284.  * DL_FILTER_REQ
  285.  */
  286. typedef struct {
  287.         ulong   dl_primitive;           /* DL_FILTER_REQ */
  288.         ulong   sap;                    /* the SAP */
  289.         ulong   sap_protid;             /* for SNAP SAPs */
  290.     int    direction;        /* incoming or outgoing */
  291. } dl_setfilter_req_t ;
  292.  
  293. #define DL_CLR_SR_REQ_SIZE sizeof(dl_clr_sr_req_t)
  294. #define DL_SET_SRPARMS_REQ_SIZE sizeof(dl_set_srparms_req_t)
  295. #define DL_ENABALLMULTI_REQ_SIZE sizeof(dl_enaballmulti_req_t)
  296. #define DL_DISABALLMULTI_REQ_SIZE sizeof(dl_disaballmulti_req_t)
  297. #define DL_FILTER_REQ_SIZE sizeof(dl_setfilter_req_t)
  298.  
  299. #if defined(__cplusplus)
  300.     }
  301. #endif
  302.  
  303. #endif    /* _IO_ND_SYS_SCODLPI_H */
  304.