summaryrefslogtreecommitdiffstats
path: root/ctrl/libhicnctrl/src
diff options
context:
space:
mode:
Diffstat (limited to 'ctrl/libhicnctrl/src')
-rw-r--r--ctrl/libhicnctrl/src/api.c7
-rw-r--r--ctrl/libhicnctrl/src/api_private.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/ctrl/libhicnctrl/src/api.c b/ctrl/libhicnctrl/src/api.c
index 4156ceff9..472e07bc4 100644
--- a/ctrl/libhicnctrl/src/api.c
+++ b/ctrl/libhicnctrl/src/api.c
@@ -689,7 +689,12 @@ int hc_route_validate(const hc_route_t *route) {
ERROR("[hc_route_validate] Invalid connection id");
return -1;
}
- if (!IS_VALID_NAME(route->name) && !IS_VALID_STR_ID(route->name)) {
+ if (route->name[0] == '\0') {
+ if (!IS_VALID_FACE_ID(route->face_id)) {
+ ERROR("[hc_route_validate] Invalid face_id");
+ return -1;
+ }
+ } else if (!IS_VALID_NAME(route->name) && !IS_VALID_STR_ID(route->name)) {
ERROR("[hc_route_validate] Invalid name specified");
return -1;
}
diff --git a/ctrl/libhicnctrl/src/api_private.h b/ctrl/libhicnctrl/src/api_private.h
index 11cb2e00e..65b175810 100644
--- a/ctrl/libhicnctrl/src/api_private.h
+++ b/ctrl/libhicnctrl/src/api_private.h
@@ -73,6 +73,7 @@ static inline bool IS_VALID_STR_ID(const char *name) {
#define IS_VALID_TYPE(x) IS_VALID_ENUM_TYPE(FACE_TYPE, x)
#define IS_VALID_ADDR_TYPE(x) ((x >= ADDR_INET) && (x <= ADDR_UNIX))
+#define IS_VALID_FACE_ID(x) ((x) != INVALID_FACE_ID)
#define IS_VALID_ID(x) (1)
#define IS_VALID_POLICY(x) (1)