1 /* Copyright (C) 1997-2022 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16 <https://www.gnu.org/licenses/>. */ 17 18 #ifndef _NETINET_IF_TR_H 19 #define _NETINET_IF_TR_H 1 20 21 #include <sys/types.h> 22 #include <stdint.h> 23 24 /* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble 25 and FCS/CRC (frame check sequence). */ 26 #define TR_ALEN 6 /* Octets in one token-ring addr */ 27 #define TR_HLEN (sizeof (struct trh_hdr) + sizeof (struct trllc)) 28 #define AC 0x10 29 #define LLC_FRAME 0x40 30 31 /* LLC and SNAP constants */ 32 #define EXTENDED_SAP 0xAA 33 #define UI_CMD 0x03 34 35 /* This is an Token-Ring frame header. */ 36 struct trh_hdr 37 { 38 uint8_t ac; /* access control field */ 39 uint8_t fc; /* frame control field */ 40 uint8_t daddr[TR_ALEN]; /* destination address */ 41 uint8_t saddr[TR_ALEN]; /* source address */ 42 uint16_t rcf; /* route control field */ 43 uint16_t rseg[8]; /* routing registers */ 44 }; 45 46 /* This is an Token-Ring LLC structure */ 47 struct trllc 48 { 49 uint8_t dsap; /* destination SAP */ 50 uint8_t ssap; /* source SAP */ 51 uint8_t llc; /* LLC control field */ 52 uint8_t protid[3]; /* protocol id */ 53 uint16_t ethertype; /* ether type field */ 54 }; 55 56 /* Token-Ring statistics collection data. */ 57 struct tr_statistics 58 { 59 unsigned long rx_packets; /* total packets received */ 60 unsigned long tx_packets; /* total packets transmitted */ 61 unsigned long rx_bytes; /* total bytes received */ 62 unsigned long tx_bytes; /* total bytes transmitted */ 63 unsigned long rx_errors; /* bad packets received */ 64 unsigned long tx_errors; /* packet transmit problems */ 65 unsigned long rx_dropped; /* no space in linux buffers */ 66 unsigned long tx_dropped; /* no space available in linux */ 67 unsigned long multicast; /* multicast packets received */ 68 unsigned long transmit_collision; 69 70 /* detailed Token-Ring errors. See IBM Token-Ring Network 71 Architecture for more info */ 72 73 unsigned long line_errors; 74 unsigned long internal_errors; 75 unsigned long burst_errors; 76 unsigned long A_C_errors; 77 unsigned long abort_delimiters; 78 unsigned long lost_frames; 79 unsigned long recv_congest_count; 80 unsigned long frame_copied_errors; 81 unsigned long frequency_errors; 82 unsigned long token_errors; 83 unsigned long dummy1; 84 }; 85 86 /* source routing stuff */ 87 #define TR_RII 0x80 88 #define TR_RCF_DIR_BIT 0x80 89 #define TR_RCF_LEN_MASK 0x1f00 90 #define TR_RCF_BROADCAST 0x8000 /* all-routes broadcast */ 91 #define TR_RCF_LIMITED_BROADCAST 0xC000 /* single-route broadcast */ 92 #define TR_RCF_FRAME2K 0x20 93 #define TR_RCF_BROADCAST_MASK 0xC000 94 #define TR_MAXRIFLEN 18 95 96 #ifdef __USE_MISC 97 98 struct trn_hdr 99 { 100 uint8_t trn_ac; /* access control field */ 101 uint8_t trn_fc; /* field control field */ 102 uint8_t trn_dhost[TR_ALEN]; /* destination host */ 103 uint8_t trn_shost[TR_ALEN]; /* source host */ 104 uint16_t trn_rcf; /* route control field */ 105 uint16_t trn_rseg[8]; /* routing registers */ 106 }; 107 108 #endif 109 110 #endif /* netinet/if_tr.h */ 111