Hi Ick-Sung, Please see inline. On Mon, Apr 18, 2016 at 2:14 PM, ??? <pnk003 at naver.com> wrote: > If I take an example, the worker assignment method using & (not %) in > load balancing was not fixed yet.
If the code works, there is nothing to fix, right? ;) > Question #1) I would like to know how can I read/write/modify > TCP/UDP/ICMP/IGMP/... headers from packet in rte_mbuf. > I will really appreciate if I can be given an example code. I guess it > would be somewhat complex. For an example please have a look at parse_ethernet() in test-pmd: http://dpdk.org/browse/dpdk/tree/app/test-pmd/csumonly.c#n171 The example usage is in the same file: eth_hdr = rte_pktmbuf_mtod(m, struct ether_hdr *); parse_ethernet(eth_hdr, &info); l3_hdr = (char *)eth_hdr + info.l2_len; if (info.l4_proto == IPPROTO_UDP) { udp_hdr = (struct udp_hdr *)((char *)l3_hdr + info.l3_len); udp_hdr->dst_port = ... } Then you might need to recalculate the L4 checksum, so have a look at rte_ipv4_udptcp_cksum(). > Question #2) The IP checksum does not include 6 the ptr. 6 th ptr (ptr16[5]) > is missing in the example code. Is it right? > ( ip_cksum += ptr16[5]; in the following code.) The code seems fine, ptr16[5] is the checksum itself. It should be zero, so we can skip it. There is a users at dpdk.org mailing list now, so please use it for your further questions. Here is the link for your convenience: http://dpdk.org/ml Regards, Andriy