Initial commit of vpp code.
[vpp.git] / vnet / vnet / plugin / p1.c
1 /*
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:
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
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.
14  */
15 /* 
16  * This file and in fact the entire directory shouldn't even exist.
17  * Vnet ought to be a dynamic library. 
18
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.
23  */
24
25 /* 
26  * Make certain that plugin .dll's which reference the following functions
27  * can find them...
28  */
29
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)                      \
36 _(vnet_get_main)                                \
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)                   \
43 _(ip4_main)                                     \
44 _(ip6_main)                                     \
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)                         \
58 _(ip6_main)                                     \
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)                     \
78 _(vnet_get_main)                                \
79 _(pg_stream_add)                                \
80 _(pg_stream_del)                                \
81 _(pg_stream_enable_disable)                     \
82 _(pg_main) 
83
84 #if DPDK > 0
85 #define foreach_dpdk_plugin_reference           \
86 _(dpdk_set_next_node)                           \
87 _(dpdk_worker_thread)                           \
88 _(dpdk_io_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)                     \
94 _(rte_calloc)                                   \
95 _(rte_free)                                     \
96 _(rte_malloc)                                   \
97 _(post_sw_interface_set_flags)                  \
98 _(dpdk_get_admin_up_down_in_progress)           \
99 _(efd_config)
100 #else
101 #define foreach_dpdk_plugin_reference
102 #endif
103
104 #define _(a) void a (void);
105 foreach_plugin_reference
106 foreach_dpdk_plugin_reference
107 #undef _
108
109 void *vnet_library_plugin_references[] =
110   {
111 #define _(a) &a,
112     foreach_plugin_reference
113     foreach_dpdk_plugin_reference
114 #undef _
115   };
116
117 void vnet_library_plugin_reference(void) { }