CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
+EXPORT_MAP := rte_acl_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_acl_add_rules;
+       rte_acl_build;
+       rte_acl_classify;
+       rte_acl_classify_alg;
+       rte_acl_classify_scalar;
+       rte_acl_create;
+       rte_acl_dump;
+       rte_acl_find_existing;
+       rte_acl_free;
+       rte_acl_ipv4vlan_add_rules;
+       rte_acl_ipv4vlan_build;
+       rte_acl_list_dump;
+       rte_acl_reset;
+       rte_acl_reset_rules;
+       rte_acl_set_ctx_classify;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_cfgfile_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_cfgfile_close;
+       rte_cfgfile_get_entry;
+       rte_cfgfile_has_entry;
+       rte_cfgfile_has_section;
+       rte_cfgfile_load;
+       rte_cfgfile_num_sections;
+       rte_cfgfile_section_entries;
+       rte_cfgfile_section_num_entries;
+       rte_cfgfile_sections;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_cmdline_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) := cmdline.c
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_cirbuf.c
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       cirbuf_add_buf_head;
+       cirbuf_add_buf_tail;
+       cirbuf_add_head;
+       cirbuf_add_head_safe;
+       cirbuf_add_tail;
+       cirbuf_add_tail_safe;
+       cirbuf_align_left;
+       cirbuf_align_right;
+       cirbuf_del_buf_head;
+       cirbuf_del_buf_tail;
+       cirbuf_del_head;
+       cirbuf_del_head_safe;
+       cirbuf_del_tail;
+       cirbuf_del_tail_safe;
+       cirbuf_get_buf_head;
+       cirbuf_get_buf_tail;
+       cirbuf_get_head;
+       cirbuf_get_tail;
+       cirbuf_init;
+       cmdline_complete;
+       cmdline_complete_get_elt_string;
+       cmdline_complete_get_nb_string;
+       cmdline_file_new;
+       cmdline_free;
+       cmdline_get_help_etheraddr;
+       cmdline_get_help_ipaddr;
+       cmdline_get_help_num;
+       cmdline_get_help_portlist;
+       cmdline_get_help_string;
+       cmdline_in;
+       cmdline_interact;
+       cmdline_isendoftoken;
+       cmdline_new;
+       cmdline_parse;
+       cmdline_parse_etheraddr;
+       cmdline_parse_ipaddr;
+       cmdline_parse_num;
+       cmdline_parse_portlist;
+       cmdline_parse_string;
+       cmdline_printf;
+       cmdline_quit;
+       cmdline_set_prompt;
+       cmdline_stdin_exit;
+       cmdline_stdin_new;
+       cmdline_token_etheraddr_ops;
+       cmdline_token_ipaddr_ops;
+       cmdline_token_num_ops;
+       cmdline_token_string_ops;
+       cmdline_token_string_ops;
+       cmdline_write_char;
+       rdline_add_history;
+       rdline_char_in;
+       rdline_clear_history;
+       rdline_get_buffer;
+       rdline_get_history_item;
+       rdline_init;
+       rdline_newline;
+       rdline_quit;
+       rdline_redisplay;
+       rdline_reset;
+       rdline_restart;
+       rdline_stop;
+       vt100_init;
+       vt100_parser;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
+EXPORT_MAP := rte_distributor_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_distributor_clear_returns;
+       rte_distributor_create;
+       rte_distributor_flush;
+       rte_distributor_get_pkt;
+       rte_distributor_poll_pkt;
+       rte_distributor_process;
+       rte_distributor_request_pkt;
+       rte_distributor_return_pkt;
+       rte_distributor_returned_pkts;
+
+       local: *;
+};
 
 CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_pcap
 CFLAGS += $(WERROR_FLAGS) -O3
 
