> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Fady Bader > Sent: Wednesday, July 8, 2020 10:25 AM > > htons wasn't defined in Windows for the minGW compiler. > htons was replaced with rte_cpu_to_be_16 in order to compile > under Windows. > > Signed-off-by: Fady Bader <f...@mellanox.com> > --- > lib/librte_net/rte_arp.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/lib/librte_net/rte_arp.c b/lib/librte_net/rte_arp.c > index 784b7f48fa..227a6396de 100644 > --- a/lib/librte_net/rte_arp.c > +++ b/lib/librte_net/rte_arp.c > @@ -2,9 +2,12 @@ > * Copyright(c) 2018 Intel Corporation > */ > > +#ifndef RTE_EXEC_ENV_WINDOWS > #include <arpa/inet.h> > +#endif > > #include <rte_arp.h> > +#include <rte_byteorder.h> > > #define RARP_PKT_SIZE 64 > struct rte_mbuf * > @@ -32,15 +35,15 @@ rte_net_make_rarp_packet(struct rte_mempool *mpool, > /* Ethernet header. */ > memset(eth_hdr->d_addr.addr_bytes, 0xff, RTE_ETHER_ADDR_LEN); > rte_ether_addr_copy(mac, ð_hdr->s_addr); > - eth_hdr->ether_type = htons(RTE_ETHER_TYPE_RARP); > + eth_hdr->ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_RARP); > > /* RARP header. */ > rarp = (struct rte_arp_hdr *)(eth_hdr + 1); > - rarp->arp_hardware = htons(RTE_ARP_HRD_ETHER); > - rarp->arp_protocol = htons(RTE_ETHER_TYPE_IPV4); > + rarp->arp_hardware = rte_cpu_to_be_16(RTE_ARP_HRD_ETHER); > + rarp->arp_protocol = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); > rarp->arp_hlen = RTE_ETHER_ADDR_LEN; > rarp->arp_plen = 4; > - rarp->arp_opcode = htons(RTE_ARP_OP_REVREQUEST); > + rarp->arp_opcode = rte_cpu_to_be_16(RTE_ARP_OP_REVREQUEST); > > rte_ether_addr_copy(mac, &rarp->arp_data.arp_sha); > rte_ether_addr_copy(mac, &rarp->arp_data.arp_tha); > -- > 2.16.1.windows.4 >
The way I read rte_byteorder.h, you should use RTE_BE16() for compile time integers and rte_cpu_to_be_16() for runtime variable integers. <rant> I guess that the resulting compiler output is the same with a modern compiler; but since the API exposes different functions for different purposes, we should use them as instructed by the documentation. Otherwise the obsolete (duplicate) functions should be deprecated and eventually removed. </rant>