]> pilppa.org Git - uci.git/blobdiff - ucimap-example.c
ucimap: cleanup OPTMAP_OPTION macro, rename to UCIMAP_OPTION
[uci.git] / ucimap-example.c
index 517a8a25ecf2a28befbb4aee5c4ddf405156a05f..1c0ed388ac130221dca125a35c7106b085168dfa 100644 (file)
@@ -29,7 +29,7 @@ struct uci_network {
        const char *ipaddr;
        int test;
        bool enabled;
-       struct list_head aliases;
+       struct ucimap_list *aliases;
 };
 
 struct uci_alias {
@@ -86,12 +86,37 @@ static struct uci_sectmap network_interface;
 static struct uci_sectmap network_alias;
 
 static struct uci_optmap network_interface_options[] = {
-       OPTMAP_OPTION(UCIMAP_STRING, struct uci_network, proto, .data.s.maxlen = 32),
-       OPTMAP_OPTION(UCIMAP_STRING, struct uci_network, ifname),
-       OPTMAP_OPTION(UCIMAP_STRING, struct uci_network, ipaddr),
-       OPTMAP_OPTION(UCIMAP_BOOL, struct uci_network, enabled),
-       OPTMAP_OPTION(UCIMAP_INT, struct uci_network, test),
-       OPTMAP_OPTION(UCIMAP_LIST | UCIMAP_SECTION, struct uci_network, aliases, .data.sm = &network_alias),
+       {
+               UCIMAP_OPTION(struct uci_network, proto),
+               .type = UCIMAP_STRING,
+               .name = "proto",
+               .data.s.maxlen = 32,
+       },
+       {
+               UCIMAP_OPTION(struct uci_network, ifname),
+               .type = UCIMAP_STRING,
+               .name = "ifname"
+       },
+       {
+               UCIMAP_OPTION(struct uci_network, ipaddr),
+               .type = UCIMAP_STRING,
+               .name = "ipaddr",
+       },
+       {
+               UCIMAP_OPTION(struct uci_network, enabled),
+               .type = UCIMAP_BOOL,
+               .name = "enabled",
+       },
+       {
+               UCIMAP_OPTION(struct uci_network, test),
+               .type = UCIMAP_INT,
+               .name = "test"
+       },
+       {
+               UCIMAP_OPTION(struct uci_network, aliases),
+               .type = UCIMAP_LIST | UCIMAP_SECTION,
+               .data.sm = &network_alias
+       }
 };
 
 static struct uci_sectmap network_interface = {
@@ -104,7 +129,11 @@ static struct uci_sectmap network_interface = {
 };
 
 static struct uci_optmap network_alias_options[] = {
-       OPTMAP_OPTION(UCIMAP_SECTION, struct uci_alias, interface, .data.sm = &network_interface),
+       {
+               UCIMAP_OPTION(struct uci_alias, interface),
+               .type = UCIMAP_SECTION,
+               .data.sm = &network_interface
+       }
 };
 
 static struct uci_sectmap network_alias = {
@@ -134,6 +163,7 @@ int main(int argc, char **argv)
        struct list_head *p, *p2;
        struct uci_network *net;
        struct uci_alias *alias;
+       int i;
 
        INIT_LIST_HEAD(&ifs);
        ctx = uci_alloc_context();
@@ -158,9 +188,8 @@ int main(int argc, char **argv)
                        net->test,
                        (net->enabled ? "on" : "off"));
 
-               list_for_each(p2, &net->aliases) {
-                       struct uci_listmap *li = list_entry(p2, struct uci_listmap, list);
-                       alias = li->data.section;
+               for (i = 0; i < net->aliases->n_items; i++) {
+                       alias = net->aliases->item[i].section;
                        printf("New alias: %s\n", alias->name);
                }
 #if 0