51 const UDPHdr *udph = PacketSetUDP(
p, pkt);
75 const uint8_t *pkt, uint16_t
len)
84 SCLogDebug(
"UDP sp: %u -> dp: %u - HLEN: %" PRIu32
" LEN: %" PRIu32
"",
p->
sp,
p->
dp,
119 static int UDPV4CalculateValidChecksumtest01(
void)
123 uint8_t raw_ipshdr[] = {
124 0xd0, 0x43, 0xdc, 0xdc, 0xc0, 0xa8, 0x01, 0x3};
126 uint8_t raw_udp[] = {
127 0x00, 0x35, 0xcf, 0x34, 0x00, 0x55, 0x6c, 0xe0,
128 0x83, 0xfc, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01,
129 0x00, 0x00, 0x00, 0x00, 0x07, 0x70, 0x61, 0x67,
130 0x65, 0x61, 0x64, 0x32, 0x11, 0x67, 0x6f, 0x6f,
131 0x67, 0x6c, 0x65, 0x73, 0x79, 0x6e, 0x64, 0x69,
132 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x03, 0x63,
133 0x6f, 0x6d, 0x00, 0x00, 0x1c, 0x00, 0x01, 0xc0,
134 0x0c, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x4b,
135 0x50, 0x00, 0x12, 0x06, 0x70, 0x61, 0x67, 0x65,
136 0x61, 0x64, 0x01, 0x6c, 0x06, 0x67, 0x6f, 0x6f,
137 0x67, 0x6c, 0x65, 0xc0, 0x26};
139 csum = *( ((uint16_t *)raw_udp) + 3);
141 FAIL_IF(UDPV4Checksum((uint16_t *) raw_ipshdr,
142 (uint16_t *)raw_udp,
sizeof(raw_udp), csum) != 0);
146 static int UDPV4CalculateInvalidChecksumtest02(
void)
150 uint8_t raw_ipshdr[] = {
151 0xd0, 0x43, 0xdc, 0xdc, 0xc0, 0xa8, 0x01, 0x3};
153 uint8_t raw_udp[] = {
154 0x00, 0x35, 0xcf, 0x34, 0x00, 0x55, 0x6c, 0xe0,
155 0x83, 0xfc, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01,
156 0x00, 0x00, 0x00, 0x00, 0x07, 0x70, 0x61, 0x67,
157 0x65, 0x61, 0x64, 0x32, 0x11, 0x67, 0x6f, 0x6f,
158 0x67, 0x6c, 0x65, 0x73, 0x79, 0x6e, 0x64, 0x69,
159 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x03, 0x63,
160 0x6f, 0x6d, 0x00, 0x00, 0x1c, 0x00, 0x01, 0xc0,
161 0x0c, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x4b,
162 0x50, 0x00, 0x12, 0x06, 0x70, 0x61, 0x67, 0x65,
163 0x61, 0x64, 0x01, 0x6c, 0x06, 0x67, 0x6f, 0x6f,
164 0x67, 0x6c, 0x65, 0xc0, 0x27};
166 csum = *( ((uint16_t *)raw_udp) + 3);
168 FAIL_IF(UDPV4Checksum((uint16_t *) raw_ipshdr,
169 (uint16_t *)raw_udp,
sizeof(raw_udp), csum) == 0);
173 static int UDPV6CalculateValidChecksumtest03(
void)
177 static uint8_t raw_ipv6[] = {
178 0x00, 0x60, 0x97, 0x07, 0x69, 0xea, 0x00, 0x00,
179 0x86, 0x05, 0x80, 0xda, 0x86, 0xdd, 0x60, 0x00,
180 0x00, 0x00, 0x00, 0x14, 0x11, 0x02, 0x3f, 0xfe,
181 0x05, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00,
182 0x86, 0xff, 0xfe, 0x05, 0x80, 0xda, 0x3f, 0xfe,
183 0x05, 0x01, 0x04, 0x10, 0x00, 0x00, 0x02, 0xc0,
184 0xdf, 0xff, 0xfe, 0x47, 0x03, 0x3e, 0xa0, 0x75,
185 0x82, 0xa0, 0x00, 0x14, 0x1a, 0xc3, 0x06, 0x02,
186 0x00, 0x00, 0xf9, 0xc8, 0xe7, 0x36, 0x57, 0xb0,
189 csum = *( ((uint16_t *)(raw_ipv6 + 60)));
191 FAIL_IF(UDPV6Checksum((uint16_t *)(raw_ipv6 + 14 + 8),
192 (uint16_t *)(raw_ipv6 + 54), 20, csum) != 0);
196 static int UDPV6CalculateInvalidChecksumtest04(
void)
200 static uint8_t raw_ipv6[] = {
201 0x00, 0x60, 0x97, 0x07, 0x69, 0xea, 0x00, 0x00,
202 0x86, 0x05, 0x80, 0xda, 0x86, 0xdd, 0x60, 0x00,
203 0x00, 0x00, 0x00, 0x14, 0x11, 0x02, 0x3f, 0xfe,
204 0x05, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00,
205 0x86, 0xff, 0xfe, 0x05, 0x80, 0xda, 0x3f, 0xfe,
206 0x05, 0x01, 0x04, 0x10, 0x00, 0x00, 0x02, 0xc0,
207 0xdf, 0xff, 0xfe, 0x47, 0x03, 0x3e, 0xa0, 0x75,
208 0x82, 0xa0, 0x00, 0x14, 0x1a, 0xc3, 0x06, 0x02,
209 0x00, 0x00, 0xf9, 0xc8, 0xe7, 0x36, 0x57, 0xb0,
212 csum = *( ((uint16_t *)(raw_ipv6 + 60)));
214 FAIL_IF(UDPV6Checksum((uint16_t *)(raw_ipv6 + 14 + 8),
215 (uint16_t *)(raw_ipv6 + 54), 20, csum) == 0);
224 UDPV4CalculateValidChecksumtest01);
226 UDPV4CalculateInvalidChecksumtest02);
228 UDPV6CalculateValidChecksumtest03);
230 UDPV6CalculateInvalidChecksumtest04);