On Wed, May 29, 2019 at 09:59:11AM +0200, David Marchand wrote:
> On Fri, May 24, 2019 at 1:38 PM Ferruh Yigit <ferruh.yi...@intel.com> wrote:
> 
> > On 5/21/2019 5:13 PM, Olivier Matz wrote:
> > > The rte_net headers conflict with the libc headers, because
> > > some definitions are duplicated, sometimes with few differences.
> > >
> > > This patchset adds the rte_ (or RTE_) prefix to all structures, functions
> > > and defines in rte_net library. This is a big changeset, that will
> > > break the API of many functions, but not the ABI.
> > >
> > > This was discussed in [1], and requested by the techboard [2].
> > >
> > > patch-v1:
> > > * rease on top of v19.05
> > > * remove uneeded renames in drivers/net/bonding/rte_eth_bond_pmd.c
> > >   and app/test-pmd/icmpecho.c (arp-related variables)
> > > * do not modify base drivers, except cxgbe, thunderx, enetc, qede:
> > >   only files that already contain dpdk definitions are modified.
> > > * fix checkpatch issues when it does not impact the code style too
> > >   much. Big warnings remain about the RTE_IPv4() macros because
> > >   arguments are separated by ',' instead of ', '.
> > > * add a release note patch
> > > * tested compilation on x86_64-linux and x86_64-freebsd.
> > >
> > > rfc-v2:
> > > * rebase on top of v19.05-rc1
> > >
> > >
> > > [1] http://mails.dpdk.org/archives/dev/2018-January/087384.html
> > > [2] http://mails.dpdk.org/archives/dev/2019-February/125033.html
> > >
> > >
> > > Olivier Matz (15):
> > >   net: add rte prefix to arp structures
> > >   net: add rte prefix to arp defines
> > >   net: add rte prefix to ether structures
> > >   net: add rte prefix to ether functions
> > >   net: add rte prefix to ether defines
> > >   net: add rte prefix to esp structure
> > >   net: add rte prefix to gre structure
> > >   net: add rte prefix to icmp structure
> > >   net: add rte prefix to icmp defines
> > >   net: add rte prefix to ip structure
> > >   net: add rte prefix to ip defines
> > >   net: add rte prefix to sctp structure
> > >   net: add rte prefix to tcp structure
> > >   net: add rte prefix to udp structure
> > >   doc: announce network api change
> >
> > Reviewed-by: Stephen Hemminger <step...@networkplumber.org>
> > Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>
> >
> > For series,
> > Reviewed-by: Ferruh Yigit <ferruh.yi...@intel.com>
> >
> > Series applied to dpdk-next-net/master, thanks.
> >
> 
> Sorry, late to the party...
> 
> Since we change those defines, we might as well avoid these warnings:
> CHECK:CAMELCASE: Avoid CamelCase: <RTE_ETHER_TYPE_IPv4>
> CHECK:CAMELCASE: Avoid CamelCase: <RTE_ETHER_TYPE_IPv6>
> 
> I can send a patch.

Thanks.

By the way, here is below a script that can be used to ease the
porting of an application. It includes modifications proposed by
David [1].

It is probably not 100% reliable, but it will do most of the job.


Olivier

[1] https://mails.dpdk.org/archives/dev/2019-May/133060.html

-----------------------
#!/bin/bash

# Prefix network structure/defines/functions with "rte_".

set -e

if [ $# = 0 ]; then
        echo 'usage: $0 <files>'
        exit 1
fi

files="$@"

# $1: pattern
# $2: replacement
replace()
{
        local pattern="$1"
        local replace="$2"

        sed -i -e "s,${pattern},${replace},g" ${files}
}

# $*: function names
replace_function()
{
        for i in $*; do
                replace "\<$i\>(" "rte_$i("
        done
}

# $*: define names
replace_define()
{
        for i in $*; do
                local pattern
                case "$i" in
                        *'(')
                                pattern="\<${i%(}\>("
                                ;;
                        *)
                                pattern="\<${i}\>"
                                ;;
                esac
                replace "$pattern" "RTE_${i^^}"
        done
}

