[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r12023 - gnunet/src/vpn
From: |
gnunet |
Subject: |
[GNUnet-SVN] r12023 - gnunet/src/vpn |
Date: |
Mon, 28 Jun 2010 14:37:38 +0200 |
Author: toelke
Date: 2010-06-28 14:37:38 +0200 (Mon, 28 Jun 2010)
New Revision: 12023
Added:
gnunet/src/vpn/pretty-print.c
gnunet/src/vpn/pretty-print.h
Modified:
gnunet/src/vpn/Makefile
gnunet/src/vpn/packet.c
gnunet/src/vpn/packet.h
Log:
vpn: pull the pretty-printer out of the packet-file
Modified: gnunet/src/vpn/Makefile
===================================================================
--- gnunet/src/vpn/Makefile 2010-06-28 12:37:37 UTC (rev 12022)
+++ gnunet/src/vpn/Makefile 2010-06-28 12:37:38 UTC (rev 12023)
@@ -7,7 +7,7 @@
default: test
-test: test.o tun.o packet.o debug.o
+test: test.o tun.o packet.o debug.o pretty-print.o
clean:
rm -f *.o
Modified: gnunet/src/vpn/packet.c
===================================================================
--- gnunet/src/vpn/packet.c 2010-06-28 12:37:37 UTC (rev 12022)
+++ gnunet/src/vpn/packet.c 2010-06-28 12:37:38 UTC (rev 12023)
@@ -1,6 +1,5 @@
#include <errno.h>
#include <stdlib.h>
-#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/uio.h>
@@ -10,32 +9,10 @@
#include "debug.h"
#include "packet.h"
-static long payload(struct ip6_pkt* pkt) {
- return (pkt->paylgth[0] << 8) + pkt->paylgth[1];
+long payload(struct ip6_pkt* pkt) {
+ return (pkt->hdr.paylgth[0] << 8) + pkt->hdr.paylgth[1];
}
-static char* pretty = /*{{{*/
-/* 0 1 2 3 4 5 6
- 0123456789012345678901234567890123456789012345678901234567890123456789 */
-"IPv6-Paket from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx \n" //60
-" to xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx \n" //120
-" flow 0xXXX ( ) \n" //180
-" length 0xXX ( ) \n" //240
-" nexthdr 0xXX ( \n" //300
-" hoplmt 0xXX ( ) \n" //360
-"first 128 bytes of payload: \n" //420
-/* 0 1 2 3 4 5 6
- 0123456789012345678901234567890123456789012345678901234567890123456789 */
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //490
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //560
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //630
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //700
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //770
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //840
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //910
-"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n";//980
-/*}}}*/
-
void send_pkt(int fd, struct ip6_pkt* pkt) {{{
int sz = payload(pkt);
int w = 0;
@@ -148,114 +125,3 @@
return pkt6;
}}}
-
-static void pp_ip6adr(unsigned char* adr, char* dest) {{{
- char tmp[3];
-
- sprintf(tmp, "%02X", adr[0]);
- memcpy(dest+0, tmp, 2);
- sprintf(tmp, "%02X", adr[1]);
- memcpy(dest+2, tmp, 2);
-
- sprintf(tmp, "%02X", adr[2]);
- memcpy(dest+5, tmp, 2);
- sprintf(tmp, "%02X", adr[3]);
- memcpy(dest+7, tmp, 2);
-
- sprintf(tmp, "%02X", adr[4]);
- memcpy(dest+10, tmp, 2);
- sprintf(tmp, "%02X", adr[5]);
- memcpy(dest+12, tmp, 2);
-
- sprintf(tmp, "%02X", adr[6]);
- memcpy(dest+15, tmp, 2);
- sprintf(tmp, "%02X", adr[7]);
- memcpy(dest+17, tmp, 2);
-
- sprintf(tmp, "%02X", adr[8]);
- memcpy(dest+20, tmp, 2);
- sprintf(tmp, "%02X", adr[9]);
- memcpy(dest+22, tmp, 2);
-
- sprintf(tmp, "%02X", adr[10]);
- memcpy(dest+25, tmp, 2);
- sprintf(tmp, "%02X", adr[11]);
- memcpy(dest+27, tmp, 2);
-
- sprintf(tmp, "%02X", adr[12]);
- memcpy(dest+30, tmp, 2);
- sprintf(tmp, "%02X", adr[13]);
- memcpy(dest+32, tmp, 2);
-
- sprintf(tmp, "%02X", adr[14]);
- memcpy(dest+35, tmp, 2);
- sprintf(tmp, "%02X", adr[15]);
- memcpy(dest+37, tmp, 2);
-}}}
-
-void pp_hexdump(unsigned char* data, char* dest, int max) {{{
- char tmp[3];
- char tmp2[2];
- int off = 0;
- int to = max > 16 ? 16 : max;
- for (int i = 0; i < to; i++) {
- if (i == 8) off = 1;
- sprintf(tmp, "%02x", data[i]);
- memcpy(dest+(3*i)+off, tmp, 2);
- if (isprint(data[i])) {
- sprintf(tmp2, "%c", data[i]);
- memcpy(dest+51+i, tmp2, 1);
- }
- }
-}}}
-
-void pp_write_header(char* dest, struct ip6_pkt* pkt) {
- switch (pkt->nxthdr) {
- case 0x3a:
- memcpy(dest, "ICMPv6)", 7);
- break;
- default:
- memcpy(dest, "unknown)", 8);
- break;
- }
-}
-
-void pkt_printf(struct ip6_pkt* pkt) {
- char* buf = (char*)malloc(strlen(pretty)+1);
- char tmp[9];
-
- memcpy(buf, pretty, strlen(pretty)+1);
-
- pp_ip6adr(pkt->sadr, buf+16);
- pp_ip6adr(pkt->dadr, buf+76);
-
- int flow = (pkt->flowlbl[0] << 16) + (pkt->flowlbl[1] << 8) +
(pkt->flowlbl[2]);
- sprintf(tmp, "%03x", flow);
- memcpy(buf+138, tmp, 3);
- sprintf(tmp, "%-8d", flow);
- memcpy(buf+143, tmp, 8);
-
- int length = (pkt->paylgth[0] << 8) + (pkt->paylgth[1]);
- sprintf(tmp, "%02x", length);
- memcpy(buf+198, tmp, 2);
- sprintf(tmp, "%-3d", length);
- memcpy(buf+203, tmp, 3);
-
- sprintf(tmp, "%02x", pkt->nxthdr);
- memcpy(buf+258, tmp, 2);
- pp_write_header(buf+263, pkt);
-
- sprintf(tmp, "%02x", pkt->hoplmt);
- memcpy(buf+318, tmp, 2);
- sprintf(tmp, "%-3d", pkt->hoplmt);
- memcpy(buf+323, tmp, 3);
-
- int size = payload(pkt);
- for(int i = 0; i < 8; i++) {
- if (16*i > size) break;
- pp_hexdump(pkt->data + (16*i), buf + 420 + (i*70), size - 16*i);
- }
-
- printf(buf);
- free(buf);
-}
Modified: gnunet/src/vpn/packet.h
===================================================================
--- gnunet/src/vpn/packet.h 2010-06-28 12:37:37 UTC (rev 12022)
+++ gnunet/src/vpn/packet.h 2010-06-28 12:37:38 UTC (rev 12023)
@@ -26,4 +26,6 @@
extern struct ip6_pkt* parse_ip6(struct pkt_tun* pkt);
extern void pkt_printf(struct ip6_pkt* pkt);
+extern long payload(struct ip6_pkt* pkt);
+
#endif
Added: gnunet/src/vpn/pretty-print.c
===================================================================
--- gnunet/src/vpn/pretty-print.c (rev 0)
+++ gnunet/src/vpn/pretty-print.c 2010-06-28 12:37:38 UTC (rev 12023)
@@ -0,0 +1,141 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "packet.h"
+
+static char* pretty = /*{{{*/
+/* 0 1 2 3 4 5 6
+ 0123456789012345678901234567890123456789012345678901234567890123456789 */
+"IPv6-Paket from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx \n" //60
+" to xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx \n" //120
+/* 0 1 2 3 4 5 6
+ 0123456789012345678901234567890123456789012345678901234567890123456789 */
+" flow 0xXXX ( ) \n" //180
+" length 0xXX ( ) \n" //240
+" nexthdr 0xXX ( \n" //300
+" hoplmt 0xXX ( ) \n" //360
+"first 128 bytes of payload: \n" //420
+/* 0 1 2 3 4 5 6
+ 0123456789012345678901234567890123456789012345678901234567890123456789 */
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //490
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //560
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //630
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //700
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //770
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //840
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n" //910
+"XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX | ................ \n";//980
+/*}}}*/
+
+static void pp_ip6adr(unsigned char* adr, char* dest) {{{
+ char tmp[3];
+
+ sprintf(tmp, "%02X", adr[0]);
+ memcpy(dest+0, tmp, 2);
+ sprintf(tmp, "%02X", adr[1]);
+ memcpy(dest+2, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[2]);
+ memcpy(dest+5, tmp, 2);
+ sprintf(tmp, "%02X", adr[3]);
+ memcpy(dest+7, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[4]);
+ memcpy(dest+10, tmp, 2);
+ sprintf(tmp, "%02X", adr[5]);
+ memcpy(dest+12, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[6]);
+ memcpy(dest+15, tmp, 2);
+ sprintf(tmp, "%02X", adr[7]);
+ memcpy(dest+17, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[8]);
+ memcpy(dest+20, tmp, 2);
+ sprintf(tmp, "%02X", adr[9]);
+ memcpy(dest+22, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[10]);
+ memcpy(dest+25, tmp, 2);
+ sprintf(tmp, "%02X", adr[11]);
+ memcpy(dest+27, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[12]);
+ memcpy(dest+30, tmp, 2);
+ sprintf(tmp, "%02X", adr[13]);
+ memcpy(dest+32, tmp, 2);
+
+ sprintf(tmp, "%02X", adr[14]);
+ memcpy(dest+35, tmp, 2);
+ sprintf(tmp, "%02X", adr[15]);
+ memcpy(dest+37, tmp, 2);
+}}}
+
+void pp_hexdump(unsigned char* data, char* dest, int max) {{{
+ char tmp[3];
+ char tmp2[2];
+ int off = 0;
+ int to = max > 16 ? 16 : max;
+ for (int i = 0; i < to; i++) {
+ if (i == 8) off = 1;
+ sprintf(tmp, "%02x", data[i]);
+ memcpy(dest+(3*i)+off, tmp, 2);
+ if (isprint(data[i])) {
+ sprintf(tmp2, "%c", data[i]);
+ memcpy(dest+51+i, tmp2, 1);
+ }
+ }
+}}}
+
+void pp_write_header(char* dest, struct ip6_pkt* pkt) {{{
+ switch (pkt->hdr.nxthdr) {
+ case 0x3a:
+ memcpy(dest, "ICMPv6)", 7);
+ break;
+ default:
+ memcpy(dest, "unknown)", 8);
+ break;
+ }
+}}}
+
+void pkt_printf(struct ip6_pkt* pkt) {{{
+ char* buf = (char*)malloc(strlen(pretty)+1);
+ char tmp[9];
+
+ memcpy(buf, pretty, strlen(pretty)+1);
+
+ pp_ip6adr(pkt->hdr.sadr, buf+16);
+ pp_ip6adr(pkt->hdr.dadr, buf+76);
+
+ int flow = (pkt->hdr.flowlbl[0] << 16) + (pkt->hdr.flowlbl[1] << 8) +
(pkt->hdr.flowlbl[2]);
+ sprintf(tmp, "%03x", flow);
+ memcpy(buf+138, tmp, 3);
+ sprintf(tmp, "%-8d", flow);
+ memcpy(buf+143, tmp, 8);
+
+ int length = (pkt->hdr.paylgth[0] << 8) + (pkt->hdr.paylgth[1]);
+ sprintf(tmp, "%02x", length);
+ memcpy(buf+198, tmp, 2);
+ sprintf(tmp, "%-3d", length);
+ memcpy(buf+203, tmp, 3);
+
+ sprintf(tmp, "%02x", pkt->hdr.nxthdr);
+ memcpy(buf+258, tmp, 2);
+ pp_write_header(buf+263, pkt);
+
+ sprintf(tmp, "%02x", pkt->hdr.hoplmt);
+ memcpy(buf+318, tmp, 2);
+ sprintf(tmp, "%-3d", pkt->hdr.hoplmt);
+ memcpy(buf+323, tmp, 3);
+
+ int size = payload(pkt);
+ for(int i = 0; i < 8; i++) {
+ if (16*i > size) break;
+ pp_hexdump(pkt->data + (16*i), buf + 420 + (i*70), size - 16*i);
+ }
+
+ printf(buf);
+ free(buf);
+}}}
Added: gnunet/src/vpn/pretty-print.h
===================================================================
--- gnunet/src/vpn/pretty-print.h (rev 0)
+++ gnunet/src/vpn/pretty-print.h 2010-06-28 12:37:38 UTC (rev 12023)
@@ -0,0 +1,12 @@
+#ifndef _GNTUN_PP_H_
+#define _GNTUN_PP_H_
+
+extern static void pp_ip6adr(unsigned char* adr, char* dest);
+
+extern void pp_hexdump(unsigned char* data, char* dest, int max);
+
+extern void pp_write_header(char* dest, struct ip6_pkt* pkt);
+
+extern void pkt_printf(struct ip6_pkt* pkt);
+
+#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r12023 - gnunet/src/vpn,
gnunet <=