opennds: nds_ft_INC grows by one rule every 15 s with nftables 1.1.x (fixed upstream in 8b5a23f / v11.0.0)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- linux, shell
- Domain
- networking
Research direction
The bug is in the device comparison in libopennds.sh, around lines 2477-2498, where the flowtable's device list from nft -a list flowtables is compared with { usb0 }. nftables prints the name quoted, so the comparison fails on every gatewayroute pass. Start by running the reproduction commands in the issue and confirm the quoted and unquoted forms differ. Done means the comparison matches after stripping the quotes, and the counter return count in nds_mangle nds_ft_INC stays at 1 across several passes 15 s apart.
Written by the indexing model from the issue text.
Description
Package Name
opennds
Maintainer
@bluewavenet
OpenWrt Version
25.12.5
OpenWrt Target/Subtarget
mediatek/filogic
Steps to Reproduce
This is what we did on our device. We have not tried other configurations.
-
OpenWrt 25.12.x with nftables 1.1.x and
opennds10.3.1-r3 installed and started, with agatewayinterface, and a default route of the formdefault via <gw> dev <wan>whose gateway has a neighbour entry (the pass then finds oneonline:<gw>,<wan>gateway and enters the block at line 2477). -
Look at what nftables prints and what the script compares it with:
nft -a list flowtables | grep -w -A 4 "ndsftINC" | awk -F "devices = " 'NF>1 {printf "%s", $2}'; echo { "usb0" } # quoted; line 2498 compares it with: { usb0 } -
Count the
returnrules in the chain a few times, 15 s apart. Expected: 1, and no change. Actual: it goes up by one per pass.nft -a list chain ip nds_mangle nds_ft_INC | grep -c 'counter.* return' -
The comparison on its own, without OpenWrt:
ftdevices='{ "usb0" }' # what nftables 1.1.6 prints after "devices = " wandevices='usb0' # what libopennds.sh builds from the default routes [ "$ftdevices" != "{ $wandevices }" ] && echo "differs -> flowtable is re-created on every pass" ftdevices=$(printf '%s' "$ftdevices" | tr -d "\"") [ "$ftdevices" = "{ $wandevices }" ] && echo "equal after tr -d"
Actual Behaviour
net/opennds (10.3.1-r1, added in 85f2da3) has the same defect as opennds 10.3.1-r3 in the openwrt-25.12 routing feed. libopennds.sh compares the flowtable's device list with { usb0 } while nftables 1.1.x prints { "usb0" }, so on every gatewayroute pass (about every 15 s) the flowtable is re-created and one more counter return rule is appended to nds_mangle nds_ft_INC (28,788 rules after 5 d 3 h on a GL-MT6000 with OpenWrt 25.12.5).
Upstream fixed it in openNDS 8b5a23f (2025-11-29; contained in v11.0.0). Please either add the one-line patch or update to v11.0.0. Details, reproduction steps and a patch that applies to 10.3.1: https://github.com/openwrt/routing/issues/1208
Confirmation Checklist
- The package is maintained in this repository.
- I understand that issues related to the base OpenWrt repository or LuCI repository will be closed.
- I am reporting an issue for OpenWrt, not an unsupported fork.
- Dominant language
- Makefile
- Stars
- 4.7k
- Forks
- 4k
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 244
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openwrt/packages
-
strongswan: swanctl silently fails to start charon with legacy UCI configurationPossibly taken @feckert claimed this 1 day ago. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
openwrt/packages#31057 · 3 comments ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
openwrt/packages#30771 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openwrt/packages#30523 · 20 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
release/25.12
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openwrt/packages#30392 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 Half a day Newbie friendliness 78/100
openwrt/packages#30347 · 9 comments ·
Maintainers usually reply within 1 day
All issues in openwrt/packages
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
aidev-iprokszin/ipcam-mcp#15 ·
-
Difficulty 2/5 Under an hour Newbie friendliness 65/100
qnikst/HaskellNet#125 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
opendatahub-io/ai-gateway-controller#216 ·
Maintainers usually reply within 1 day
-
scheduleGrant: a capped grant marks a still-backlogged connection inactive (LteSchedulerEnb.cc:403).Open
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
FujiNetWIFI/fujinet-firmware#2270 ·
Maintainers usually reply within 1 day