Repository navigation
FREEBOX plugin can generate false Disconnected/Flapping state when L3 reachability temporarily drops #1828
Description
Activity
Additional observation:
CurrentScanpresence during the flappingI ran an additional watcher against
CurrentScanwhile investigating the repeatedConnected/Disconnectedtransitions.Whenever the affected FREEBOX devices were actually present in
CurrentScan, their FREEBOX rows consistently had:scanPresence = 1This was true across IPv4 and IPv6 entries and across multiple FREEBOX scan cycles. The set of L3 entries and their
scanLastConnectiontimestamps changed over time, but I did not observe the FREEBOX plugin inserting the affected device withscanPresence=0.This appears consistent with the failure mode described in this issue:
normal cycle: FREEBOX emits MAC + reachable L3 address(es) -> CurrentScan contains the MAC with scanPresence=1 failing cycle: host remains active / Ethernet link remains up -> all L3 addresses have reachable=false -> FREEBOX emits no entry for the MAC -> MAC is absent from CurrentScan -> if another scanner also does not detect it -> NetAlertX generates Disconnected later cycle: an L3 address becomes reachable again -> FREEBOX emits the MAC again with scanPresence=1 -> NetAlertX generates ConnectedSo the observed flapping does not appear to be caused by FREEBOX explicitly reporting the device as absent (
scanPresence=0). It is caused by the device disappearing from the FREEBOX results for a scan cycle and then reappearing.I also observed that the physical FREEBOX-sourced device and its logical parent transition together. Repeated cycles therefore produce sequences such as:
Connected Disconnected Connected Disconnected Connectedwhich eventually results in the logical device being classified as
Flapping.The additional
CurrentScanobservation therefore seems to support distinguishing device/host presence from L3 address reachability in the FREEBOX plugin, rather than treating the absence of areachable=trueL3 address as equivalent to the host being absent.One limitation of this additional capture is that the watcher directly observed the affected devices while they were present in
CurrentScan; it does not by itself prove their absence at the exact failing instant. The raw Freebox API and debug-log capture in the original report provide the stronger evidence for that part.Reacted by Jokob @NetAlertX- added a commit that references this issue
on Oct 2, 2026 Thanks for the report.
This should be available/fixed in the next release.
It would be great if you could test theghcr.io/netalertx/netalertx-dev-unsafeDocker image in ~15 minutes (or once the latest GitHub Action finishes).⚠️ Please back up everything first, or ideally spin up a separate container (make sure you use a uniquePORTandGRAPHQL_PORTif running instances concurrently) with its own DB and config (a copy of your current setup), as database changes may occur.After updating:
- Click the 🔄 refresh button in the blue header at the top
- Hard refresh your browser cache (shift + reload) to force js and css files reload
👉 If I don’t receive confirmation that this works, I may revert the changes to avoid introducing bugs.
Disclaimer: Running the dev container long-term may lead to data loss, as upgrade paths are not guaranteed.
Thanks in advance,
j- addedWaiting for reply⏳Waiting for the original poster to respond, or discussion in progress.Waiting for the original poster to respond, or discussion in progress.next release/in dev image 🚀This is coming in the next release or was already released if the issue is Closed.This is coming in the next release or was already released if the issue is Closed.
on Oct 2, 2026 - added a commit that references this issue
on Oct 2, 2026 Hi @jokob-sk ,
Thanks once again for the quick fix!
Tested with:
ghcr.io/netalertx/netalertx-dev-unsafe:sha-067a6a1I was able to reproduce the exact Freebox API state from the original report twice.
In both cases, the affected Freebox TV Player Ethernet interface had:
host.active = True IPv4: active = True reachable = False IPv6 link-local: active = True reachable = False All L3 entries: reachable = FalseFirst occurrence
At approximately
21:05, the plugin detected the condition and triggered the new fallback:[FREEBOX] Host active but no reachable L3 address - using fallback IPThe affected interface was retained by the FREEBOX scan using its active IPv4 address.
The subsequent NetAlertX processing cycle reported:
Disconnections.........: 0Second occurrence
At approximately
23:05, the same condition occurred again on the same Freebox TV Player Ethernet interface:host.active = True IPv4 active = True, reachable = False IPv6 link-local active = True, reachable = False all L3 entries reachable = FalseThe fallback was triggered again:
[FREEBOX] Host active but no reachable L3 address - using fallback IPThe subsequent processing cycle again reported:
Disconnections.........: 0Result
This gives me two independent reproductions of the specific failure condition reported here.
Previously, an active host with no
reachable=trueL3 entry could disappear from the FREEBOX plugin output and subsequently generate a falseDisconnectedstate.With
sha-067a6a1, the fallback keeps the host present in this condition, and neither of the two reproduced occurrences generated a disconnection.I did observe other
Disconnectedevents during testing when the Freebox API itself reported the host asactive=false, all L3 entries as inactive/unreachable, and no access point. I am treating those separately, since that is a different API state from the one reported in this issue.From my testing, the specific fix is working as intended.
As always, thanks for testing and glad it's resolved -> will keep open until next release.
- removedWaiting for reply⏳Waiting for the original poster to respond, or discussion in progress.Waiting for the original poster to respond, or discussion in progress.
on Oct 2, 2026
What installation are you running?
Production (netalertx) 📦
Is there an existing issue for this?
The issue occurs in the following browsers. Select at least 2.
Current Behavior
The FREEBOX plugin can report a device as disconnected even while the Freebox API still reports the host as active and physically connected.
I observed this with a Freebox TV Player connected via Ethernet. The device repeatedly transitions between
ConnectedandDisconnectedin NetAlertX, which eventually causes the logical parent device to be shown asFlapping.Investigation showed that the FREEBOX plugin only emits a host when at least one of its L3 addresses has
reachable=true:During a captured false-disconnection cycle, the Freebox API still reported the Ethernet host as active and the physical Ethernet link as up, while its L3 addresses temporarily had
reachable=false.The relevant state was equivalent to:
Because none of the L3 addresses had
reachable=true, the FREEBOX plugin emitted no scan entry for this MAC during that cycle.In the same processing cycle, the device was also absent from the ICMP scan. NetAlertX therefore had no presence entry for the Ethernet NIC in
CurrentScanand generated aDisconnectedevent.The logical Freebox TV Player uses this Ethernet device as a NIC, so it received a
Disconnectedevent at the same time. When an L3 address later became reachable again, FREEBOX emitted the NIC again and both devices transitioned back toConnected.This repeated several times:
causing the logical device to be classified as
Flapping.The Freebox API documentation distinguishes these states:
LanHost.active: the host sends traffic to the FreeboxLanHost.reachable: the host can receive traffic from the FreeboxLanHostL3Connectivity.active: the L3 connection is activeLanHostL3Connectivity.reachable: the L3 connection is reachableTherefore an L3 connection temporarily having
reachable=falsedoes not necessarily mean that the host itself is disconnected.Expected Behavior
A Freebox host that remains connected should not generate false
Disconnected/Connectedtransitions solely because all of its L3 addresses temporarily reportreachable=false.The FREEBOX plugin should distinguish host/device presence from temporary L3 reachability so that a host which the Freebox still reports as connected/active does not disappear from the scan solely because none of its individual IP addresses are currently marked reachable.
The exact presence criteria are an implementation decision, since the Freebox API exposes several relevant signals (
LanHost.active,LanHost.reachable, L3active/reachable, and connection-specific information).The expected outcome is that temporary L3 reachability changes do not incorrectly cause an otherwise connected device, or a logical device derived from its NIC presence, to transition to
Disconnectedand eventuallyFlapping.Steps To Reproduce
Enable the
FREEBOXplugin and configure it to scan a Freebox using the LAN Browser API.Have a device connected to the Freebox for which the API can temporarily report:
LanHost.active = trueLanHostL3Connectivity.active = trueLanHostL3Connectivity.reachable = falseIn the observed case this was an Ethernet-connected Freebox TV Player whose physical Ethernet link also remained
up.Allow the scheduled FREEBOX scan to run while all of the host's L3 addresses have
reachable=false.Observe that the FREEBOX plugin produces no result for that host because it only processes L3 connections satisfying:
If no other scanner detects the device during the same processing cycle, observe that NetAlertX generates a
Disconnectedevent for the device.When one or more L3 addresses later become
reachable=true, allow another FREEBOX scan to run and observe that the device is emitted again and transitions back toConnected.If this L3 reachability state changes repeatedly, observe repeated
Connected/Disconnectedevents and eventually aFlappingstatus.When the device is configured as a NIC of a logical device, the logical parent follows the same presence transitions and can also become
Flapping.Relevant
app.confsettingsdocker-compose.yml
Debug or Trace enabled
Relevant
app.logsectionThe relevant scan cycle is shown below. MAC addresses and IP addresses have been anonymized.
The two
Disconnectedevents generated by this cycle were the affected Ethernet NIC and its logical parent:The preceding and following events show both devices transitioning together:
During the failing FREEBOX cycle, the raw Freebox API data for the affected Ethernet host showed that the host was still active and its Ethernet link remained up, while all L3 addresses were temporarily reported as unreachable:
The FREEBOX plugin currently only emits L3 entries for which
reachableis true:As a result, this host produced no FREEBOX scan entry during that cycle despite still being reported as active by the Freebox and having its physical Ethernet link up.
Docker Logs
No additional relevant information was present in the Docker container logs for this issue.
The diagnostic information is emitted to NetAlertX's
app.log; the relevant debug-level section from the reproduced scan cycle is included above.