diff options
author | Jordan Augé <jordan.auge+fdio@cisco.com> | 2020-09-23 17:50:52 +0200 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2021-03-19 14:15:14 +0100 |
commit | a070b0de9f9e9cbca150eea4eda74757ca588bed (patch) | |
tree | 9f2a11fa1afcd51b0b14f4b26bebf4deb8289a2f /ctrl/libhicnctrl/includes/hicn/ctrl/api.h | |
parent | 32dccec98e4c7d7e4ce902e19ba8d1b29b823758 (diff) |
[HICN-645] Control plane (WIP)
Change-Id: I4be6a40b690b62f22f57de6d8c10b01a1be42a6d
Signed-off-by: Jordan Augé <jordan.auge+fdio@cisco.com>
Signed-off-by: Enrico Loparco (eloparco) <eloparco@cisco.com>
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'ctrl/libhicnctrl/includes/hicn/ctrl/api.h')
-rw-r--r-- | ctrl/libhicnctrl/includes/hicn/ctrl/api.h | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/ctrl/libhicnctrl/includes/hicn/ctrl/api.h b/ctrl/libhicnctrl/includes/hicn/ctrl/api.h index c3fb62534..3771b3abd 100644 --- a/ctrl/libhicnctrl/includes/hicn/ctrl/api.h +++ b/ctrl/libhicnctrl/includes/hicn/ctrl/api.h @@ -89,7 +89,9 @@ * Message helper types and aliases ******************************************************************************/ -#define foreach_command \ +/* Action */ + +#define foreach_action \ _(UNDEFINED) \ _(CREATE) \ _(UPDATE) \ @@ -100,10 +102,41 @@ typedef enum { #define _(x) ACTION_##x, - foreach_command + foreach_action #undef _ } hc_action_t; +extern const char * action_str[]; + +#define action_str(x) action_str[x] + +hc_action_t action_from_str(const char * action_str); + +/* Object type */ + +#define foreach_object \ + _(UNDEFINED) \ + _(CONNECTION) \ + _(LISTENER) \ + _(ROUTE) \ + _(FACE) \ + _(STRATEGY) \ + _(PUNTING) \ + _(POLICY) \ + _(N) + +typedef enum { +#define _(x) OBJECT_ ## x, +foreach_object +#undef _ +} hc_object_type_t; + +extern const char * object_str[]; + +#define object_str(x) object_str[x] + +hc_object_type_t object_from_str(const char * object_str); + /** * \brief hICN control message header */ @@ -729,4 +762,25 @@ int hc_policy_snprintf(char *s, size_t size, hc_policy_t *policy); #endif /* WITH_POLICY */ +/* Object */ + +typedef struct { + hc_object_type_t type; + union { + hc_connection_t connection; + hc_listener_t listener; + hc_route_t route; + hc_face_t face; + hc_punting_t punting; + hc_strategy_t strategy; + hc_policy_t policy; + uint8_t as_uint8; + }; +} hc_object_t; + +typedef struct { + hc_action_t action; + hc_object_t object; +} hc_command_t; + #endif /* HICNTRL_API */ |