gnunet-svn
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]