49 GRESreHdr *gsre = NULL;
58 p->
greh = (GREHdr *)pkt;
62 SCLogDebug(
"p %p pkt %p GRE protocol %04x Len: %d GRE version %x",
99 if (header_len >
len) {
114 gsre = (GRESreHdr *)(pkt + header_len);
118 if ((
SCNtohs(gsre->af) == 0) && (gsre->sre_length == 0))
121 header_len += gsre->sre_length;
122 if (header_len >
len) {
187 if (header_len >
len) {
285 static int DecodeGREtest01 (
void)
287 uint8_t raw_gre[] = { 0x00 ,0x6e ,0x62 };
307 static int DecodeGREtest02 (
void)
309 uint8_t raw_gre[] = {
310 0x00, 0x6e, 0x62, 0xac, 0x40, 0x00, 0x40, 0x2f,
311 0xc2, 0xc7, 0x0a, 0x00, 0x00, 0x64, 0x0a, 0x00,
312 0x00, 0x8a, 0x30, 0x01, 0x0b, 0x00, 0x4e, 0x00,
313 0x00, 0x00, 0x18, 0x4a, 0x50, 0xff, 0x03, 0x00,
314 0x21, 0x45, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x40,
315 0x00, 0x40, 0x11, 0x94, 0x22, 0x50, 0x7e, 0x2b,
316 0x2d, 0xc2, 0x6d, 0x68, 0x68, 0x80, 0x0e, 0x00,
317 0x35, 0x00, 0x36, 0x9f, 0x18, 0xdb, 0xc4, 0x01,
318 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
319 0x01, 0x03, 0x73, 0x31, 0x36, 0x09, 0x73, 0x69,
320 0x74, 0x65, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x03,
321 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x01, 0x00, 0x01,
322 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0x00, 0x00,
344 static int DecodeGREtest03 (
void)
346 uint8_t raw_gre[] = {
347 0x00, 0x6e, 0x62, 0xac, 0x40, 0x00, 0x40, 0x2f,
348 0xc2, 0xc7, 0x0a, 0x00, 0x00, 0x64, 0x0a, 0x00,
349 0x00, 0x8a, 0x30, 0x01, 0x88, 0x0b, 0x00, 0x4e,
350 0x00, 0x00, 0x00, 0x18, 0x4a, 0x50, 0xff, 0x03,
351 0x00, 0x21, 0x45, 0x00, 0x00, 0x4a, 0x00, 0x00,
352 0x40, 0x00, 0x40, 0x11, 0x94, 0x22, 0x50, 0x7e,
353 0x2b, 0x2d, 0xc2, 0x6d, 0x68, 0x68, 0x80, 0x0e,
354 0x00, 0x35, 0x00, 0x36, 0x9f, 0x18, 0xdb, 0xc4,
355 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
356 0x00, 0x01, 0x03, 0x73, 0x31, 0x36, 0x09, 0x73,
357 0x69, 0x74, 0x65, 0x6d, 0x65, 0x74, 0x65, 0x72,
358 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x01, 0x00,
359 0x01, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0x00,
360 0x00, 0x00, 0x00, 0x00 };