Hybrid ICN (hICN) plugin  v21.06-rc0-4-g18fa668
infra.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2020 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 #ifndef __HICN_INFRA_H__
17 #define __HICN_INFRA_H__
18 
19 #include <vlib/vlib.h>
20 #include <vnet/vnet.h>
21 #include <vnet/interface.h>
22 
23 #include "pcs.h"
24 
33 typedef struct hicn_main_s
34 {
35  /* Binary API message ID base */
36  u16 msg_id_base;
37 
38  /* Have we been enabled */
39  u16 is_enabled;
40 
41  /* Forwarder PIT/CS */
42  hicn_pit_cs_t pitcs;
43 
44  /* Global PIT lifetime info */
45  /*
46  * Boundaries for the interest lifetime. If greater than
47  * pit_lifetime_max_ms, pit_lifetime_max_ms is used in the PIT
48  */
49  u64 pit_lifetime_max_ms;
50 
51  vnet_link_t link;
52 
53 } hicn_main_t;
54 
55 extern hicn_main_t hicn_main;
56 
57 extern int hicn_infra_fwdr_initialized;
58 
59 /* PIT and CS size */
60 u32 hicn_infra_pit_size;
61 u32 hicn_infra_cs_size;
62 
75 int hicn_infra_plugin_enable_disable (int enable_disable, int pit_max_size,
76  f64 pit_max_lifetime_sec_req,
77  int cs_max_size, vnet_link_t link);
78 
79 /* vlib nodes that compose the hICN forwarder */
80 extern vlib_node_registration_t hicn_interest_pcslookup_node;
81 extern vlib_node_registration_t hicn_data_pcslookup_node;
82 extern vlib_node_registration_t hicn_data_fwd_node;
83 extern vlib_node_registration_t hicn_data_store_node;
84 extern vlib_node_registration_t hicn_interest_hitpit_node;
85 extern vlib_node_registration_t hicn_interest_hitcs_node;
86 extern vlib_node_registration_t hicn_pg_interest_node;
87 extern vlib_node_registration_t hicn_pg_data_node;
88 extern vlib_node_registration_t hicn_pg_server_node;
89 extern vlib_node_registration_t hicn_data_input_ip6_node;
90 extern vlib_node_registration_t hicn_data_input_ip4_node;
91 
92 #endif /* // __HICN_INFRA_H__ */
93 
94 /*
95  * fd.io coding-style-patch-verification: ON
96  *
97  * Local Variables: eval: (c-set-style "gnu") End:
98  */
hicn_main_t
struct hicn_main_s hicn_main_t
hICN plugin global state.
hicn_pit_cs_s
Definition: pcs.h:143
hicn_infra_plugin_enable_disable
int hicn_infra_plugin_enable_disable(int enable_disable, int pit_max_size, f64 pit_max_lifetime_sec_req, int cs_max_size, vnet_link_t link)
Enable and disable the hicn plugin.
hicn_main_s
hICN plugin global state.
Definition: infra.h:33
pcs.h