aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-plugin/src/strategy_dpo_manager.h
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2020-03-24 17:34:14 +0000
committerMauro Sardara <msardara@cisco.com>2020-09-14 17:31:15 +0000
commit88509fe353767cbde707c3e3b1f29392957819f3 (patch)
treecccd51bac7966cd3138c525e8075d90341184a66 /hicn-plugin/src/strategy_dpo_manager.h
parentd875ae92a7fa1eaab3bc2616aeeedfc64a81fea4 (diff)
[HICN-574] Host stack plugin for VPP.
Signed-off-by: Mauro Sardara <msardara@cisco.com> Change-Id: I8d8fdffef31a7013265d6529c5f52f3d5ec70d18 Signed-off-by: Mauro Sardara <msardara@cisco.com> Signed-off-by: Mauro <you@example.com> Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'hicn-plugin/src/strategy_dpo_manager.h')
-rw-r--r--hicn-plugin/src/strategy_dpo_manager.h193
1 files changed, 0 insertions, 193 deletions
diff --git a/hicn-plugin/src/strategy_dpo_manager.h b/hicn-plugin/src/strategy_dpo_manager.h
deleted file mode 100644
index e96e050d9..000000000
--- a/hicn-plugin/src/strategy_dpo_manager.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2017-2020 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.
- */
-
-#ifndef __HICN_STRATEGY_DPO_MANAGER_H__
-#define __HICN_STRATEGY_DPO_MANAGER_H__
-
-#include "strategy_dpo_ctx.h"
-#include "strategy.h"
-
-/**
- * @file strategy_dpo_manager.h
- *
- * This file implements structs and helper functions to manipulate hICN dpo.
- * An hICN DPO is a combination of:
- * - a hICN DPO ctx (context) that holds the structure containing the
- * information to choose the next hop,
- * - a dpo vft that specify how to update the hICN DPO ctx when a next hop is
- * added, deleted or updated,
- * - a strategy containing (see strategy.h): (i) the vpp node that processes Interest packets
- * subjected to such strategy, (ii) the definition of the vft that defines
- * the hICN strategy functions
- * An hICN DPO is places as the sole next hop in the vpp loadbalancer, and it containes
- * a list of next hops that will be used by the associated strategy when forwarding
- * interest packets.
- */
-
-/**
- * @brief Definition of the virtual function table for a hICN DPO.
- *
- * The following virtual function table
- * template that glues together the fuction to interact with the context and the
- * creating the dpo
- */
-typedef struct hicn_dpo_vft_s
-{
- int (*hicn_dpo_is_type) (const dpo_id_t * dpo);
- /**< Check if the type of the
- hICN DPO is the expected */
- dpo_type_t (*hicn_dpo_get_type) (void);
- /**< Return the type of the hICN dpo */
- void (*hicn_dpo_module_init) (void); /**< Initialize the hICN dpo */
- void (*hicn_dpo_create) (fib_protocol_t proto, const hicn_face_id_t * nh, int nh_len, index_t * dpo_idx); /**< Create the context of the hICN dpo */
- int (*hicn_dpo_add_update_nh) (hicn_face_id_t nh, index_t dpo_idx); /**< Add a next hop to the hICN dpo context */
- int (*hicn_dpo_del_nh) (hicn_face_id_t face_id, index_t dpo_idx);
- u8 *(*hicn_dpo_format) (u8 * s, int, ...);
- /**< Format an hICN dpo*/
-} hicn_dpo_vft_t;
-
-/*
- * Default dpo to be used to create fib entry when a strategy is not
- * specified
- */
-extern hicn_dpo_vft_t default_dpo;
-
-/**
- * @brief Register a new hICN dpo to the manager.
- *
- * Registering a hICN DPO allows the plugin to be aware of the new dpo an be
- * able to apply it to the FIB entries.
- *
- * @param hicn_nodes A list of vpp to which pass an interest that matches with
- * the FIB entry to which the hICN DPO is applied. This list must contain the
- * name of the strategy node (or nodes in case of differentiation between IPv4
- * and IPv6). Unless really needed otherwise (i.e., different implementation of
- * iface input), the list of node to use should be one provided in the strategy.h
- * (hicn_nodes_strategy)
- * @param hicn_dpo_vft The structure holding the virtual function table to
- * interact with the hICN dpo and its context.
- * @param hicn_strategy_vft The structure holding the virtual function table
- * containing the hICN strategy functions.
- * @return the dpo type registered in the VPP Data plane graph.
- */
-dpo_type_t
-hicn_dpo_register_new_type (const char *const *const *hicn_nodes,
- const hicn_dpo_vft_t * hicn_dpo_vft,
- const hicn_strategy_vft_t *
- hicn_strategy_vft, const dpo_vft_t * dpo_ctx_vft);
-
-/**
- * @brief Check if the type of the dpo is among the list of hicn dpo types
- *
- * Iterate through the list of dpo types registered in the hicn dpo manager.
- *
- * @param dpo The id of the dpo to which check the type
- * @return 1 if there is a match, 0 otherwise.
- */
-u32 dpo_is_hicn (const dpo_id_t * dpo);
-
-/**
- * @brief Return the dpo_vtf and strategy_vtf identifier
- *
- * Iterate through the list of dpo types registered in the hicn dpo manager and
- * retrieve the corresponding dpo_vtf/strategy_vtf identifier.
- *
- * @param dpo The id of the dpo to which check the type
- * @return the dpo_vft/strategy_vft id or HICN_ERROR_DPO_NOT_FOUND in case the dpo is not an hICN dpo.
- */
-u8 hicn_dpo_get_vft_id (const dpo_id_t * dpo);
-
-/**
- * @brief Get the vft to manage the dpo context.
- *
- * @param The id of the hicn_dpo_vft to retrieve.
- * @return The vft struct that contains the list of callbacks that allows to
- * manage the dpo context.
- */
-const hicn_dpo_vft_t *hicn_dpo_get_vft (dpo_type_t vfts_id);
-
-/**
- * @brief Get the vft to manage the dpo context from the strategy id.
- *
- * @param The strategy id of the hicn_dpo_vft to retrieve.
- * @return The vft struct that contains the list of callbacks that allows to
- * manage the dpo context.
- */
-const hicn_dpo_vft_t *hicn_dpo_get_vft_from_id (u8 strategy_id);
-
-/**
- * @brief Get the vft with the hICN strategy functions.
- *
- * @param The id of the hicn_strategy_vft to retrieve.
- * @return The vft struct that contains the list hICN strategy functions.
- */
-const hicn_strategy_vft_t *hicn_dpo_get_strategy_vft (dpo_type_t vfts_id);
-
-/**
- * @brief Get the vft with the hICN strategy functions from the strategy id.
- *
- * @param The id of the hicn_strategy_vft to retrieve.
- * @return The vft struct that contains the list hICN strategy functions.
- */
-const hicn_strategy_vft_t *hicn_dpo_get_strategy_vft_from_id (u8 vfts_id);
-
-/**
- * @brief Initialize all the types hicn dpo registered
- *
- * Call the init functions of all the hicn dpo implemented.
- * This init is called when the plugin bootstrap.
- */
-void hicn_dpos_init (void);
-
-/**
- * @brief Print the list of the registered hICN DPO
- *
- * @param s String to which to append the list of hICN DPO (strategies)
- * @param n number of parameters to pass
- *
- * @result The string with the list of hICN DPO (strategies)
- */
-u8 *format_hicn_strategy_list (u8 * s, int n, ...);
-
-/**
- * @brief Check if a given id points to a strategy and the corresponding dpo ctx
- *
- * @param The id of the strategy to check.
- *
- * @result HICN_ERROR_NONE is the id is valid, otherwise EINVAL
- */
-u8 hicn_dpo_strategy_id_is_valid (int strategy_id);
-
-/**
- * @brief Return the number of available strategies. This number can be used to
- * as an upperbond for valid vfts_id.
- *
- * @result Return the number of available strategies.
- */
-int hicn_strategy_get_all_available (void);
-
-/**
- * @brief Registers a module at compilation time to be initialized as part of
- * the ctor.
- */
-void hicn_dpo_register (const hicn_dpo_vft_t * hicn_dpo);
-
-#endif /* // __HICN_STRATEGY_DPO_MANAGER_H__ */
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables: eval: (c-set-style "gnu") End:
- */