X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Ficmpecho.c;h=c6c7cb6bd7bca8ea191e9a3d4e49112b2a12d627;hb=35b2d13fd6fdcbd191f2a30d74648faeb1186c65;hp=d4b4c9eb4677986814f26bf4b2cee32d1231b54d;hpb=547d946c8c3e8bb42cd2ebd8512c851295554450;p=dpdk.git diff --git a/app/test-pmd/icmpecho.c b/app/test-pmd/icmpecho.c index d4b4c9eb46..c6c7cb6bd7 100644 --- a/app/test-pmd/icmpecho.c +++ b/app/test-pmd/icmpecho.c @@ -1,35 +1,5 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2013 6WIND - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of 6WIND S.A. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2013 6WIND S.A. */ #include @@ -68,18 +38,18 @@ static const char * arp_op_name(uint16_t arp_op) { - switch (arp_op ) { - case ARP_OP_REQUEST: + switch (arp_op) { + case RTE_ARP_OP_REQUEST: return "ARP Request"; - case ARP_OP_REPLY: + case RTE_ARP_OP_REPLY: return "ARP Reply"; - case ARP_OP_REVREQUEST: + case RTE_ARP_OP_REVREQUEST: return "Reverse ARP Request"; - case ARP_OP_REVREPLY: + case RTE_ARP_OP_REVREPLY: return "Reverse ARP Reply"; - case ARP_OP_INVREQUEST: + case RTE_ARP_OP_INVREQUEST: return "Peer Identify Request"; - case ARP_OP_INVREPLY: + case RTE_ARP_OP_INVREPLY: return "Peer Identify Reply"; default: break; @@ -251,11 +221,11 @@ ipv4_addr_to_dot(uint32_t be_ipv4_addr, char *buf) } static void -ether_addr_dump(const char *what, const struct ether_addr *ea) +ether_addr_dump(const char *what, const struct rte_ether_addr *ea) { - char buf[ETHER_ADDR_FMT_SIZE]; + char buf[RTE_ETHER_ADDR_FMT_SIZE]; - ether_format_addr(buf, ETHER_ADDR_FMT_SIZE, ea); + rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, ea); if (what) printf("%s", what); printf("%s", buf); @@ -305,12 +275,12 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) { struct rte_mbuf *pkts_burst[MAX_PKT_BURST]; struct rte_mbuf *pkt; - struct ether_hdr *eth_h; - struct vlan_hdr *vlan_h; - struct arp_hdr *arp_h; + struct rte_ether_hdr *eth_h; + struct rte_vlan_hdr *vlan_h; + struct rte_arp_hdr *arp_h; struct ipv4_hdr *ip_h; struct icmp_hdr *icmp_h; - struct ether_addr eth_addr; + struct rte_ether_addr eth_addr; uint32_t retry; uint32_t ip_addr; uint16_t nb_rx; @@ -351,19 +321,19 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) rte_prefetch0(rte_pktmbuf_mtod(pkts_burst[i + 1], void *)); pkt = pkts_burst[i]; - eth_h = rte_pktmbuf_mtod(pkt, struct ether_hdr *); + eth_h = rte_pktmbuf_mtod(pkt, struct rte_ether_hdr *); eth_type = RTE_BE_TO_CPU_16(eth_h->ether_type); - l2_len = sizeof(struct ether_hdr); + l2_len = sizeof(struct rte_ether_hdr); if (verbose_level > 0) { printf("\nPort %d pkt-len=%u nb-segs=%u\n", fs->rx_port, pkt->pkt_len, pkt->nb_segs); ether_addr_dump(" ETH: src=", ð_h->s_addr); ether_addr_dump(" dst=", ð_h->d_addr); } - if (eth_type == ETHER_TYPE_VLAN) { - vlan_h = (struct vlan_hdr *) - ((char *)eth_h + sizeof(struct ether_hdr)); - l2_len += sizeof(struct vlan_hdr); + if (eth_type == RTE_ETHER_TYPE_VLAN) { + vlan_h = (struct rte_vlan_hdr *) + ((char *)eth_h + sizeof(struct rte_ether_hdr)); + l2_len += sizeof(struct rte_vlan_hdr); eth_type = rte_be_to_cpu_16(vlan_h->eth_proto); if (verbose_level > 0) { vlan_id = rte_be_to_cpu_16(vlan_h->vlan_tci) @@ -376,23 +346,23 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) } /* Reply to ARP requests */ - if (eth_type == ETHER_TYPE_ARP) { - arp_h = (struct arp_hdr *) ((char *)eth_h + l2_len); - arp_op = RTE_BE_TO_CPU_16(arp_h->arp_op); - arp_pro = RTE_BE_TO_CPU_16(arp_h->arp_pro); + if (eth_type == RTE_ETHER_TYPE_ARP) { + arp_h = (struct rte_arp_hdr *) ((char *)eth_h + l2_len); + arp_op = RTE_BE_TO_CPU_16(arp_h->arp_opcode); + arp_pro = RTE_BE_TO_CPU_16(arp_h->arp_protocol); if (verbose_level > 0) { printf(" ARP: hrd=%d proto=0x%04x hln=%d " "pln=%d op=%u (%s)\n", - RTE_BE_TO_CPU_16(arp_h->arp_hrd), - arp_pro, arp_h->arp_hln, - arp_h->arp_pln, arp_op, + RTE_BE_TO_CPU_16(arp_h->arp_hardware), + arp_pro, arp_h->arp_hlen, + arp_h->arp_plen, arp_op, arp_op_name(arp_op)); } - if ((RTE_BE_TO_CPU_16(arp_h->arp_hrd) != - ARP_HRD_ETHER) || - (arp_pro != ETHER_TYPE_IPv4) || - (arp_h->arp_hln != 6) || - (arp_h->arp_pln != 4) + if ((RTE_BE_TO_CPU_16(arp_h->arp_hardware) != + RTE_ARP_HRD_ETHER) || + (arp_pro != RTE_ETHER_TYPE_IPv4) || + (arp_h->arp_hlen != 6) || + (arp_h->arp_plen != 4) ) { rte_pktmbuf_free(pkt); if (verbose_level > 0) @@ -400,18 +370,20 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) continue; } if (verbose_level > 0) { - ether_addr_copy(&arp_h->arp_data.arp_sha, ð_addr); + rte_ether_addr_copy(&arp_h->arp_data.arp_sha, + ð_addr); ether_addr_dump(" sha=", ð_addr); ip_addr = arp_h->arp_data.arp_sip; ipv4_addr_dump(" sip=", ip_addr); printf("\n"); - ether_addr_copy(&arp_h->arp_data.arp_tha, ð_addr); + rte_ether_addr_copy(&arp_h->arp_data.arp_tha, + ð_addr); ether_addr_dump(" tha=", ð_addr); ip_addr = arp_h->arp_data.arp_tip; ipv4_addr_dump(" tip=", ip_addr); printf("\n"); } - if (arp_op != ARP_OP_REQUEST) { + if (arp_op != RTE_ARP_OP_REQUEST) { rte_pktmbuf_free(pkt); continue; } @@ -421,15 +393,18 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) */ /* Use source MAC address as destination MAC address. */ - ether_addr_copy(ð_h->s_addr, ð_h->d_addr); + rte_ether_addr_copy(ð_h->s_addr, ð_h->d_addr); /* Set source MAC address with MAC address of TX port */ - ether_addr_copy(&ports[fs->tx_port].eth_addr, + rte_ether_addr_copy(&ports[fs->tx_port].eth_addr, ð_h->s_addr); - arp_h->arp_op = rte_cpu_to_be_16(ARP_OP_REPLY); - ether_addr_copy(&arp_h->arp_data.arp_tha, ð_addr); - ether_addr_copy(&arp_h->arp_data.arp_sha, &arp_h->arp_data.arp_tha); - ether_addr_copy(ð_h->s_addr, &arp_h->arp_data.arp_sha); + arp_h->arp_opcode = rte_cpu_to_be_16(RTE_ARP_OP_REPLY); + rte_ether_addr_copy(&arp_h->arp_data.arp_tha, + ð_addr); + rte_ether_addr_copy(&arp_h->arp_data.arp_sha, + &arp_h->arp_data.arp_tha); + rte_ether_addr_copy(ð_h->s_addr, + &arp_h->arp_data.arp_sha); /* Swap IP addresses in ARP payload */ ip_addr = arp_h->arp_data.arp_sip; @@ -439,7 +414,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) continue; } - if (eth_type != ETHER_TYPE_IPv4) { + if (eth_type != RTE_ETHER_TYPE_IPv4) { rte_pktmbuf_free(pkt); continue; } @@ -486,9 +461,9 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) * ICMP checksum is computed by assuming it is valid in the * echo request and not verified. */ - ether_addr_copy(ð_h->s_addr, ð_addr); - ether_addr_copy(ð_h->d_addr, ð_h->s_addr); - ether_addr_copy(ð_addr, ð_h->d_addr); + rte_ether_addr_copy(ð_h->s_addr, ð_addr); + rte_ether_addr_copy(ð_h->d_addr, ð_h->s_addr); + rte_ether_addr_copy(ð_addr, ð_h->d_addr); ip_addr = ip_h->src_addr; if (is_multicast_ipv4_addr(ip_h->dst_addr)) { uint32_t ip_src;