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

Jesper Wramberg jesper.wramberg at gmail.com
Sat Apr 9 15:45:19 CEST 2016


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