if_fddi.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:7k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * INET An implementation of the TCP/IP protocol suite for the LINUX
  3.  * operating system.  INET is implemented using the BSD Socket
  4.  * interface as the means of communication with the user level.
  5.  *
  6.  * Global definitions for the ANSI FDDI interface.
  7.  *
  8.  * Version: @(#)if_fddi.h 1.0.1 09/16/96
  9.  *
  10.  * Author: Lawrence V. Stefani, <stefani@lkg.dec.com>
  11.  *
  12.  * if_fddi.h is based on previous if_ether.h and if_tr.h work by
  13.  * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  14.  * Donald Becker, <becker@super.org>
  15.  * Alan Cox, <alan@redhat.com>
  16.  * Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
  17.  * Peter De Schrijver, <stud11@cc4.kuleuven.ac.be>
  18.  *
  19.  * This program is free software; you can redistribute it and/or
  20.  * modify it under the terms of the GNU General Public License
  21.  * as published by the Free Software Foundation; either version
  22.  * 2 of the License, or (at your option) any later version.
  23.  */
  24. #ifndef _LINUX_IF_FDDI_H
  25. #define _LINUX_IF_FDDI_H
  26. /*
  27.  *  Define max and min legal sizes.  The frame sizes do not include
  28.  *  4 byte FCS/CRC (frame check sequence).
  29.  */
  30. #define FDDI_K_ALEN 6 /* Octets in one FDDI address */
  31. #define FDDI_K_8022_HLEN 16 /* Total octets in 802.2 header */
  32. #define FDDI_K_SNAP_HLEN 21 /* Total octets in 802.2 SNAP header */
  33. #define FDDI_K_8022_ZLEN 16 /* Min octets in 802.2 frame sans FCS */
  34. #define FDDI_K_SNAP_ZLEN 21 /* Min octets in 802.2 SNAP frame sans FCS */
  35. #define FDDI_K_8022_DLEN 4475 /* Max octets in 802.2 payload */
  36. #define FDDI_K_SNAP_DLEN 4470 /* Max octets in 802.2 SNAP payload */
  37. #define FDDI_K_LLC_ZLEN 13 /* Min octets in LLC frame sans FCS */
  38. #define FDDI_K_LLC_LEN 4491 /* Max octets in LLC frame sans FCS */
  39. /* Define FDDI Frame Control (FC) Byte values */
  40. #define FDDI_FC_K_VOID 0x00
  41. #define FDDI_FC_K_NON_RESTRICTED_TOKEN 0x80
  42. #define FDDI_FC_K_RESTRICTED_TOKEN 0xC0
  43. #define FDDI_FC_K_SMT_MIN 0x41
  44. #define FDDI_FC_K_SMT_MAX     0x4F
  45. #define FDDI_FC_K_MAC_MIN 0xC1
  46. #define FDDI_FC_K_MAC_MAX    0xCF
  47. #define FDDI_FC_K_ASYNC_LLC_MIN 0x50
  48. #define FDDI_FC_K_ASYNC_LLC_DEF 0x54
  49. #define FDDI_FC_K_ASYNC_LLC_MAX 0x5F
  50. #define FDDI_FC_K_SYNC_LLC_MIN 0xD0
  51. #define FDDI_FC_K_SYNC_LLC_MAX 0xD7
  52. #define FDDI_FC_K_IMPLEMENTOR_MIN 0x60
  53. #define FDDI_FC_K_IMPLEMENTOR_MAX   0x6F
  54. #define FDDI_FC_K_RESERVED_MIN 0x70
  55. #define FDDI_FC_K_RESERVED_MAX 0x7F
  56. /* Define LLC and SNAP constants */
  57. #define FDDI_EXTENDED_SAP 0xAA
  58. #define FDDI_UI_CMD 0x03
  59. /* Define 802.2 Type 1 header */
  60. struct fddi_8022_1_hdr
  61. {
  62. __u8 dsap; /* destination service access point */
  63. __u8 ssap; /* source service access point */
  64. __u8 ctrl; /* control byte #1 */
  65. } __attribute__ ((packed));
  66. /* Define 802.2 Type 2 header */
  67. struct fddi_8022_2_hdr
  68. {
  69. __u8 dsap; /* destination service access point */
  70. __u8 ssap; /* source service access point */
  71. __u8 ctrl_1; /* control byte #1 */
  72. __u8 ctrl_2; /* control byte #2 */
  73. } __attribute__ ((packed));
  74. /* Define 802.2 SNAP header */
  75. #define FDDI_K_OUI_LEN 3
  76. struct fddi_snap_hdr
  77. {
  78. __u8 dsap; /* always 0xAA */
  79. __u8 ssap; /* always 0xAA */
  80. __u8 ctrl; /* always 0x03 */
  81. __u8 oui[FDDI_K_OUI_LEN]; /* organizational universal id */
  82. __u16 ethertype; /* packet type ID field */
  83. } __attribute__ ((packed));
  84. /* Define FDDI LLC frame header */
  85. struct fddihdr
  86. {
  87. __u8 fc; /* frame control */
  88. __u8 daddr[FDDI_K_ALEN]; /* destination address */
  89. __u8 saddr[FDDI_K_ALEN]; /* source address */
  90. union
  91. {
  92. struct fddi_8022_1_hdr llc_8022_1;
  93. struct fddi_8022_2_hdr llc_8022_2;
  94. struct fddi_snap_hdr llc_snap;
  95. } hdr;
  96. } __attribute__ ((packed));
  97. /* Define FDDI statistics structure */
  98. struct fddi_statistics
  99. {
  100. __u32 rx_packets; /* total packets received */
  101. __u32 tx_packets; /* total packets transmitted */
  102. __u32 rx_bytes; /* total bytes received */
  103. __u32 tx_bytes; /* total bytes transmitted */
  104. __u32 rx_errors; /* bad packets received */
  105. __u32 tx_errors; /* packet transmit problems */
  106. __u32 rx_dropped; /* no space in linux buffers */
  107. __u32 tx_dropped; /* no space available in linux */
  108. __u32 multicast; /* multicast packets received */
  109. __u32 transmit_collision; /* always 0 for FDDI */
  110. /* detailed rx_errors */
  111. __u32 rx_length_errors;
  112. __u32 rx_over_errors; /* receiver ring buff overflow */
  113. __u32 rx_crc_errors; /* recved pkt with crc error */
  114. __u32 rx_frame_errors; /* recv'd frame alignment error */
  115. __u32 rx_fifo_errors; /* recv'r fifo overrun */
  116. __u32 rx_missed_errors; /* receiver missed packet */
  117. /* detailed tx_errors */
  118. __u32 tx_aborted_errors;
  119. __u32 tx_carrier_errors;
  120. __u32 tx_fifo_errors;
  121. __u32 tx_heartbeat_errors;
  122. __u32 tx_window_errors;
  123. /* for cslip etc */
  124. __u32 rx_compressed;
  125. __u32 tx_compressed;
  126.    
  127. /* Detailed FDDI statistics.  Adopted from RFC 1512 */
  128. __u8 smt_station_id[8];
  129. __u32 smt_op_version_id;
  130. __u32 smt_hi_version_id;
  131. __u32 smt_lo_version_id;
  132. __u8 smt_user_data[32];
  133. __u32 smt_mib_version_id;
  134. __u32 smt_mac_cts;
  135. __u32 smt_non_master_cts;
  136. __u32 smt_master_cts;
  137. __u32 smt_available_paths;
  138. __u32 smt_config_capabilities;
  139. __u32 smt_config_policy;
  140. __u32 smt_connection_policy;
  141. __u32 smt_t_notify;
  142. __u32 smt_stat_rpt_policy;
  143. __u32 smt_trace_max_expiration;
  144. __u32 smt_bypass_present;
  145. __u32 smt_ecm_state;
  146. __u32 smt_cf_state;
  147. __u32 smt_remote_disconnect_flag;
  148. __u32 smt_station_status;
  149. __u32 smt_peer_wrap_flag;
  150. __u32 smt_time_stamp;
  151. __u32 smt_transition_time_stamp;
  152. __u32 mac_frame_status_functions;
  153. __u32 mac_t_max_capability;
  154. __u32 mac_tvx_capability;
  155. __u32 mac_available_paths;
  156. __u32 mac_current_path;
  157. __u8 mac_upstream_nbr[FDDI_K_ALEN];
  158. __u8 mac_downstream_nbr[FDDI_K_ALEN];
  159. __u8 mac_old_upstream_nbr[FDDI_K_ALEN];
  160. __u8 mac_old_downstream_nbr[FDDI_K_ALEN];
  161. __u32 mac_dup_address_test;
  162. __u32 mac_requested_paths;
  163. __u32 mac_downstream_port_type;
  164. __u8 mac_smt_address[FDDI_K_ALEN];
  165. __u32 mac_t_req;
  166. __u32 mac_t_neg;
  167. __u32 mac_t_max;
  168. __u32 mac_tvx_value;
  169. __u32 mac_frame_cts;
  170. __u32 mac_copied_cts;
  171. __u32 mac_transmit_cts;
  172. __u32 mac_error_cts;
  173. __u32 mac_lost_cts;
  174. __u32 mac_frame_error_threshold;
  175. __u32 mac_frame_error_ratio;
  176. __u32 mac_rmt_state;
  177. __u32 mac_da_flag;
  178. __u32 mac_una_da_flag;
  179. __u32 mac_frame_error_flag;
  180. __u32 mac_ma_unitdata_available;
  181. __u32 mac_hardware_present;
  182. __u32 mac_ma_unitdata_enable;
  183. __u32 path_tvx_lower_bound;
  184. __u32 path_t_max_lower_bound;
  185. __u32 path_max_t_req;
  186. __u32 path_configuration[8];
  187. __u32 port_my_type[2];
  188. __u32 port_neighbor_type[2];
  189. __u32 port_connection_policies[2];
  190. __u32 port_mac_indicated[2];
  191. __u32 port_current_path[2];
  192. __u8 port_requested_paths[3*2];
  193. __u32 port_mac_placement[2];
  194. __u32 port_available_paths[2];
  195. __u32 port_pmd_class[2];
  196. __u32 port_connection_capabilities[2];
  197. __u32 port_bs_flag[2];
  198. __u32 port_lct_fail_cts[2];
  199. __u32 port_ler_estimate[2];
  200. __u32 port_lem_reject_cts[2];
  201. __u32 port_lem_cts[2];
  202. __u32 port_ler_cutoff[2];
  203. __u32 port_ler_alarm[2];
  204. __u32 port_connect_state[2];
  205. __u32 port_pcm_state[2];
  206. __u32 port_pc_withhold[2];
  207. __u32 port_ler_flag[2];
  208. __u32 port_hardware_present[2];
  209. };
  210. #endif /* _LINUX_IF_FDDI_H */