Skip to content

Commit 125ea47

Browse files
committed
Fix missing firewalld.conf when modifying zone services
When users modified firewall zone services (e.g., enabling SSH on WAN), firewalld.conf would disappear from /etc/firewalld/, causing firewalld to fail with "Failed to load '/etc/firewalld/firewalld.conf': [Errno 2] No such file or directory". Root cause: After switching to the "roll in" staging directory approach late in development, firewalld.conf generation was still conditional on changes to "default" or "logging" settings. When other changes (zones, services, policies) were made: 1. Code created /etc/firewalld+/ staging directory 2. Skipped generating firewalld.conf (no default/logging in diff) 3. On commit: rm -rf /etc/firewalld (deleted firewalld.conf!) 4. Renamed /etc/firewalld+ → /etc/firewalld (incomplete config) Fix: Always generate firewalld.conf whenever firewall configuration is being staged, not just for default/logging changes. Fixes #1346 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
1 parent 5a65180 commit 125ea47

1 file changed

Lines changed: 2 additions & 3 deletions

File tree

src/confd/src/firewall.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -549,9 +549,8 @@ int firewall_change(sr_session_ctx_t *session, struct lyd_node *config, struct l
549549
goto done;
550550
}
551551

552-
if (lydx_get_descendant(diff, "firewall", "default", NULL) ||
553-
lydx_get_descendant(diff, "firewall", "logging", NULL))
554-
generate_firewalld_conf(global);
552+
/* Always generate firewalld.conf when firewall is enabled */
553+
generate_firewalld_conf(global);
555554

556555
/*
557556
* Regenerate everything if anything in firewall changed, firewalld

0 commit comments

Comments
 (0)