add a helper to convert blobmsg types to luci validate rules
authorJohn Crispin <blogic@openwrt.org>
Mon, 17 Feb 2014 12:12:21 +0000 (12:12 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 17 Feb 2014 14:10:11 +0000 (15:10 +0100)
Signed-off-by: John Crispin <blogic@openwrt.org>
utils.c
utils.h

diff --git a/utils.c b/utils.c
index d202505397f330ea999d6583ef75285f6ffb1f45..aa4132be103b2a2191dbebcbcfb323cb85d4019d 100644 (file)
--- 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 b0a7d02a7c1c71c5e6c26fb5f8be63af2a395448..7973b6fb3e3920b3598e02b94c9cf836ca2b391e 100644 (file)
--- 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