From 95967daea5d1be988b4d25280fcea9ae2b6c52cd Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 29 Aug 2009 18:50:28 +0200 Subject: [PATCH] ucimap: add an example for optmap data structure encapsulation --- ucimap-example.c | 60 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/ucimap-example.c b/ucimap-example.c index 1c0ed38..0e3f7a4 100644 --- a/ucimap-example.c +++ b/ucimap-example.c @@ -82,50 +82,68 @@ network_add_alias(struct uci_map *map, void *section) return 0; } +struct my_optmap { + struct uci_optmap map; + int test; +}; + static struct uci_sectmap network_interface; static struct uci_sectmap network_alias; -static struct uci_optmap network_interface_options[] = { +static struct my_optmap network_interface_options[] = { { - UCIMAP_OPTION(struct uci_network, proto), - .type = UCIMAP_STRING, - .name = "proto", - .data.s.maxlen = 32, + .map = { + 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" + .map = { + UCIMAP_OPTION(struct uci_network, ifname), + .type = UCIMAP_STRING, + .name = "ifname" + } }, { - UCIMAP_OPTION(struct uci_network, ipaddr), - .type = UCIMAP_STRING, - .name = "ipaddr", + .map = { + UCIMAP_OPTION(struct uci_network, ipaddr), + .type = UCIMAP_STRING, + .name = "ipaddr", + } }, { - UCIMAP_OPTION(struct uci_network, enabled), - .type = UCIMAP_BOOL, - .name = "enabled", + .map = { + UCIMAP_OPTION(struct uci_network, enabled), + .type = UCIMAP_BOOL, + .name = "enabled", + } }, { - UCIMAP_OPTION(struct uci_network, test), - .type = UCIMAP_INT, - .name = "test" + .map = { + 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 + .map = { + UCIMAP_OPTION(struct uci_network, aliases), + .type = UCIMAP_LIST | UCIMAP_SECTION, + .data.sm = &network_alias + } } }; 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) }; static struct uci_optmap network_alias_options[] = { -- 2.11.0