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