add support for multiple config_param_list::next pointers
authorFelix Fietkau <nbd@openwrt.org>
Fri, 29 Jul 2011 17:39:51 +0000 (19:39 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 29 Jul 2011 17:42:36 +0000 (19:42 +0200)
config.c
config.h

index 64ca98312fec49299cc2604834132d0085d44a44..1e465c5be0702f8d601d44c85c7747a056069124 100644 (file)
--- a/config.c
+++ b/config.c
@@ -69,8 +69,8 @@ static void uci_array_to_blob(struct blob_buf *b, struct uci_option *o,
        free(str);
 }
 
-static void uci_to_blob(struct blob_buf *b, struct uci_section *s,
-                       const struct config_param_list *p)
+static void __uci_to_blob(struct blob_buf *b, struct uci_section *s,
+                         const struct config_param_list *p)
 {
        const struct blobmsg_policy *attr;
        struct uci_element *e;
@@ -107,6 +107,16 @@ static void uci_to_blob(struct blob_buf *b, struct uci_section *s,
        }
 }
 
+static void uci_to_blob(struct blob_buf *b, struct uci_section *s,
+                       const struct config_param_list *p)
+{
+       int i;
+
+       __uci_to_blob(b, s, p);
+       for (i = 0; i < p->n_next; i++)
+               uci_to_blob(b, s, p->next[i]);
+}
+
 static void
 config_parse_interface(struct uci_section *s)
 {
index 6403e1f47241b47bceff69fc7f8fef486de92a33..83d7c254196c1e890359d06494ebf65d71693345 100644 (file)
--- a/config.h
+++ b/config.h
@@ -15,10 +15,12 @@ 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[];
 };
 
 #endif