2 * Copyright (c) 2015 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
16 * This file and in fact the entire directory shouldn't even exist.
17 * Vnet ought to be a dynamic library.
19 * Unfortunately, various things malfunction when we try to go there.
20 * Plugin DLL's end up with their own copies of critical
21 * data structures. No one of these problems would be tough to fix,
22 * but there are quite a number of them.
26 * Make certain that plugin .dll's which reference the following functions
30 #define foreach_plugin_reference \
31 _(unformat_vnet_hw_interface) \
32 _(unformat_vnet_sw_interface) \
33 _(vnet_hw_interface_rx_redirect_to_node) \
34 _(vnet_config_add_feature) \
35 _(vnet_config_del_feature) \
37 _(_vlib_init_function_l2_init) \
38 _(_vlib_init_function_pg_init) \
39 _(_vlib_init_function_ip_main_init) \
40 _(_vlib_init_function_ethernet_init) \
41 _(_vlib_init_function_ethernet_arp_init) \
42 _(l2input_intf_bitmap_enable) \
45 _(format_ip4_address) \
46 _(unformat_ip4_address) \
47 _(ip4_address_compare) \
48 _(ip6_address_compare) \
49 _(format_ip6_address) \
50 _(format_ip6_address_and_length) \
51 _(udp_register_dst_port) \
52 _(ethernet_register_input_type) \
53 _(ethernet_set_flags) \
54 _(vnet_register_sr_app_callback) \
55 _(format_ip6_sr_header) \
56 _(format_ip6_address) \
57 _(unformat_ip6_address) \
59 _(find_ip6_fib_by_table_index_or_id) \
60 _(format_ethernet_address) \
61 _(unformat_ethernet_address) \
62 _(unformat_ethernet_interface) \
63 _(ethernet_register_l2_input) \
64 _(ethernet_register_l3_redirect) \
65 _(unformat_pg_payload) \
66 _(format_ip4_address_and_length) \
67 _(ip_incremental_checksum) \
68 _(ethernet_sw_interface_set_l2_mode) \
69 _(vnet_create_loopback_interface) \
70 _(ethernet_set_rx_redirect) \
71 _(ethernet_set_flags) \
72 _(ethernet_get_main) \
73 _(ethernet_get_interface) \
74 _(vnet_hw_interface_set_flags) \
75 _(vnet_sw_interface_set_flags) \
76 _(vnet_create_sw_interface) \
77 _(vnet_delete_sw_interface) \
81 _(pg_stream_enable_disable) \
85 #define foreach_dpdk_plugin_reference \
86 _(dpdk_set_next_node) \
87 _(dpdk_worker_thread) \
89 _(dpdk_frame_queue_dequeue) \
90 _(vlib_get_handoff_queue_elt) \
91 _(dpdk_get_handoff_node_index) \
92 _(dpdk_set_flowcontrol_callback) \
93 _(dpdk_interface_tx_vector) \
97 _(post_sw_interface_set_flags) \
98 _(dpdk_get_admin_up_down_in_progress) \
101 #define foreach_dpdk_plugin_reference
104 #define _(a) void a (void);
105 foreach_plugin_reference
106 foreach_dpdk_plugin_reference
109 void *vnet_library_plugin_references[] =
112 foreach_plugin_reference
113 foreach_dpdk_plugin_reference
117 void vnet_library_plugin_reference(void) { }