From b686dd845cde930340cc25e4fa36d605447a400c Mon Sep 17 00:00:00 2001 From: angt Date: Tue, 10 Nov 2015 17:28:44 +0100 Subject: [PATCH] Dump ip header when something looks wrong --- main.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index 732a7c1..33affd7 100644 --- a/main.c +++ b/main.c @@ -491,6 +491,21 @@ static int decrypt_packet (struct crypto_ctx *ctx, uint8_t *packet, size_t size, return 0; } +static void dump_ip_header (uint8_t *data, size_t size) +{ + const char tbl[] = "0123456789ABCDEF"; + size_t hex_size = (size<20)?size:20; + char hex[(20<<1)+1]; + + for (size_t i=0; i>4)]; + hex[(i<<1)+1] = tbl[0xF&data[i]]; + } + hex[20<<1] = 0; + + fprintf(stderr, "DUMP(%zu): %s\n", size, hex); +} + static void set_ip_size (uint8_t *data, size_t size) { data[2] = 0xFF&(size>>8); @@ -754,11 +769,18 @@ int main (int argc, char **argv) ssize_t ip_size = get_ip_size(tunr.buf, sizeof(tunr.buf)); - if (ip_size<=0 || r>ip_size) + if (ip_size<=0) continue; - if (r