aboutsummaryrefslogtreecommitdiffstats
path: root/ctrl/libhicnctrl/includes/hicn/ctrl
diff options
context:
space:
mode:
Diffstat (limited to 'ctrl/libhicnctrl/includes/hicn/ctrl')
-rw-r--r--ctrl/libhicnctrl/includes/hicn/ctrl/api.h58
-rw-r--r--ctrl/libhicnctrl/includes/hicn/ctrl/cli.h31
2 files changed, 87 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 */
diff --git a/ctrl/libhicnctrl/includes/hicn/ctrl/cli.h b/ctrl/libhicnctrl/includes/hicn/ctrl/cli.h
new file mode 100644
index 000000000..ce1ee7c74
--- /dev/null
+++ b/ctrl/libhicnctrl/includes/hicn/ctrl/cli.h
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+/**
+ * @file cli.h
+ * @brief Command line helpers
+ */
+
+#ifndef HICNCTRL_CLI
+#define HICNCTRL_CLI
+
+#include "api.h"
+
+#define MAXSZ_OBJECT 255 // XXX
+
+int hc_object_type_snprintf(char * buf, size_t size, hc_object_type_t type, uint8_t * data);
+int hc_object_snprintf(char * buf, size_t size, hc_object_t * object);
+
+#endif /* HICNCTRL_CLI */