Subversion Repositories HelenOS

Rev

Rev 4704 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4704 Rev 4728
Line 30... Line 30...
30
 *  @{
30
 *  @{
31
 */
31
 */
32
 
32
 
33
/** @file
33
/** @file
34
 *  UDP header definition.
34
 *  UDP header definition.
35
 *  Names according to the linux src/include/linux/udp.h header file.
35
 *  Based on the RFC~768.
36
 */
36
 */
37
 
37
 
38
#ifndef __NET_UDP_HEADER_H__
38
#ifndef __NET_UDP_HEADER_H__
39
#define __NET_UDP_HEADER_H__
39
#define __NET_UDP_HEADER_H__
40
 
40
 
Line 54... Line 54...
54
 */
54
 */
55
struct udp_header{
55
struct udp_header{
56
    /** Source Port is an optional field, when meaningful, it indicates the port of the sending process, and may be assumed to be the port to which a reply should be addressed in the absence of any other information.
56
    /** Source Port is an optional field, when meaningful, it indicates the port of the sending process, and may be assumed to be the port to which a reply should be addressed in the absence of any other information.
57
     *  If not used, a value of zero is inserted.
57
     *  If not used, a value of zero is inserted.
58
     */
58
     */
59
    uint16_t    source;
59
    uint16_t    source_port;
60
    /** Destination port has a meaning within the context of a particular internet destination address.
60
    /** Destination port has a meaning within the context of a particular internet destination address.
61
     */
61
     */
62
    uint16_t    dest;
62
    uint16_t    destination_port;
63
    /** Length is the length in octets of this user datagram including this header and the data.
63
    /** Length is the length in octets of this user datagram including this header and the data.
64
     *  This means the minimum value of the length is eight.
64
     *  This means the minimum value of the length is eight.
65
     */
65
     */
66
    uint16_t    len;
66
    uint16_t    total_length;
67
    /** Checksum is the 16-bit one's complement of the one's complement sum of a pseudo header of information from the IP header, the UDP header, and the data, padded with zero octets at the end (if necessary) to make a multiple of two octets.
67
    /** Checksum is the 16-bit one's complement of the one's complement sum of a pseudo header of information from the IP header, the UDP header, and the data, padded with zero octets at the end (if necessary) to make a multiple of two octets.
68
     *  The pseudo header conceptually prefixed to the UDP header contains the source address, the destination address, the protocol, and the UDP length.
68
     *  The pseudo header conceptually prefixed to the UDP header contains the source address, the destination address, the protocol, and the UDP length.
69
     *  This information gives protection against misrouted datagrams.
69
     *  This information gives protection against misrouted datagrams.
70
     *  If the computed checksum is zero, it is transmitted as all ones (the equivalent in one's complement arithmetic).
70
     *  If the computed checksum is zero, it is transmitted as all ones (the equivalent in one's complement arithmetic).
71
     *  An all zero transmitted checksum value means that the transmitter generated no checksum (for debugging or for higher level protocols that don't care).
71
     *  An all zero transmitted checksum value means that the transmitter generated no checksum (for debugging or for higher level protocols that don't care).
72
     */
72
     */
73
    uint16_t    check;
73
    uint16_t    checksum;
74
} __attribute__ ((packed));
74
} __attribute__ ((packed));
75
 
75
 
76
#endif
76
#endif
77
 
77
 
78
/** @}
78
/** @}