#include #include "udp_packet.h" #include "etherlib/utils.h" #define ETH_UDP_HEADER_SIZE (8) int parse_udp(const uint8_t *hdr, uint32_t size, PcktProps * props) { UDPProps * udpProps = (UDPProps *)props; COPY_WORD_H2N_ADVANCE(&udpProps->SourcePort, hdr); COPY_WORD_H2N_ADVANCE(&udpProps->DestinationPort, hdr); COPY_WORD_H2N_ADVANCE(&udpProps->Length, hdr); COPY_WORD_H2N_ADVANCE(&udpProps->Checksum, hdr); // common fields... udpProps->headerSize = ETH_UDP_HEADER_SIZE; udpProps->validityOK = size == udpProps->Length; // TODO UDP checksum validation! udpProps->containedPacketClass = 0; return udpProps->validityOK ? 0 : -1; }