gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r12022 - gnunet/src/vpn


From: gnunet
Subject: [GNUnet-SVN] r12022 - gnunet/src/vpn
Date: Mon, 28 Jun 2010 14:37:37 +0200

Author: toelke
Date: 2010-06-28 14:37:37 +0200 (Mon, 28 Jun 2010)
New Revision: 12022

Modified:
   gnunet/src/vpn/packet.c
   gnunet/src/vpn/test.c
Log:
some improvements in the test-code for the vpn-functionality
-print continously
-print the complete hexdump

Modified: gnunet/src/vpn/packet.c
===================================================================
--- gnunet/src/vpn/packet.c     2010-06-28 12:37:36 UTC (rev 12021)
+++ gnunet/src/vpn/packet.c     2010-06-28 12:37:37 UTC (rev 12022)
@@ -193,41 +193,67 @@
        memcpy(dest+37, tmp, 2);
 }}}
 
-void pp_hexdump(unsigned char* data, char* dest, int max) {
+void pp_hexdump(unsigned char* data, char* dest, int max) {{{
        char tmp[3];
-       int to = max > 8 ? 8 : max;
+       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), tmp, 2);
+               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[4];
+       char tmp[9];
 
        memcpy(buf, pretty, strlen(pretty)+1);
 
        pp_ip6adr(pkt->sadr, buf+16);
        pp_ip6adr(pkt->dadr, buf+76);
 
-       sprintf(tmp, "%03x", (pkt->flowlbl[0] << 16) + (pkt->flowlbl[1] << 8) + 
(pkt->flowlbl[2]));
+       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);
 
-       sprintf(tmp, "%02x", (pkt->paylgth[0] << 8) + (pkt->paylgth[1]));
+       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);
-               pp_hexdump(pkt->data + (16*i) + 8, buf + 445 + (i*70), size - 
(16*i + 8));
        }
 
        printf(buf);

Modified: gnunet/src/vpn/test.c
===================================================================
--- gnunet/src/vpn/test.c       2010-06-28 12:37:36 UTC (rev 12021)
+++ gnunet/src/vpn/test.c       2010-06-28 12:37:37 UTC (rev 12022)
@@ -17,9 +17,9 @@
 
        struct pkt_tun* pkt;
 
-       printf("read %d bytes from socket, now to parse'em\n", recv_pkt(fd, 
&pkt));
-
-       struct ip6_pkt* pkt6 = parse_ip6(pkt);
-
-       pkt_printf(pkt6);
+       for(;;) {
+               printf("read %d bytes from socket, now to parse'em\n", 
recv_pkt(fd, &pkt));
+               struct ip6_pkt* pkt6 = parse_ip6(pkt);
+               pkt_printf(pkt6);
+       }
 }




reply via email to

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