Ignore:
File:
1 edited

Legend:

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

    rfe8dfa6 r4eca056  
    4343#include <net/device.h>
    4444#include <adt/measured_strings.h>
    45 
    46 /** Ethernet address length. */
    47 #define ETH_ADDR  6
    48 
    49 /** Ethernet header preamble value. */
    50 #define ETH_PREAMBLE  0x55
    51 
    52 /** Ethernet header start of frame value. */
    53 #define ETH_SFD  0xD5
    54 
    55 /** IEEE 802.2 unordered information control field. */
    56 #define IEEE_8023_2_UI  0x03
    57 
    58 /** Type definition of the Ethernet header IEEE 802.3 + 802.2 + SNAP extensions.
    59  * @see eth_header_snap
    60  */
    61 typedef struct eth_header_snap eth_header_snap_t;
    62 
    63 /** Type definition of the Ethernet header IEEE 802.3 + 802.2 + SNAP extensions.
    64  * @see eth_header_lsap
    65  */
    66 typedef struct eth_header_lsap eth_header_lsap_t;
    67 
    68 /** Type definition of the Ethernet header LSAP extension.
    69  * @see eth_ieee_lsap
    70  */
    71 typedef struct eth_ieee_lsap eth_ieee_lsap_t;
    72 
    73 /** Type definition of the Ethernet header SNAP extension.
    74  * @see eth_snap
    75  */
    76 typedef struct eth_snap eth_snap_t;
    77 
    78 /** Type definition of the Ethernet header preamble.
    79  * @see preamble
    80  */
    81 typedef struct eth_preamble eth_preamble_t;
    82 
    83 /** Type definition of the Ethernet header.
    84  * @see eth_header
    85  */
    86 typedef struct eth_header eth_header_t;
    87 
    88 /** Ethernet header Link Service Access Point extension. */
    89 struct eth_ieee_lsap {
    90         /**
    91          * Destination Service Access Point identifier.
    92          * The possible values are assigned by an IEEE committee.
    93          */
    94         uint8_t dsap;
    95        
    96         /**
    97          * Source Service Access Point identifier.
    98          * The possible values are assigned by an IEEE committee.
    99          */
    100         uint8_t ssap;
    101        
    102         /**
    103          * Control parameter.
    104          * The possible values are assigned by an IEEE committee.
    105          */
    106         uint8_t ctrl;
    107 } __attribute__ ((packed));
    108 
    109 /** Ethernet header SNAP extension. */
    110 struct eth_snap {
    111         /** Protocol identifier or organization code. */
    112         uint8_t protocol[3];
    113        
    114         /**
    115          * Ethernet protocol identifier in the network byte order (big endian).
    116          * @see ethernet_protocols.h
    117          */
    118         uint16_t ethertype;
    119 } __attribute__ ((packed));
    120 
    121 /** Ethernet header preamble.
    122  *
    123  * Used for dummy devices.
    124  */
    125 struct eth_preamble {
    126         /**
    127          * Controlling preamble used for the frame transmission synchronization.
    128          * All should be set to ETH_PREAMBLE.
    129          */
    130         uint8_t preamble[7];
    131        
    132         /**
    133          * Start of Frame Delimiter used for the frame transmission
    134          * synchronization.
    135          * Should be set to ETH_SFD.
    136          */
    137         uint8_t sfd;
    138 } __attribute__ ((packed));
    139 
    140 /** Ethernet header. */
    141 struct eth_header {
    142         /** Destination host Ethernet address (MAC address). */
    143         uint8_t destination_address[ETH_ADDR];
    144         /** Source host Ethernet address (MAC address). */
    145         uint8_t source_address[ETH_ADDR];
    146        
    147         /**
    148          * Ethernet protocol identifier in the network byte order (big endian).
    149          * @see ethernet_protocols.h
    150          */
    151         uint16_t ethertype;
    152 } __attribute__ ((packed));
    153 
    154 /** Ethernet header IEEE 802.3 + 802.2 extension. */
    155 struct eth_header_lsap {
    156         /** Ethernet header. */
    157         eth_header_t header;
    158        
    159         /**
    160          * LSAP extension.
    161          * If DSAP and SSAP are set to ETH_LSAP_SNAP the SNAP extension is being
    162          * used.
    163          * If DSAP and SSAP fields are equal to ETH_RAW the raw Ethernet packet
    164          * without any extensions is being used and the frame content starts
    165          * rigth after the two fields.
    166          */
    167         eth_ieee_lsap_t lsap;
    168 } __attribute__ ((packed));
    169 
    170 /** Ethernet header IEEE 802.3 + 802.2 + SNAP extensions. */
    171 struct eth_header_snap {
    172         /** Ethernet header. */
    173         eth_header_t header;
    174        
    175         /**
    176          * LSAP extension.
    177          * If DSAP and SSAP are set to ETH_LSAP_SNAP the SNAP extension is being
    178          * used.
    179          * If DSAP and SSAP fields are equal to ETH_RAW the raw Ethernet packet
    180          * without any extensions is being used and the frame content starts
    181          * rigth after the two fields.
    182          */
    183         eth_ieee_lsap_t lsap;
    184        
    185         /** SNAP extension. */
    186         eth_snap_t snap;
    187 } __attribute__ ((packed));
    188 
    189 /** Ethernet Frame Check Sequence. */
    190 typedef uint32_t eth_fcs_t;
    19145
    19246/** Type definition of the Ethernet global data.
     
    23791        /** Actual device hardware address. */
    23892        measured_string_t *addr;
    239        
    24093        /** Actual device hardware address data. */
    241         uint8_t *addr_data;
     94        char *addr_data;
    24295};
    24396
Note: See TracChangeset for help on using the changeset viewer.