const char *ipaddr;
int test;
bool enabled;
- struct list_head aliases;
+ struct ucimap_list *aliases;
};
struct uci_alias {
return 0;
}
-struct uci_sectmap network_interface;
-struct uci_sectmap network_alias;
+struct my_optmap {
+ struct uci_optmap map;
+ int test;
+};
+
+static struct uci_sectmap network_interface;
+static struct uci_sectmap network_alias;
-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),
+static struct my_optmap network_interface_options[] = {
+ {
+ .map = {
+ UCIMAP_OPTION(struct uci_network, proto),
+ .type = UCIMAP_STRING,
+ .name = "proto",
+ .data.s.maxlen = 32,
+ }
+ },
+ {
+ .map = {
+ UCIMAP_OPTION(struct uci_network, ifname),
+ .type = UCIMAP_STRING,
+ .name = "ifname"
+ }
+ },
+ {
+ .map = {
+ UCIMAP_OPTION(struct uci_network, ipaddr),
+ .type = UCIMAP_STRING,
+ .name = "ipaddr",
+ }
+ },
+ {
+ .map = {
+ UCIMAP_OPTION(struct uci_network, enabled),
+ .type = UCIMAP_BOOL,
+ .name = "enabled",
+ }
+ },
+ {
+ .map = {
+ UCIMAP_OPTION(struct uci_network, test),
+ .type = UCIMAP_INT,
+ .name = "test"
+ }
+ },
+ {
+ .map = {
+ UCIMAP_OPTION(struct uci_network, aliases),
+ .type = UCIMAP_LIST | UCIMAP_SECTION,
+ .data.sm = &network_alias
+ }
+ }
};
-struct uci_sectmap network_interface = {
+static struct uci_sectmap network_interface = {
.type = "interface",
- .options = network_interface_options,
.alloc_len = sizeof(struct uci_network),
.init_section = network_init_interface,
.add_section = network_add_interface,
+ .options = &network_interface_options[0].map,
.n_options = ARRAY_SIZE(network_interface_options),
+ .options_size = sizeof(struct my_optmap)
};
-struct uci_optmap network_alias_options[] = {
- OPTMAP_OPTION(UCIMAP_SECTION, struct uci_alias, interface, .data.sm = &network_interface),
+static struct uci_optmap network_alias_options[] = {
+ {
+ UCIMAP_OPTION(struct uci_alias, interface),
+ .type = UCIMAP_SECTION,
+ .data.sm = &network_interface
+ }
};
-struct uci_sectmap network_alias = {
+static struct uci_sectmap network_alias = {
.type = "alias",
.options = network_alias_options,
.alloc_len = sizeof(struct uci_network),
.n_options = ARRAY_SIZE(network_alias_options),
};
-struct uci_sectmap *network_smap[] = {
+static struct uci_sectmap *network_smap[] = {
&network_interface,
&network_alias,
};
-struct uci_map network_map = {
+static struct uci_map network_map = {
.sections = network_smap,
.n_sections = ARRAY_SIZE(network_smap),
};
struct list_head *p, *p2;
struct uci_network *net;
struct uci_alias *alias;
+ int i;
INIT_LIST_HEAD(&ifs);
ctx = uci_alloc_context();
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