root/include/uapi/linux/if_fddi.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
   2 /*
   3  * INET         An implementation of the TCP/IP protocol suite for the LINUX
   4  *              operating system.  INET is implemented using the BSD Socket
   5  *              interface as the means of communication with the user level.
   6  *
   7  *              Global definitions for the ANSI FDDI interface.
   8  *
   9  * Version:     @(#)if_fddi.h   1.0.3   Oct  6 2018
  10  *
  11  * Author:      Lawrence V. Stefani, <stefani@yahoo.com>
  12  * Maintainer:  Maciej W. Rozycki, <macro@linux-mips.org>
  13  *
  14  *              if_fddi.h is based on previous if_ether.h and if_tr.h work by
  15  *                      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  16  *                      Donald Becker, <becker@super.org>
  17  *                      Alan Cox, <alan@lxorguk.ukuu.org.uk>
  18  *                      Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
  19  *                      Peter De Schrijver, <stud11@cc4.kuleuven.ac.be>
  20  *
  21  *              This program is free software; you can redistribute it and/or
  22  *              modify it under the terms of the GNU General Public License
  23  *              as published by the Free Software Foundation; either version
  24  *              2 of the License, or (at your option) any later version.
  25  */
  26 #ifndef _UAPI_LINUX_IF_FDDI_H
  27 #define _UAPI_LINUX_IF_FDDI_H
  28 
  29 #include <linux/types.h>
  30 
  31 /*
  32  *  Define max and min legal sizes.  The frame sizes do not include
  33  *  4 byte FCS/CRC (frame check sequence).
  34  */
  35 #define FDDI_K_ALEN             6       /* Octets in one FDDI address */
  36 #define FDDI_K_8022_HLEN        16      /* Total octets in 802.2 header */
  37 #define FDDI_K_SNAP_HLEN        21      /* Total octets in 802.2 SNAP header */
  38 #define FDDI_K_8022_ZLEN        16      /* Min octets in 802.2 frame sans
  39                                            FCS */
  40 #define FDDI_K_SNAP_ZLEN        21      /* Min octets in 802.2 SNAP frame sans
  41                                            FCS */
  42 #define FDDI_K_8022_DLEN        4475    /* Max octets in 802.2 payload */
  43 #define FDDI_K_SNAP_DLEN        4470    /* Max octets in 802.2 SNAP payload */
  44 #define FDDI_K_LLC_ZLEN         13      /* Min octets in LLC frame sans FCS */
  45 #define FDDI_K_LLC_LEN          4491    /* Max octets in LLC frame sans FCS */
  46 #define FDDI_K_OUI_LEN          3       /* Octets in OUI in 802.2 SNAP
  47                                            header */
  48 
  49 /* Define FDDI Frame Control (FC) Byte masks */
  50 #define FDDI_FC_K_CLASS_MASK            0x80    /* class bit */
  51 #define FDDI_FC_K_CLASS_SYNC            0x80
  52 #define FDDI_FC_K_CLASS_ASYNC           0x00
  53 #define FDDI_FC_K_ALEN_MASK             0x40    /* address length bit */
  54 #define FDDI_FC_K_ALEN_48               0x40
  55 #define FDDI_FC_K_ALEN_16               0x00
  56 #define FDDI_FC_K_FORMAT_MASK           0x30    /* format bits */
  57 #define FDDI_FC_K_FORMAT_FUTURE         0x30
  58 #define FDDI_FC_K_FORMAT_IMPLEMENTOR    0x20
  59 #define FDDI_FC_K_FORMAT_LLC            0x10
  60 #define FDDI_FC_K_FORMAT_MANAGEMENT     0x00
  61 #define FDDI_FC_K_CONTROL_MASK          0x0f    /* control bits */
  62 
  63 /* Define FDDI Frame Control (FC) Byte specific values */
  64 #define FDDI_FC_K_VOID                  0x00
  65 #define FDDI_FC_K_NON_RESTRICTED_TOKEN  0x80
  66 #define FDDI_FC_K_RESTRICTED_TOKEN      0xC0
  67 #define FDDI_FC_K_SMT_MIN               0x41
  68 #define FDDI_FC_K_SMT_MAX               0x4F
  69 #define FDDI_FC_K_MAC_MIN               0xC1
  70 #define FDDI_FC_K_MAC_MAX               0xCF
  71 #define FDDI_FC_K_ASYNC_LLC_MIN         0x50
  72 #define FDDI_FC_K_ASYNC_LLC_DEF         0x54
  73 #define FDDI_FC_K_ASYNC_LLC_MAX         0x5F
  74 #define FDDI_FC_K_SYNC_LLC_MIN          0xD0
  75 #define FDDI_FC_K_SYNC_LLC_MAX          0xD7
  76 #define FDDI_FC_K_IMPLEMENTOR_MIN       0x60
  77 #define FDDI_FC_K_IMPLEMENTOR_MAX       0x6F
  78 #define FDDI_FC_K_RESERVED_MIN          0x70
  79 #define FDDI_FC_K_RESERVED_MAX          0x7F
  80 
  81 /* Define LLC and SNAP constants */
  82 #define FDDI_EXTENDED_SAP               0xAA
  83 #define FDDI_UI_CMD                     0x03
  84 
  85 /* Define 802.2 Type 1 header */
  86 struct fddi_8022_1_hdr {
  87         __u8    dsap;                   /* destination service access point */
  88         __u8    ssap;                   /* source service access point */
  89         __u8    ctrl;                   /* control byte #1 */
  90 } __attribute__((packed));
  91 
  92 /* Define 802.2 Type 2 header */
  93 struct fddi_8022_2_hdr {
  94         __u8    dsap;                   /* destination service access point */
  95         __u8    ssap;                   /* source service access point */
  96         __u8    ctrl_1;                 /* control byte #1 */
  97         __u8    ctrl_2;                 /* control byte #2 */
  98 } __attribute__((packed));
  99 
 100 /* Define 802.2 SNAP header */
 101 struct fddi_snap_hdr {
 102         __u8    dsap;                   /* always 0xAA */
 103         __u8    ssap;                   /* always 0xAA */
 104         __u8    ctrl;                   /* always 0x03 */
 105         __u8    oui[FDDI_K_OUI_LEN];    /* organizational universal id */
 106         __be16  ethertype;              /* packet type ID field */
 107 } __attribute__((packed));
 108 
 109 /* Define FDDI LLC frame header */
 110 struct fddihdr {
 111         __u8    fc;                     /* frame control */
 112         __u8    daddr[FDDI_K_ALEN];     /* destination address */
 113         __u8    saddr[FDDI_K_ALEN];     /* source address */
 114         union {
 115                 struct fddi_8022_1_hdr  llc_8022_1;
 116                 struct fddi_8022_2_hdr  llc_8022_2;
 117                 struct fddi_snap_hdr    llc_snap;
 118         } hdr;
 119 } __attribute__((packed));
 120 
 121 
 122 #endif /* _UAPI_LINUX_IF_FDDI_H */

/* [<][>][^][v][top][bottom][index][help] */