+EXPORT_MAP := rte_eal_version.map
+
 # specific to linuxapp exec-env
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) := eal.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_memory.c
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       __rte_panic;
+       devargs_list;
+       eal_parse_sysfs_value;
+       eal_timer_source;
+       lcore_config;
+       pci_device_list;
+       pci_driver_list;
+       per_lcore__lcore_id;
+       per_lcore__rte_errno;
+       rte_cpu_check_supported;
+       rte_cpu_get_flag_enabled;
+       rte_cycles_vmware_tsc_map;
+       rte_delay_us;
+       rte_dump_physmem_layout;
+       rte_dump_registers;
+       rte_dump_stack;
+       rte_dump_tailq;
+       rte_eal_alarm_cancel;
+       rte_eal_alarm_set;
+       rte_eal_dev_init;
+       rte_eal_devargs_add;
+       rte_eal_devargs_dump;
+       rte_eal_devargs_type_count;
+       rte_eal_driver_register;
+       rte_eal_driver_unregister;
+       rte_eal_get_configuration;
+       rte_eal_get_lcore_state;
+       rte_eal_get_physmem_layout;
+       rte_eal_get_physmem_size;
+       rte_eal_has_hugepages;
+       rte_eal_hpet_init;
+       rte_eal_init;
+       rte_eal_lcore_role;
+       rte_eal_mp_remote_launch;
+       rte_eal_mp_wait_lcore;
+       rte_eal_pci_dump;
+       rte_eal_pci_probe;
+       rte_eal_pci_register;
+       rte_eal_pci_unregister;
+       rte_eal_process_type;
+       rte_eal_remote_launch;
+       rte_eal_tailq_lookup;
+       rte_eal_tailq_lookup_by_idx;
+       rte_eal_tailq_reserve;
+       rte_eal_tailq_reserve_by_idx;
+       rte_eal_wait_lcore;
+       rte_exit;
+       rte_get_hpet_cycles;
+       rte_get_hpet_hz;
+       rte_get_tsc_hz;
+       rte_hexdump;
+       rte_intr_callback_register;
+       rte_intr_callback_unregister;
+       rte_intr_disable;
+       rte_intr_enable;
+       rte_log;
+       rte_log_add_in_history;
+       rte_log_cur_msg_loglevel;
+       rte_log_cur_msg_logtype;
+       rte_log_dump_history;
+       rte_log_set_history;
+       rte_logs;
+       rte_mem_lock_page;
+       rte_mem_phy2mch;
+       rte_mem_virt2phy;
+       rte_memdump;
+       rte_memory_get_nchannel;
+       rte_memory_get_nrank;
+       rte_memzone_dump;
+       rte_memzone_lookup;
+       rte_memzone_reserve;
+       rte_memzone_reserve_aligned;
+       rte_memzone_reserve_bounded;
+       rte_memzone_walk;
+       rte_openlog_stream;
+       rte_set_application_usage_hook;
+       rte_set_log_level;
+       rte_set_log_type;
+       rte_snprintf;
+       rte_strerror;
+       rte_strsplit;
+       rte_vlog;
+       rte_xen_dom0_memory_attach;
+       rte_xen_dom0_memory_init;
+       test_mp_secondary;
+
+       local: *;
+};
 
 
 LIB = librte_eal.a
 
