James Sayer
/
smart2
test icmp
Fork of ethspam by
net/udp.h@1:feaa107f56b3, 2015-04-24 (annotated)
- Committer:
- jamessayer
- Date:
- Fri Apr 24 03:11:02 2015 +0000
- Revision:
- 1:feaa107f56b3
first version;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jamessayer | 1:feaa107f56b3 | 1 | #ifndef UDP_H |
jamessayer | 1:feaa107f56b3 | 2 | #define UDP_H |
jamessayer | 1:feaa107f56b3 | 3 | |
jamessayer | 1:feaa107f56b3 | 4 | #include "net.h" |
jamessayer | 1:feaa107f56b3 | 5 | |
jamessayer | 1:feaa107f56b3 | 6 | /** |
jamessayer | 1:feaa107f56b3 | 7 | \file udp.h |
jamessayer | 1:feaa107f56b3 | 8 | \brief UDP packet |
jamessayer | 1:feaa107f56b3 | 9 | |
jamessayer | 1:feaa107f56b3 | 10 | This file contains the memory map and associated functions for UDP packet |
jamessayer | 1:feaa107f56b3 | 11 | creation and deconstruction. |
jamessayer | 1:feaa107f56b3 | 12 | */ |
jamessayer | 1:feaa107f56b3 | 13 | |
jamessayer | 1:feaa107f56b3 | 14 | #define IPPROTO_UDP 0x11 |
jamessayer | 1:feaa107f56b3 | 15 | |
jamessayer | 1:feaa107f56b3 | 16 | /// UDP Packet memory map |
jamessayer | 1:feaa107f56b3 | 17 | typedef struct { |
jamessayer | 1:feaa107f56b3 | 18 | u16 source_port; ///< Source port (1-65535) |
jamessayer | 1:feaa107f56b3 | 19 | u16 destination_port; ///< Destination port (1-65535) |
jamessayer | 1:feaa107f56b3 | 20 | u16 length; ///< Entire datagram size in bytes |
jamessayer | 1:feaa107f56b3 | 21 | u16 checksum; ///< Checksum |
jamessayer | 1:feaa107f56b3 | 22 | u8 data[]; ///< Data memory map |
jamessayer | 1:feaa107f56b3 | 23 | } UDP_Packet; |
jamessayer | 1:feaa107f56b3 | 24 | |
jamessayer | 1:feaa107f56b3 | 25 | /// Convert from wire to host or host to wire endianness |
jamessayer | 1:feaa107f56b3 | 26 | inline void fix_endian_udp(UDP_Packet *segment) |
jamessayer | 1:feaa107f56b3 | 27 | { |
jamessayer | 1:feaa107f56b3 | 28 | fix_endian_u16(&segment->source_port); |
jamessayer | 1:feaa107f56b3 | 29 | fix_endian_u16(&segment->destination_port); |
jamessayer | 1:feaa107f56b3 | 30 | fix_endian_u16(&segment->length); |
jamessayer | 1:feaa107f56b3 | 31 | } |
jamessayer | 1:feaa107f56b3 | 32 | |
jamessayer | 1:feaa107f56b3 | 33 | /// Print the UDP packet |
jamessayer | 1:feaa107f56b3 | 34 | inline void print_udp(UDP_Packet *segment) |
jamessayer | 1:feaa107f56b3 | 35 | { |
jamessayer | 1:feaa107f56b3 | 36 | printf("UDP Packet: \n"); |
jamessayer | 1:feaa107f56b3 | 37 | printf(" Source: PORT %d \n", segment->source_port); |
jamessayer | 1:feaa107f56b3 | 38 | printf(" Dest: PORT %d \n", segment->destination_port); |
jamessayer | 1:feaa107f56b3 | 39 | printf(" Length: %d \n", segment->length); |
jamessayer | 1:feaa107f56b3 | 40 | } |
jamessayer | 1:feaa107f56b3 | 41 | |
jamessayer | 1:feaa107f56b3 | 42 | #endif |