<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-02-26T10:25:53Z</updated>
<entry>
<title>bridge: skip present toggle in bridge_free_member() when device is active</title>
<updated>2026-02-26T10:25:53Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-26T10:25:53Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=69a5afc9713adf31edbf3228a7a372ada7bba449'/>
<id>urn:sha1:69a5afc9713adf31edbf3228a7a372ada7bba449</id>
<content type='text'>
When moving a device between bridges during config reload, the present
toggle in bridge_free_member() can disrupt a bridge that has already
successfully claimed the device.

During device_init_pending(), bridges are processed in alphabetical
order. If the new bridge (e.g. br-lan) is processed before the old
bridge (e.g. br-wan), it successfully claims the device. When the old
bridge then flushes the device, the present toggle tears down and
rebuilds the new bridge unnecessarily, causing interface setup failures.

Only toggle the present state when the device has no active claims,
which is the case when bridge_enable_member() failed (e.g. because the
device was still in the old bridge at the time).

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>global: add support for PSE-PD control</title>
<updated>2026-02-23T09:58:26Z</updated>
<author>
<name>Carlo Szelinsky</name>
</author>
<published>2026-01-18T11:48:31Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=299a51f0c3011ca98a3f06cd29d50c2e1f86e348'/>
<id>urn:sha1:299a51f0c3011ca98a3f06cd29d50c2e1f86e348</id>
<content type='text'>
This commit adds basic support for modern
PSE-PD/POE control. It requires linux 6.18 or
a backport.

The backports are in those PRs:
https://github.com/openwrt/openwrt/pull/21810
https://github.com/openwrt/openwrt/pull/21926

Additionally the Makefile for netifd is adjusted:
https://github.com/openwrt/openwrt/pull/21918

In Detail:
* device.h - Added PSE device attributes &amp; settings
* device.c - Added UCI parsing for PSE options
* system-linux.c - Added genetlink PSE get/set functions

Signed-off-by: Carlo Szelinsky &lt;github@szelinsky.de&gt;
Link: https://github.com/openwrt/netifd/pull/65
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>examples: sync wireless scripts with openwrt</title>
<updated>2026-02-15T08:26:17Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-15T08:24:58Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=c6122254eb7003377b67a6ad14d284b69725bbee'/>
<id>urn:sha1:c6122254eb7003377b67a6ad14d284b69725bbee</id>
<content type='text'>
Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>proto-ucode: add ucode proto handler scripts</title>
<updated>2026-02-15T08:25:47Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-13T13:39:35Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=3fc8b83c8b62ca9dcb6485790216ad5171959223'/>
<id>urn:sha1:3fc8b83c8b62ca9dcb6485790216ad5171959223</id>
<content type='text'>
Add the ucode script infrastructure for ucode-based protocol handlers:

proto.uc: Handler management module loaded by main.uc. Scans proto/*.uc
for handler scripts, registers proto_config_load callback on netifd.cb
for UCI config reading and sorted JSON serialization.

proto-ucode.uc: Subprocess wrapper spawned for setup/teardown. Receives
handler script path, proto name, action, interface name, config JSON, and
optional device name via ARGV. Creates proto object with notification
methods mapping to ubus calls to network.interface.&lt;iface&gt;.notify_proto.
Loads handler module via include() with scope injection and dispatches
the requested action.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>proto-ucode: add ucode protocol handler infrastructure</title>
<updated>2026-02-15T08:25:27Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-13T13:37:23Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=aaf5b194b15d881db76286327fa90770ef467188'/>
<id>urn:sha1:aaf5b194b15d881db76286327fa90770ef467188</id>
<content type='text'>
Add C infrastructure for ucode-based protocol handlers. Handlers are
registered via netifd.add_proto() from ucode scripts loaded at startup.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>proto: add config_load callback to proto_handler</title>
<updated>2026-02-15T08:24:31Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-13T13:35:30Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=2098f29810e83c064efd7a9b90b86a44271deed0'/>
<id>urn:sha1:2098f29810e83c064efd7a9b90b86a44271deed0</id>
<content type='text'>
Allow protocol handlers to implement custom config loading by adding a
config_load callback to struct proto_handler. When set, it replaces the
default uci_to_blob() call in config_parse_interface().

This enables protocol handlers (such as ucode-based ones) to perform
their own UCI reading and config serialization.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>proto-ext: extract shared protocol handler code from proto-shell.c</title>
<updated>2026-02-15T08:24:31Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-13T13:33:26Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=ca33316f85529d960c825501241f4024d1ef29bf'/>
<id>urn:sha1:ca33316f85529d960c825501241f4024d1ef29bf</id>
<content type='text'>
Move the generic protocol handler infrastructure (state machine,
notification handling, dependency tracking, checkup mechanism) into
proto-ext.c for reuse by other protocol handler backends.

proto-shell.c now only contains shell-specific logic: script spawning,
handler parsing and registration. It delegates to proto_ext_run() for
state machine transitions and proto_ext_notify() for notifications.

The handler field access pattern changes from state-&gt;handler-&gt;proto.X
to state-&gt;proto.handler-&gt;X, using the handler pointer set by
proto_init_interface() in proto.c.

Internal handler dispatch calls (proto_shell_handler()) are replaced
with state-&gt;proto.cb(), making the shared code independent of the
concrete handler implementation.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>interface-ip: fix fortify build error</title>
<updated>2026-02-10T07:30:12Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-02-10T07:30:10Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=51fa9ed6d4d6f4e1663d55d3db7e34a964addecb'/>
<id>urn:sha1:51fa9ed6d4d6f4e1663d55d3db7e34a964addecb</id>
<content type='text'>
Use the correct struct member for INET6 addresses

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>system-linux: only parse device status for AF_UNSPEC link messages</title>
<updated>2025-10-20T21:37:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2025-10-20T21:35:20Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=777f5942fa7d6245f6ad29daa1daecc400344d37'/>
<id>urn:sha1:777f5942fa7d6245f6ad29daa1daecc400344d37</id>
<content type='text'>
In bridge messages (family = AF_BRIDGE), the commands are the same, but the
contents are different, and this can confuse netifd into thinking that devices
are down, while they are actually up.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>system-linux: handle RTM_DELLINK events for device state tracking</title>
<updated>2025-10-20T17:46:54Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2025-10-20T17:43:27Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/netifd/commit/?id=b6d371f307705b32e1ef5c63d7bf6440c8859789'/>
<id>urn:sha1:b6d371f307705b32e1ef5c63d7bf6440c8859789</id>
<content type='text'>
Add RTM_DELLINK handling to properly track device lifecycle. When a
device is deleted, update its state with flags=0 to mark it as not
present. This improves synchronization compared to only relying on
the hotplug handler.

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