+EXPORT_MAP := rte_eal_version.map
+
 VPATH += $(RTE_SDK)/lib/librte_eal/common
 
 CFLAGS += -I$(SRCDIR)/include
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       __rte_panic;
+       devargs_list;
+       eal_parse_sysfs_value;
+       eal_timer_source;
+       lcore_config;
+       pci_device_list;
+       pci_driver_list;
+       per_lcore__lcore_id;
+       per_lcore__rte_errno;
+       rte_cpu_check_supported;
+       rte_cpu_get_flag_enabled;
+       rte_cycles_vmware_tsc_map;
+       rte_delay_us;
+       rte_dump_physmem_layout;
+       rte_dump_registers;
+       rte_dump_stack;
+       rte_dump_tailq;
+       rte_eal_alarm_cancel;
+       rte_eal_alarm_set;
+       rte_eal_dev_init;
+       rte_eal_devargs_add;
+       rte_eal_devargs_dump;
+       rte_eal_devargs_type_count;
+       rte_eal_driver_register;
+       rte_eal_driver_unregister;
+       rte_eal_get_configuration;
+       rte_eal_get_lcore_state;
+       rte_eal_get_physmem_layout;
+       rte_eal_get_physmem_size;
+       rte_eal_has_hugepages;
+       rte_eal_hpet_init;
+       rte_eal_init;
+       rte_eal_lcore_role;
+       rte_eal_mp_remote_launch;
+       rte_eal_mp_wait_lcore;
+       rte_eal_pci_dump;
+       rte_eal_pci_probe;
+       rte_eal_pci_register;
+       rte_eal_pci_unregister;
+       rte_eal_process_type;
+       rte_eal_remote_launch;
+       rte_eal_tailq_lookup;
+       rte_eal_tailq_lookup_by_idx;
+       rte_eal_tailq_reserve;
+       rte_eal_tailq_reserve_by_idx;
+       rte_eal_wait_lcore;
+       rte_exit;
+       rte_get_hpet_cycles;
+       rte_get_hpet_hz;
+       rte_get_tsc_hz;
+       rte_hexdump;
+       rte_intr_callback_register;
+       rte_intr_callback_unregister;
+       rte_intr_disable;
+       rte_intr_enable;
+       rte_log;
+       rte_log_add_in_history;
+       rte_log_cur_msg_loglevel;
+       rte_log_cur_msg_logtype;
+       rte_log_dump_history;
+       rte_log_set_history;
+       rte_logs;
+       rte_mem_lock_page;
+       rte_mem_phy2mch;
+       rte_mem_virt2phy;
+       rte_memdump;
+       rte_memory_get_nchannel;
+       rte_memory_get_nrank;
+       rte_memzone_dump;
+       rte_memzone_lookup;
+       rte_memzone_reserve;
+       rte_memzone_reserve_aligned;
+       rte_memzone_reserve_bounded;
+       rte_memzone_walk;
+       rte_openlog_stream;
+       rte_set_application_usage_hook;
+       rte_set_log_level;
+       rte_set_log_type;
+       rte_snprintf;
+       rte_strerror;
+       rte_strsplit;
+       rte_vlog;
+       rte_xen_dom0_memory_attach;
+       rte_xen_dom0_memory_init;
+       test_mp_secondary;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_ether_version.map
+
 SRCS-y += rte_ethdev.c
 
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       _rte_eth_dev_callback_process;
+       rte_eth_allmulticast_disable;
+       rte_eth_allmulticast_enable;
+       rte_eth_allmulticast_get;
+       rte_eth_dev_add_2tuple_filter;
+       rte_eth_dev_add_5tuple_filter;
+       rte_eth_dev_add_ethertype_filter;
+       rte_eth_dev_add_flex_filter;
+       rte_eth_dev_add_syn_filter;
+       rte_eth_dev_allocate;
+       rte_eth_dev_bypass_event_show;
+       rte_eth_dev_bypass_event_store;
+       rte_eth_dev_bypass_init;
+       rte_eth_dev_bypass_state_set;
+       rte_eth_dev_bypass_state_show;
+       rte_eth_dev_bypass_ver_show;
+       rte_eth_dev_bypass_wd_reset;
+       rte_eth_dev_bypass_wd_timeout_show;
+       rte_eth_dev_callback_process;
+       rte_eth_dev_callback_register;
+       rte_eth_dev_callback_unregister;
+       rte_eth_dev_close;
+       rte_eth_dev_configure;
+       rte_eth_dev_count;
+       rte_eth_dev_fdir_add_perfect_filter;
+       rte_eth_dev_fdir_add_signature_filter;
+       rte_eth_dev_fdir_get_infos;
+       rte_eth_dev_fdir_remove_perfect_filter;
+       rte_eth_dev_fdir_remove_signature_filter;
+       rte_eth_dev_fdir_set_masks;
+       rte_eth_dev_fdir_update_perfect_filter;
+       rte_eth_dev_fdir_update_signature_filter;
+       rte_eth_dev_filter_ctrl;
+       rte_eth_dev_filter_supported;
+       rte_eth_dev_flow_ctrl_get;
+       rte_eth_dev_flow_ctrl_set;
+       rte_eth_dev_get_2tuple_filter;
+       rte_eth_dev_get_5tuple_filter;
+       rte_eth_dev_get_ethertype_filter;
+       rte_eth_dev_get_flex_filter;
+       rte_eth_dev_get_mtu;
+       rte_eth_dev_get_syn_filter;
+       rte_eth_dev_get_vlan_offload;
+       rte_eth_dev_info_get;
+       rte_eth_dev_mac_addr_add;
+       rte_eth_dev_mac_addr_remove;
+       rte_eth_dev_priority_flow_ctrl_set;
+       rte_eth_dev_remove_2tuple_filter;
+       rte_eth_dev_remove_5tuple_filter;
+       rte_eth_dev_remove_ethertype_filter;
+       rte_eth_dev_remove_flex_filter;
+       rte_eth_dev_remove_syn_filter;
+       rte_eth_dev_rss_hash_conf_get;
+       rte_eth_dev_rss_hash_update;
+       rte_eth_dev_rss_reta_query;
+       rte_eth_dev_rss_reta_update;
+       rte_eth_dev_rx_queue_start;
+       rte_eth_dev_rx_queue_stop;
+       rte_eth_dev_set_link_down;
+       rte_eth_dev_set_link_up;
+       rte_eth_dev_set_mtu;
+       rte_eth_dev_set_rx_queue_stats_mapping;
+       rte_eth_dev_set_tx_queue_stats_mapping;
+       rte_eth_dev_set_vf_rx;
+       rte_eth_dev_set_vf_rxmode;
+       rte_eth_dev_set_vf_tx;
+       rte_eth_dev_set_vf_vlan_filter;
+       rte_eth_dev_set_vlan_ether_type;
+       rte_eth_dev_set_vlan_offload;
+       rte_eth_dev_set_vlan_pvid;
+       rte_eth_dev_set_vlan_strip_on_queue;
+       rte_eth_dev_socket_id;
+       rte_eth_dev_start;
+       rte_eth_dev_stop;
+       rte_eth_dev_tx_queue_start;
+       rte_eth_dev_tx_queue_stop;
+       rte_eth_dev_uc_all_hash_table_set;
+       rte_eth_dev_uc_hash_table_set;
+       rte_eth_dev_udp_tunnel_add;
+       rte_eth_dev_udp_tunnel_delete;
+       rte_eth_dev_vlan_filter;
+       rte_eth_dev_wd_timeout_store;
+       rte_eth_devices;
+       rte_eth_driver_register;
+       rte_eth_led_off;
+       rte_eth_led_on;
+       rte_eth_link;
+       rte_eth_link_get;
+       rte_eth_link_get_nowait;
+       rte_eth_macaddr_get;
+       rte_eth_mirror_rule_reset;
+       rte_eth_mirror_rule_set;
+       rte_eth_promiscuous_disable;
+       rte_eth_promiscuous_enable;
+       rte_eth_promiscuous_get;
+       rte_eth_rx_burst;
+       rte_eth_rx_descriptor_done;
+       rte_eth_rx_queue_count;
+       rte_eth_rx_queue_setup;
+       rte_eth_set_queue_rate_limit;
+       rte_eth_set_vf_rate_limit;
+       rte_eth_stats;
+       rte_eth_stats_get;
+       rte_eth_stats_reset;
+       rte_eth_tx_burst;
+       rte_eth_tx_queue_setup;
+       rte_eth_xstats_get;
+       rte_eth_xstats_reset;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
+EXPORT_MAP := rte_hash_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_HASH) := rte_hash.c
 SRCS-$(CONFIG_RTE_LIBRTE_HASH) += rte_fbk_hash.c
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_fbk_hash_create;
+       rte_fbk_hash_find_existing;
+       rte_fbk_hash_free;
+       rte_hash_add_key;
+       rte_hash_add_key_with_hash;
+       rte_hash_create;
+       rte_hash_del_key;
+       rte_hash_del_key_with_hash;
+       rte_hash_find_existing;
+       rte_hash_free;
+       rte_hash_lookup;
+       rte_hash_lookup_bulk;
+       rte_hash_lookup_with_hash;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
+EXPORT_MAP := rte_ipfrag_version.map
+
 #source files
 ifeq ($(CONFIG_RTE_MBUF_REFCNT),y)
 SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv4_fragmentation.c
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_ip_frag_free_death_row;
+       rte_ip_frag_table_create;
+       rte_ip_frag_table_statistics_dump;
+       rte_ipv4_frag_reassemble_packet;
+       rte_ipv4_fragment_packet;
+       rte_ipv6_frag_reassemble_packet;
+       rte_ipv6_fragment_packet;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_ivshmem_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_IVSHMEM) := rte_ivshmem.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_ivshmem_metadata_add_mempool;
+       rte_ivshmem_metadata_add_memzone;
+       rte_ivshmem_metadata_add_ring;
+       rte_ivshmem_metadata_cmdline_generate;
+       rte_ivshmem_metadata_create;
+       rte_ivshmem_metadata_dump;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing
 
