<feed xmlns='http://www.w3.org/2005/Atom'>
<title>luci/modules/luci-mod-network/root, branch master</title>
<subtitle>Lua Configuration Interface (mirror)</subtitle>
<id>https://git-03.infra.openwrt.org/project/luci/atom?h=master</id>
<link rel='self' href='https://git-03.infra.openwrt.org/project/luci/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/'/>
<updated>2026-06-26T07:18:17Z</updated>
<entry>
<title>luci-mod-network: add link speed column to the devices tab</title>
<updated>2026-06-26T07:18:17Z</updated>
<author>
<name>Paul Tobias</name>
</author>
<published>2026-06-25T11:06:39Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=93d2f790d97f1dcfc38f67833dd3ec2b0c06ce40'/>
<id>urn:sha1:93d2f790d97f1dcfc38f67833dd3ec2b0c06ce40</id>
<content type='text'>
The negotiated link speed of a network device isn't shown on the Network
configuration pages, so a link stuck below its capability (e.g. a gigabit
port at 100 Mbit/s) goes unnoticed.

Add a "Link Speed" column to the Devices tab showing the negotiated speed,
with the device's ethtool-supported speeds in a tooltip when available, and
"-" when the device has no carrier or reports no speed. The columns are
ordered by OSI layer: link speed (L1) before MAC (L2) and MTU (L3).

The current speed comes from the device link state; the supported speeds are
the distinct network.device status "link-supported" modes, fetched once in
load(). Add the network.device "status" ACL grant so the view can call it.

Signed-off-by: Paul Tobias &lt;github@tobias.pt&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: add new Switch/VLAN configuration</title>
<updated>2026-06-23T14:17:36Z</updated>
<author>
<name>Mirko Vogt</name>
</author>
<published>2026-05-28T14:25:34Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=9babb3e47a2530dff2b2430fd8c54d0ff73286ba'/>
<id>urn:sha1:9babb3e47a2530dff2b2430fd8c54d0ff73286ba</id>
<content type='text'>
Register a new "Switch/VLAN config" entry in the Network top-level
menu and add the view at view/network/switch-vlan.js.

The menu entry is only visible when the network configuration
contains either a bridge device with vlan_filtering explicitly
enabled or at least one bridge-vlan section (mirroring the implicit
enable behaviour of the existing Bridge VLAN filtering dialog).

The view itself locates the first such bridge in declaration order,
detects configurations that the new view cannot represent (PVID
different from the untagged VLAN, duplicate untagged memberships,
etc.) and blocks access with an explanatory error in that case.

The following shortcomings resulted in an alternative Switch/VLAN
view:

 - To reach the current switch/VLAN config page, one has to click
   through: Network -&gt; Interfaces -&gt; Devices -&gt; Configure... (the
   respective switch/bridge) -&gt; Bridge VLAN filtering which - at
   least for dedicated switches - is not sth. I feel comfortable
   having to do every time I want to make a basic change.

 - While ~5 ports might still fit next to each other, starting with
   2 figure numbers (at the latest), we end up scrolling
   horizontally. Finding a higher port to configure on a 24 or 48
   port switch inevitably results in plenty of horizontal scrolling,
   while at the same time you have to memorise which row maps to
   which VLAN-ID, as those scroll out the moment you start
   scrolling.

 - Every port needs to be configured by its own, no way to bulk-conf
   them, to apply the same VLAN config onto multiple ports (e.g.
   applying the same tag onto a large number or all ports).

 - Ports and VLAN-IDs are defined by sole numbers. There's no way to
   annotate them, e.g. a VLAN ID as "iot" or "mgmt", or a port as
   e.g. "uplink" or "server-mirko".

With the following changes:

 - Add a dedicated "Switch/VLAN config" entry within the top-level
   "Network" dropdown (you might remember we already had such for
   swconfig back then, before it got obsoleted by DSA and conf via
   vlan aware bridges).

 - Avoid horizontal scrolling by showing switch ports in multiple
   rows if not fitting screen width.

 - Allow selection of multiple ports to configure them all the same
   way at once.

 - Introduce labels for ports and VLANs; they're optional annotations
   and don't serve any functional purpose except hinting the user,
   hence stored in respective sections within /etc/config/luci.

 - Visualising which VLANs are assigned to which ports by colour-
   coding the ports when hovering over configured VLANs.

Signed-off-by: Mirko Vogt &lt;mirko-openwrt@nanl.de&gt;
Co-authored-by: Opus and/or Composer
</content>
</entry>
<entry>
<title>luci-mod-network: add tags tab</title>
<updated>2025-12-31T17:37:15Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-12-31T17:33:33Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=3c8ff551204adcabf10cb2f914e722542935d3ca'/>
<id>urn:sha1:3c8ff551204adcabf10cb2f914e722542935d3ca</id>
<content type='text'>
For use with dnsmasq tags

Note that a MAC tab is possible but the same functionality
is present in the leases tab which handles MACs and tags.
A MAC tab has a 1:1 tag:MAC relationship, whereas the leases
has a many:many relationship.

