Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/nil/eth/eth_header.h

    r6067284 raadf01e  
    3232
    3333/** @file
    34  * Ethernet protocol header definitions.
    35  * Based on the IEEE 802.3-2005
    36  */
    37 
    38 #ifndef NET_ETH_HEADER_H_
    39 #define NET_ETH_HEADER_H_
     34 *  Ethernet protocol header definitions.
     35 *  Based on the IEEE~802.3-2005
     36 */
     37
     38#ifndef __NET_ETH_HEADER_H__
     39#define __NET_ETH_HEADER_H__
    4040
    4141#include <sys/types.h>
    4242
    43 /** Ethernet address length. */
    44 #define ETH_ADDR        6
    45 
    46 /** Ethernet header preamble value. */
     43/** Ethernet address length.
     44 */
     45#define ETH_ADDR                6
     46
     47/** Ethernet header preamble value.
     48 */
    4749#define ETH_PREAMBLE    0x55
    4850
    49 /** Ethernet header start of frame value. */
    50 #define ETH_SFD         0xD5
    51 
    52 /** IEEE 802.2 unordered information control field. */
     51/** Ethernet header start of frame value.
     52 */
     53#define ETH_SFD                 0xD5
     54
     55/** IEEE 802.2 unordered information control field.
     56 */
    5357#define IEEE_8023_2_UI  0x03
    5458
    5559/** Type definition of the Ethernet header IEEE 802.3 + 802.2 + SNAP extensions.
    56  * @see eth_header_snap
    57  */
    58 typedef struct eth_header_snap eth_header_snap_t;
    59 
    60 /** Type definition of the Ethernet header IEEE 802.3 + 802.2 + SNAP extensions
    61  * pointer.
    62  *
    63  * @see eth_header_snap
    64  */
    65 typedef eth_header_snap_t *eth_header_snap_ref;
     60 *  @see eth_header_snap
     61 */
     62typedef struct eth_header_snap  eth_header_snap_t;
     63
     64/** Type definition of the Ethernet header IEEE 802.3 + 802.2 + SNAP extensions pointer.
     65 *  @see eth_header_snap
     66 */
     67typedef eth_header_snap_t *             eth_header_snap_ref;
    6668
    6769/** Type definition of the Ethernet header IEEE 802.3 + 802.2 + SNAP extensions.
    68  * @see eth_header_lsap
    69  */
    70 typedef struct eth_header_lsap eth_header_lsap_t;
     70 *  @see eth_header_lsap
     71 */
     72typedef struct eth_header_lsap  eth_header_lsap_t;
    7173
    7274/** Type definition of the Ethernet header IEEE 802.3 + 802.2 extension pointer.
    73  * @see eth_header_lsap
    74  */
    75 typedef eth_header_lsap_t *eth_header_lsap_ref;
     75 *  @see eth_header_lsap
     76 */
     77typedef eth_header_lsap_t *             eth_header_lsap_ref;
    7678
    7779/** Type definition of the Ethernet header LSAP extension.
    78  * @see eth_ieee_lsap
    79  */
    80 typedef struct eth_ieee_lsap eth_ieee_lsap_t;
     80 *  @see eth_ieee_lsap
     81 */
     82typedef struct eth_ieee_lsap    eth_ieee_lsap_t;
    8183
    8284/** Type definition of the Ethernet header LSAP extension pointer.
    83  * @see eth_ieee_lsap
    84  */
    85 typedef eth_ieee_lsap_t *eth_ieee_lsap_ref;
     85 *  @see eth_ieee_lsap
     86 */
     87typedef eth_ieee_lsap_t *               eth_ieee_lsap_ref;
    8688
    8789/** Type definition of the Ethernet header SNAP extension.
    88  * @see eth_snap
    89  */
    90 typedef struct eth_snap eth_snap_t;
     90 *  @see eth_snap
     91 */
     92typedef struct eth_snap         eth_snap_t;
    9193
    9294/** Type definition of the Ethernet header SNAP extension pointer.
    93  * @see eth_snap
    94  */
    95 typedef eth_snap_t *eth_snap_ref;
     95 *  @see eth_snap
     96 */
     97typedef eth_snap_t *            eth_snap_ref;
    9698
    9799/** Type definition of the Ethernet header preamble.
    98  * @see preamble
    99  */
    100 typedef struct eth_preamble eth_preamble_t;
     100 *  @see preamble
     101 */
     102typedef struct eth_preamble     eth_preamble_t;
    101103
    102104/** Type definition of the Ethernet header preamble pointer.
    103  * @see eth_preamble
    104  */
    105 typedef eth_preamble_t *eth_preamble_ref;
     105 *  @see eth_preamble
     106 */
     107typedef eth_preamble_t *        eth_preamble_ref;
    106108
    107109/** Type definition of the Ethernet header.
    108  * @see eth_header
    109  */
    110 typedef struct eth_header eth_header_t;
     110 *  @see eth_header
     111 */
     112typedef struct eth_header       eth_header_t;
    111113
    112114/** Type definition of the Ethernet header pointer.
    113  * @see eth_header
    114  */
    115 typedef eth_header_t *eth_header_ref;
    116 
    117 /** Ethernet header Link Service Access Point extension. */
    118 struct eth_ieee_lsap {
    119         /**
    120          * Destination Service Access Point identifier.
     115 *  @see eth_header
     116 */
     117typedef eth_header_t *          eth_header_ref;
     118
     119/** Ethernet header Link Service Access Point extension.
     120 */
     121struct eth_ieee_lsap{
     122        /** Destination Service Access Point identifier.
    121123         * The possible values are assigned by an IEEE committee.
    122124         */
    123125        uint8_t dsap;
    124        
    125         /**
    126          * Source Service Access Point identifier.
     126        /** Source Service Access Point identifier.
    127127         * The possible values are assigned by an IEEE committee.
    128128         */
    129129        uint8_t ssap;
    130        
    131         /**
    132          * Control parameter.
     130        /** Control parameter.
    133131         * The possible values are assigned by an IEEE committee.
    134132         */
     
    136134} __attribute__ ((packed));
    137135
    138 /** Ethernet header SNAP extension. */
    139 struct eth_snap {
    140         /** Protocol identifier or organization code. */
     136/** Ethernet header SNAP extension.
     137 */
     138struct eth_snap{
     139        /** Protocol identifier or organization code.
     140         */
    141141        uint8_t protocol[3];
    142        
    143         /**
    144          * Ethernet protocol identifier in the network byte order (big endian).
    145          * @see ethernet_protocols.h
     142        /** Ethernet protocol identifier in the network byte order (big endian).
     143         *  @see ethernet_protocols.h
    146144         */
    147145        uint16_t ethertype;
     
    149147
    150148/** Ethernet header preamble.
    151  *
    152  * Used for dummy devices.
    153  */
    154 struct eth_preamble {
    155         /**
    156          * Controlling preamble used for the frame transmission synchronization.
    157          * All should be set to ETH_PREAMBLE.
     149 *  Used for dummy devices.
     150 */
     151struct eth_preamble{
     152        /** Controlling preamble used for the frame transmission synchronization.
     153         *  All should be set to ETH_PREAMBLE.
    158154         */
    159155        uint8_t preamble[7];
    160        
    161         /**
    162          * Start of Frame Delimiter used for the frame transmission
    163          * synchronization.
    164          * Should be set to ETH_SFD.
     156        /** Start of Frame Delimiter used for the frame transmission synchronization.
     157         *  Should be set to ETH_SFD.
    165158         */
    166159        uint8_t sfd;
    167160} __attribute__ ((packed));
    168161
    169 /** Ethernet header. */
    170 struct eth_header {
    171         /** Destination host Ethernet address (MAC address). */
     162/** Ethernet header.
     163 */
     164struct eth_header{
     165        /** Destination host Ethernet address (MAC address).
     166         */
    172167        uint8_t destination_address[ETH_ADDR];
    173         /** Source host Ethernet address (MAC address). */
     168        /** Source host Ethernet address (MAC address).
     169         */
    174170        uint8_t source_address[ETH_ADDR];
    175        
    176         /**
    177          * Ethernet protocol identifier in the network byte order (big endian).
    178          * @see ethernet_protocols.h
     171        /** Ethernet protocol identifier in the network byte order (big endian).
     172         *  @see ethernet_protocols.h
    179173         */
    180174        uint16_t ethertype;
    181175} __attribute__ ((packed));
    182176
    183 /** Ethernet header IEEE 802.3 + 802.2 extension. */
    184 struct eth_header_lsap {
    185         /** Ethernet header. */
     177/** Ethernet header IEEE 802.3 + 802.2 extension.
     178 */
     179struct eth_header_lsap{
     180        /** Ethernet header.
     181         */
    186182        eth_header_t header;
    187        
    188         /**
    189          * LSAP extension.
    190          * If DSAP and SSAP are set to ETH_LSAP_SNAP the SNAP extension is being
    191          * used.
    192          * If DSAP and SSAP fields are equal to ETH_RAW the raw Ethernet packet
    193          * without any extensions is being used and the frame content starts
    194          * rigth after the two fields.
     183        /** LSAP extension.
     184         *  If DSAP and SSAP are set to ETH_LSAP_SNAP the SNAP extension is being used.
     185         *  If DSAP and SSAP fields are equal to ETH_RAW the raw Ethernet packet without any extensions is being used and the frame content starts rigth after the two fields.
    195186         */
    196187        eth_ieee_lsap_t lsap;
    197188} __attribute__ ((packed));
    198189
    199 /** Ethernet header IEEE 802.3 + 802.2 + SNAP extensions. */
    200 struct eth_header_snap {
    201         /** Ethernet header. */
     190/** Ethernet header IEEE 802.3 + 802.2 + SNAP extensions.
     191 */
     192struct eth_header_snap{
     193        /** Ethernet header.
     194         */
    202195        eth_header_t header;
    203        
    204         /**
    205          * LSAP extension.
    206          * If DSAP and SSAP are set to ETH_LSAP_SNAP the SNAP extension is being
    207          * used.
    208          * If DSAP and SSAP fields are equal to ETH_RAW the raw Ethernet packet
    209          * without any extensions is being used and the frame content starts
    210          * rigth after the two fields.
     196        /** LSAP extension.
     197         *  If DSAP and SSAP are set to ETH_LSAP_SNAP the SNAP extension is being used.
     198         *  If DSAP and SSAP fields are equal to ETH_RAW the raw Ethernet packet without any extensions is being used and the frame content starts rigth after the two fields.
    211199         */
    212200        eth_ieee_lsap_t lsap;
    213        
    214         /** SNAP extension. */
     201        /** SNAP extension.
     202        */
    215203        eth_snap_t snap;
    216204} __attribute__ ((packed));
    217205
    218 /** Ethernet Frame Check Sequence. */
    219 typedef uint32_t eth_fcs_t;
    220 
    221 /** Ethernet Frame Check Sequence pointer. */
    222 typedef eth_fcs_t *eth_fcs_ref;
     206/** Ethernet Frame Check Sequence.
     207 */
     208typedef uint32_t                eth_fcs_t;
     209
     210/** Ethernet Frame Check Sequence pointer.
     211 */
     212typedef eth_fcs_t *             eth_fcs_ref;
    223213
    224214#endif
Note: See TracChangeset for help on using the changeset viewer.