+EXPORT_MAP := rte_kni_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_KNI) := rte_kni.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_kni_alloc;
+       rte_kni_close;
+       rte_kni_create;
+       rte_kni_get;
+       rte_kni_get_port_id;
+       rte_kni_handle_request;
+       rte_kni_info_get;
+       rte_kni_init;
+       rte_kni_register_handlers;
+       rte_kni_release;
+       rte_kni_rx_burst;
+       rte_kni_tx_burst;
+       rte_kni_unregister_handlers;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_kvargs_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) := rte_kvargs.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_kvargs_count;
+       rte_kvargs_free;
+       rte_kvargs_parse;
+       rte_kvargs_process;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
+EXPORT_MAP := rte_lpm_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_LPM) := rte_lpm.c rte_lpm6.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_lpm_add;
+       rte_lpm_create;
+       rte_lpm_delete;
+       rte_lpm_delete_all;
+       rte_lpm_find_existing;
+       rte_lpm_free;
+       rte_lpm_is_rule_present;
+       rte_lpm6_add;
+       rte_lpm6_create;
+       rte_lpm6_delete;
+       rte_lpm6_delete_all;
+       rte_lpm6_delete_bulk_func;
+       rte_lpm6_find_existing;
+       rte_lpm6_free;
+       rte_lpm6_is_rule_present;
+       rte_lpm6_lookup;
+       rte_lpm6_lookup_bulk_func;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_malloc_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_MALLOC) := rte_malloc.c malloc_elem.c malloc_heap.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_calloc;
+       rte_calloc_socket;
+       rte_free;
+       rte_malloc;
+       rte_malloc_dump_stats;
+       rte_malloc_get_socket_stats;
+       rte_malloc_set_limit;
+       rte_malloc_socket;
+       rte_malloc_validate;
+       rte_malloc_virt2phy;
+       rte_realloc;
+       rte_zmalloc;
+       rte_zmalloc_socket;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_mbuf_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_MBUF) := rte_mbuf.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_ctrlmbuf_init;
+       rte_get_rx_ol_flag_name;
+       rte_get_tx_ol_flag_name;
+       rte_mbuf_sanity_check;
+       rte_pktmbuf_dump;
+       rte_pktmbuf_init;
+       rte_pktmbuf_pool_init;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_mempool_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) +=  rte_mempool.c
 ifeq ($(CONFIG_RTE_LIBRTE_XEN_DOM0),y)
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_dom0_mempool_create;
+       rte_mempool_audit;
+       rte_mempool_calc_obj_size;
+       rte_mempool_count;
+       rte_mempool_create;
+       rte_mempool_dump;
+       rte_mempool_list_dump;
+       rte_mempool_lookup;
+       rte_mempool_walk;
+       rte_mempool_xmem_create;
+       rte_mempool_xmem_size;
+       rte_mempool_xmem_usage;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_meter_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_meter_srtcm_color_aware_check;
+       rte_meter_srtcm_color_blind_check;
+       rte_meter_srtcm_config;
+       rte_meter_trtcm_color_aware_check;
+       rte_meter_trtcm_color_blind_check;
+       rte_meter_trtcm_config;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_pipeline_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_pipeline_check;
+       rte_pipeline_create;
+       rte_pipeline_flush;
+       rte_pipeline_free;
+       rte_pipeline_port_in_connect_to_table;
+       rte_pipeline_port_in_create;
+       rte_pipeline_port_in_disable;
+       rte_pipeline_port_in_enable;
+       rte_pipeline_port_out_create;
+       rte_pipeline_port_out_packet_insert;
+       rte_pipeline_run;
+       rte_pipeline_table_create;
+       rte_pipeline_table_default_entry_add;
+       rte_pipeline_table_default_entry_delete;
+       rte_pipeline_table_entry_add;
+       rte_pipeline_table_entry_delete;
+
+       local: *;
+};
 
 #
 LIB = librte_pmd_af_packet.a
 
