aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/plugin/p1.c
blob: 6ede7938ee9576e9d4d5aaf6554382dad3930663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
 * Copyright (c) 2015 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* 
 * This file and in fact the entire directory shouldn't even exist.
 * Vnet ought to be a dynamic library. 

 * Unfortunately, various things malfunction when we try to go there. 
 * Plugin DLL's end up with their own copies of critical
 * data structures. No one of these problems would be tough to fix, 
 * but there are quite a number of them.
 */

/* 
 * Make certain that plugin .dll's which reference the following functions
 * can find them...
 */

#define foreach_plugin_reference                \
_(unformat_vnet_hw_interface)                   \
_(unformat_vnet_sw_interface)                   \
_(vnet_hw_interface_rx_redirect_to_node)        \
_(vnet_config_add_feature)                      \
_(vnet_config_del_feature)                      \
_(vnet_get_main)                                \
_(_vlib_init_function_l2_init)                  \
_(_vlib_init_function_pg_init)                  \
_(_vlib_init_function_ip_main_init)             \
_(_vlib_init_function_ethernet_init)            \
_(_vlib_init_function_ethernet_arp_init)        \
_(l2input_intf_bitmap_enable)                   \
_(ip4_main)                                     \
_(ip6_main)                                     \
_(format_ip4_address)                           \
_(unformat_ip4_address)                         \
_(ip4_address_compare)                          \
_(ip6_address_compare)                          \
_(format_ip6_address)                           \
_(format_ip6_address_and_length)                \
_(udp_register_dst_port)                        \
_(ethernet_register_input_type)                 \
_(ethernet_set_flags)				\
_(vnet_register_sr_app_callback)		\
_(format_ip6_sr_header)                         \
_(format_ip6_address)                           \
_(unformat_ip6_address)                         \
_(ip6_main)					\
_(find_ip6_fib_by_table_index_or_id)		\
_(format_ethernet_address)			\
_(unformat_ethernet_address)			\
_(unformat_ethernet_interface)			\
_(ethernet_register_l2_input)			\
_(ethernet_register_l3_redirect)                \
_(unformat_pg_payload)				\
_(format_ip4_address_and_length)		\
_(ip_incremental_checksum)                      \
_(ethernet_sw_interface_set_l2_mode)            \
_(vnet_create_loopback_interface)               \
_(ethernet_set_rx_redirect)                     \
_(ethernet_set_flags)                           \
_(ethernet_get_main)                            \
_(ethernet_get_interface)                       \
_(vnet_hw_interface_set_flags)                  \
_(vnet_sw_interface_set_flags)                  \
_(vnet_create_sw_interface)                     \
_(vnet_delete_sw_interface)                     \
_(vnet_get_main)                                \
_(pg_stream_add)                                \
_(pg_stream_del)                                \
_(pg_stream_enable_disable)                     \
_(pg_main) 

#if DPDK > 0
#define foreach_dpdk_plugin_reference		\
_(dpdk_set_next_node)                           \
_(dpdk_worker_thread)                           \
_(dpdk_io_thread)                               \
_(dpdk_frame_queue_dequeue)                     \
_(vlib_get_handoff_queue_elt)                   \
_(dpdk_get_handoff_node_index)                  \
_(dpdk_set_flowcontrol_callback)                \
_(dpdk_interface_tx_vector)                     \
_(rte_calloc)                                   \
_(rte_free)                                     \
_(rte_malloc)                                   \
_(post_sw_interface_set_flags)                  \
_(dpdk_get_admin_up_down_in_progress)           \
_(efd_config)
#else
#define foreach_dpdk_plugin_reference
#endif

#define _(a) void a (void);
foreach_plugin_reference
foreach_dpdk_plugin_reference
#undef _

void *vnet_library_plugin_references[] =
  {
#define _(a) &a,
    foreach_plugin_reference
    foreach_dpdk_plugin_reference
#undef _
  };

void vnet_library_plugin_reference(void) { }