summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2014-02-17 12:12:21 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-02-17 15:10:11 +0100
commit8663e9de716248bf72832aee70090f574b3ff5d2 (patch)
tree5748f5a4741d5922c3e8eeca4824f91c0540cc79
parente3dc49a34fdd0dd900271cdfe6bb1c05babe5ee6 (diff)
downloadnetifd-8663e9de716248bf72832aee70090f574b3ff5d2.tar.gz
add a helper to convert blobmsg types to luci validate rules
Signed-off-by: John Crispin <blogic@openwrt.org>
-rw-r--r--utils.c19
-rw-r--r--utils.h3
2 files changed, 22 insertions, 0 deletions
diff --git a/utils.c b/utils.c
index d202505..aa4132b 100644
--- a/utils.c
+++ b/utils.c
@@ -195,3 +195,22 @@ bool check_pid_path(int pid, const char *exe)
return !memcmp(exe, proc_exe_buf, exe_len);
}
+
+static const char * const uci_validate_name[__BLOBMSG_TYPE_LAST] = {
+ [BLOBMSG_TYPE_STRING] = "string",
+ [BLOBMSG_TYPE_ARRAY] = "list(string)",
+ [BLOBMSG_TYPE_INT32] = "uinteger",
+ [BLOBMSG_TYPE_BOOL] = "bool",
+};
+
+const char*
+uci_get_validate_string(const struct uci_blob_param_list *p, int i)
+{
+ if (p->validate[i])
+ return p->validate[i];
+
+ else if (uci_validate_name[p->params[i].type])
+ return uci_validate_name[p->params[i].type];
+
+ return p->validate[BLOBMSG_TYPE_STRING];
+}
diff --git a/utils.h b/utils.h
index b0a7d02..7973b6f 100644
--- a/utils.h
+++ b/utils.h
@@ -16,6 +16,7 @@
#include <unistd.h>
#include <stdio.h>
+#include <uci_blob.h>
#include <libubox/list.h>
#include <libubox/avl.h>
#include <libubox/avl-cmp.h>
@@ -114,6 +115,8 @@ char * format_macaddr(uint8_t *mac);
uint32_t crc32_file(FILE *fp);
+const char * uci_get_validate_string(const struct uci_blob_param_list *c, int i);
+
#ifdef __APPLE__
#define s6_addr32 __u6_addr.__u6_addr32
#endif