+EXPORT_MAP := rte_pmd_af_packet_version.map
+
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_pmd_af_packet_devinit;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_eth_bond_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_eth_bond_active_slaves_get;
+       rte_eth_bond_create;
+       rte_eth_bond_link_monitoring_set;
+       rte_eth_bond_mac_address_reset;
+       rte_eth_bond_mac_address_set;
+       rte_eth_bond_mode_get;
+       rte_eth_bond_mode_set;
+       rte_eth_bond_primary_get;
+       rte_eth_bond_primary_set;
+       rte_eth_bond_slave_add;
+       rte_eth_bond_slave_remove;
+       rte_eth_bond_slaves_get;
+       rte_eth_bond_xmit_policy_get;
+       rte_eth_bond_xmit_policy_set;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_pmd_e1000_version.map
+
 ifeq ($(CC), icc)
 #
 # CFLAGS for icc
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 #
 LIB = librte_pmd_enic.a
 
+EXPORT_MAP := rte_pmd_enic_version.map
+
 CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_enic/vnic/
 CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_enic/
 CFLAGS += -O3
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_pmd_i40e_version.map
+
 #
 # Add extra flags for base driver files (also known as shared code)
 # to disable warnings
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_pmd_ixgbe_version.map
+
 ifeq ($(CC), icc)
 #
 # CFLAGS for icc
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_pmd_pcap_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_eth_ring_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
        return ret;
 }
 