The dnsmasq init file needs updating to use 'tag' in
place of 'networkid', which is an older legacy format still
understood by dnsmasq, but all documentation uses 'tag'.

tag names shall not match:
- network devices/interfaces
- service names

Three dnsmasq reserved tag names are:
- known
- !known
- known-othernet

Tag names can be prepended with '!' to invert their usage.

Closes #7178

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: prevent double key for menu JSON</title>
<updated>2025-10-25T00:19:50Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-10-25T00:19:33Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=ddb569074eb9422a66dff5070d546a1a69c42bcd'/>
<id>urn:sha1:ddb569074eb9422a66dff5070d546a1a69c42bcd</id>
<content type='text'>
follow-up to 7e1b545bfa1d98a72d18c39528dade2b35421ed5

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: change &amp;&amp; to || for DHCP tab predicates</title>
<updated>2025-10-24T13:36:09Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-10-24T13:36:09Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=7e1b545bfa1d98a72d18c39528dade2b35421ed5'/>
<id>urn:sha1:7e1b545bfa1d98a72d18c39528dade2b35421ed5</id>
<content type='text'>
Each prerequisite inside a { } forms an and condition.
Each {} prerequisite forms an or condition.

The tab wasn't displayed because odhcpd was not installed. The condition set
required both. Now only require one or the other to display the DHCP tab.

Closes #8033

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: remove unused permissions from dns</title>
<updated>2025-10-18T21:51:38Z</updated>
<author>
<name>David Härdeman</name>
</author>
<published>2025-10-15T17:54:49Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=8640ed2b6b1b49e790c039b00ee500c449a598bf'/>
<id>urn:sha1:8640ed2b6b1b49e790c039b00ee500c449a598bf</id>
<content type='text'>
Now that all options have been organized per view, remove unused acl
permissions from dns.

Signed-off-by: David Härdeman &lt;david@hardeman.nu&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: split dhcp and dns into separate views</title>
<updated>2025-10-18T21:51:38Z</updated>
<author>
<name>David Härdeman</name>
</author>
<published>2025-10-15T15:18:07Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=babd189670c43f6945e369eda894a3046d679ebe'/>
<id>urn:sha1:babd189670c43f6945e369eda894a3046d679ebe</id>
<content type='text'>
In order to make the following patches easier to follow, this patch simply
makes an identical copy of:

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

as:

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dns.js

Signed-off-by: David Härdeman &lt;david@hardeman.nu&gt;
</content>
</entry>
<entry>
<title>luci-mod-status,-network: remove checkUfpInstalled</title>
<updated>2025-10-15T23:24:42Z</updated>
<author>
<name>David Härdeman</name>
</author>
<published>2025-10-15T13:07:32Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=50abd15e88c7aaf9a7233d7b42bf07674984c69c'/>
<id>urn:sha1:50abd15e88c7aaf9a7233d7b42bf07674984c69c</id>
<content type='text'>
Right now, the checkUfpInstalled RPC call is performed first, and only after
that can the other Promises be called. Simplify this by adding a single check
for /usr/sbin/ufpd in the rpcd ucode, and replace calls to checkUfpInstalled()
with simple L.hasSystemFeature('ufpd') check (which is only done once, and
cached).

This also allows the 'stat' permission to be removed from a couple of acls.

Signed-off-by: David Härdeman &lt;david@hardeman.nu&gt;
</content>
</entry>
<entry>
<title>luci-mod-status,luci-mod-network: support oui to vendor resolving</title>
<updated>2025-09-25T11:25:33Z</updated>
<author>
<name>Christian Korber</name>
</author>
<published>2025-09-10T06:30:22Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=70b7176fc2547e3de1fa3139d0e25adfd3fcd66e'/>
<id>urn:sha1:70b7176fc2547e3de1fa3139d0e25adfd3fcd66e</id>
<content type='text'>
For easier definition of connected devices, this commit adds support
to identify them by vendor name.

Package `upf-neigh` is needed to lookup the vendor name in a hash table.
It implements a ubus-call `ubus call fingerprint fingerprint`:

```
root@&lt;redacted&gt; ~ # ubus call fingerprint fingerprint
{
        "7c:c2:55:XX:XX:XX": {
                "vendor": "Super Micro Computer, Inc."
        }
}
```

Fixes: #2065
Depends on: openwrt/packages#27257

Signed-off-by: Christian Korber &lt;ck@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>luci-mod-network: remove old netifd version check which needs opkg</title>
<updated>2024-12-15T20:08:56Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2024-12-15T20:08:56Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/project/luci/commit/?id=e23f6069d6fb91d75147f908bd15d2ee96e6a5d7'/>
<id>urn:sha1:e23f6069d6fb91d75147f908bd15d2ee96e6a5d7</id>
<content type='text'>
master and 24 use much newer versions.

This will prevent a read error on the non-existent control file when
the system uses apk.

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
</feed>
