]> sjero.net Git - dccp2tcp/blobdiff - encap.c
Cleanup types throughout code
[dccp2tcp] / encap.c
diff --git a/encap.c b/encap.c
index f729878763594e9ceb9d5f6f5809f1670f4793ee..4cda535226eff16ba7f84b9924f2f05fc82d869d 100644 (file)
--- a/encap.c
+++ b/encap.c
@@ -19,16 +19,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Author: Samuel Jero <sj323707@ohio.edu>
 Date: 11/2012
-
-Notes:
-       1)CCID2 ONLY
-       2)DCCP MUST use 48 bit sequence numbers
-       3)Checksums are not computed (they are zeroed)
-       4)DCCP DATA packets are not implemented (Linux doesn't use them)
-       5)DCCP Ack packets show up as TCP packets containing one byte
 ******************************************************************************/
 #include "dccp2tcp.h"
 #include "encap.h"
+#include "checksums.h"
 #include <pcap/sll.h>
 #include <netinet/ip6.h>
 
@@ -192,7 +186,7 @@ int ipv6_encap(struct packet *new, const struct const_packet *old)
                }
 
                /*Adjust IPv6 header to account for packet's total length*/
-               iph->ip6_ctlun.ip6_un1.ip6_un1_plen=htons(new->length);
+               iph->ip6_ctlun.ip6_un1.ip6_un1_plen=htons(nnew.length);
 
                /*Adjust length*/
                new->length=nnew.length + sizeof(struct ip6_hdr);
@@ -279,6 +273,10 @@ int ipv4_encap(struct packet *new, const struct const_packet *old)
                /*Adjust IPv4 header to account for packet's total length*/
                iph->tot_len=htons(new->length);
 
+               /*Compute IPv4 Checksum*/
+               iph->check=0;
+               iph->check=ipv4_chksum(new->data,iph->ihl*4);
+
                /*Cleanup*/
                free(nnew.src_id);
                free(nnew.dest_id);