cmake: Find uci.h
[project/firewall3.git] / snats.c
diff --git a/snats.c b/snats.c
index 7dae2ee..f43daf2 100644 (file)
--- a/snats.c
+++ b/snats.c
@@ -1,7 +1,7 @@
 /*
  * firewall3 - 3rd OpenWrt UCI firewall implementation
  *
 /*
  * firewall3 - 3rd OpenWrt UCI firewall implementation
  *
- *   Copyright (C) 2014 Jo-Philipp Wich <jow@openwrt.org>
+ *   Copyright (C) 2014 Jo-Philipp Wich <jo@mein.io>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -133,9 +133,12 @@ fw3_load_snats(struct fw3_state *state, struct uci_package *p, struct blob_attr
 
        blob_for_each_attr(rule, a, rem) {
                const char *type = NULL;
 
        blob_for_each_attr(rule, 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);
                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"))
                        continue;
 
                if (!type || strcmp(type, "nat"))
                        continue;
@@ -143,9 +146,9 @@ fw3_load_snats(struct fw3_state *state, struct uci_package *p, struct blob_attr
                if (!(snat = alloc_snat(state)))
                        continue;
 
                if (!(snat = alloc_snat(state)))
                        continue;
 
-               if (!fw3_parse_blob_options(snat, fw3_snat_opts, rule))
+               if (!fw3_parse_blob_options(snat, fw3_snat_opts, rule, name))
                {
                {
-                       fprintf(stderr, "ubus section skipped due to invalid options\n");
+                       fprintf(stderr, "%s skipped due to invalid options\n", name);
                        fw3_free_snat(snat);
                        continue;
                }
                        fw3_free_snat(snat);
                        continue;
                }
@@ -262,7 +265,7 @@ append_chain(struct fw3_ipt_rule *r, struct fw3_snat *snat)
        if (snat->_src)
                fw3_ipt_rule_append(r, "zone_%s_postrouting", snat->src.name);
        else
        if (snat->_src)
                fw3_ipt_rule_append(r, "zone_%s_postrouting", snat->src.name);
        else
-               fw3_ipt_rule_append(r, "delegate_postrouting");
+               fw3_ipt_rule_append(r, "POSTROUTING");
 }
 
 static void
 }
 
 static void