gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r19452 - gnunet/src/exit


From: gnunet
Subject: [GNUnet-SVN] r19452 - gnunet/src/exit
Date: Thu, 26 Jan 2012 19:30:27 +0100

Author: grothoff
Date: 2012-01-26 19:30:27 +0100 (Thu, 26 Jan 2012)
New Revision: 19452

Modified:
   gnunet/src/exit/gnunet-daemon-exit.c
Log:
-fix IPv6 packet construction

Modified: gnunet/src/exit/gnunet-daemon-exit.c
===================================================================
--- gnunet/src/exit/gnunet-daemon-exit.c        2012-01-26 18:29:59 UTC (rev 
19451)
+++ gnunet/src/exit/gnunet-daemon-exit.c        2012-01-26 18:30:27 UTC (rev 
19452)
@@ -1329,7 +1329,7 @@
     {
       struct GNUNET_TUN_TcpHeader *pkt4_tcp = (struct GNUNET_TUN_TcpHeader *) 
&pkt4[1];
       
-      memcpy (pkt4_tcp, tcp_header, sizeof (struct GNUNET_TUN_TcpHeader));
+      *pkt4_tcp = *tcp_header;
       pkt4_tcp->spt = htons (src_address->port);
       pkt4_tcp->dpt = htons (dst_address->port);
       GNUNET_TUN_calculate_tcp4_checksum (pkt4,
@@ -1406,12 +1406,11 @@
       pkt6_udp->spt = htons (src_address->port);
       pkt6_udp->dpt = htons (dst_address->port);
       pkt6_udp->len = htons ((uint16_t) payload_length);
-      pkt6_udp->crc = 0;
       GNUNET_TUN_calculate_udp6_checksum (pkt6,
                                          pkt6_udp,
                                          payload,
                                          payload_length);
-      memcpy (&pkt6[1], payload, payload_length);
+      memcpy (&pkt6_udp[1], payload, payload_length);
     }
     break;
   case IPPROTO_TCP:
@@ -1419,13 +1418,14 @@
       struct GNUNET_TUN_TcpHeader *pkt6_tcp = (struct GNUNET_TUN_TcpHeader *) 
&pkt6[1];
 
       /* memcpy first here as some TCP header fields are initialized this way! 
*/
-      memcpy (pkt6_tcp, payload, payload_length);
+      *pkt6_tcp = *tcp_header;
       pkt6_tcp->spt = htons (src_address->port);
       pkt6_tcp->dpt = htons (dst_address->port);
       GNUNET_TUN_calculate_tcp6_checksum (pkt6,
                                          pkt6_tcp,
                                          payload,
                                          payload_length);
+      memcpy (&pkt6_tcp[1], payload, payload_length);
     }
     break;
   default:
@@ -1771,6 +1771,7 @@
     GNUNET_break_op (0);
     return GNUNET_SYSERR;
   }
+
   GNUNET_break_op (ntohl (data->reserved) == 0);
   {
     char buf[INET6_ADDRSTRLEN];




reply via email to

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