proto: move the dns search option handling to the core
[project/netifd.git] / config.h
index 6403e1f..879b1de 100644 (file)
--- a/config.h
+++ b/config.h
@@ -3,6 +3,8 @@
 
 #include <libubox/blobmsg.h>
 
+extern bool config_init;
+
 enum config_param_type {
        CONFIG_PARAM_TYPE_SIMPLE,
        CONFIG_PARAM_TYPE_LIST,
@@ -15,10 +17,34 @@ union config_param_info {
 };
 
 struct config_param_list {
-       const struct config_param_list *next;
-       int n_params;
+       int n_params, n_next;
+
        const struct blobmsg_policy *params;
        const union config_param_info *info;
+
+       const struct config_param_list *next[];
 };
 
+#ifndef BITS_PER_LONG
+#define BITS_PER_LONG (8 * sizeof(unsigned long))
+#endif
+
+static inline void set_bit(unsigned long *bits, int bit)
+{
+       bits[bit / BITS_PER_LONG] |= (1UL << (bit % BITS_PER_LONG));
+}
+
+static inline bool test_bit(unsigned long *bits, int bit)
+{
+       return !!(bits[bit / BITS_PER_LONG] & (1UL << (bit % BITS_PER_LONG)));
+}
+
+void config_init_all(void);
+bool config_check_equal(struct blob_attr *c1, struct blob_attr *c2,
+                       const struct config_param_list *config);
+bool config_diff(struct blob_attr **tb1, struct blob_attr **tb2,
+                const struct config_param_list *config, unsigned long *diff);
+
+struct blob_attr *config_memdup(struct blob_attr *attr);
+
 #endif