<feed xmlns='http://www.w3.org/2005/Atom'>
<title>netifd, branch master</title>
<subtitle>OpenWrt Network interface configuration daemon</subtitle>
<id>https://git.openwrt.org/project/netifd/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/project/netifd/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/'/>
<updated>2026-07-17T17:59:12Z</updated>
<entry>
<title>config: accept 'true' for the interface disabled option</title>
<updated>2026-07-17T17:59:12Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T17:38:53Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=e97e36f9b5b545866c40d9803bd39e257389647e'/>
<id>urn:sha1:e97e36f9b5b545866c40d9803bd39e257389647e</id>
<content type='text'>
Every boolean option converted through uci_to_blob accepts both '1'
and 'true', but the interface disabled check compared against '1'
only, so 'option disabled true' was silently ignored and the
interface brought up anyway.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>config: keep vlan config entries until interfaces are parsed</title>
<updated>2026-07-17T17:58:37Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T17:38:34Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=7e9928f0fc00c4188263bbcdf14ab28716f7255f'/>
<id>urn:sha1:7e9928f0fc00c4188263bbcdf14ab28716f7255f</id>
<content type='text'>
config_init_vlans() drained and freed the config_vlans list before
config_init_interfaces() ran, so config_bridge_has_vlans() always
returned false for bridges defined inline in interface sections and
the vlan_filtering/__has_vlans fixup no longer triggered for them, a
regression from the pre list based code which scanned the uci
sections directly. Iterate the list without freeing and release the
entries after interface parsing.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>config: match the device when overriding vlan config entries</title>
<updated>2026-07-17T17:58:14Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T17:38:05Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=c51979e379085f6e7b4a67a25c74eecd68cb5d4a'/>
<id>urn:sha1:c51979e379085f6e7b4a67a25c74eecd68cb5d4a</id>
<content type='text'>
The override loop in config_insert_vlan_entry matched entries by name
only. The names inserted by config_procd_bridge_cb are the vid keys of
the per bridge vlans table, which are only unique within one bridge,
so a vlan entry for one bridge silently deleted a same named entry
belonging to a different bridge. Require a matching device name as
well; the procd data override for uci sections keeps working since it
refers to the same device.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>system-linux: validate FMR ealen and offset before use</title>
<updated>2026-07-17T17:58:00Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T17:32:20Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=109610f5b5de8d8d0f761be63fdbac2dbd24ed5a'/>
<id>urn:sha1:109610f5b5de8d8d0f761be63fdbac2dbd24ed5a</id>
<content type='text'>
Both values were parsed as u32 and passed to nla_put_u8 without a
range check, silently truncating out of range values to their low 8
bits instead of rejecting the configuration. Fail tunnel setup with
-EINVAL for values that do not fit, matching the encap limit
validation.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>system-linux: fix byte order of multicast GRE tunnel keys</title>
<updated>2026-07-17T17:57:46Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T17:31:49Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=b462dead154d73afc4f70b6fab481970932a6cea'/>
<id>urn:sha1:b462dead154d73afc4f70b6fab481970932a6cea</id>
<content type='text'>
The fallback key for keyless multicast GRE tunnels was taken directly
from the network byte order remote address and then passed through
htonl() again when adding it to the netlink message, swapping the key
on little endian systems. Convert the address to host byte order when
deriving the key, matching the byte order of user supplied keys and
the key emitted by iproute2.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>extdev: cancel pending retry timers on device free</title>
<updated>2026-07-17T17:57:38Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-04T20:24:14Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=ab060e0f1fb5c20135063729c737f3fda9866126'/>
<id>urn:sha1:ab060e0f1fb5c20135063729c737f3fda9866126</id>
<content type='text'>
Bridge devices arm two retry timers: the member enable retry and the
dependency retry, both rearmed periodically while a member keeps
failing or a dependency is absent. Freeing a device with such a timer
still pending left a dangling uloop timeout that fires on freed memory,
for example when a config reload removes a bridge whose dependency
never appeared.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>extdev: clear the bridge empty state when removed from the config</title>
<updated>2026-07-17T17:57:04Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:06:01Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=32ee16c6f3cca2cdce5f2f1b471487b2f7f22997'/>
<id>urn:sha1:32ee16c6f3cca2cdce5f2f1b471487b2f7f22997</id>
<content type='text'>
The empty flag was set sticky on reload, and force_active, set by the
empty path of __bridge_config_init, was otherwise only cleared when a
present member is removed. Removing or disabling the empty option
therefore kept the bridge force activated and present with zero
members and kept extdev_bridge_remove_member from marking the device
absent until netifd was restarted. Track the option transition and
revert both; the hotplug prepare path sets force_active independently
and is left alone.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>bridge: ignore stale member check timer events</title>
<updated>2026-07-17T17:56:42Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T17:42:43Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=362b76935dd36715632e2f022ad3f81447a2313f'/>
<id>urn:sha1:362b76935dd36715632e2f022ad3f81447a2313f</id>
<content type='text'>
The vlan membership check timer armed by a link-up event was not
cancelled when the bridge was brought down, so a pending timer could
fire after bridge_set_down, re-create the kernel bridge via
bridge_enable_member and enslave the port while the owning interface
is down. The check is only meaningful for a member that is still
enslaved; bail out if the member is no longer active.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>bridge: drop force_active when the bridge_empty option is removed</title>
<updated>2026-07-17T17:55:29Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-17T01:47:40Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=1e4a008f3a990ea8eddffe82bb48f09ef7dd6970'/>
<id>urn:sha1:1e4a008f3a990ea8eddffe82bb48f09ef7dd6970</id>
<content type='text'>
force_active, set by bridge_config_init for empty bridges, is
otherwise only cleared when a present member is removed, so removing
the bridge_empty option from a memberless bridge left it force
activated and present until restart, the same defect just fixed in
extdev. Revert it on the option transition in bridge_apply_settings;
the hotplug prepare path sets it independently and is left alone.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>system-linux: check the nlmsg_parse result in cb_rtnl_event</title>
<updated>2026-07-17T17:55:19Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:14:55Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=7f6cf9895f93d57c7f0d6cfb8b1459f575776d10'/>
<id>urn:sha1:7f6cf9895f93d57c7f0d6cfb8b1459f575776d10</id>
<content type='text'>
A truncated link message made nlmsg_parse fail before it initialised
the attribute table, so the subsequent lookups read indeterminate
stack contents.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
</feed>
