Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/net/include/icmp_header.h

    r849ed54 rffaba00  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libnet
    3030 *  @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP header definition.
    35  *  Based on the RFC~792.
     34 * ICMP header definition.
     35 * Based on the RFC 792.
    3636 */
    3737
    38 #ifndef __NET_ICMP_HEADER_H__
    39 #define __NET_ICMP_HEADER_H__
     38#ifndef LIBNET_ICMP_HEADER_H_
     39#define LIBNET_ICMP_HEADER_H_
    4040
    4141#include <sys/types.h>
    4242
    43 #include <in.h>
    44 #include <icmp_codes.h>
     43#include <net/in.h>
     44#include <net/icmp_codes.h>
    4545
    46 /** ICMP header size in bytes.
    47  */
    48 #define ICMP_HEADER_SIZE                        sizeof(icmp_header_t)
     46/** ICMP header size in bytes. */
     47#define ICMP_HEADER_SIZE  sizeof(icmp_header_t)
    4948
    50 /** Type definition of the echo specific data.
    51  *  @see icmp_echo
    52  */
    53 typedef struct icmp_echo        icmp_echo_t;
     49/** Echo specific data. */
     50typedef struct icmp_echo {
     51        /** Message idintifier. */
     52        icmp_param_t identifier;
     53        /** Message sequence number. */
     54        icmp_param_t sequence_number;
     55} __attribute__((packed)) icmp_echo_t;
    5456
    55 /** Type definition of the echo specific data pointer.
    56  *  @see icmp_echo
    57  */
    58 typedef icmp_echo_t *           icmp_echo_ref;
    59 
    60 /** Echo specific data.
    61  */
    62 struct icmp_echo{
    63         /** Message idintifier.
    64          */
    65         icmp_param_t identifier;
    66         /** Message sequence number.
    67          */
    68         icmp_param_t sequence_number;
    69 } __attribute__ ((packed));
    70 
    71 /** Type definition of the internet control message header.
    72  *  @see icmp_header
    73  */
    74 typedef struct icmp_header      icmp_header_t;
    75 
    76 /** Type definition of the internet control message header pointer.
    77  *  @see icmp_header
    78  */
    79 typedef icmp_header_t *         icmp_header_ref;
    80 
    81 /** Internet control message header.
    82  */
    83 struct icmp_header{
    84         /** The type of the message.
    85          */
     57/** Internet control message header. */
     58typedef struct icmp_header {
     59        /** The type of the message. */
    8660        uint8_t type;
    87         /** The error code for the datagram reported by the ICMP message.
    88          *  The interpretation is dependent on the message type.
     61       
     62        /**
     63         * The error code for the datagram reported by the ICMP message.
     64         * The interpretation is dependent on the message type.
    8965         */
    9066        uint8_t code;
    91         /** The checksum is the 16-bit ones's complement of the one's complement sum of the ICMP message starting with the ICMP Type.
    92      *  For computing the checksum, the checksum field should be zero.
    93          *  If the checksum does not match the contents, the datagram is discarded.
     67       
     68        /**
     69         * The checksum is the 16-bit ones's complement of the one's complement
     70         * sum of the ICMP message starting with the ICMP Type. For computing
     71         * the checksum, the checksum field should be zero. If the checksum does
     72         * not match the contents, the datagram is discarded.
    9473         */
    9574        uint16_t checksum;
    96         /** Message specific data.
    97          */
    98         union{
    99                 /** Echo specific data.
    100                  */
    101                 icmp_echo_t  echo;
    102                 /** Proposed gateway value.
    103                  */
     75       
     76        /** Message specific data. */
     77        union {
     78                /** Echo specific data. */
     79                icmp_echo_t echo;
     80                /** Proposed gateway value. */
    10481                in_addr_t gateway;
    105                 /** Fragmentation needed specific data.
    106                  */
    107                 struct{
    108                         /** Reserved field.
    109                          *  Must be zero.
    110                          */
     82               
     83                /** Fragmentation needed specific data. */
     84                struct {
     85                        /** Reserved field. Must be zero. */
    11186                        icmp_param_t reserved;
    112                         /** Proposed MTU.
    113                          */
     87                        /** Proposed MTU. */
    11488                        icmp_param_t mtu;
    11589                } frag;
    116                 /** Parameter problem specific data.
    117                  */
    118                 struct{
    119                         /** Problem pointer.
    120                          */
     90               
     91                /** Parameter problem specific data. */
     92                struct {
     93                        /** Problem pointer. */
    12194                        icmp_param_t pointer;
    122                         /** Reserved field.
    123                          *  Must be zero.
    124                          */
     95                        /** Reserved field. Must be zero. */
    12596                        icmp_param_t reserved;
    12697                } param;
    12798        } un;
    128 } __attribute__ ((packed));
     99} __attribute__((packed)) icmp_header_t;
    129100
    130101#endif
Note: See TracChangeset for help on using the changeset viewer.