X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=snats.c;h=e392e08692e884019094707a39182fa4c8728c17;hb=d44f4189b6a6eb5e943f11dfff0246d3ac0e9087;hp=fad600876f4d8bc7c64f9384b87c32fb12dac1bb;hpb=e264c8e585ea37ccb1739e7a8e12f8454da1d8a4;p=project%2Ffirewall3.git diff --git a/snats.c b/snats.c index fad6008..e392e08 100644 --- a/snats.c +++ b/snats.c @@ -126,21 +126,19 @@ fw3_load_snats(struct fw3_state *state, struct uci_package *p, struct blob_attr struct uci_section *s; struct uci_element *e; struct fw3_snat *snat, *n; - struct blob_attr *rule, *opt; + struct blob_attr *entry, *opt; unsigned rem, orem; INIT_LIST_HEAD(&state->snats); - blob_for_each_attr(rule, a, rem) { + blob_for_each_attr(entry, a, rem) { const char *type = NULL; const char *name = "ubus rule"; - blobmsg_for_each_attr(opt, rule, orem) - if (!strcmp(blobmsg_name(opt), "type")) - type = blobmsg_get_string(opt); - else if (!strcmp(blobmsg_name(opt), "name")) - name = blobmsg_get_string(opt); - if (!type || strcmp(type, "nat")) + if (!fw3_attr_parse_name_type(entry, &name, &type)) + continue; + + if (strcmp(type, "nat")) continue; if (!(snat = alloc_snat(state))) @@ -148,7 +146,7 @@ fw3_load_snats(struct fw3_state *state, struct uci_package *p, struct blob_attr if (!fw3_parse_blob_options(snat, fw3_snat_opts, rule, name)) { - fprintf(stderr, "%s skipped due to invalid options\n", name); + warn_section("nat", snat, NULL, "skipped due to invalid options"); fw3_free_snat(snat); continue; }