# $*: struct names
replace_struct()
{
        for i in $*; do
                replace "struct\([      ][      ]*\)\<$i\>" "struct\1rte_$i"
        done
}

replace arp_hrd arp_hardware
replace arp_pro arp_protocol
replace arp_hln arp_hlen
replace arp_pln arp_plen
replace arp_op arp_opcode
replace_struct arp_hdr arp_ipv4
replace_define ARP_HRD_ETHER ARP_OP_REQUEST ARP_OP_REPLY ARP_OP_REVREQUEST \
               ARP_OP_REVREPLY ARP_OP_INVREQUEST ARP_OP_INVREPLY
replace_struct ether_addr ether_hdr vlan_hdr vxlan_hdr vxlan_gpe_hdr
replace_function is_same_ether_addr is_zero_ether_addr is_unicast_ether_addr \
                 is_multicast_ether_addr is_broadcast_ether_addr \
                 is_universal_ether_addr is_local_admin_ether_addr \
                 is_valid_assigned_ether_addr eth_random_addr ether_addr_copy \
                 ether_format_addr
replace_define ETHER_ADDR_LEN ETHER_TYPE_LEN ETHER_CRC_LEN ETHER_HDR_LEN \
               ETHER_MIN_LEN ETHER_MAX_LEN ETHER_MTU ETHER_MAX_VLAN_FRAME_LEN \
               ETHER_MAX_VLAN_ID ETHER_MAX_JUMBO_FRAME_LEN ETHER_MIN_MTU \
               ETHER_LOCAL_ADMIN_ADDR ETHER_GROUP_ADDR ETHER_TYPE_IPv4 \
               ETHER_TYPE_IPv6 ETHER_TYPE_ARP ETHER_TYPE_VLAN ETHER_TYPE_RARP \
               ETHER_TYPE_QINQ ETHER_TYPE_ETAG ETHER_TYPE_1588 ETHER_TYPE_SLOW \
               ETHER_TYPE_TEB ETHER_TYPE_LLDP ETHER_TYPE_MPLS ETHER_TYPE_MPLSM \
               ETHER_VXLAN_HLEN ETHER_ADDR_FMT_SIZE VXLAN_GPE_TYPE_IPV4 \
               VXLAN_GPE_TYPE_IPV6 VXLAN_GPE_TYPE_ETH VXLAN_GPE_TYPE_NSH \
               VXLAN_GPE_TYPE_MPLS VXLAN_GPE_TYPE_GBP VXLAN_GPE_TYPE_VBNG \
               ETHER_VXLAN_GPE_HLEN
replace_struct esp_hdr
replace_struct gre_hdr
replace_struct icmp_hdr
replace_define IP_ICMP_ECHO_REPLY IP_ICMP_ECHO_REQUEST
replace_struct ipv4_hdr ipv6_hdr
replace_define "IPv4(" IPV4_MAX_PKT_LEN IPV4_HDR_IHL_MASK IPV4_IHL_MULTIPLIER \
               IPV4_HDR_DF_SHIFT IPV4_HDR_MF_SHIFT IPV4_HDR_FO_SHIFT \
               IPV4_HDR_DF_FLAG IPV4_HDR_MF_FLAG IPV4_HDR_OFFSET_MASK \
               IPV4_HDR_OFFSET_UNITS IPV4_ANY IPV4_LOOPBACK IPV4_BROADCAST \
               IPV4_ALLHOSTS_GROUP IPV4_ALLRTRS_GROUP IPV4_MAX_LOCAL_GROUP \
               IPV4_MIN_MCAST IPV4_MAX_MCAST IS_IPV4_MCAST IPV6_HDR_FL_SHIFT \
               IPV6_HDR_TC_SHIFT IPV6_HDR_FL_MASK IPV6_HDR_TC_MASK
replace_struct sctp_hdr
replace_struct tcp_hdr
replace_struct udp_hdr

Reply via email to