diff options
Diffstat (limited to 'ctrl/libhicnctrl/includes/hicn/ctrl/api.h')
-rw-r--r-- | ctrl/libhicnctrl/includes/hicn/ctrl/api.h | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/ctrl/libhicnctrl/includes/hicn/ctrl/api.h b/ctrl/libhicnctrl/includes/hicn/ctrl/api.h index c3fb62534..ef52f8988 100644 --- a/ctrl/libhicnctrl/includes/hicn/ctrl/api.h +++ b/ctrl/libhicnctrl/includes/hicn/ctrl/api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: @@ -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 */ @@ -598,11 +631,13 @@ int hc_face_snprintf(char *s, size_t size, hc_face_t *face); *----------------------------------------------------------------------------*/ typedef struct { + // TODO: Allow also symbolic name face_id_t face_id; /* Kr. */ int family; /* Krw */ ip_address_t remote_addr; /* krw */ u8 len; /* krw */ u16 cost; /* .rw */ + // XXX hc_face_t face; } hc_route_t; int hc_route_parse(void *in, hc_route_t *route); @@ -710,7 +745,7 @@ typedef struct { int family; /* Krw */ ip_address_t remote_addr; /* krw */ u8 len; /* krw */ - policy_t policy; /* .rw */ + hicn_policy_t policy; /* .rw */ } hc_policy_t; int hc_policy_parse(void *in, hc_policy_t *policy); @@ -729,4 +764,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 */ |