X-Git-Url: http://sjero.net/git/?p=dccp2tcp;a=blobdiff_plain;f=encap.c;h=71255ecaaf5070fe68cc8a1674de4e19cc8f44ab;hp=beafa6814466b57b5887e13e445f9cae730bdcc9;hb=46b392b07633963eb740e5061e33737eb77ba65a;hpb=6982cc044d3a4da684ff3c6db3748cab4825e52c diff --git a/encap.c b/encap.c index beafa68..71255ec 100644 --- a/encap.c +++ b/encap.c @@ -74,12 +74,12 @@ int ethernet_encap(struct packet *new, const struct const_packet *old) nnew.data= new->data + sizeof(struct ether_header); nold.length= old->length - sizeof(struct ether_header); nnew.length= new->length - sizeof(struct ether_header); + nnew.h=new->h; + nold.h=old->h; /*Select Next Protocol*/ switch(ntohs(ethh->ether_type)){ case ETHERTYPE_IP: - nnew.h=new->h; - nold.h=old->h; if(!ipv4_encap(&nnew, &nold)){ return 0; } @@ -123,6 +123,8 @@ int ipv4_encap(struct packet *new, const struct const_packet *old) nnew.data= new->data +iph->ihl*4; nold.length= old->length -iph->ihl*4; nnew.length= new->length -iph->ihl*4; + nnew.h=new->h; + nold.h=old->h; /*Confirm that this is IPv4*/ if(iph->version!=4){ @@ -134,8 +136,6 @@ int ipv4_encap(struct packet *new, const struct const_packet *old) switch(iph->protocol){ case 0x21: /*DCCP*/ - nnew.h=new->h; - nold.h=old->h; nnew.src_id=iph->saddr; nnew.dest_id=iph->daddr; if(!convert_packet(&nnew, &nold)){ @@ -162,7 +162,7 @@ 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(nnew.length); + iph->tot_len=htons(new->length); return 1; } @@ -194,6 +194,8 @@ int linux_cooked_encap(struct packet *new, const struct const_packet *old) nnew.data= new->data + sizeof(struct sll_header); nold.length= old->length - sizeof(struct sll_header); nnew.length= new->length- sizeof(struct sll_header); + nnew.h=new->h; + nold.h=old->h; /*Confirm that this is SLL*/ if(ntohs(slh->sll_pkttype) > 4){ @@ -204,8 +206,6 @@ int linux_cooked_encap(struct packet *new, const struct const_packet *old) /*Select Next Protocol*/ switch(ntohs(slh->sll_protocol)){ case ETHERTYPE_IP: - nnew.h=new->h; - nold.h=old->h; if(!ipv4_encap(&nnew, &nold)){ return 0; }