aboutsummaryrefslogtreecommitdiffstats
path: root/lib/src/policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/policy.c')
-rw-r--r--lib/src/policy.c70
1 files changed, 41 insertions, 29 deletions
diff --git a/lib/src/policy.c b/lib/src/policy.c
index 694f0ea5e..4a4b9fa89 100644
--- a/lib/src/policy.c
+++ b/lib/src/policy.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 Cisco and/or its affiliates.
+ * Copyright (c) 2021 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:
@@ -21,41 +21,53 @@
#include <stdio.h>
#include <hicn/policy.h>
-const char * policy_tag_str[] = {
- #define _(x, y) [POLICY_TAG_ ## x] = STRINGIZE(x),
- foreach_policy_tag
- #undef _
+const char *policy_tag_str[] = {
+#define _(x, y) [POLICY_TAG_##x] = STRINGIZE (x),
+ foreach_policy_tag
+#undef _
};
const char policy_tag_short_str[] = {
- #define _(x, y) [POLICY_TAG_ ## x] = y,
- foreach_policy_tag
- #undef _
+#define _(x, y) [POLICY_TAG_##x] = y,
+ foreach_policy_tag
+#undef _
};
-const char * policy_state_str[] = {
- #define _(x) [POLICY_STATE_ ## x] = STRINGIZE(x),
- foreach_policy_state
- #undef _
+const char *policy_state_str[] = {
+#define _(x) [POLICY_STATE_##x] = STRINGIZE (x),
+ foreach_policy_state
+#undef _
};
+policy_state_t
+policy_state_from_str (const char *str)
+{
+#define _(x) \
+ if (strcasecmp (str, #x) == 0) \
+ return POLICY_STATE_##x; \
+ else
+ foreach_policy_state
+#undef _
+ return POLICY_STATE_N;
+}
+
int
-policy_tag_state_snprintf(char * s, size_t size, const policy_tag_state_t * tag_state)
+policy_tag_state_snprintf (char *s, size_t size,
+ const policy_tag_state_t *tag_state)
{
- char *cur = s;
- int rc;
-
- if (tag_state->disabled > 1)
- return -1;
-
- rc = snprintf(cur, s + size - cur, "%s%s", (tag_state->disabled == 1) ? "!" : "", policy_state_str[tag_state->state]);
- if (rc >= (int)(s + size - cur))
- return (int)(s + size - cur);
- if (rc < 0)
- return rc;
- cur += rc;
- if (size != 0 && cur >= s + size)
- return (int)(cur - s);
-
- return (int)(cur - s);
+ char *cur = s;
+ int rc;
+
+ if (tag_state->disabled > 1)
+ return -1;
+
+ rc = snprintf (cur, s + size - cur, "%s%s",
+ (tag_state->disabled == 1) ? "!" : "",
+ policy_state_str[tag_state->state]);
+ if (rc >= (int) (s + size - cur))
+ return (int) (s + size - cur);
+ if (rc < 0)
+ return rc;
+ cur += rc;
+ return (int) (cur - s);
}