List comments

GET /api/patches/383/comments/
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": 879,
        "web_url": "http://patches.dpdk.org/comment/879/",
        "msgid": "<20140919094537.GA7568@BRICHA3-MOBL>",
        "date": "2014-09-19T09:45:38",
        "subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
        "submitter": {
            "id": 20,
            "url": "http://patches.dpdk.org/api/people/20/",
            "name": "Bruce Richardson",
            "email": "bruce.richardson@intel.com"
        },
        "content": "On Mon, Sep 15, 2014 at 03:23:49PM -0400, Neil Horman wrote:\n> Add linker version script files to each DPDK library to put a stake in the\n> ground from which we can start cleaning up API's\n> \n> Signed-off-by: Neil Horman <nhorman@tuxdriver.com>\n> CC: Thomas Monjalon <thomas.monjalon@6wind.com>\n> CC: \"Richardson, Bruce\" <bruce.richardson@intel.com>\n> ---\n>  <... snip for brevity ...>\n>\n> diff --git a/lib/librte_acl/Makefile b/lib/librte_acl/Makefile\n> index 65e566d..1f96645 100644\n> --- a/lib/librte_acl/Makefile\n> +++ b/lib/librte_acl/Makefile\n> @@ -37,6 +37,8 @@ LIB = librte_acl.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_acl/rte_acl_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c\n>  \n> diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map\n> new file mode 100644\n> index 0000000..4480690\n> --- /dev/null\n> +++ b/lib/librte_acl/rte_acl_version.map\n> @@ -0,0 +1,19 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_acl_create;\n> +\trte_acl_find_existing;\n> +\trte_acl_free;\n> +\trte_acl_add_rules;\n> +\trte_acl_reset_rules;\n> +\trte_acl_build;\n> +\trte_acl_reset;\n> +\trte_acl_classify;\n> +\trte_acl_dump;\n> +\trte_acl_list_dump;\n> +\trte_acl_ipv4vlan_add_rules;\n> +\trte_acl_ipv4vlan_build;\n> +\trte_acl_classify_scalar;\n> +\n> +\tlocal: *;\n> +};\n> +\n\nLooking at this versionning, it strikes me that this looks like the perfect \nopportunity to go to a 2.0 version number.\n\nMy reasoning:\n* We have already got fairly significant ABI and indeed API changes in this \n  release due to the mbuf rework. That allow makes it a logical point to \n  bump the Intel DPDK major version number to 2.0\n* Having the API versioning start at a 2.0 looks neater than having it at \n  1.8, since .0 is a nice round version number to start with. Also if we \n  decide in the near future for whatever reasons to go to a 2.0 release, the \n  ABIs are probably still going to be 1.8. [Again, if we ever want to go to \n  2.0, now looks the perfect time]\n* For the naming of the .so files, starting with them at a .2 now seems \n  reasonable to me, denoting a clean break with the older releases which did \n  have a different ABI. [Though again it makes more sense if you consider \n  that we may want to move to a 2.0 in future].\n\nWhat do people think?\n\n/Bruce",
        "headers": {
            "Return-Path": "<dev-bounces@dpdk.org>",
            "References": "<1410809031-19114-1-git-send-email-nhorman@tuxdriver.com>\n\t<1410809031-19114-3-git-send-email-nhorman@tuxdriver.com>",
            "X-Mailman-Version": "2.1.15",
            "X-IronPort-AV": "E=Sophos;i=\"5.04,554,1406617200\"; d=\"scan'208\";a=\"605305315\"",
            "From": "Bruce Richardson <bruce.richardson@intel.com>",
            "User-Agent": "Mutt/1.5.22 (2013-10-16)",
            "List-Post": "<mailto:dev@dpdk.org>",
            "Content-Type": "text/plain; charset=us-ascii",
            "To": "Neil Horman <nhorman@tuxdriver.com>",
            "X-BeenThere": "dev@dpdk.org",
            "X-Original-To": "patchwork@dpdk.org",
            "Received": [
                "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id B79C6B392;\n\tFri, 19 Sep 2014 11:39:55 +0200 (CEST)",
                "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 1848CB347\n\tfor <dev@dpdk.org>; Fri, 19 Sep 2014 11:39:53 +0200 (CEST)",
                "from orsmga002.jf.intel.com ([10.7.209.21])\n\tby orsmga101.jf.intel.com with ESMTP; 19 Sep 2014 02:45:42 -0700",
                "from bricha3-mobl.ger.corp.intel.com (HELO\n\tbricha3-mobl.ir.intel.com) ([10.243.20.20])\n\tby orsmga002.jf.intel.com with SMTP; 19 Sep 2014 02:45:38 -0700",
                "by bricha3-mobl.ir.intel.com (sSMTP sendmail emulation);\n\tFri, 19 Sep 2014 10:45:38 +0001"
            ],
            "Subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
            "Sender": "\"dev\" <dev-bounces@dpdk.org>",
            "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
            "Message-ID": "<20140919094537.GA7568@BRICHA3-MOBL>",
            "Precedence": "list",
            "Date": "Fri, 19 Sep 2014 10:45:38 +0100",
            "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
            "X-ExtLoop1": "1",
            "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
            "Cc": "dev@dpdk.org",
            "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
            "Delivered-To": "patchwork@dpdk.org",
            "In-Reply-To": "<1410809031-19114-3-git-send-email-nhorman@tuxdriver.com>",
            "Errors-To": "dev-bounces@dpdk.org",
            "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
            "MIME-Version": "1.0",
            "Organization": "Intel Shannon Ltd.",
            "Content-Disposition": "inline"
        }
    },
    {
        "id": 880,
        "web_url": "http://patches.dpdk.org/comment/880/",
        "msgid": "<20140919102202.GB12897@hmsreliant.think-freely.org>",
        "date": "2014-09-19T10:22:02",
        "subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
        "submitter": {
            "id": 32,
            "url": "http://patches.dpdk.org/api/people/32/",
            "name": "Neil Horman",
            "email": "nhorman@tuxdriver.com"
        },
        "content": "On Fri, Sep 19, 2014 at 10:45:38AM +0100, Bruce Richardson wrote:\n> On Mon, Sep 15, 2014 at 03:23:49PM -0400, Neil Horman wrote:\n> > Add linker version script files to each DPDK library to put a stake in the\n> > ground from which we can start cleaning up API's\n> > \n> > Signed-off-by: Neil Horman <nhorman@tuxdriver.com>\n> > CC: Thomas Monjalon <thomas.monjalon@6wind.com>\n> > CC: \"Richardson, Bruce\" <bruce.richardson@intel.com>\n> > ---\n> >  <... snip for brevity ...>\n> >\n> > diff --git a/lib/librte_acl/Makefile b/lib/librte_acl/Makefile\n> > index 65e566d..1f96645 100644\n> > --- a/lib/librte_acl/Makefile\n> > +++ b/lib/librte_acl/Makefile\n> > @@ -37,6 +37,8 @@ LIB = librte_acl.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_acl/rte_acl_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c\n> >  \n> > diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map\n> > new file mode 100644\n> > index 0000000..4480690\n> > --- /dev/null\n> > +++ b/lib/librte_acl/rte_acl_version.map\n> > @@ -0,0 +1,19 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_acl_create;\n> > +\trte_acl_find_existing;\n> > +\trte_acl_free;\n> > +\trte_acl_add_rules;\n> > +\trte_acl_reset_rules;\n> > +\trte_acl_build;\n> > +\trte_acl_reset;\n> > +\trte_acl_classify;\n> > +\trte_acl_dump;\n> > +\trte_acl_list_dump;\n> > +\trte_acl_ipv4vlan_add_rules;\n> > +\trte_acl_ipv4vlan_build;\n> > +\trte_acl_classify_scalar;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> \n> Looking at this versionning, it strikes me that this looks like the perfect \n> opportunity to go to a 2.0 version number.\n> \n> My reasoning:\n> * We have already got fairly significant ABI and indeed API changes in this \n>   release due to the mbuf rework. That allow makes it a logical point to \n>   bump the Intel DPDK major version number to 2.0\n> * Having the API versioning start at a 2.0 looks neater than having it at \n>   1.8, since .0 is a nice round version number to start with. Also if we \n>   decide in the near future for whatever reasons to go to a 2.0 release, the \n>   ABIs are probably still going to be 1.8. [Again, if we ever want to go to \n>   2.0, now looks the perfect time]\n> * For the naming of the .so files, starting with them at a .2 now seems \n>   reasonable to me, denoting a clean break with the older releases which did \n>   have a different ABI. [Though again it makes more sense if you consider \n>   that we may want to move to a 2.0 in future].\n> \n> What do people think?\n> \nI'm fine with it.  Just so that we're clear, this patch treats versions like\narbitrary strings (the file structure denotes version ordinality), so 1.8 vs 2.0\nmakes absolutely no difference as far as it goes, the exported version value is\na matter of policy, but I'm fine with making that adjustment\nNeil\n\n> /Bruce\n>",
        "headers": {
            "Return-Path": "<dev-bounces@dpdk.org>",
            "References": "<1410809031-19114-1-git-send-email-nhorman@tuxdriver.com>\n\t<1410809031-19114-3-git-send-email-nhorman@tuxdriver.com>\n\t<20140919094537.GA7568@BRICHA3-MOBL>",
            "X-Mailman-Version": "2.1.15",
            "From": "Neil Horman <nhorman@tuxdriver.com>",
            "User-Agent": "Mutt/1.5.23 (2014-03-12)",
            "List-Post": "<mailto:dev@dpdk.org>",
            "Content-Type": "text/plain; charset=us-ascii",
            "X-BeenThere": "dev@dpdk.org",
            "X-Original-To": "patchwork@dpdk.org",
            "Received": [
                "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id EEF7EB3A3;\n\tFri, 19 Sep 2014 12:16:21 +0200 (CEST)",
                "from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])\n\tby dpdk.org (Postfix) with ESMTP id 34622B347\n\tfor <dev@dpdk.org>; Fri, 19 Sep 2014 12:16:21 +0200 (CEST)",
                "from hmsreliant.think-freely.org\n\t([2001:470:8:a08:7aac:c0ff:fec2:933b] helo=localhost)\n\tby smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63)\n\t(envelope-from <nhorman@tuxdriver.com>)\n\tid 1XUvKE-0000GY-TW; Fri, 19 Sep 2014 06:22:09 -0400"
            ],
            "Subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
            "Sender": "\"dev\" <dev-bounces@dpdk.org>",
            "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
            "Message-ID": "<20140919102202.GB12897@hmsreliant.think-freely.org>",
            "Precedence": "list",
            "Date": "Fri, 19 Sep 2014 06:22:02 -0400",
            "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
            "Errors-To": "dev-bounces@dpdk.org",
            "X-Spam-Score": "-2.9 (--)",
            "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
            "X-Spam-Status": "No",
            "Cc": "dev@dpdk.org",
            "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
            "Delivered-To": "patchwork@dpdk.org",
            "In-Reply-To": "<20140919094537.GA7568@BRICHA3-MOBL>",
            "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
            "MIME-Version": "1.0",
            "To": "Bruce Richardson <bruce.richardson@intel.com>",
            "Content-Disposition": "inline"
        }
    },
    {
        "id": 1357,
        "web_url": "http://patches.dpdk.org/comment/1357/",
        "msgid": "<20141001112546.GA17019@sivswdev02.ir.intel.com>",
        "date": "2014-10-01T11:25:52",
        "subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
        "submitter": {
            "id": 73,
            "url": "http://patches.dpdk.org/api/people/73/",
            "name": "Sergio Gonzalez Monroy",
            "email": "sergio.gonzalez.monroy@intel.com"
        },
        "content": "On Mon, Sep 15, 2014 at 03:23:49PM -0400, Neil Horman wrote:\n> Add linker version script files to each DPDK library to put a stake in the\n> ground from which we can start cleaning up API's\n> \n> Signed-off-by: Neil Horman <nhorman@tuxdriver.com>\n> CC: Thomas Monjalon <thomas.monjalon@6wind.com>\n> CC: \"Richardson, Bruce\" <bruce.richardson@intel.com>\n> ---\n>  lib/librte_acl/Makefile                            |   2 +\n>  lib/librte_acl/rte_acl_version.map                 |  19 ++++\n>  lib/librte_cfgfile/Makefile                        |   2 +\n>  lib/librte_cfgfile/rte_cfgfile_version.map         |  14 +++\n>  lib/librte_cmdline/Makefile                        |   2 +\n>  lib/librte_cmdline/rte_cmdline_version.map         |  69 +++++++++++++\n>  lib/librte_distributor/Makefile                    |   2 +\n>  lib/librte_distributor/rte_distributor_version.map |  16 +++\n>  lib/librte_eal/bsdapp/eal/Makefile                 |   2 +\n>  lib/librte_eal/bsdapp/eal/rte_eal_version.map      |  89 +++++++++++++++++\n>  lib/librte_eal/linuxapp/eal/Makefile               |   2 +\n>  lib/librte_eal/linuxapp/eal/rte_eal_version.map    |  89 +++++++++++++++++\n>  lib/librte_ether/Makefile                          |   2 +\n>  lib/librte_ether/rte_ether_version.map             | 108 +++++++++++++++++++++\n>  lib/librte_hash/Makefile                           |   2 +\n>  lib/librte_hash/rte_hash_version.map               |  18 ++++\n>  lib/librte_ip_frag/Makefile                        |   2 +\n>  lib/librte_ip_frag/rte_ipfrag_version.map          |  14 +++\n>  lib/librte_ivshmem/Makefile                        |   2 +\n>  lib/librte_ivshmem/rte_ivshmem_version.map         |  13 +++\n>  lib/librte_kni/Makefile                            |   2 +\n>  lib/librte_kni/rte_kni_version.map                 |  19 ++++\n>  lib/librte_kvargs/Makefile                         |   2 +\n>  lib/librte_kvargs/rte_kvargs_version.map           |  10 ++\n>  lib/librte_lpm/Makefile                            |   2 +\n>  lib/librte_lpm/rte_lpm_version.map                 |  24 +++++\n>  lib/librte_malloc/Makefile                         |   2 +\n>  lib/librte_malloc/rte_malloc_version.map           |  19 ++++\n>  lib/librte_mbuf/Makefile                           |   2 +\n>  lib/librte_mbuf/rte_mbuf_version.map               |  12 +++\n>  lib/librte_mempool/Makefile                        |   2 +\n>  lib/librte_mempool/rte_mempool_version.map         |  18 ++++\n>  lib/librte_meter/Makefile                          |   2 +\n>  lib/librte_meter/rte_meter_version.map             |  13 +++\n>  lib/librte_pipeline/Makefile                       |   2 +\n>  lib/librte_pipeline/rte_pipeline_version.map       |  23 +++++\n>  lib/librte_pmd_bond/Makefile                       |   2 +\n>  lib/librte_pmd_bond/rte_eth_bond_version.map       |  20 ++++\n>  lib/librte_pmd_e1000/Makefile                      |   2 +\n>  lib/librte_pmd_e1000/rte_pmd_e1000_version.map     |   5 +\n>  lib/librte_pmd_i40e/Makefile                       |   2 +\n>  lib/librte_pmd_i40e/rte_pmd_i40e_version.map       |   5 +\n>  lib/librte_pmd_ixgbe/Makefile                      |   2 +\n>  lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map     |   5 +\n>  lib/librte_pmd_pcap/Makefile                       |   2 +\n>  lib/librte_pmd_pcap/rte_pmd_pcap_version.map       |   5 +\n>  lib/librte_pmd_ring/Makefile                       |   2 +\n>  lib/librte_pmd_ring/rte_eth_ring.c                 |   2 +-\n>  lib/librte_pmd_ring/rte_eth_ring.h                 |   6 --\n>  lib/librte_pmd_ring/rte_eth_ring_version.map       |  10 ++\n>  lib/librte_pmd_virtio/Makefile                     |   1 +\n>  lib/librte_pmd_virtio/rte_pmd_virtio_version.map   |   5 +\n>  lib/librte_pmd_vmxnet3/Makefile                    |   2 +\n>  lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map |   5 +\n>  lib/librte_pmd_xenvirt/Makefile                    |   2 +\n>  lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map |   8 ++\n>  lib/librte_port/Makefile                           |   2 +\n>  lib/librte_port/rte_port_version.map               |  18 ++++\n>  lib/librte_power/Makefile                          |   2 +\n>  lib/librte_power/rte_power_version.map             |  14 +++\n>  lib/librte_ring/Makefile                           |   2 +\n>  lib/librte_ring/rte_ring_version.map               |  12 +++\n>  lib/librte_sched/Makefile                          |   2 +\n>  lib/librte_sched/rte_sched_version.map             |  22 +++++\n>  lib/librte_table/Makefile                          |   2 +\n>  lib/librte_table/rte_table_version.map             |  22 +++++\n>  lib/librte_timer/Makefile                          |   2 +\n>  lib/librte_timer/rte_timer_version.map             |  16 +++\n>  68 files changed, 825 insertions(+), 7 deletions(-)\n>  create mode 100644 lib/librte_acl/rte_acl_version.map\n>  create mode 100644 lib/librte_cfgfile/rte_cfgfile_version.map\n>  create mode 100644 lib/librte_cmdline/rte_cmdline_version.map\n>  create mode 100644 lib/librte_distributor/rte_distributor_version.map\n>  create mode 100644 lib/librte_eal/bsdapp/eal/rte_eal_version.map\n>  create mode 100644 lib/librte_eal/linuxapp/eal/rte_eal_version.map\n>  create mode 100644 lib/librte_ether/rte_ether_version.map\n>  create mode 100644 lib/librte_hash/rte_hash_version.map\n>  create mode 100644 lib/librte_ip_frag/rte_ipfrag_version.map\n>  create mode 100644 lib/librte_ivshmem/rte_ivshmem_version.map\n>  create mode 100644 lib/librte_kni/rte_kni_version.map\n>  create mode 100644 lib/librte_kvargs/rte_kvargs_version.map\n>  create mode 100644 lib/librte_lpm/rte_lpm_version.map\n>  create mode 100644 lib/librte_malloc/rte_malloc_version.map\n>  create mode 100644 lib/librte_mbuf/rte_mbuf_version.map\n>  create mode 100644 lib/librte_mempool/rte_mempool_version.map\n>  create mode 100644 lib/librte_meter/rte_meter_version.map\n>  create mode 100644 lib/librte_pipeline/rte_pipeline_version.map\n>  create mode 100644 lib/librte_pmd_bond/rte_eth_bond_version.map\n>  create mode 100644 lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n>  create mode 100644 lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n>  create mode 100644 lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n>  create mode 100644 lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n>  create mode 100644 lib/librte_pmd_ring/rte_eth_ring_version.map\n>  create mode 100644 lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n>  create mode 100644 lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n>  create mode 100644 lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n>  create mode 100644 lib/librte_port/rte_port_version.map\n>  create mode 100644 lib/librte_power/rte_power_version.map\n>  create mode 100644 lib/librte_ring/rte_ring_version.map\n>  create mode 100644 lib/librte_sched/rte_sched_version.map\n>  create mode 100644 lib/librte_table/rte_table_version.map\n>  create mode 100644 lib/librte_timer/rte_timer_version.map\n> \n> diff --git a/lib/librte_acl/Makefile b/lib/librte_acl/Makefile\n> index 65e566d..1f96645 100644\n> --- a/lib/librte_acl/Makefile\n> +++ b/lib/librte_acl/Makefile\n> @@ -37,6 +37,8 @@ LIB = librte_acl.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_acl/rte_acl_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c\n>  \n> diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map\n> new file mode 100644\n> index 0000000..4480690\n> --- /dev/null\n> +++ b/lib/librte_acl/rte_acl_version.map\n> @@ -0,0 +1,19 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_acl_create;\n> +\trte_acl_find_existing;\n> +\trte_acl_free;\n> +\trte_acl_add_rules;\n> +\trte_acl_reset_rules;\n> +\trte_acl_build;\n> +\trte_acl_reset;\n> +\trte_acl_classify;\n> +\trte_acl_dump;\n> +\trte_acl_list_dump;\n> +\trte_acl_ipv4vlan_add_rules;\n> +\trte_acl_ipv4vlan_build;\n> +\trte_acl_classify_scalar;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_cfgfile/Makefile b/lib/librte_cfgfile/Makefile\n> index 55e8701..e655098 100644\n> --- a/lib/librte_cfgfile/Makefile\n> +++ b/lib/librte_cfgfile/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_cfgfile.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_cfgfile/rte_cfgfile_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map\n> new file mode 100644\n> index 0000000..10ecea6\n> --- /dev/null\n> +++ b/lib/librte_cfgfile/rte_cfgfile_version.map\n> @@ -0,0 +1,14 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_cfgfile_load;\n> +\trte_cfgfile_num_sections;\n> +\trte_cfgfile_sections;\n> +\trte_cfgfile_has_section;\n> +\trte_cfgfile_section_num_entries;\n> +\trte_cfgfile_section_entries;\n> +\trte_cfgfile_get_entry;\n> +\trte_cfgfile_has_entry;\n> +\trte_cfgfile_close;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_cmdline/Makefile b/lib/librte_cmdline/Makefile\n> index 7eae449..1a47173 100644\n> --- a/lib/librte_cmdline/Makefile\n> +++ b/lib/librte_cmdline/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_cmdline.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_cmdline/rte_cmdline_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) := cmdline.c\n>  SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_cirbuf.c\n> diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map\n> new file mode 100644\n> index 0000000..7616eff\n> --- /dev/null\n> +++ b/lib/librte_cmdline/rte_cmdline_version.map\n> @@ -0,0 +1,69 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\tcmdline_new;\n> +\tcmdline_set_prompt;\n> +\tcmdline_free;\n> +\tcmdline_printf;\n> +\tcmdline_in;\n> +\tcmdline_write_char;\n> +\tcmdline_interact;\n> +\tcmdline_quit;\n> +\tcmdline_parse;\n> +\tcmdline_complete;\n> +\tcmdline_isendoftoken;\n> +\tcmdline_parse_num;\n> +\tcmdline_get_help_num;\n> +\tcmdline_parse_ipaddr;\n> +\tcmdline_get_help_ipaddr;\n> +\tcmdline_parse_etheraddr;\n> +\tcmdline_get_help_etheraddr;\n> +\tcmdline_parse_string;\n> +\tcmdline_complete_get_nb_string;\n> +\tcmdline_complete_get_elt_string;\n> +\tcmdline_get_help_string;\n> +\tcmdline_parse_portlist;\n> +\tcmdline_get_help_portlist;\n> +\tcmdline_token_string_ops;\n> +\tcmdline_token_num_ops;\n> +\tcmdline_token_string_ops;\n> +\tcmdline_token_ipaddr_ops;\n> +\tcmdline_token_etheraddr_ops;\n> +\tvt100_init;\n> +\tvt100_parser;\n> +\tcmdline_file_new;\n> +\tcmdline_stdin_new;\n> +\tcmdline_stdin_exit;\n> +\tcirbuf_init;\n> +\tcirbuf_add_head_safe;\n> +\tcirbuf_add_head;\n> +\tcirbuf_add_tail_safe;\n> +\tcirbuf_add_tail;\n> +\tcirbuf_del_head_safe;\n> +\tcirbuf_del_head;\n> +\tcirbuf_del_tail_safe;\n> +\tcirbuf_del_tail;\n> +\tcirbuf_get_head;\n> +\tcirbuf_get_tail;\n> +\tcirbuf_add_buf_head;\n> +\tcirbuf_add_buf_tail;\n> +\tcirbuf_del_buf_head;\n> +\tcirbuf_del_buf_tail;\n> +\tcirbuf_get_buf_head;\n> +\tcirbuf_get_buf_tail;\n> +\tcirbuf_align_left;\n> +\tcirbuf_align_right;\n> +\trdline_init;\n> +\trdline_newline;\n> +\trdline_stop;\n> +\trdline_quit;\n> +\trdline_restart;\n> +\trdline_redisplay;\n> +\trdline_reset;\n> +\trdline_char_in;\n> +\trdline_get_buffer;\n> +\trdline_add_history;\n> +\trdline_clear_history;\n> +\trdline_get_history_item;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile\n> index 36699f8..97d8bbb 100644\n> --- a/lib/librte_distributor/Makefile\n> +++ b/lib/librte_distributor/Makefile\n> @@ -37,6 +37,8 @@ LIB = librte_distributor.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_distributor/rte_distributor_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor.c\n>  \n> diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map\n> new file mode 100644\n> index 0000000..b81ddc8\n> --- /dev/null\n> +++ b/lib/librte_distributor/rte_distributor_version.map\n> @@ -0,0 +1,16 @@\n> +DPDK_1.8 {\n> +\n> +\tglobal:\n> +\trte_distributor_create;\n> +\trte_distributor_process;\n> +\trte_distributor_returned_pkts;\n> +\trte_distributor_flush;\n> +\trte_distributor_clear_returns;\n> +\trte_distributor_get_pkt;\n> +\trte_distributor_return_pkt;\n> +\trte_distributor_request_pkt;\n> +\trte_distributor_poll_pkt;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_eal/bsdapp/eal/Makefile b/lib/librte_eal/bsdapp/eal/Makefile\n> index 8f44273..2caaf00 100644\n> --- a/lib/librte_eal/bsdapp/eal/Makefile\n> +++ b/lib/librte_eal/bsdapp/eal/Makefile\n> @@ -45,6 +45,8 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_ring\n>  CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_pcap\n>  CFLAGS += $(WERROR_FLAGS) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> +\n>  # specific to linuxapp exec-env\n>  SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) := eal.c\n>  SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_memory.c\n> diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> new file mode 100644\n> index 0000000..71788e1\n> --- /dev/null\n> +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> @@ -0,0 +1,89 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_eal_alarm_set;\n> +\trte_eal_alarm_cancel;\n> +\trte_exit;\n> +\trte_cpu_get_flag_enabled;\n> +\trte_cpu_check_supported;\n> +\trte_get_tsc_hz;\n> +\trte_get_hpet_cycles;\n> +\trte_get_hpet_hz;\n> +\trte_eal_hpet_init;\n> +\trte_delay_us;\n> +\trte_dump_stack;\n> +\trte_dump_registers;\n> +\t__rte_panic;\n> +\trte_eal_devargs_add;\n> +\trte_eal_devargs_type_count;\n> +\trte_eal_devargs_dump;\n> +\trte_eal_driver_register;\n> +\trte_eal_driver_unregister;\n> +\trte_eal_dev_init;\n> +\trte_eal_init;\n> +\trte_set_application_usage_hook;\n> +\trte_eal_has_hugepages;\n> +\trte_strerror;\n> +\trte_hexdump;\n> +\trte_memdump;\n> +\trte_intr_callback_register;\n> +\trte_intr_callback_unregister;\n> +\trte_intr_enable;\n> +\trte_intr_disable;\n> +\trte_eal_remote_launch;\n> +\trte_eal_mp_remote_launch;\n> +\trte_eal_get_lcore_state;\n> +\trte_eal_wait_lcore;\n> +\trte_eal_mp_wait_lcore;\n> +\trte_openlog_stream;\n> +\trte_set_log_level;\n> +\trte_set_log_type;\n> +\trte_log_cur_msg_loglevel;\n> +\trte_log_cur_msg_logtype;\n> +\trte_log_set_history;\n> +\trte_log_dump_history;\n> +\trte_log_add_in_history;\n> +\trte_log;\n> +\trte_vlog;\n> +\trte_mem_lock_page;\n> +\trte_mem_virt2phy;\n> +\trte_eal_get_physmem_layout;\n> +\trte_dump_physmem_layout;\n> +\trte_eal_get_physmem_size;\n> +\trte_memory_get_nchannel;\n> +\trte_memory_get_nrank;\n> +\trte_mem_phy2mch;\n> +\trte_xen_dom0_memory_init;\n> +\trte_xen_dom0_memory_attach;\n> +\trte_memzone_reserve;\n> +\trte_memzone_reserve_aligned;\n> +\trte_memzone_reserve_bounded;\n> +\trte_memzone_lookup;\n> +\trte_memzone_dump;\n> +\trte_memzone_walk;\n> +\trte_eal_pci_probe;\n> +\trte_eal_pci_dump;\n> +\trte_eal_pci_register;\n> +\trte_eal_pci_unregister;\n> +\trte_snprintf;\n> +\trte_strsplit;\n> +\trte_eal_tailq_reserve;\n> +\trte_eal_tailq_reserve_by_idx;\n> +\trte_dump_tailq;\n> +\trte_eal_tailq_lookup;\n> +\trte_eal_tailq_lookup_by_idx;\n> +\tlcore_config;\n> +\tper_lcore__lcore_id;\n> +\teal_timer_source;\n> +\trte_cycles_vmware_tsc_map;\n> +\trte_eal_get_configuration;\n> +\trte_logs;\n> +\trte_eal_lcore_role;\n> +\ttest_mp_secondary;\n> +\trte_eal_process_type;\n> +\tper_lcore__rte_errno;\n> +\tpci_device_list;\n> +\tdevargs_list;\n> +\teal_parse_sysfs_value;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile\n> index 756d6b0..254d59c 100644\n> --- a/lib/librte_eal/linuxapp/eal/Makefile\n> +++ b/lib/librte_eal/linuxapp/eal/Makefile\n> @@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk\n>  \n>  LIB = librte_eal.a\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> +\n>  VPATH += $(RTE_SDK)/lib/librte_eal/common\n>  \n>  CFLAGS += -I$(SRCDIR)/include\n> diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> new file mode 100644\n> index 0000000..71788e1\n> --- /dev/null\n> +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> @@ -0,0 +1,89 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_eal_alarm_set;\n> +\trte_eal_alarm_cancel;\n> +\trte_exit;\n> +\trte_cpu_get_flag_enabled;\n> +\trte_cpu_check_supported;\n> +\trte_get_tsc_hz;\n> +\trte_get_hpet_cycles;\n> +\trte_get_hpet_hz;\n> +\trte_eal_hpet_init;\n> +\trte_delay_us;\n> +\trte_dump_stack;\n> +\trte_dump_registers;\n> +\t__rte_panic;\n> +\trte_eal_devargs_add;\n> +\trte_eal_devargs_type_count;\n> +\trte_eal_devargs_dump;\n> +\trte_eal_driver_register;\n> +\trte_eal_driver_unregister;\n> +\trte_eal_dev_init;\n> +\trte_eal_init;\n> +\trte_set_application_usage_hook;\n> +\trte_eal_has_hugepages;\n> +\trte_strerror;\n> +\trte_hexdump;\n> +\trte_memdump;\n> +\trte_intr_callback_register;\n> +\trte_intr_callback_unregister;\n> +\trte_intr_enable;\n> +\trte_intr_disable;\n> +\trte_eal_remote_launch;\n> +\trte_eal_mp_remote_launch;\n> +\trte_eal_get_lcore_state;\n> +\trte_eal_wait_lcore;\n> +\trte_eal_mp_wait_lcore;\n> +\trte_openlog_stream;\n> +\trte_set_log_level;\n> +\trte_set_log_type;\n> +\trte_log_cur_msg_loglevel;\n> +\trte_log_cur_msg_logtype;\n> +\trte_log_set_history;\n> +\trte_log_dump_history;\n> +\trte_log_add_in_history;\n> +\trte_log;\n> +\trte_vlog;\n> +\trte_mem_lock_page;\n> +\trte_mem_virt2phy;\n> +\trte_eal_get_physmem_layout;\n> +\trte_dump_physmem_layout;\n> +\trte_eal_get_physmem_size;\n> +\trte_memory_get_nchannel;\n> +\trte_memory_get_nrank;\n> +\trte_mem_phy2mch;\n> +\trte_xen_dom0_memory_init;\n> +\trte_xen_dom0_memory_attach;\n> +\trte_memzone_reserve;\n> +\trte_memzone_reserve_aligned;\n> +\trte_memzone_reserve_bounded;\n> +\trte_memzone_lookup;\n> +\trte_memzone_dump;\n> +\trte_memzone_walk;\n> +\trte_eal_pci_probe;\n> +\trte_eal_pci_dump;\n> +\trte_eal_pci_register;\n> +\trte_eal_pci_unregister;\n> +\trte_snprintf;\n> +\trte_strsplit;\n> +\trte_eal_tailq_reserve;\n> +\trte_eal_tailq_reserve_by_idx;\n> +\trte_dump_tailq;\n> +\trte_eal_tailq_lookup;\n> +\trte_eal_tailq_lookup_by_idx;\n> +\tlcore_config;\n> +\tper_lcore__lcore_id;\n> +\teal_timer_source;\n> +\trte_cycles_vmware_tsc_map;\n> +\trte_eal_get_configuration;\n> +\trte_logs;\n> +\trte_eal_lcore_role;\n> +\ttest_mp_secondary;\n> +\trte_eal_process_type;\n> +\tper_lcore__rte_errno;\n> +\tpci_device_list;\n> +\tdevargs_list;\n> +\teal_parse_sysfs_value;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_ether/Makefile b/lib/librte_ether/Makefile\n> index b310f8b..f40b5cc 100644\n> --- a/lib/librte_ether/Makefile\n> +++ b/lib/librte_ether/Makefile\n> @@ -39,6 +39,8 @@ LIB = libethdev.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_ether/rte_ether_version.map\n> +\n>  SRCS-y += rte_ethdev.c\n>  \n>  #\n> diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map\n> new file mode 100644\n> index 0000000..41952ab\n> --- /dev/null\n> +++ b/lib/librte_ether/rte_ether_version.map\n> @@ -0,0 +1,108 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_eth_driver_register;\n> +\trte_eth_dev_configure;\n> +\trte_eth_rx_queue_setup;\n> +\trte_eth_tx_queue_setup;\n> +\trte_eth_dev_socket_id;\n> +\trte_eth_dev_rx_queue_start;\n> +\trte_eth_dev_rx_queue_stop;\n> +\trte_eth_dev_tx_queue_start;\n> +\trte_eth_dev_tx_queue_stop;\n> +\trte_eth_dev_start;\n> +\trte_eth_dev_stop;\n> +\trte_eth_dev_set_link_up;\n> +\trte_eth_dev_set_link_down;\n> +\trte_eth_dev_close;\n> +\trte_eth_promiscuous_enable;\n> +\trte_eth_promiscuous_disable;\n> +\trte_eth_promiscuous_get;\n> +\trte_eth_allmulticast_enable;\n> +\trte_eth_allmulticast_disable;\n> +\trte_eth_allmulticast_get;\n> +\trte_eth_link;\n> +\trte_eth_link_get_nowait;\n> +\trte_eth_stats;\n> +\trte_eth_stats_reset;\n> +\trte_eth_dev_set_tx_queue_stats_mapping;\n> +\trte_eth_dev_set_rx_queue_stats_mapping;\n> +\trte_eth_macaddr_get;\n> +\trte_eth_dev_info_get;\n> +\trte_eth_dev_get_mtu;\n> +\trte_eth_dev_set_mtu;\n> +\trte_eth_dev_vlan_filter;\n> +\trte_eth_dev_set_vlan_strip_on_queue;\n> +\trte_eth_dev_set_vlan_ether_type;\n> +\trte_eth_dev_set_vlan_offload;\n> +\trte_eth_dev_get_vlan_offload;\n> +\trte_eth_dev_set_vlan_pvid;\n> +\trte_eth_rx_burst;\n> +\trte_eth_rx_queue_count;\n> +\trte_eth_rx_descriptor_done;\n> +\trte_eth_tx_burst;\n> +\trte_eth_dev_fdir_add_signature_filter;\n> +\trte_eth_dev_fdir_update_signature_filter;\n> +\trte_eth_dev_fdir_remove_signature_filter;\n> +\trte_eth_dev_fdir_get_infos;\n> +\trte_eth_dev_fdir_add_perfect_filter;\n> +\trte_eth_dev_fdir_update_perfect_filter;\n> +\trte_eth_dev_fdir_remove_perfect_filter;\n> +\trte_eth_dev_fdir_set_masks;\n> +\trte_eth_dev_callback_register;\n> +\trte_eth_dev_callback_unregister;\n> +\trte_eth_dev_callback_process;\n> +\trte_eth_led_on;\n> +\trte_eth_led_off;\n> +\trte_eth_dev_flow_ctrl_get;\n> +\trte_eth_dev_flow_ctrl_set;\n> +\trte_eth_dev_priority_flow_ctrl_set;\n> +\trte_eth_dev_mac_addr_add;\n> +\trte_eth_dev_mac_addr_remove;\n> +\trte_eth_dev_rss_reta_update;\n> +\trte_eth_dev_rss_reta_query;\n> +\trte_eth_dev_uc_hash_table_set;\n> +\trte_eth_dev_uc_all_hash_table_set;\n> +\trte_eth_dev_set_vf_rxmode;\n> +\trte_eth_dev_set_vf_tx;\n> +\trte_eth_dev_set_vf_rx;\n> +\trte_eth_dev_set_vf_vlan_filter;\n> +\trte_eth_mirror_rule_set;\n> +\trte_eth_mirror_rule_reset;\n> +\trte_eth_set_queue_rate_limit;\n> +\trte_eth_set_vf_rate_limit;\n> +\trte_eth_dev_bypass_init;\n> +\trte_eth_dev_bypass_state_show;\n> +\trte_eth_dev_bypass_state_set;\n> +\trte_eth_dev_bypass_event_show;\n> +\trte_eth_dev_bypass_event_store;\n> +\trte_eth_dev_wd_timeout_store;\n> +\trte_eth_dev_bypass_ver_show;\n> +\trte_eth_dev_bypass_wd_timeout_show;\n> +\trte_eth_dev_bypass_wd_reset;\n> +\trte_eth_dev_rss_hash_update;\n> +\trte_eth_dev_rss_hash_conf_get;\n> +\trte_eth_dev_add_syn_filter;\n> +\trte_eth_dev_remove_syn_filter;\n> +\trte_eth_dev_get_syn_filter;\n> +\trte_eth_dev_add_ethertype_filter;\n> +\trte_eth_dev_remove_ethertype_filter;\n> +\trte_eth_dev_get_ethertype_filter;\n> +\trte_eth_dev_add_2tuple_filter;\n> +\trte_eth_dev_remove_2tuple_filter;\n> +\trte_eth_dev_get_2tuple_filter;\n> +\trte_eth_dev_add_5tuple_filter;\n> +\trte_eth_dev_remove_5tuple_filter;\n> +\trte_eth_dev_get_5tuple_filter;\n> +\trte_eth_dev_add_flex_filter;\n> +\trte_eth_dev_remove_flex_filter;\n> +\trte_eth_dev_get_flex_filter;\n> +\trte_eth_dev_count;\n> +\trte_eth_link_get;\n> +\trte_eth_devices;\n> +\trte_eth_stats_get;\n> +\trte_eth_dev_allocate;\n> +\t_rte_eth_dev_callback_process;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_hash/Makefile b/lib/librte_hash/Makefile\n> index 95e4c09..a449ec2 100644\n> --- a/lib/librte_hash/Makefile\n> +++ b/lib/librte_hash/Makefile\n> @@ -37,6 +37,8 @@ LIB = librte_hash.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_hash/rte_hash_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_HASH) := rte_hash.c\n>  SRCS-$(CONFIG_RTE_LIBRTE_HASH) += rte_fbk_hash.c\n> diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map\n> new file mode 100644\n> index 0000000..2a34313\n> --- /dev/null\n> +++ b/lib/librte_hash/rte_hash_version.map\n> @@ -0,0 +1,18 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_fbk_hash_find_existing;\n> +\trte_fbk_hash_create;\n> +\trte_fbk_hash_free;\n> +\trte_hash_create;\n> +\trte_hash_find_existing;\n> +\trte_hash_free;\n> +\trte_hash_add_key;\n> +\trte_hash_add_key_with_hash;\n> +\trte_hash_del_key;\n> +\trte_hash_del_key_with_hash;\n> +\trte_hash_lookup;\n> +\trte_hash_lookup_with_hash;\n> +\trte_hash_lookup_bulk;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_ip_frag/Makefile b/lib/librte_ip_frag/Makefile\n> index 2265c93..ede5a89 100644\n> --- a/lib/librte_ip_frag/Makefile\n> +++ b/lib/librte_ip_frag/Makefile\n> @@ -37,6 +37,8 @@ LIB = librte_ip_frag.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_ip_frag/rte_ipfrag_version.map\n> +\n>  #source files\n>  SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv4_fragmentation.c\n>  SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv4_reassembly.c\n> diff --git a/lib/librte_ip_frag/rte_ipfrag_version.map b/lib/librte_ip_frag/rte_ipfrag_version.map\n> new file mode 100644\n> index 0000000..afe1a0b\n> --- /dev/null\n> +++ b/lib/librte_ip_frag/rte_ipfrag_version.map\n> @@ -0,0 +1,14 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_ip_frag_table_create;\n> +\trte_ipv6_fragment_packet;\n> +\trte_ipv6_frag_reassemble_packet;\n> +\trte_ipv4_fragment_packet;\n> +\trte_ipv4_frag_reassemble_packet;\n> +\trte_ip_frag_free_death_row;\n> +\trte_ip_frag_table_statistics_dump;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_ivshmem/Makefile b/lib/librte_ivshmem/Makefile\n> index 536814c..be6f21a 100644\n> --- a/lib/librte_ivshmem/Makefile\n> +++ b/lib/librte_ivshmem/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_ivshmem.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAPS := $(RTE_SDK)/lib/librte_ivshmem/rte_ivshmem_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_IVSHMEM) := rte_ivshmem.c\n>  \n> diff --git a/lib/librte_ivshmem/rte_ivshmem_version.map b/lib/librte_ivshmem/rte_ivshmem_version.map\n> new file mode 100644\n> index 0000000..a204339\n> --- /dev/null\n> +++ b/lib/librte_ivshmem/rte_ivshmem_version.map\n> @@ -0,0 +1,13 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_ivshmem_metadata_create;\n> +\trte_ivshmem_metadata_add_memzone;\n> +\trte_ivshmem_metadata_add_ring;\n> +\trte_ivshmem_metadata_add_mempool;\n> +\trte_ivshmem_metadata_cmdline_generate;\n> +\trte_ivshmem_metadata_dump;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_kni/Makefile b/lib/librte_kni/Makefile\n> index 5267304..c119fc1 100644\n> --- a/lib/librte_kni/Makefile\n> +++ b/lib/librte_kni/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_kni.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_kni/rte_kni_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_KNI) := rte_kni.c\n>  \n> diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map\n> new file mode 100644\n> index 0000000..58fbc1f\n> --- /dev/null\n> +++ b/lib/librte_kni/rte_kni_version.map\n> @@ -0,0 +1,19 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_kni_alloc;\n> +\trte_kni_create;\n> +\trte_kni_release;\n> +\trte_kni_handle_request;\n> +\trte_kni_rx_burst;\n> +\trte_kni_tx_burst;\n> +\trte_kni_get_port_id;\n> +\trte_kni_get;\n> +\trte_kni_info_get;\n> +\trte_kni_register_handlers;\n> +\trte_kni_unregister_handlers;\n> +\trte_kni_close;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_kvargs/Makefile b/lib/librte_kvargs/Makefile\n> index b09359a..83a42b1 100644\n> --- a/lib/librte_kvargs/Makefile\n> +++ b/lib/librte_kvargs/Makefile\n> @@ -38,6 +38,8 @@ LIB = librte_kvargs.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_kvargs/rte_kvargs_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) := rte_kvargs.c\n>  \n> diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map\n> new file mode 100644\n> index 0000000..7873c8c\n> --- /dev/null\n> +++ b/lib/librte_kvargs/rte_kvargs_version.map\n> @@ -0,0 +1,10 @@\n> +DPDK_1.8 {\n> +\n> +\tglobal:\n> +\trte_kvargs_parse;\n> +\trte_kvargs_free;\n> +\trte_kvargs_process;\n> +\trte_kvargs_count;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_lpm/Makefile b/lib/librte_lpm/Makefile\n> index fa94163..05de8d9 100644\n> --- a/lib/librte_lpm/Makefile\n> +++ b/lib/librte_lpm/Makefile\n> @@ -37,6 +37,8 @@ LIB = librte_lpm.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_lpm/rte_lpm_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_LPM) := rte_lpm.c rte_lpm6.c\n>  \n> diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map\n> new file mode 100644\n> index 0000000..8ae9318\n> --- /dev/null\n> +++ b/lib/librte_lpm/rte_lpm_version.map\n> @@ -0,0 +1,24 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_lpm_create;\n> +\trte_lpm_find_existing;\n> +\trte_lpm_free;\n> +\trte_lpm_add;\n> +\trte_lpm_is_rule_present;\n> +\trte_lpm_delete;\n> +\trte_lpm_delete_all;\n> +\trte_lpm6_create;\n> +\trte_lpm6_find_existing;\n> +\trte_lpm6_free;\n> +\trte_lpm6_add;\n> +\trte_lpm6_is_rule_present;\n> +\trte_lpm6_delete;\n> +\trte_lpm6_delete_bulk_func;\n> +\trte_lpm6_delete_all;\n> +\trte_lpm6_lookup;\n> +\trte_lpm6_lookup_bulk_func;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_malloc/Makefile b/lib/librte_malloc/Makefile\n> index ba87e34..1a5c288 100644\n> --- a/lib/librte_malloc/Makefile\n> +++ b/lib/librte_malloc/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_malloc.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_malloc/rte_malloc_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_MALLOC) := rte_malloc.c malloc_elem.c malloc_heap.c\n>  \n> diff --git a/lib/librte_malloc/rte_malloc_version.map b/lib/librte_malloc/rte_malloc_version.map\n> new file mode 100644\n> index 0000000..77db879\n> --- /dev/null\n> +++ b/lib/librte_malloc/rte_malloc_version.map\n> @@ -0,0 +1,19 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_malloc;\n> +\trte_zmalloc;\n> +\trte_calloc;\n> +\trte_realloc;\n> +\trte_malloc_socket;\n> +\trte_zmalloc_socket;\n> +\trte_calloc_socket;\n> +\trte_free;\n> +\trte_malloc_validate;\n> +\trte_malloc_get_socket_stats;\n> +\trte_malloc_dump_stats;\n> +\trte_malloc_set_limit;\n> +\trte_malloc_virt2phy;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_mbuf/Makefile b/lib/librte_mbuf/Makefile\n> index 9b45ba4..5cd4941 100644\n> --- a/lib/librte_mbuf/Makefile\n> +++ b/lib/librte_mbuf/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_mbuf.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_mbuf/rte_mbuf_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_MBUF) := rte_mbuf.c\n>  \n> diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map\n> new file mode 100644\n> index 0000000..55e352b\n> --- /dev/null\n> +++ b/lib/librte_mbuf/rte_mbuf_version.map\n> @@ -0,0 +1,12 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_mbuf_sanity_check;\n> +\trte_ctrlmbuf_init;\n> +\trte_pktmbuf_init;\n> +\trte_pktmbuf_pool_init;\n> +\trte_pktmbuf_dump;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_mempool/Makefile b/lib/librte_mempool/Makefile\n> index 9939e10..07b5b4e 100644\n> --- a/lib/librte_mempool/Makefile\n> +++ b/lib/librte_mempool/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_mempool.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_mempool/rte_mempool_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) +=  rte_mempool.c\n>  ifeq ($(CONFIG_RTE_LIBRTE_XEN_DOM0),y)\n> diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map\n> new file mode 100644\n> index 0000000..7a19982\n> --- /dev/null\n> +++ b/lib/librte_mempool/rte_mempool_version.map\n> @@ -0,0 +1,18 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_mempool_create;\n> +\trte_mempool_xmem_create;\n> +\trte_dom0_mempool_create;\n> +\trte_mempool_dump;\n> +\trte_mempool_audit;\n> +\trte_mempool_list_dump;\n> +\trte_mempool_lookup;\n> +\trte_mempool_calc_obj_size;\n> +\trte_mempool_xmem_size;\n> +\trte_mempool_xmem_usage;\n> +\trte_mempool_walk;\n> +\trte_mempool_count;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_meter/Makefile b/lib/librte_meter/Makefile\n> index b25c0cc..0778690 100644\n> --- a/lib/librte_meter/Makefile\n> +++ b/lib/librte_meter/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_meter.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_meter/rte_meter_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map\n> new file mode 100644\n> index 0000000..51a73b1\n> --- /dev/null\n> +++ b/lib/librte_meter/rte_meter_version.map\n> @@ -0,0 +1,13 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_meter_srtcm_config;\n> +\trte_meter_trtcm_config;\n> +\trte_meter_srtcm_color_blind_check;\n> +\trte_meter_srtcm_color_aware_check;\n> +\trte_meter_trtcm_color_blind_check;\n> +\trte_meter_trtcm_color_aware_check;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pipeline/Makefile b/lib/librte_pipeline/Makefile\n> index cf8fde8..5465d00 100644\n> --- a/lib/librte_pipeline/Makefile\n> +++ b/lib/librte_pipeline/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pipeline.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pipeline/rte_pipeline_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map\n> new file mode 100644\n> index 0000000..f868b96\n> --- /dev/null\n> +++ b/lib/librte_pipeline/rte_pipeline_version.map\n> @@ -0,0 +1,23 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_pipeline_create;\n> +\trte_pipeline_free;\n> +\trte_pipeline_check;\n> +\trte_pipeline_run;\n> +\trte_pipeline_flush;\n> +\trte_pipeline_table_create;\n> +\trte_pipeline_table_default_entry_add;\n> +\trte_pipeline_table_default_entry_delete;\n> +\trte_pipeline_table_entry_add;\n> +\trte_pipeline_table_entry_delete;\n> +\trte_pipeline_port_in_create;\n> +\trte_pipeline_port_in_connect_to_table;\n> +\trte_pipeline_port_in_enable;\n> +\trte_pipeline_port_in_disable;\n> +\trte_pipeline_port_out_create;\n> +\trte_pipeline_port_out_packet_insert;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_bond/Makefile b/lib/librte_pmd_bond/Makefile\n> index 953d75e..5b14ce2 100644\n> --- a/lib/librte_pmd_bond/Makefile\n> +++ b/lib/librte_pmd_bond/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pmd_bond.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_bond/rte_eth_bond_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_pmd_bond/rte_eth_bond_version.map b/lib/librte_pmd_bond/rte_eth_bond_version.map\n> new file mode 100644\n> index 0000000..17f0a1f\n> --- /dev/null\n> +++ b/lib/librte_pmd_bond/rte_eth_bond_version.map\n> @@ -0,0 +1,20 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_eth_bond_create;\n> +\trte_eth_bond_slave_add;\n> +\trte_eth_bond_slave_remove;\n> +\trte_eth_bond_mode_set;\n> +\trte_eth_bond_mode_get;\n> +\trte_eth_bond_primary_set;\n> +\trte_eth_bond_primary_get;\n> +\trte_eth_bond_slaves_get;\n> +\trte_eth_bond_active_slaves_get;\n> +\trte_eth_bond_mac_address_set;\n> +\trte_eth_bond_mac_address_reset;\n> +\trte_eth_bond_xmit_policy_set;\n> +\trte_eth_bond_xmit_policy_get;\n> +\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_pmd_e1000/Makefile b/lib/librte_pmd_e1000/Makefile\n> index 14bc4a2..e225bfe 100644\n> --- a/lib/librte_pmd_e1000/Makefile\n> +++ b/lib/librte_pmd_e1000/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pmd_e1000.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> +\n>  ifeq ($(CC), icc)\n>  #\n>  # CFLAGS for icc\n> diff --git a/lib/librte_pmd_e1000/rte_pmd_e1000_version.map b/lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> new file mode 100644\n> index 0000000..cbc401f\n> --- /dev/null\n> +++ b/lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> @@ -0,0 +1,5 @@\n> +DPDK_1.8 {\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_i40e/Makefile b/lib/librte_pmd_i40e/Makefile\n> index 4b31675..cfbe816 100644\n> --- a/lib/librte_pmd_i40e/Makefile\n> +++ b/lib/librte_pmd_i40e/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pmd_i40e.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> +\n>  #\n>  # Add extra flags for base driver files (also known as shared code)\n>  # to disable warnings\n> diff --git a/lib/librte_pmd_i40e/rte_pmd_i40e_version.map b/lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> new file mode 100644\n> index 0000000..cbc401f\n> --- /dev/null\n> +++ b/lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> @@ -0,0 +1,5 @@\n> +DPDK_1.8 {\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_ixgbe/Makefile b/lib/librte_pmd_ixgbe/Makefile\n> index 00ccedb..1dd14a6 100644\n> --- a/lib/librte_pmd_ixgbe/Makefile\n> +++ b/lib/librte_pmd_ixgbe/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pmd_ixgbe.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> +\n>  ifeq ($(CC), icc)\n>  #\n>  # CFLAGS for icc\n> diff --git a/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map b/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> new file mode 100644\n> index 0000000..cbc401f\n> --- /dev/null\n> +++ b/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> @@ -0,0 +1,5 @@\n> +DPDK_1.8 {\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_pcap/Makefile b/lib/librte_pmd_pcap/Makefile\n> index c5c214d..fff5572 100644\n> --- a/lib/librte_pmd_pcap/Makefile\n> +++ b/lib/librte_pmd_pcap/Makefile\n> @@ -40,6 +40,8 @@ LIB = librte_pmd_pcap.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_pmd_pcap/rte_pmd_pcap_version.map b/lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> new file mode 100644\n> index 0000000..cbc401f\n> --- /dev/null\n> +++ b/lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> @@ -0,0 +1,5 @@\n> +DPDK_1.8 {\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_ring/Makefile b/lib/librte_pmd_ring/Makefile\n> index b57e421..25ad27f 100644\n> --- a/lib/librte_pmd_ring/Makefile\n> +++ b/lib/librte_pmd_ring/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pmd_ring.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_ring/rte_eth_ring_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_pmd_ring/rte_eth_ring.c b/lib/librte_pmd_ring/rte_eth_ring.c\n> index 4f1b6ed..df7b583 100644\n> --- a/lib/librte_pmd_ring/rte_eth_ring.c\n> +++ b/lib/librte_pmd_ring/rte_eth_ring.c\n> @@ -473,7 +473,7 @@ out:\n>  \treturn ret;\n>  }\n>  \n> -int\n> +static int\n>  rte_pmd_ring_devinit(const char *name, const char *params)\n>  {\n>  \tstruct rte_kvargs *kvlist;\n> diff --git a/lib/librte_pmd_ring/rte_eth_ring.h b/lib/librte_pmd_ring/rte_eth_ring.h\n> index e6ae19e..d36489a 100644\n> --- a/lib/librte_pmd_ring/rte_eth_ring.h\n> +++ b/lib/librte_pmd_ring/rte_eth_ring.h\n> @@ -50,12 +50,6 @@ int rte_eth_from_rings(const char *name,\n>  int rte_eth_ring_pair_create(const char *name, const unsigned numa_node);\n>  int rte_eth_ring_pair_attach(const char *name, const unsigned numa_node);\n>  \n> -/**\n> - * For use by test apps only. Called as part of EAL init to set up any dummy NICs\n> - * configured on command line.\n> - */\n> -int rte_pmd_ring_devinit(const char *name, const char *params);\n> -\n>  #ifdef __cplusplus\n>  }\n>  #endif\n> diff --git a/lib/librte_pmd_ring/rte_eth_ring_version.map b/lib/librte_pmd_ring/rte_eth_ring_version.map\n> new file mode 100644\n> index 0000000..5edaa3d\n> --- /dev/null\n> +++ b/lib/librte_pmd_ring/rte_eth_ring_version.map\n> @@ -0,0 +1,10 @@\n> +DPDK_1.8 {\n> +\n> +\tglobal:\n> +\n> +\trte_eth_from_rings;\n> +\trte_eth_ring_pair_create;\n> +\trte_eth_ring_pair_attach;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_pmd_virtio/Makefile b/lib/librte_pmd_virtio/Makefile\n> index 456095b..bf51bd9 100644\n> --- a/lib/librte_pmd_virtio/Makefile\n> +++ b/lib/librte_pmd_virtio/Makefile\n> @@ -39,6 +39,7 @@ LIB = librte_pmd_virtio_uio.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n>  \n>  #\n>  # all source are stored in SRCS-y\n> diff --git a/lib/librte_pmd_virtio/rte_pmd_virtio_version.map b/lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n> new file mode 100644\n> index 0000000..cbc401f\n> --- /dev/null\n> +++ b/lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n> @@ -0,0 +1,5 @@\n> +DPDK_1.8 {\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_vmxnet3/Makefile b/lib/librte_pmd_vmxnet3/Makefile\n> index 6872c74..e5a1c6b 100644\n> --- a/lib/librte_pmd_vmxnet3/Makefile\n> +++ b/lib/librte_pmd_vmxnet3/Makefile\n> @@ -66,6 +66,8 @@ endif\n>  \n>  VPATH += $(RTE_SDK)/lib/librte_pmd_vmxnet3/vmxnet3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map b/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> new file mode 100644\n> index 0000000..cbc401f\n> --- /dev/null\n> +++ b/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> @@ -0,0 +1,5 @@\n> +DPDK_1.8 {\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_pmd_xenvirt/Makefile b/lib/librte_pmd_xenvirt/Makefile\n> index 01bfcaa..0a08b1b 100644\n> --- a/lib/librte_pmd_xenvirt/Makefile\n> +++ b/lib/librte_pmd_xenvirt/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_pmd_xenvirt.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map b/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> new file mode 100644\n> index 0000000..66199b1\n> --- /dev/null\n> +++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> @@ -0,0 +1,8 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_mempool_gntalloc_create;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_port/Makefile b/lib/librte_port/Makefile\n> index 28793a5..e812bda 100644\n> --- a/lib/librte_port/Makefile\n> +++ b/lib/librte_port/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_port.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_port/rte_port_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map\n> new file mode 100644\n> index 0000000..57ccaa3\n> --- /dev/null\n> +++ b/lib/librte_port/rte_port_version.map\n> @@ -0,0 +1,18 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_port_ring_reader_ops;\n> +\trte_port_ring_writer_ops;\n> +\trte_port_ethdev_reader_ops;\n> +\trte_port_ethdev_writer_ops;\n> +\trte_port_ring_reader_ipv4_frag_ops;\n> +\trte_port_ring_writer_ipv4_ras_ops;\n> +\trte_port_ring_reader_ops;\n> +\trte_port_ring_writer_ops;\n> +\trte_port_sched_reader_ops;\n> +\trte_port_sched_writer_ops;\n> +\trte_port_source_ops;\n> +\trte_port_sink_ops;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_power/Makefile b/lib/librte_power/Makefile\n> index 6185812..26ee542 100644\n> --- a/lib/librte_power/Makefile\n> +++ b/lib/librte_power/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_power.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_power/rte_power_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_POWER) := rte_power.c\n>  \n> diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map\n> new file mode 100644\n> index 0000000..3b2375a\n> --- /dev/null\n> +++ b/lib/librte_power/rte_power_version.map\n> @@ -0,0 +1,14 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_power_init;\n> +\trte_power_exit;\n> +\trte_power_freqs;\n> +\trte_power_get_freq;\n> +\trte_power_set_freq;\n> +\trte_power_freq_up;\n> +\trte_power_freq_down;\n> +\trte_power_freq_max;\n> +\trte_power_freq_min;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_ring/Makefile b/lib/librte_ring/Makefile\n> index 2380a43..0adaa00 100644\n> --- a/lib/librte_ring/Makefile\n> +++ b/lib/librte_ring/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_ring.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_ring/rte_ring_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_RING) := rte_ring.c\n>  \n> diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map\n> new file mode 100644\n> index 0000000..6c28af9\n> --- /dev/null\n> +++ b/lib/librte_ring/rte_ring_version.map\n> @@ -0,0 +1,12 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\trte_ring_get_memsize;\n> +\trte_ring_init;\n> +\trte_ring_create;\n> +\trte_ring_set_water_mark;\n> +\trte_ring_dump;\n> +\trte_ring_list_dump;\n> +\trte_ring_lookup;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_sched/Makefile b/lib/librte_sched/Makefile\n> index 1a25b21..205fb7a 100644\n> --- a/lib/librte_sched/Makefile\n> +++ b/lib/librte_sched/Makefile\n> @@ -41,6 +41,8 @@ CFLAGS += $(WERROR_FLAGS)\n>  \n>  CFLAGS_rte_red.o := -D_GNU_SOURCE\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_sched/rte_sched_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map\n> new file mode 100644\n> index 0000000..b5877ce\n> --- /dev/null\n> +++ b/lib/librte_sched/rte_sched_version.map\n> @@ -0,0 +1,22 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_approx;\n> +\trte_red_rt_data_init;\n> +\trte_red_config_init;\n> +\trte_sched_port_config;\n> +\trte_sched_port_free;\n> +\trte_sched_subport_config;\n> +\trte_sched_pipe_config;\n> +\trte_sched_port_get_memory_footprint;\n> +\trte_sched_subport_read_stats;\n> +\trte_sched_queue_read_stats;\n> +\trte_sched_port_enqueue;\n> +\trte_sched_port_dequeue;\n> +\trte_red_log2_1_minus_Wq;\n> +\trte_red_pow2_frac_inv;\n> +\trte_red_rand_val;\n> +\trte_red_rand_seed;\n> +\n> +\tlocal: *;\n> +};\n> diff --git a/lib/librte_table/Makefile b/lib/librte_table/Makefile\n> index dd684cc..5b54acc 100644\n> --- a/lib/librte_table/Makefile\n> +++ b/lib/librte_table/Makefile\n> @@ -39,6 +39,8 @@ LIB = librte_table.a\n>  CFLAGS += -O3\n>  CFLAGS += $(WERROR_FLAGS)\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_table/rte_table_version.map\n> +\n>  #\n>  # all source are stored in SRCS-y\n>  #\n> diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map\n> new file mode 100644\n> index 0000000..86f16b8\n> --- /dev/null\n> +++ b/lib/librte_table/rte_table_version.map\n> @@ -0,0 +1,22 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_table_stub_ops;\n> +\trte_table_lpm_ops;\n> +\trte_table_array_ops;\n> +\trte_table_hash_key8_lru_ops;\n> +\trte_table_hash_key8_lru_dosig_ops;\n> +\trte_table_hash_key8_ext_ops;\n> +\trte_table_hash_key8_ext_dosig_ops;\n> +\trte_table_lpm_ipv6_ops;\n> +\trte_table_hash_key16_lru_ops;\n> +\trte_table_hash_key32_lru_ops;\n> +\trte_table_hash_key16_ext_ops;\n> +\trte_table_hash_key32_ext_ops;\n> +\trte_table_acl_ops;\n> +\trte_table_hash_lru_ops;\n> +\trte_table_hash_ext_ops;\n> +\n> +\tlocal: *;\n> +};\n> +\n> diff --git a/lib/librte_timer/Makefile b/lib/librte_timer/Makefile\n> index 07eb0c6..f703e5f 100644\n> --- a/lib/librte_timer/Makefile\n> +++ b/lib/librte_timer/Makefile\n> @@ -36,6 +36,8 @@ LIB = librte_timer.a\n>  \n>  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n>  \n> +EXPORT_MAP := $(RTE_SDK)/lib/librte_timer/rte_timer_version.map\n> +\n>  # all source are stored in SRCS-y\n>  SRCS-$(CONFIG_RTE_LIBRTE_TIMER) := rte_timer.c\n>  \n> diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map\n> new file mode 100644\n> index 0000000..00b6b52\n> --- /dev/null\n> +++ b/lib/librte_timer/rte_timer_version.map\n> @@ -0,0 +1,16 @@\n> +DPDK_1.8 {\n> +\tglobal:\n> +\n> +\trte_timer_subsystem_init;\n> +\trte_timer_init;\n> +\trte_timer_reset;\n> +\trte_timer_reset_sync;\n> +\trte_timer_stop;\n> +\trte_timer_stop_sync;\n> +\trte_timer_pending;\n> +\trte_timer_manage;\n> +\trte_timer_dump_stats;\n> +\n> +\tlocal: *;\n> +};\n> +\n> -- \n> 1.9.3\n> \n\nMay need to update some of the version maps with new functions in head.\n\nAcked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>",
        "headers": {
            "Return-Path": "<dev-bounces@dpdk.org>",
            "References": "<1410809031-19114-1-git-send-email-nhorman@tuxdriver.com>\n\t<1410809031-19114-3-git-send-email-nhorman@tuxdriver.com>",
            "X-Mailman-Version": "2.1.15",
            "X-IronPort-AV": "E=Sophos;i=\"5.04,631,1406617200\"; d=\"scan'208\";a=\"481233727\"",
            "From": "Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>",
            "User-Agent": "Mutt/1.5.20 (2009-06-14)",
            "List-Post": "<mailto:dev@dpdk.org>",
            "Content-Type": "text/plain; charset=us-ascii",
            "X-BeenThere": "dev@dpdk.org",
            "X-Original-To": "patchwork@dpdk.org",
            "Received": [
                "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 3A3363B5;\n\tWed,  1 Oct 2014 13:19:19 +0200 (CEST)",
                "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby dpdk.org (Postfix) with ESMTP id 3312A1F7\n\tfor <dev@dpdk.org>; Wed,  1 Oct 2014 13:19:16 +0200 (CEST)",
                "from azsmga001.ch.intel.com ([10.2.17.19])\n\tby orsmga103.jf.intel.com with ESMTP; 01 Oct 2014 04:23:40 -0700",
                "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby azsmga001.ch.intel.com with ESMTP; 01 Oct 2014 04:25:54 -0700",
                "from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com\n\t[10.237.217.46])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\ts91BPrZF007095; Wed, 1 Oct 2014 12:25:53 +0100",
                "from sivswdev02.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev02.ir.intel.com with ESMTP id s91BPrxQ018518;\n\tWed, 1 Oct 2014 12:25:53 +0100",
                "(from smonroy@localhost)\n\tby sivswdev02.ir.intel.com with  id s91BPqG7018514;\n\tWed, 1 Oct 2014 12:25:52 +0100"
            ],
            "Subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
            "Sender": "\"dev\" <dev-bounces@dpdk.org>",
            "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
            "Message-ID": "<20141001112546.GA17019@sivswdev02.ir.intel.com>",
            "Precedence": "list",
            "Date": "Wed, 1 Oct 2014 12:25:52 +0100",
            "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
            "X-ExtLoop1": "1",
            "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
            "Cc": "dev@dpdk.org",
            "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
            "Delivered-To": "patchwork@dpdk.org",
            "In-Reply-To": "<1410809031-19114-3-git-send-email-nhorman@tuxdriver.com>",
            "Errors-To": "dev-bounces@dpdk.org",
            "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
            "MIME-Version": "1.0",
            "To": "Neil Horman <nhorman@tuxdriver.com>",
            "Content-Disposition": "inline"
        }
    },
    {
        "id": 1369,
        "web_url": "http://patches.dpdk.org/comment/1369/",
        "msgid": "<20141001144341.GA24028@localhost.localdomain>",
        "date": "2014-10-01T14:43:41",
        "subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
        "submitter": {
            "id": 32,
            "url": "http://patches.dpdk.org/api/people/32/",
            "name": "Neil Horman",
            "email": "nhorman@tuxdriver.com"
        },
        "content": "On Wed, Oct 01, 2014 at 12:25:52PM +0100, Sergio Gonzalez Monroy wrote:\n> On Mon, Sep 15, 2014 at 03:23:49PM -0400, Neil Horman wrote:\n> > Add linker version script files to each DPDK library to put a stake in the\n> > ground from which we can start cleaning up API's\n> > \n> > Signed-off-by: Neil Horman <nhorman@tuxdriver.com>\n> > CC: Thomas Monjalon <thomas.monjalon@6wind.com>\n> > CC: \"Richardson, Bruce\" <bruce.richardson@intel.com>\n> > ---\n> >  lib/librte_acl/Makefile                            |   2 +\n> >  lib/librte_acl/rte_acl_version.map                 |  19 ++++\n> >  lib/librte_cfgfile/Makefile                        |   2 +\n> >  lib/librte_cfgfile/rte_cfgfile_version.map         |  14 +++\n> >  lib/librte_cmdline/Makefile                        |   2 +\n> >  lib/librte_cmdline/rte_cmdline_version.map         |  69 +++++++++++++\n> >  lib/librte_distributor/Makefile                    |   2 +\n> >  lib/librte_distributor/rte_distributor_version.map |  16 +++\n> >  lib/librte_eal/bsdapp/eal/Makefile                 |   2 +\n> >  lib/librte_eal/bsdapp/eal/rte_eal_version.map      |  89 +++++++++++++++++\n> >  lib/librte_eal/linuxapp/eal/Makefile               |   2 +\n> >  lib/librte_eal/linuxapp/eal/rte_eal_version.map    |  89 +++++++++++++++++\n> >  lib/librte_ether/Makefile                          |   2 +\n> >  lib/librte_ether/rte_ether_version.map             | 108 +++++++++++++++++++++\n> >  lib/librte_hash/Makefile                           |   2 +\n> >  lib/librte_hash/rte_hash_version.map               |  18 ++++\n> >  lib/librte_ip_frag/Makefile                        |   2 +\n> >  lib/librte_ip_frag/rte_ipfrag_version.map          |  14 +++\n> >  lib/librte_ivshmem/Makefile                        |   2 +\n> >  lib/librte_ivshmem/rte_ivshmem_version.map         |  13 +++\n> >  lib/librte_kni/Makefile                            |   2 +\n> >  lib/librte_kni/rte_kni_version.map                 |  19 ++++\n> >  lib/librte_kvargs/Makefile                         |   2 +\n> >  lib/librte_kvargs/rte_kvargs_version.map           |  10 ++\n> >  lib/librte_lpm/Makefile                            |   2 +\n> >  lib/librte_lpm/rte_lpm_version.map                 |  24 +++++\n> >  lib/librte_malloc/Makefile                         |   2 +\n> >  lib/librte_malloc/rte_malloc_version.map           |  19 ++++\n> >  lib/librte_mbuf/Makefile                           |   2 +\n> >  lib/librte_mbuf/rte_mbuf_version.map               |  12 +++\n> >  lib/librte_mempool/Makefile                        |   2 +\n> >  lib/librte_mempool/rte_mempool_version.map         |  18 ++++\n> >  lib/librte_meter/Makefile                          |   2 +\n> >  lib/librte_meter/rte_meter_version.map             |  13 +++\n> >  lib/librte_pipeline/Makefile                       |   2 +\n> >  lib/librte_pipeline/rte_pipeline_version.map       |  23 +++++\n> >  lib/librte_pmd_bond/Makefile                       |   2 +\n> >  lib/librte_pmd_bond/rte_eth_bond_version.map       |  20 ++++\n> >  lib/librte_pmd_e1000/Makefile                      |   2 +\n> >  lib/librte_pmd_e1000/rte_pmd_e1000_version.map     |   5 +\n> >  lib/librte_pmd_i40e/Makefile                       |   2 +\n> >  lib/librte_pmd_i40e/rte_pmd_i40e_version.map       |   5 +\n> >  lib/librte_pmd_ixgbe/Makefile                      |   2 +\n> >  lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map     |   5 +\n> >  lib/librte_pmd_pcap/Makefile                       |   2 +\n> >  lib/librte_pmd_pcap/rte_pmd_pcap_version.map       |   5 +\n> >  lib/librte_pmd_ring/Makefile                       |   2 +\n> >  lib/librte_pmd_ring/rte_eth_ring.c                 |   2 +-\n> >  lib/librte_pmd_ring/rte_eth_ring.h                 |   6 --\n> >  lib/librte_pmd_ring/rte_eth_ring_version.map       |  10 ++\n> >  lib/librte_pmd_virtio/Makefile                     |   1 +\n> >  lib/librte_pmd_virtio/rte_pmd_virtio_version.map   |   5 +\n> >  lib/librte_pmd_vmxnet3/Makefile                    |   2 +\n> >  lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map |   5 +\n> >  lib/librte_pmd_xenvirt/Makefile                    |   2 +\n> >  lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map |   8 ++\n> >  lib/librte_port/Makefile                           |   2 +\n> >  lib/librte_port/rte_port_version.map               |  18 ++++\n> >  lib/librte_power/Makefile                          |   2 +\n> >  lib/librte_power/rte_power_version.map             |  14 +++\n> >  lib/librte_ring/Makefile                           |   2 +\n> >  lib/librte_ring/rte_ring_version.map               |  12 +++\n> >  lib/librte_sched/Makefile                          |   2 +\n> >  lib/librte_sched/rte_sched_version.map             |  22 +++++\n> >  lib/librte_table/Makefile                          |   2 +\n> >  lib/librte_table/rte_table_version.map             |  22 +++++\n> >  lib/librte_timer/Makefile                          |   2 +\n> >  lib/librte_timer/rte_timer_version.map             |  16 +++\n> >  68 files changed, 825 insertions(+), 7 deletions(-)\n> >  create mode 100644 lib/librte_acl/rte_acl_version.map\n> >  create mode 100644 lib/librte_cfgfile/rte_cfgfile_version.map\n> >  create mode 100644 lib/librte_cmdline/rte_cmdline_version.map\n> >  create mode 100644 lib/librte_distributor/rte_distributor_version.map\n> >  create mode 100644 lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> >  create mode 100644 lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> >  create mode 100644 lib/librte_ether/rte_ether_version.map\n> >  create mode 100644 lib/librte_hash/rte_hash_version.map\n> >  create mode 100644 lib/librte_ip_frag/rte_ipfrag_version.map\n> >  create mode 100644 lib/librte_ivshmem/rte_ivshmem_version.map\n> >  create mode 100644 lib/librte_kni/rte_kni_version.map\n> >  create mode 100644 lib/librte_kvargs/rte_kvargs_version.map\n> >  create mode 100644 lib/librte_lpm/rte_lpm_version.map\n> >  create mode 100644 lib/librte_malloc/rte_malloc_version.map\n> >  create mode 100644 lib/librte_mbuf/rte_mbuf_version.map\n> >  create mode 100644 lib/librte_mempool/rte_mempool_version.map\n> >  create mode 100644 lib/librte_meter/rte_meter_version.map\n> >  create mode 100644 lib/librte_pipeline/rte_pipeline_version.map\n> >  create mode 100644 lib/librte_pmd_bond/rte_eth_bond_version.map\n> >  create mode 100644 lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> >  create mode 100644 lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> >  create mode 100644 lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> >  create mode 100644 lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> >  create mode 100644 lib/librte_pmd_ring/rte_eth_ring_version.map\n> >  create mode 100644 lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n> >  create mode 100644 lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> >  create mode 100644 lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> >  create mode 100644 lib/librte_port/rte_port_version.map\n> >  create mode 100644 lib/librte_power/rte_power_version.map\n> >  create mode 100644 lib/librte_ring/rte_ring_version.map\n> >  create mode 100644 lib/librte_sched/rte_sched_version.map\n> >  create mode 100644 lib/librte_table/rte_table_version.map\n> >  create mode 100644 lib/librte_timer/rte_timer_version.map\n> > \n> > diff --git a/lib/librte_acl/Makefile b/lib/librte_acl/Makefile\n> > index 65e566d..1f96645 100644\n> > --- a/lib/librte_acl/Makefile\n> > +++ b/lib/librte_acl/Makefile\n> > @@ -37,6 +37,8 @@ LIB = librte_acl.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_acl/rte_acl_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c\n> >  \n> > diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map\n> > new file mode 100644\n> > index 0000000..4480690\n> > --- /dev/null\n> > +++ b/lib/librte_acl/rte_acl_version.map\n> > @@ -0,0 +1,19 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_acl_create;\n> > +\trte_acl_find_existing;\n> > +\trte_acl_free;\n> > +\trte_acl_add_rules;\n> > +\trte_acl_reset_rules;\n> > +\trte_acl_build;\n> > +\trte_acl_reset;\n> > +\trte_acl_classify;\n> > +\trte_acl_dump;\n> > +\trte_acl_list_dump;\n> > +\trte_acl_ipv4vlan_add_rules;\n> > +\trte_acl_ipv4vlan_build;\n> > +\trte_acl_classify_scalar;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_cfgfile/Makefile b/lib/librte_cfgfile/Makefile\n> > index 55e8701..e655098 100644\n> > --- a/lib/librte_cfgfile/Makefile\n> > +++ b/lib/librte_cfgfile/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_cfgfile.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_cfgfile/rte_cfgfile_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map\n> > new file mode 100644\n> > index 0000000..10ecea6\n> > --- /dev/null\n> > +++ b/lib/librte_cfgfile/rte_cfgfile_version.map\n> > @@ -0,0 +1,14 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_cfgfile_load;\n> > +\trte_cfgfile_num_sections;\n> > +\trte_cfgfile_sections;\n> > +\trte_cfgfile_has_section;\n> > +\trte_cfgfile_section_num_entries;\n> > +\trte_cfgfile_section_entries;\n> > +\trte_cfgfile_get_entry;\n> > +\trte_cfgfile_has_entry;\n> > +\trte_cfgfile_close;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_cmdline/Makefile b/lib/librte_cmdline/Makefile\n> > index 7eae449..1a47173 100644\n> > --- a/lib/librte_cmdline/Makefile\n> > +++ b/lib/librte_cmdline/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_cmdline.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_cmdline/rte_cmdline_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) := cmdline.c\n> >  SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_cirbuf.c\n> > diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map\n> > new file mode 100644\n> > index 0000000..7616eff\n> > --- /dev/null\n> > +++ b/lib/librte_cmdline/rte_cmdline_version.map\n> > @@ -0,0 +1,69 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\tcmdline_new;\n> > +\tcmdline_set_prompt;\n> > +\tcmdline_free;\n> > +\tcmdline_printf;\n> > +\tcmdline_in;\n> > +\tcmdline_write_char;\n> > +\tcmdline_interact;\n> > +\tcmdline_quit;\n> > +\tcmdline_parse;\n> > +\tcmdline_complete;\n> > +\tcmdline_isendoftoken;\n> > +\tcmdline_parse_num;\n> > +\tcmdline_get_help_num;\n> > +\tcmdline_parse_ipaddr;\n> > +\tcmdline_get_help_ipaddr;\n> > +\tcmdline_parse_etheraddr;\n> > +\tcmdline_get_help_etheraddr;\n> > +\tcmdline_parse_string;\n> > +\tcmdline_complete_get_nb_string;\n> > +\tcmdline_complete_get_elt_string;\n> > +\tcmdline_get_help_string;\n> > +\tcmdline_parse_portlist;\n> > +\tcmdline_get_help_portlist;\n> > +\tcmdline_token_string_ops;\n> > +\tcmdline_token_num_ops;\n> > +\tcmdline_token_string_ops;\n> > +\tcmdline_token_ipaddr_ops;\n> > +\tcmdline_token_etheraddr_ops;\n> > +\tvt100_init;\n> > +\tvt100_parser;\n> > +\tcmdline_file_new;\n> > +\tcmdline_stdin_new;\n> > +\tcmdline_stdin_exit;\n> > +\tcirbuf_init;\n> > +\tcirbuf_add_head_safe;\n> > +\tcirbuf_add_head;\n> > +\tcirbuf_add_tail_safe;\n> > +\tcirbuf_add_tail;\n> > +\tcirbuf_del_head_safe;\n> > +\tcirbuf_del_head;\n> > +\tcirbuf_del_tail_safe;\n> > +\tcirbuf_del_tail;\n> > +\tcirbuf_get_head;\n> > +\tcirbuf_get_tail;\n> > +\tcirbuf_add_buf_head;\n> > +\tcirbuf_add_buf_tail;\n> > +\tcirbuf_del_buf_head;\n> > +\tcirbuf_del_buf_tail;\n> > +\tcirbuf_get_buf_head;\n> > +\tcirbuf_get_buf_tail;\n> > +\tcirbuf_align_left;\n> > +\tcirbuf_align_right;\n> > +\trdline_init;\n> > +\trdline_newline;\n> > +\trdline_stop;\n> > +\trdline_quit;\n> > +\trdline_restart;\n> > +\trdline_redisplay;\n> > +\trdline_reset;\n> > +\trdline_char_in;\n> > +\trdline_get_buffer;\n> > +\trdline_add_history;\n> > +\trdline_clear_history;\n> > +\trdline_get_history_item;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile\n> > index 36699f8..97d8bbb 100644\n> > --- a/lib/librte_distributor/Makefile\n> > +++ b/lib/librte_distributor/Makefile\n> > @@ -37,6 +37,8 @@ LIB = librte_distributor.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_distributor/rte_distributor_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor.c\n> >  \n> > diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map\n> > new file mode 100644\n> > index 0000000..b81ddc8\n> > --- /dev/null\n> > +++ b/lib/librte_distributor/rte_distributor_version.map\n> > @@ -0,0 +1,16 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tglobal:\n> > +\trte_distributor_create;\n> > +\trte_distributor_process;\n> > +\trte_distributor_returned_pkts;\n> > +\trte_distributor_flush;\n> > +\trte_distributor_clear_returns;\n> > +\trte_distributor_get_pkt;\n> > +\trte_distributor_return_pkt;\n> > +\trte_distributor_request_pkt;\n> > +\trte_distributor_poll_pkt;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_eal/bsdapp/eal/Makefile b/lib/librte_eal/bsdapp/eal/Makefile\n> > index 8f44273..2caaf00 100644\n> > --- a/lib/librte_eal/bsdapp/eal/Makefile\n> > +++ b/lib/librte_eal/bsdapp/eal/Makefile\n> > @@ -45,6 +45,8 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_ring\n> >  CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_pcap\n> >  CFLAGS += $(WERROR_FLAGS) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> > +\n> >  # specific to linuxapp exec-env\n> >  SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) := eal.c\n> >  SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_memory.c\n> > diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> > new file mode 100644\n> > index 0000000..71788e1\n> > --- /dev/null\n> > +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n> > @@ -0,0 +1,89 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_eal_alarm_set;\n> > +\trte_eal_alarm_cancel;\n> > +\trte_exit;\n> > +\trte_cpu_get_flag_enabled;\n> > +\trte_cpu_check_supported;\n> > +\trte_get_tsc_hz;\n> > +\trte_get_hpet_cycles;\n> > +\trte_get_hpet_hz;\n> > +\trte_eal_hpet_init;\n> > +\trte_delay_us;\n> > +\trte_dump_stack;\n> > +\trte_dump_registers;\n> > +\t__rte_panic;\n> > +\trte_eal_devargs_add;\n> > +\trte_eal_devargs_type_count;\n> > +\trte_eal_devargs_dump;\n> > +\trte_eal_driver_register;\n> > +\trte_eal_driver_unregister;\n> > +\trte_eal_dev_init;\n> > +\trte_eal_init;\n> > +\trte_set_application_usage_hook;\n> > +\trte_eal_has_hugepages;\n> > +\trte_strerror;\n> > +\trte_hexdump;\n> > +\trte_memdump;\n> > +\trte_intr_callback_register;\n> > +\trte_intr_callback_unregister;\n> > +\trte_intr_enable;\n> > +\trte_intr_disable;\n> > +\trte_eal_remote_launch;\n> > +\trte_eal_mp_remote_launch;\n> > +\trte_eal_get_lcore_state;\n> > +\trte_eal_wait_lcore;\n> > +\trte_eal_mp_wait_lcore;\n> > +\trte_openlog_stream;\n> > +\trte_set_log_level;\n> > +\trte_set_log_type;\n> > +\trte_log_cur_msg_loglevel;\n> > +\trte_log_cur_msg_logtype;\n> > +\trte_log_set_history;\n> > +\trte_log_dump_history;\n> > +\trte_log_add_in_history;\n> > +\trte_log;\n> > +\trte_vlog;\n> > +\trte_mem_lock_page;\n> > +\trte_mem_virt2phy;\n> > +\trte_eal_get_physmem_layout;\n> > +\trte_dump_physmem_layout;\n> > +\trte_eal_get_physmem_size;\n> > +\trte_memory_get_nchannel;\n> > +\trte_memory_get_nrank;\n> > +\trte_mem_phy2mch;\n> > +\trte_xen_dom0_memory_init;\n> > +\trte_xen_dom0_memory_attach;\n> > +\trte_memzone_reserve;\n> > +\trte_memzone_reserve_aligned;\n> > +\trte_memzone_reserve_bounded;\n> > +\trte_memzone_lookup;\n> > +\trte_memzone_dump;\n> > +\trte_memzone_walk;\n> > +\trte_eal_pci_probe;\n> > +\trte_eal_pci_dump;\n> > +\trte_eal_pci_register;\n> > +\trte_eal_pci_unregister;\n> > +\trte_snprintf;\n> > +\trte_strsplit;\n> > +\trte_eal_tailq_reserve;\n> > +\trte_eal_tailq_reserve_by_idx;\n> > +\trte_dump_tailq;\n> > +\trte_eal_tailq_lookup;\n> > +\trte_eal_tailq_lookup_by_idx;\n> > +\tlcore_config;\n> > +\tper_lcore__lcore_id;\n> > +\teal_timer_source;\n> > +\trte_cycles_vmware_tsc_map;\n> > +\trte_eal_get_configuration;\n> > +\trte_logs;\n> > +\trte_eal_lcore_role;\n> > +\ttest_mp_secondary;\n> > +\trte_eal_process_type;\n> > +\tper_lcore__rte_errno;\n> > +\tpci_device_list;\n> > +\tdevargs_list;\n> > +\teal_parse_sysfs_value;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile\n> > index 756d6b0..254d59c 100644\n> > --- a/lib/librte_eal/linuxapp/eal/Makefile\n> > +++ b/lib/librte_eal/linuxapp/eal/Makefile\n> > @@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk\n> >  \n> >  LIB = librte_eal.a\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> > +\n> >  VPATH += $(RTE_SDK)/lib/librte_eal/common\n> >  \n> >  CFLAGS += -I$(SRCDIR)/include\n> > diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> > new file mode 100644\n> > index 0000000..71788e1\n> > --- /dev/null\n> > +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n> > @@ -0,0 +1,89 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_eal_alarm_set;\n> > +\trte_eal_alarm_cancel;\n> > +\trte_exit;\n> > +\trte_cpu_get_flag_enabled;\n> > +\trte_cpu_check_supported;\n> > +\trte_get_tsc_hz;\n> > +\trte_get_hpet_cycles;\n> > +\trte_get_hpet_hz;\n> > +\trte_eal_hpet_init;\n> > +\trte_delay_us;\n> > +\trte_dump_stack;\n> > +\trte_dump_registers;\n> > +\t__rte_panic;\n> > +\trte_eal_devargs_add;\n> > +\trte_eal_devargs_type_count;\n> > +\trte_eal_devargs_dump;\n> > +\trte_eal_driver_register;\n> > +\trte_eal_driver_unregister;\n> > +\trte_eal_dev_init;\n> > +\trte_eal_init;\n> > +\trte_set_application_usage_hook;\n> > +\trte_eal_has_hugepages;\n> > +\trte_strerror;\n> > +\trte_hexdump;\n> > +\trte_memdump;\n> > +\trte_intr_callback_register;\n> > +\trte_intr_callback_unregister;\n> > +\trte_intr_enable;\n> > +\trte_intr_disable;\n> > +\trte_eal_remote_launch;\n> > +\trte_eal_mp_remote_launch;\n> > +\trte_eal_get_lcore_state;\n> > +\trte_eal_wait_lcore;\n> > +\trte_eal_mp_wait_lcore;\n> > +\trte_openlog_stream;\n> > +\trte_set_log_level;\n> > +\trte_set_log_type;\n> > +\trte_log_cur_msg_loglevel;\n> > +\trte_log_cur_msg_logtype;\n> > +\trte_log_set_history;\n> > +\trte_log_dump_history;\n> > +\trte_log_add_in_history;\n> > +\trte_log;\n> > +\trte_vlog;\n> > +\trte_mem_lock_page;\n> > +\trte_mem_virt2phy;\n> > +\trte_eal_get_physmem_layout;\n> > +\trte_dump_physmem_layout;\n> > +\trte_eal_get_physmem_size;\n> > +\trte_memory_get_nchannel;\n> > +\trte_memory_get_nrank;\n> > +\trte_mem_phy2mch;\n> > +\trte_xen_dom0_memory_init;\n> > +\trte_xen_dom0_memory_attach;\n> > +\trte_memzone_reserve;\n> > +\trte_memzone_reserve_aligned;\n> > +\trte_memzone_reserve_bounded;\n> > +\trte_memzone_lookup;\n> > +\trte_memzone_dump;\n> > +\trte_memzone_walk;\n> > +\trte_eal_pci_probe;\n> > +\trte_eal_pci_dump;\n> > +\trte_eal_pci_register;\n> > +\trte_eal_pci_unregister;\n> > +\trte_snprintf;\n> > +\trte_strsplit;\n> > +\trte_eal_tailq_reserve;\n> > +\trte_eal_tailq_reserve_by_idx;\n> > +\trte_dump_tailq;\n> > +\trte_eal_tailq_lookup;\n> > +\trte_eal_tailq_lookup_by_idx;\n> > +\tlcore_config;\n> > +\tper_lcore__lcore_id;\n> > +\teal_timer_source;\n> > +\trte_cycles_vmware_tsc_map;\n> > +\trte_eal_get_configuration;\n> > +\trte_logs;\n> > +\trte_eal_lcore_role;\n> > +\ttest_mp_secondary;\n> > +\trte_eal_process_type;\n> > +\tper_lcore__rte_errno;\n> > +\tpci_device_list;\n> > +\tdevargs_list;\n> > +\teal_parse_sysfs_value;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_ether/Makefile b/lib/librte_ether/Makefile\n> > index b310f8b..f40b5cc 100644\n> > --- a/lib/librte_ether/Makefile\n> > +++ b/lib/librte_ether/Makefile\n> > @@ -39,6 +39,8 @@ LIB = libethdev.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_ether/rte_ether_version.map\n> > +\n> >  SRCS-y += rte_ethdev.c\n> >  \n> >  #\n> > diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map\n> > new file mode 100644\n> > index 0000000..41952ab\n> > --- /dev/null\n> > +++ b/lib/librte_ether/rte_ether_version.map\n> > @@ -0,0 +1,108 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_eth_driver_register;\n> > +\trte_eth_dev_configure;\n> > +\trte_eth_rx_queue_setup;\n> > +\trte_eth_tx_queue_setup;\n> > +\trte_eth_dev_socket_id;\n> > +\trte_eth_dev_rx_queue_start;\n> > +\trte_eth_dev_rx_queue_stop;\n> > +\trte_eth_dev_tx_queue_start;\n> > +\trte_eth_dev_tx_queue_stop;\n> > +\trte_eth_dev_start;\n> > +\trte_eth_dev_stop;\n> > +\trte_eth_dev_set_link_up;\n> > +\trte_eth_dev_set_link_down;\n> > +\trte_eth_dev_close;\n> > +\trte_eth_promiscuous_enable;\n> > +\trte_eth_promiscuous_disable;\n> > +\trte_eth_promiscuous_get;\n> > +\trte_eth_allmulticast_enable;\n> > +\trte_eth_allmulticast_disable;\n> > +\trte_eth_allmulticast_get;\n> > +\trte_eth_link;\n> > +\trte_eth_link_get_nowait;\n> > +\trte_eth_stats;\n> > +\trte_eth_stats_reset;\n> > +\trte_eth_dev_set_tx_queue_stats_mapping;\n> > +\trte_eth_dev_set_rx_queue_stats_mapping;\n> > +\trte_eth_macaddr_get;\n> > +\trte_eth_dev_info_get;\n> > +\trte_eth_dev_get_mtu;\n> > +\trte_eth_dev_set_mtu;\n> > +\trte_eth_dev_vlan_filter;\n> > +\trte_eth_dev_set_vlan_strip_on_queue;\n> > +\trte_eth_dev_set_vlan_ether_type;\n> > +\trte_eth_dev_set_vlan_offload;\n> > +\trte_eth_dev_get_vlan_offload;\n> > +\trte_eth_dev_set_vlan_pvid;\n> > +\trte_eth_rx_burst;\n> > +\trte_eth_rx_queue_count;\n> > +\trte_eth_rx_descriptor_done;\n> > +\trte_eth_tx_burst;\n> > +\trte_eth_dev_fdir_add_signature_filter;\n> > +\trte_eth_dev_fdir_update_signature_filter;\n> > +\trte_eth_dev_fdir_remove_signature_filter;\n> > +\trte_eth_dev_fdir_get_infos;\n> > +\trte_eth_dev_fdir_add_perfect_filter;\n> > +\trte_eth_dev_fdir_update_perfect_filter;\n> > +\trte_eth_dev_fdir_remove_perfect_filter;\n> > +\trte_eth_dev_fdir_set_masks;\n> > +\trte_eth_dev_callback_register;\n> > +\trte_eth_dev_callback_unregister;\n> > +\trte_eth_dev_callback_process;\n> > +\trte_eth_led_on;\n> > +\trte_eth_led_off;\n> > +\trte_eth_dev_flow_ctrl_get;\n> > +\trte_eth_dev_flow_ctrl_set;\n> > +\trte_eth_dev_priority_flow_ctrl_set;\n> > +\trte_eth_dev_mac_addr_add;\n> > +\trte_eth_dev_mac_addr_remove;\n> > +\trte_eth_dev_rss_reta_update;\n> > +\trte_eth_dev_rss_reta_query;\n> > +\trte_eth_dev_uc_hash_table_set;\n> > +\trte_eth_dev_uc_all_hash_table_set;\n> > +\trte_eth_dev_set_vf_rxmode;\n> > +\trte_eth_dev_set_vf_tx;\n> > +\trte_eth_dev_set_vf_rx;\n> > +\trte_eth_dev_set_vf_vlan_filter;\n> > +\trte_eth_mirror_rule_set;\n> > +\trte_eth_mirror_rule_reset;\n> > +\trte_eth_set_queue_rate_limit;\n> > +\trte_eth_set_vf_rate_limit;\n> > +\trte_eth_dev_bypass_init;\n> > +\trte_eth_dev_bypass_state_show;\n> > +\trte_eth_dev_bypass_state_set;\n> > +\trte_eth_dev_bypass_event_show;\n> > +\trte_eth_dev_bypass_event_store;\n> > +\trte_eth_dev_wd_timeout_store;\n> > +\trte_eth_dev_bypass_ver_show;\n> > +\trte_eth_dev_bypass_wd_timeout_show;\n> > +\trte_eth_dev_bypass_wd_reset;\n> > +\trte_eth_dev_rss_hash_update;\n> > +\trte_eth_dev_rss_hash_conf_get;\n> > +\trte_eth_dev_add_syn_filter;\n> > +\trte_eth_dev_remove_syn_filter;\n> > +\trte_eth_dev_get_syn_filter;\n> > +\trte_eth_dev_add_ethertype_filter;\n> > +\trte_eth_dev_remove_ethertype_filter;\n> > +\trte_eth_dev_get_ethertype_filter;\n> > +\trte_eth_dev_add_2tuple_filter;\n> > +\trte_eth_dev_remove_2tuple_filter;\n> > +\trte_eth_dev_get_2tuple_filter;\n> > +\trte_eth_dev_add_5tuple_filter;\n> > +\trte_eth_dev_remove_5tuple_filter;\n> > +\trte_eth_dev_get_5tuple_filter;\n> > +\trte_eth_dev_add_flex_filter;\n> > +\trte_eth_dev_remove_flex_filter;\n> > +\trte_eth_dev_get_flex_filter;\n> > +\trte_eth_dev_count;\n> > +\trte_eth_link_get;\n> > +\trte_eth_devices;\n> > +\trte_eth_stats_get;\n> > +\trte_eth_dev_allocate;\n> > +\t_rte_eth_dev_callback_process;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_hash/Makefile b/lib/librte_hash/Makefile\n> > index 95e4c09..a449ec2 100644\n> > --- a/lib/librte_hash/Makefile\n> > +++ b/lib/librte_hash/Makefile\n> > @@ -37,6 +37,8 @@ LIB = librte_hash.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_hash/rte_hash_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_HASH) := rte_hash.c\n> >  SRCS-$(CONFIG_RTE_LIBRTE_HASH) += rte_fbk_hash.c\n> > diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map\n> > new file mode 100644\n> > index 0000000..2a34313\n> > --- /dev/null\n> > +++ b/lib/librte_hash/rte_hash_version.map\n> > @@ -0,0 +1,18 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_fbk_hash_find_existing;\n> > +\trte_fbk_hash_create;\n> > +\trte_fbk_hash_free;\n> > +\trte_hash_create;\n> > +\trte_hash_find_existing;\n> > +\trte_hash_free;\n> > +\trte_hash_add_key;\n> > +\trte_hash_add_key_with_hash;\n> > +\trte_hash_del_key;\n> > +\trte_hash_del_key_with_hash;\n> > +\trte_hash_lookup;\n> > +\trte_hash_lookup_with_hash;\n> > +\trte_hash_lookup_bulk;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_ip_frag/Makefile b/lib/librte_ip_frag/Makefile\n> > index 2265c93..ede5a89 100644\n> > --- a/lib/librte_ip_frag/Makefile\n> > +++ b/lib/librte_ip_frag/Makefile\n> > @@ -37,6 +37,8 @@ LIB = librte_ip_frag.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_ip_frag/rte_ipfrag_version.map\n> > +\n> >  #source files\n> >  SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv4_fragmentation.c\n> >  SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv4_reassembly.c\n> > diff --git a/lib/librte_ip_frag/rte_ipfrag_version.map b/lib/librte_ip_frag/rte_ipfrag_version.map\n> > new file mode 100644\n> > index 0000000..afe1a0b\n> > --- /dev/null\n> > +++ b/lib/librte_ip_frag/rte_ipfrag_version.map\n> > @@ -0,0 +1,14 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_ip_frag_table_create;\n> > +\trte_ipv6_fragment_packet;\n> > +\trte_ipv6_frag_reassemble_packet;\n> > +\trte_ipv4_fragment_packet;\n> > +\trte_ipv4_frag_reassemble_packet;\n> > +\trte_ip_frag_free_death_row;\n> > +\trte_ip_frag_table_statistics_dump;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_ivshmem/Makefile b/lib/librte_ivshmem/Makefile\n> > index 536814c..be6f21a 100644\n> > --- a/lib/librte_ivshmem/Makefile\n> > +++ b/lib/librte_ivshmem/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_ivshmem.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAPS := $(RTE_SDK)/lib/librte_ivshmem/rte_ivshmem_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_IVSHMEM) := rte_ivshmem.c\n> >  \n> > diff --git a/lib/librte_ivshmem/rte_ivshmem_version.map b/lib/librte_ivshmem/rte_ivshmem_version.map\n> > new file mode 100644\n> > index 0000000..a204339\n> > --- /dev/null\n> > +++ b/lib/librte_ivshmem/rte_ivshmem_version.map\n> > @@ -0,0 +1,13 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_ivshmem_metadata_create;\n> > +\trte_ivshmem_metadata_add_memzone;\n> > +\trte_ivshmem_metadata_add_ring;\n> > +\trte_ivshmem_metadata_add_mempool;\n> > +\trte_ivshmem_metadata_cmdline_generate;\n> > +\trte_ivshmem_metadata_dump;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_kni/Makefile b/lib/librte_kni/Makefile\n> > index 5267304..c119fc1 100644\n> > --- a/lib/librte_kni/Makefile\n> > +++ b/lib/librte_kni/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_kni.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_kni/rte_kni_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_KNI) := rte_kni.c\n> >  \n> > diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map\n> > new file mode 100644\n> > index 0000000..58fbc1f\n> > --- /dev/null\n> > +++ b/lib/librte_kni/rte_kni_version.map\n> > @@ -0,0 +1,19 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_kni_alloc;\n> > +\trte_kni_create;\n> > +\trte_kni_release;\n> > +\trte_kni_handle_request;\n> > +\trte_kni_rx_burst;\n> > +\trte_kni_tx_burst;\n> > +\trte_kni_get_port_id;\n> > +\trte_kni_get;\n> > +\trte_kni_info_get;\n> > +\trte_kni_register_handlers;\n> > +\trte_kni_unregister_handlers;\n> > +\trte_kni_close;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_kvargs/Makefile b/lib/librte_kvargs/Makefile\n> > index b09359a..83a42b1 100644\n> > --- a/lib/librte_kvargs/Makefile\n> > +++ b/lib/librte_kvargs/Makefile\n> > @@ -38,6 +38,8 @@ LIB = librte_kvargs.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_kvargs/rte_kvargs_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) := rte_kvargs.c\n> >  \n> > diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map\n> > new file mode 100644\n> > index 0000000..7873c8c\n> > --- /dev/null\n> > +++ b/lib/librte_kvargs/rte_kvargs_version.map\n> > @@ -0,0 +1,10 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tglobal:\n> > +\trte_kvargs_parse;\n> > +\trte_kvargs_free;\n> > +\trte_kvargs_process;\n> > +\trte_kvargs_count;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_lpm/Makefile b/lib/librte_lpm/Makefile\n> > index fa94163..05de8d9 100644\n> > --- a/lib/librte_lpm/Makefile\n> > +++ b/lib/librte_lpm/Makefile\n> > @@ -37,6 +37,8 @@ LIB = librte_lpm.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_lpm/rte_lpm_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_LPM) := rte_lpm.c rte_lpm6.c\n> >  \n> > diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map\n> > new file mode 100644\n> > index 0000000..8ae9318\n> > --- /dev/null\n> > +++ b/lib/librte_lpm/rte_lpm_version.map\n> > @@ -0,0 +1,24 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_lpm_create;\n> > +\trte_lpm_find_existing;\n> > +\trte_lpm_free;\n> > +\trte_lpm_add;\n> > +\trte_lpm_is_rule_present;\n> > +\trte_lpm_delete;\n> > +\trte_lpm_delete_all;\n> > +\trte_lpm6_create;\n> > +\trte_lpm6_find_existing;\n> > +\trte_lpm6_free;\n> > +\trte_lpm6_add;\n> > +\trte_lpm6_is_rule_present;\n> > +\trte_lpm6_delete;\n> > +\trte_lpm6_delete_bulk_func;\n> > +\trte_lpm6_delete_all;\n> > +\trte_lpm6_lookup;\n> > +\trte_lpm6_lookup_bulk_func;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_malloc/Makefile b/lib/librte_malloc/Makefile\n> > index ba87e34..1a5c288 100644\n> > --- a/lib/librte_malloc/Makefile\n> > +++ b/lib/librte_malloc/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_malloc.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_malloc/rte_malloc_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_MALLOC) := rte_malloc.c malloc_elem.c malloc_heap.c\n> >  \n> > diff --git a/lib/librte_malloc/rte_malloc_version.map b/lib/librte_malloc/rte_malloc_version.map\n> > new file mode 100644\n> > index 0000000..77db879\n> > --- /dev/null\n> > +++ b/lib/librte_malloc/rte_malloc_version.map\n> > @@ -0,0 +1,19 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_malloc;\n> > +\trte_zmalloc;\n> > +\trte_calloc;\n> > +\trte_realloc;\n> > +\trte_malloc_socket;\n> > +\trte_zmalloc_socket;\n> > +\trte_calloc_socket;\n> > +\trte_free;\n> > +\trte_malloc_validate;\n> > +\trte_malloc_get_socket_stats;\n> > +\trte_malloc_dump_stats;\n> > +\trte_malloc_set_limit;\n> > +\trte_malloc_virt2phy;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_mbuf/Makefile b/lib/librte_mbuf/Makefile\n> > index 9b45ba4..5cd4941 100644\n> > --- a/lib/librte_mbuf/Makefile\n> > +++ b/lib/librte_mbuf/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_mbuf.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_mbuf/rte_mbuf_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_MBUF) := rte_mbuf.c\n> >  \n> > diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map\n> > new file mode 100644\n> > index 0000000..55e352b\n> > --- /dev/null\n> > +++ b/lib/librte_mbuf/rte_mbuf_version.map\n> > @@ -0,0 +1,12 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_mbuf_sanity_check;\n> > +\trte_ctrlmbuf_init;\n> > +\trte_pktmbuf_init;\n> > +\trte_pktmbuf_pool_init;\n> > +\trte_pktmbuf_dump;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_mempool/Makefile b/lib/librte_mempool/Makefile\n> > index 9939e10..07b5b4e 100644\n> > --- a/lib/librte_mempool/Makefile\n> > +++ b/lib/librte_mempool/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_mempool.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_mempool/rte_mempool_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) +=  rte_mempool.c\n> >  ifeq ($(CONFIG_RTE_LIBRTE_XEN_DOM0),y)\n> > diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map\n> > new file mode 100644\n> > index 0000000..7a19982\n> > --- /dev/null\n> > +++ b/lib/librte_mempool/rte_mempool_version.map\n> > @@ -0,0 +1,18 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_mempool_create;\n> > +\trte_mempool_xmem_create;\n> > +\trte_dom0_mempool_create;\n> > +\trte_mempool_dump;\n> > +\trte_mempool_audit;\n> > +\trte_mempool_list_dump;\n> > +\trte_mempool_lookup;\n> > +\trte_mempool_calc_obj_size;\n> > +\trte_mempool_xmem_size;\n> > +\trte_mempool_xmem_usage;\n> > +\trte_mempool_walk;\n> > +\trte_mempool_count;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_meter/Makefile b/lib/librte_meter/Makefile\n> > index b25c0cc..0778690 100644\n> > --- a/lib/librte_meter/Makefile\n> > +++ b/lib/librte_meter/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_meter.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_meter/rte_meter_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map\n> > new file mode 100644\n> > index 0000000..51a73b1\n> > --- /dev/null\n> > +++ b/lib/librte_meter/rte_meter_version.map\n> > @@ -0,0 +1,13 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_meter_srtcm_config;\n> > +\trte_meter_trtcm_config;\n> > +\trte_meter_srtcm_color_blind_check;\n> > +\trte_meter_srtcm_color_aware_check;\n> > +\trte_meter_trtcm_color_blind_check;\n> > +\trte_meter_trtcm_color_aware_check;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pipeline/Makefile b/lib/librte_pipeline/Makefile\n> > index cf8fde8..5465d00 100644\n> > --- a/lib/librte_pipeline/Makefile\n> > +++ b/lib/librte_pipeline/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pipeline.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pipeline/rte_pipeline_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map\n> > new file mode 100644\n> > index 0000000..f868b96\n> > --- /dev/null\n> > +++ b/lib/librte_pipeline/rte_pipeline_version.map\n> > @@ -0,0 +1,23 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_pipeline_create;\n> > +\trte_pipeline_free;\n> > +\trte_pipeline_check;\n> > +\trte_pipeline_run;\n> > +\trte_pipeline_flush;\n> > +\trte_pipeline_table_create;\n> > +\trte_pipeline_table_default_entry_add;\n> > +\trte_pipeline_table_default_entry_delete;\n> > +\trte_pipeline_table_entry_add;\n> > +\trte_pipeline_table_entry_delete;\n> > +\trte_pipeline_port_in_create;\n> > +\trte_pipeline_port_in_connect_to_table;\n> > +\trte_pipeline_port_in_enable;\n> > +\trte_pipeline_port_in_disable;\n> > +\trte_pipeline_port_out_create;\n> > +\trte_pipeline_port_out_packet_insert;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_bond/Makefile b/lib/librte_pmd_bond/Makefile\n> > index 953d75e..5b14ce2 100644\n> > --- a/lib/librte_pmd_bond/Makefile\n> > +++ b/lib/librte_pmd_bond/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pmd_bond.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_bond/rte_eth_bond_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_pmd_bond/rte_eth_bond_version.map b/lib/librte_pmd_bond/rte_eth_bond_version.map\n> > new file mode 100644\n> > index 0000000..17f0a1f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_bond/rte_eth_bond_version.map\n> > @@ -0,0 +1,20 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_eth_bond_create;\n> > +\trte_eth_bond_slave_add;\n> > +\trte_eth_bond_slave_remove;\n> > +\trte_eth_bond_mode_set;\n> > +\trte_eth_bond_mode_get;\n> > +\trte_eth_bond_primary_set;\n> > +\trte_eth_bond_primary_get;\n> > +\trte_eth_bond_slaves_get;\n> > +\trte_eth_bond_active_slaves_get;\n> > +\trte_eth_bond_mac_address_set;\n> > +\trte_eth_bond_mac_address_reset;\n> > +\trte_eth_bond_xmit_policy_set;\n> > +\trte_eth_bond_xmit_policy_get;\n> > +\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_pmd_e1000/Makefile b/lib/librte_pmd_e1000/Makefile\n> > index 14bc4a2..e225bfe 100644\n> > --- a/lib/librte_pmd_e1000/Makefile\n> > +++ b/lib/librte_pmd_e1000/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pmd_e1000.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> > +\n> >  ifeq ($(CC), icc)\n> >  #\n> >  # CFLAGS for icc\n> > diff --git a/lib/librte_pmd_e1000/rte_pmd_e1000_version.map b/lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> > new file mode 100644\n> > index 0000000..cbc401f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_e1000/rte_pmd_e1000_version.map\n> > @@ -0,0 +1,5 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_i40e/Makefile b/lib/librte_pmd_i40e/Makefile\n> > index 4b31675..cfbe816 100644\n> > --- a/lib/librte_pmd_i40e/Makefile\n> > +++ b/lib/librte_pmd_i40e/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pmd_i40e.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> > +\n> >  #\n> >  # Add extra flags for base driver files (also known as shared code)\n> >  # to disable warnings\n> > diff --git a/lib/librte_pmd_i40e/rte_pmd_i40e_version.map b/lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> > new file mode 100644\n> > index 0000000..cbc401f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_i40e/rte_pmd_i40e_version.map\n> > @@ -0,0 +1,5 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_ixgbe/Makefile b/lib/librte_pmd_ixgbe/Makefile\n> > index 00ccedb..1dd14a6 100644\n> > --- a/lib/librte_pmd_ixgbe/Makefile\n> > +++ b/lib/librte_pmd_ixgbe/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pmd_ixgbe.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> > +\n> >  ifeq ($(CC), icc)\n> >  #\n> >  # CFLAGS for icc\n> > diff --git a/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map b/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> > new file mode 100644\n> > index 0000000..cbc401f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_ixgbe/rte_pmd_ixgbe_version.map\n> > @@ -0,0 +1,5 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_pcap/Makefile b/lib/librte_pmd_pcap/Makefile\n> > index c5c214d..fff5572 100644\n> > --- a/lib/librte_pmd_pcap/Makefile\n> > +++ b/lib/librte_pmd_pcap/Makefile\n> > @@ -40,6 +40,8 @@ LIB = librte_pmd_pcap.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_pmd_pcap/rte_pmd_pcap_version.map b/lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> > new file mode 100644\n> > index 0000000..cbc401f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_pcap/rte_pmd_pcap_version.map\n> > @@ -0,0 +1,5 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_ring/Makefile b/lib/librte_pmd_ring/Makefile\n> > index b57e421..25ad27f 100644\n> > --- a/lib/librte_pmd_ring/Makefile\n> > +++ b/lib/librte_pmd_ring/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pmd_ring.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_ring/rte_eth_ring_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_pmd_ring/rte_eth_ring.c b/lib/librte_pmd_ring/rte_eth_ring.c\n> > index 4f1b6ed..df7b583 100644\n> > --- a/lib/librte_pmd_ring/rte_eth_ring.c\n> > +++ b/lib/librte_pmd_ring/rte_eth_ring.c\n> > @@ -473,7 +473,7 @@ out:\n> >  \treturn ret;\n> >  }\n> >  \n> > -int\n> > +static int\n> >  rte_pmd_ring_devinit(const char *name, const char *params)\n> >  {\n> >  \tstruct rte_kvargs *kvlist;\n> > diff --git a/lib/librte_pmd_ring/rte_eth_ring.h b/lib/librte_pmd_ring/rte_eth_ring.h\n> > index e6ae19e..d36489a 100644\n> > --- a/lib/librte_pmd_ring/rte_eth_ring.h\n> > +++ b/lib/librte_pmd_ring/rte_eth_ring.h\n> > @@ -50,12 +50,6 @@ int rte_eth_from_rings(const char *name,\n> >  int rte_eth_ring_pair_create(const char *name, const unsigned numa_node);\n> >  int rte_eth_ring_pair_attach(const char *name, const unsigned numa_node);\n> >  \n> > -/**\n> > - * For use by test apps only. Called as part of EAL init to set up any dummy NICs\n> > - * configured on command line.\n> > - */\n> > -int rte_pmd_ring_devinit(const char *name, const char *params);\n> > -\n> >  #ifdef __cplusplus\n> >  }\n> >  #endif\n> > diff --git a/lib/librte_pmd_ring/rte_eth_ring_version.map b/lib/librte_pmd_ring/rte_eth_ring_version.map\n> > new file mode 100644\n> > index 0000000..5edaa3d\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_ring/rte_eth_ring_version.map\n> > @@ -0,0 +1,10 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tglobal:\n> > +\n> > +\trte_eth_from_rings;\n> > +\trte_eth_ring_pair_create;\n> > +\trte_eth_ring_pair_attach;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_pmd_virtio/Makefile b/lib/librte_pmd_virtio/Makefile\n> > index 456095b..bf51bd9 100644\n> > --- a/lib/librte_pmd_virtio/Makefile\n> > +++ b/lib/librte_pmd_virtio/Makefile\n> > @@ -39,6 +39,7 @@ LIB = librte_pmd_virtio_uio.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n> >  \n> >  #\n> >  # all source are stored in SRCS-y\n> > diff --git a/lib/librte_pmd_virtio/rte_pmd_virtio_version.map b/lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n> > new file mode 100644\n> > index 0000000..cbc401f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_virtio/rte_pmd_virtio_version.map\n> > @@ -0,0 +1,5 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_vmxnet3/Makefile b/lib/librte_pmd_vmxnet3/Makefile\n> > index 6872c74..e5a1c6b 100644\n> > --- a/lib/librte_pmd_vmxnet3/Makefile\n> > +++ b/lib/librte_pmd_vmxnet3/Makefile\n> > @@ -66,6 +66,8 @@ endif\n> >  \n> >  VPATH += $(RTE_SDK)/lib/librte_pmd_vmxnet3/vmxnet3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map b/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> > new file mode 100644\n> > index 0000000..cbc401f\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_vmxnet3/rte_pmd_vmxnet3_version.map\n> > @@ -0,0 +1,5 @@\n> > +DPDK_1.8 {\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_pmd_xenvirt/Makefile b/lib/librte_pmd_xenvirt/Makefile\n> > index 01bfcaa..0a08b1b 100644\n> > --- a/lib/librte_pmd_xenvirt/Makefile\n> > +++ b/lib/librte_pmd_xenvirt/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_pmd_xenvirt.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map b/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> > new file mode 100644\n> > index 0000000..66199b1\n> > --- /dev/null\n> > +++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt_version.map\n> > @@ -0,0 +1,8 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_mempool_gntalloc_create;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_port/Makefile b/lib/librte_port/Makefile\n> > index 28793a5..e812bda 100644\n> > --- a/lib/librte_port/Makefile\n> > +++ b/lib/librte_port/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_port.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_port/rte_port_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map\n> > new file mode 100644\n> > index 0000000..57ccaa3\n> > --- /dev/null\n> > +++ b/lib/librte_port/rte_port_version.map\n> > @@ -0,0 +1,18 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_port_ring_reader_ops;\n> > +\trte_port_ring_writer_ops;\n> > +\trte_port_ethdev_reader_ops;\n> > +\trte_port_ethdev_writer_ops;\n> > +\trte_port_ring_reader_ipv4_frag_ops;\n> > +\trte_port_ring_writer_ipv4_ras_ops;\n> > +\trte_port_ring_reader_ops;\n> > +\trte_port_ring_writer_ops;\n> > +\trte_port_sched_reader_ops;\n> > +\trte_port_sched_writer_ops;\n> > +\trte_port_source_ops;\n> > +\trte_port_sink_ops;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_power/Makefile b/lib/librte_power/Makefile\n> > index 6185812..26ee542 100644\n> > --- a/lib/librte_power/Makefile\n> > +++ b/lib/librte_power/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_power.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_power/rte_power_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_POWER) := rte_power.c\n> >  \n> > diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map\n> > new file mode 100644\n> > index 0000000..3b2375a\n> > --- /dev/null\n> > +++ b/lib/librte_power/rte_power_version.map\n> > @@ -0,0 +1,14 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_power_init;\n> > +\trte_power_exit;\n> > +\trte_power_freqs;\n> > +\trte_power_get_freq;\n> > +\trte_power_set_freq;\n> > +\trte_power_freq_up;\n> > +\trte_power_freq_down;\n> > +\trte_power_freq_max;\n> > +\trte_power_freq_min;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_ring/Makefile b/lib/librte_ring/Makefile\n> > index 2380a43..0adaa00 100644\n> > --- a/lib/librte_ring/Makefile\n> > +++ b/lib/librte_ring/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_ring.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_ring/rte_ring_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_RING) := rte_ring.c\n> >  \n> > diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map\n> > new file mode 100644\n> > index 0000000..6c28af9\n> > --- /dev/null\n> > +++ b/lib/librte_ring/rte_ring_version.map\n> > @@ -0,0 +1,12 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\trte_ring_get_memsize;\n> > +\trte_ring_init;\n> > +\trte_ring_create;\n> > +\trte_ring_set_water_mark;\n> > +\trte_ring_dump;\n> > +\trte_ring_list_dump;\n> > +\trte_ring_lookup;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_sched/Makefile b/lib/librte_sched/Makefile\n> > index 1a25b21..205fb7a 100644\n> > --- a/lib/librte_sched/Makefile\n> > +++ b/lib/librte_sched/Makefile\n> > @@ -41,6 +41,8 @@ CFLAGS += $(WERROR_FLAGS)\n> >  \n> >  CFLAGS_rte_red.o := -D_GNU_SOURCE\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_sched/rte_sched_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map\n> > new file mode 100644\n> > index 0000000..b5877ce\n> > --- /dev/null\n> > +++ b/lib/librte_sched/rte_sched_version.map\n> > @@ -0,0 +1,22 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_approx;\n> > +\trte_red_rt_data_init;\n> > +\trte_red_config_init;\n> > +\trte_sched_port_config;\n> > +\trte_sched_port_free;\n> > +\trte_sched_subport_config;\n> > +\trte_sched_pipe_config;\n> > +\trte_sched_port_get_memory_footprint;\n> > +\trte_sched_subport_read_stats;\n> > +\trte_sched_queue_read_stats;\n> > +\trte_sched_port_enqueue;\n> > +\trte_sched_port_dequeue;\n> > +\trte_red_log2_1_minus_Wq;\n> > +\trte_red_pow2_frac_inv;\n> > +\trte_red_rand_val;\n> > +\trte_red_rand_seed;\n> > +\n> > +\tlocal: *;\n> > +};\n> > diff --git a/lib/librte_table/Makefile b/lib/librte_table/Makefile\n> > index dd684cc..5b54acc 100644\n> > --- a/lib/librte_table/Makefile\n> > +++ b/lib/librte_table/Makefile\n> > @@ -39,6 +39,8 @@ LIB = librte_table.a\n> >  CFLAGS += -O3\n> >  CFLAGS += $(WERROR_FLAGS)\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_table/rte_table_version.map\n> > +\n> >  #\n> >  # all source are stored in SRCS-y\n> >  #\n> > diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map\n> > new file mode 100644\n> > index 0000000..86f16b8\n> > --- /dev/null\n> > +++ b/lib/librte_table/rte_table_version.map\n> > @@ -0,0 +1,22 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_table_stub_ops;\n> > +\trte_table_lpm_ops;\n> > +\trte_table_array_ops;\n> > +\trte_table_hash_key8_lru_ops;\n> > +\trte_table_hash_key8_lru_dosig_ops;\n> > +\trte_table_hash_key8_ext_ops;\n> > +\trte_table_hash_key8_ext_dosig_ops;\n> > +\trte_table_lpm_ipv6_ops;\n> > +\trte_table_hash_key16_lru_ops;\n> > +\trte_table_hash_key32_lru_ops;\n> > +\trte_table_hash_key16_ext_ops;\n> > +\trte_table_hash_key32_ext_ops;\n> > +\trte_table_acl_ops;\n> > +\trte_table_hash_lru_ops;\n> > +\trte_table_hash_ext_ops;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > diff --git a/lib/librte_timer/Makefile b/lib/librte_timer/Makefile\n> > index 07eb0c6..f703e5f 100644\n> > --- a/lib/librte_timer/Makefile\n> > +++ b/lib/librte_timer/Makefile\n> > @@ -36,6 +36,8 @@ LIB = librte_timer.a\n> >  \n> >  CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3\n> >  \n> > +EXPORT_MAP := $(RTE_SDK)/lib/librte_timer/rte_timer_version.map\n> > +\n> >  # all source are stored in SRCS-y\n> >  SRCS-$(CONFIG_RTE_LIBRTE_TIMER) := rte_timer.c\n> >  \n> > diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map\n> > new file mode 100644\n> > index 0000000..00b6b52\n> > --- /dev/null\n> > +++ b/lib/librte_timer/rte_timer_version.map\n> > @@ -0,0 +1,16 @@\n> > +DPDK_1.8 {\n> > +\tglobal:\n> > +\n> > +\trte_timer_subsystem_init;\n> > +\trte_timer_init;\n> > +\trte_timer_reset;\n> > +\trte_timer_reset_sync;\n> > +\trte_timer_stop;\n> > +\trte_timer_stop_sync;\n> > +\trte_timer_pending;\n> > +\trte_timer_manage;\n> > +\trte_timer_dump_stats;\n> > +\n> > +\tlocal: *;\n> > +};\n> > +\n> > -- \n> > 1.9.3\n> > \n> \n> May need to update some of the version maps with new functions in head.\n> \nI'm certain we will, but thats a trivial matter once this is integrated.\nNeil\n\n> Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>\n>",
        "headers": {
            "Return-Path": "<dev-bounces@dpdk.org>",
            "References": "<1410809031-19114-1-git-send-email-nhorman@tuxdriver.com>\n\t<1410809031-19114-3-git-send-email-nhorman@tuxdriver.com>\n\t<20141001112546.GA17019@sivswdev02.ir.intel.com>",
            "X-Mailman-Version": "2.1.15",
            "From": "Neil Horman <nhorman@tuxdriver.com>",
            "User-Agent": "Mutt/1.5.23 (2014-03-12)",
            "List-Post": "<mailto:dev@dpdk.org>",
            "Content-Type": "text/plain; charset=us-ascii",
            "X-BeenThere": "dev@dpdk.org",
            "X-Original-To": "patchwork@dpdk.org",
            "Received": [
                "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id B63DB6A99;\n\tWed,  1 Oct 2014 16:37:18 +0200 (CEST)",
                "from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])\n\tby dpdk.org (Postfix) with ESMTP id 050426A96\n\tfor <dev@dpdk.org>; Wed,  1 Oct 2014 16:37:12 +0200 (CEST)",
                "from nat-pool-rdu-u.redhat.com ([66.187.233.203] helo=localhost)\n\tby smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63)\n\t(envelope-from <nhorman@tuxdriver.com>)\n\tid 1XZL87-0000XV-3B; Wed, 01 Oct 2014 10:43:55 -0400"
            ],
            "Subject": "Re: [dpdk-dev] [PATCH 2/4] Provide initial versioning for all DPDK\n\tlibraries",
            "Sender": "\"dev\" <dev-bounces@dpdk.org>",
            "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
            "Message-ID": "<20141001144341.GA24028@localhost.localdomain>",
            "Precedence": "list",
            "Date": "Wed, 1 Oct 2014 10:43:41 -0400",
            "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
            "Errors-To": "dev-bounces@dpdk.org",
            "X-Spam-Score": "-2.9 (--)",
            "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
            "X-Spam-Status": "No",
            "Cc": "dev@dpdk.org",
            "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
            "Delivered-To": "patchwork@dpdk.org",
            "In-Reply-To": "<20141001112546.GA17019@sivswdev02.ir.intel.com>",
            "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
            "MIME-Version": "1.0",
            "To": "Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>",
            "Content-Disposition": "inline"
        }
    }
]