[dpdk-users] How to change IP and port in packet header and recalculate checksum

Murad Kablan Murad.Kablan at Colorado.EDU
Sat Apr 9 17:36:35 CEST 2016


Hi Jesper,
I'm not running DPDK on the receiving side. Just tcpdump.
Can you please be more specific? What and how to convert to network byte
order?

Thanks
On Apr 9, 2016 7:45 AM, "Jesper Wramberg" <jesper.wramberg at gmail.com> wrote:

> Hey Murad,
>
> Are you running DPDK on the receiving end as well ?
> In any case, I'm guessing you forgot to convert to network byte order ? :-)
>
>
>
> 2016-04-09 12:34 GMT+02:00 Murad Kablan <Murad.Kablan at colorado.edu>:
>
>> Hi,
>> I'm trying to change the IP and port of packets before sending them out.
>> The captured packet in the receiving machines seems to be corrupted as the
>> port is different than the one I inserted. Am I doing the checksum right?
>> And do I need to do other HW configurations?
>>
>> This is my code:
>> struct udp_hdr *udp_h;
>> struct ipv4_hdr *ipv4_h;
>> struct ether_hdr *eth_hdr;
>> eth_hdr = rte_pktmbuf_mtod(m, struct ether_hdr *);
>> ipv4_h = (struct ipv4_hdr *)(eth_hdr + 1);
>> udp_h = (struct udp_hdr *)((unsigned char *)ipv4_h + sizeof(struct
>> ipv4_hdr));
>>
>> ipv4_h->dst_addr  = 6777226 //(gateway-ip 10.77.0.51)
>> udp_h->src_port = 88
>> ipv4_h->hdr_checksum = 0;
>> udp_h->dgram_cksum = 0;
>> udp_h->dgram_cksum = rte_ipv4_udptcp_cksum(ipv4_h, udp_h);
>> ipv4_h->hdr_checksum = rte_ipv4_cksum(ipv4_h);
>> l2fwd_simple_forward(m, 0);
>>
>> Thanks,
>>
>> Murad
>>
>
>


More information about the users mailing list