From 0f0fcfbcb3100c8f4fb64168b1ece492d16a1cf6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Philipp=20T=C3=B6lke?= Date: Mon, 28 Jun 2010 12:37:50 +0000 Subject: [PATCH] vpn: pretty-print udp --- src/vpn/packet.c | 6 ++++++ src/vpn/packet.h | 1 + src/vpn/pretty-print.c | 10 ++++++++++ src/vpn/pretty-print.h | 1 + src/vpn/test.c | 5 +++++ 5 files changed, 23 insertions(+) diff --git a/src/vpn/packet.c b/src/vpn/packet.c index 0e528ffff..deda87216 100644 --- a/src/vpn/packet.c +++ b/src/vpn/packet.c @@ -80,3 +80,9 @@ struct ip6_tcp* parse_ip6_tcp(struct ip6_pkt* pkt) {{{ return res; }}} + +struct ip6_udp* parse_ip6_udp(struct ip6_pkt* pkt) {{{ + struct ip6_udp* res = (struct ip6_udp*) pkt; + + return res; +}}} diff --git a/src/vpn/packet.h b/src/vpn/packet.h index 643657db3..ac7cfcf51 100644 --- a/src/vpn/packet.h +++ b/src/vpn/packet.h @@ -85,6 +85,7 @@ extern int recv_pkt(int fd, struct pkt_tun** pkt); extern struct ip6_pkt* parse_ip6(struct pkt_tun* pkt); extern struct ip6_tcp* parse_ip6_tcp(struct ip6_pkt*); +extern struct ip6_udp* parse_ip6_udp(struct ip6_pkt*); extern short payload(struct ip6_hdr* pkt); diff --git a/src/vpn/pretty-print.c b/src/vpn/pretty-print.c index 22a642728..e8f15cad6 100644 --- a/src/vpn/pretty-print.c +++ b/src/vpn/pretty-print.c @@ -98,6 +98,9 @@ void pp_write_header(char* dest, struct ip6_pkt* pkt) {{{ case 0x06: memcpy(dest, "TCP)", 4); break; + case 0x11: + memcpy(dest, "UDP)", 4); + break; default: memcpy(dest, "unknown)", 8); break; @@ -164,3 +167,10 @@ void pkt_printf_ip6tcp(struct ip6_tcp* pkt) {{{ pkt->data.flg & 0x01 ? 'F' : '.' ); }}} + +void pkt_printf_ip6udp(struct ip6_udp* pkt) {{{ + printf("spt: %u\n", ntohs(pkt->data.spt)); + printf("dpt: %u\n", ntohs(pkt->data.dpt)); + printf("len: %u\n", ntohs(pkt->data.len)); + printf("crc: 0x%x\n", ntohs(pkt->data.crc)); +}}} diff --git a/src/vpn/pretty-print.h b/src/vpn/pretty-print.h index 2ab32b9c2..f2aa5b795 100644 --- a/src/vpn/pretty-print.h +++ b/src/vpn/pretty-print.h @@ -8,5 +8,6 @@ extern void pp_write_header(char* dest, struct ip6_pkt* pkt); extern void pkt_printf(struct ip6_pkt* pkt); void pkt_printf_ip6tcp(struct ip6_tcp* pkt); +void pkt_printf_ip6udp(struct ip6_udp* pkt); #endif diff --git a/src/vpn/test.c b/src/vpn/test.c index 87ad9b10d..959c56b23 100644 --- a/src/vpn/test.c +++ b/src/vpn/test.c @@ -30,12 +30,17 @@ int main(int c, char** v) { struct ip6_pkt* pkt6 = parse_ip6(pkt); pkt_printf(pkt6); struct ip6_tcp* pkt6_tcp; + struct ip6_udp* pkt6_udp; switch(pkt6->hdr.nxthdr) { case 0x06: pkt6_tcp = parse_ip6_tcp(pkt6); pkt_printf_ip6tcp(pkt6_tcp); handle_tcp(pkt6_tcp); break; + case 0x11: + pkt6_udp = parse_ip6_udp(pkt6); + pkt_printf_ip6udp(pkt6_udp); + break; } break; default: -- 2.25.1