-int
+static int
 rte_pmd_ring_devinit(const char *name, const char *params)
 {
        struct rte_kvargs *kvlist;
 
 int rte_eth_ring_pair_create(const char *name, const unsigned numa_node);
 int rte_eth_ring_pair_attach(const char *name, const unsigned numa_node);
 
-/**
- * For use by test apps only. Called as part of EAL init to set up any dummy NICs
- * configured on command line.
- */
-int rte_pmd_ring_devinit(const char *name, const char *params);
-
 #ifdef __cplusplus
 }
 #endif
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_eth_from_rings;
+       rte_eth_ring_pair_attach;
+       rte_eth_ring_pair_create;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_pmd_virtio_version.map
 
 #
 # all source are stored in SRCS-y
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 
 VPATH += $(RTE_SDK)/lib/librte_pmd_vmxnet3/vmxnet3
 
+EXPORT_MAP := rte_pmd_vmxnet3_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_eth_xenvirt_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_mempool_gntalloc_create;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_port_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_port_ethdev_reader_ops;
+       rte_port_ethdev_writer_ops;
+       rte_port_ring_reader_ipv4_frag_ops;
+       rte_port_ring_reader_ops;
+       rte_port_ring_reader_ops;
+       rte_port_ring_writer_ipv4_ras_ops;
+       rte_port_ring_writer_ops;
+       rte_port_ring_writer_ops;
+       rte_port_sched_reader_ops;
+       rte_port_sched_writer_ops;
+       rte_port_sink_ops;
+       rte_port_source_ops;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing
 
