From: Jo-Philipp Wich Date: Wed, 18 Sep 2019 08:31:06 +0000 (+0200) Subject: ubus: do not overwrite ipset name attribute X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=383eb58f1750b3b96a82558b5dcb806a8a2528bc;p=oweals%2Ffirewall3.git ubus: do not overwrite ipset name attribute When importing ipset definitions from published ubus data, do not overwrite the name attribute with an autogenerated string like it is being done for rules or redirects. Ref: https://forum.openwrt.org/t/fw3-ipset-procd-objects/44044 Signed-off-by: Jo-Philipp Wich --- diff --git a/ubus.c b/ubus.c index bea9166..cf5c8b1 100644 --- a/ubus.c +++ b/ubus.c @@ -257,26 +257,34 @@ static void fw3_ubus_rules_add(struct blob_buf *b, const char *service, void *k = blobmsg_open_table(b, ""); struct blob_attr *ropt; unsigned orem; - char *type = NULL; + char *type = NULL, *name = NULL; char comment[256]; blobmsg_for_each_attr(ropt, rule, orem) { if (!strcmp(blobmsg_name(ropt), "type")) type = blobmsg_data(ropt); + else if (!strcmp(blobmsg_name(ropt), "name")) + name = blobmsg_data(ropt); + if (device && !strcmp(blobmsg_name(ropt), "device")) device = blobmsg_get_string(ropt); else if (strcmp(blobmsg_name(ropt), "name")) blobmsg_add_blob(b, ropt); } - if (instance) - snprintf(comment, sizeof(comment), "ubus:%s[%s] %s %d", - service, instance, type ? type : "rule", n); - else - snprintf(comment, sizeof(comment), "ubus:%s %s %d", - service, type ? type : "rule", n); + if (!type || strcmp(type, "ipset")) { + if (instance) + snprintf(comment, sizeof(comment), "ubus:%s[%s] %s %d", + service, instance, type ? type : "rule", n); + else + snprintf(comment, sizeof(comment), "ubus:%s %s %d", + service, type ? type : "rule", n); - blobmsg_add_string(b, "name", comment); + blobmsg_add_string(b, "name", comment); + } + else if (name) { + blobmsg_add_string(b, "name", name); + } if (device) blobmsg_add_string(b, "device", device);