+EXPORT_MAP := rte_power_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_POWER) := rte_power.c rte_power_acpi_cpufreq.c
 SRCS-$(CONFIG_RTE_LIBRTE_POWER) += rte_power_kvm_vm.c guest_channel.c
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_power_exit;
+       rte_power_freq_down;
+       rte_power_freq_max;
+       rte_power_freq_min;
+       rte_power_freq_up;
+       rte_power_freqs;
+       rte_power_get_env;
+       rte_power_get_freq;
+       rte_power_init;
+       rte_power_set_env;
+       rte_power_set_freq;
+       rte_power_unset_env;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_ring_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_RING) := rte_ring.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_ring_create;
+       rte_ring_dump;
+       rte_ring_get_memsize;
+       rte_ring_init;
+       rte_ring_list_dump;
+       rte_ring_lookup;
+       rte_ring_set_water_mark;
+
+       local: *;
+};
 
 
 CFLAGS_rte_red.o := -D_GNU_SOURCE
 
+EXPORT_MAP := rte_sched_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_approx;
+       rte_red_config_init;
+       rte_red_log2_1_minus_Wq;
+       rte_red_pow2_frac_inv;
+       rte_red_rand_seed;
+       rte_red_rand_val;
+       rte_red_rt_data_init;
+       rte_sched_pipe_config;
+       rte_sched_port_config;
+       rte_sched_port_dequeue;
+       rte_sched_port_enqueue;
+       rte_sched_port_free;
+       rte_sched_port_get_memory_footprint;
+       rte_sched_queue_read_stats;
+       rte_sched_subport_config;
+       rte_sched_subport_read_stats;
+
+       local: *;
+};
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
+EXPORT_MAP := rte_table_version.map
+
 #
 # all source are stored in SRCS-y
 #
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_table_acl_ops;
+       rte_table_array_ops;
+       rte_table_hash_ext_ops;
+       rte_table_hash_key8_ext_dosig_ops;
+       rte_table_hash_key8_ext_ops;
+       rte_table_hash_key8_lru_dosig_ops;
+       rte_table_hash_key8_lru_ops;
+       rte_table_hash_key16_ext_ops;
+       rte_table_hash_key16_lru_ops;
+       rte_table_hash_key32_ext_ops;
+       rte_table_hash_key32_lru_ops;
+       rte_table_hash_lru_ops;
+       rte_table_lpm_ipv6_ops;
+       rte_table_lpm_ops;
+       rte_table_stub_ops;
+
+       local: *;
+};
 
 
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 
+EXPORT_MAP := rte_timer_version.map
+
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_TIMER) := rte_timer.c
 
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_timer_dump_stats;
+       rte_timer_init;
+       rte_timer_manage;
+       rte_timer_pending;
+       rte_timer_reset;
+       rte_timer_reset_sync;
+       rte_timer_stop;
+       rte_timer_stop_sync;
+       rte_timer_subsystem_init;
+
+       local: *;
+};
 
 # library name
 LIB = librte_vhost.a
 
+EXPORT_MAP := rte_vhost_version.map
+
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -D_FILE_OFFSET_BITS=64 -lfuse
 LDFLAGS += -lfuse
 # all source are stored in SRCS-y
 
--- /dev/null
+DPDK_2.0 {
+       global:
+
+       rte_vhost_dequeue_burst;
+       rte_vhost_driver_callback_register;
+       rte_vhost_driver_register;
+       rte_vhost_driver_session_start;
+       rte_vhost_enable_guest_notification;
+       rte_vhost_enqueue_burst;
+       rte_vhost_feature_disable;
+       rte_vhost_feature_enable;
+       rte_vhost_feature_get;
+
+       local: *;
+};