Summary
The lldpd extension container spec hardcodes -I eth*,enp*,ens*,eno* which excludes end* — the predictable interface name assigned by Talos on Raspberry Pi CM4 and Pi5 hardware. lldpd starts successfully but silently skips all interfaces and sends no LLDP frames.
Environment
- Talos v1.12.5
- lldpd extension v1.0.20
- Hardware: Raspberry Pi CM4 (workers), N100 x86 (control plane)
- N100 works correctly (
eth0 matches eth*); CM4 does not (end0 not matched)
Reproduction
- Install Talos on a Raspberry Pi CM4 or Pi5 with the lldpd extension included in your schematic
- Apply an
ExtensionServiceConfig for lldpd
- Observe
ext-lldpd shows Running in talosctl services
- Check logs:
talosctl logs ext-lldpd — lldpd initializes but never logs Adding interface end0
- No LLDP frames are sent; no entries appear on connected switch
Evidence
The container spec at /usr/local/lib/containers/lldpd.yaml on the node shows:
container:
args:
- -d
- -u
- /var/run/lldpd/lldpd.socket
- -I
- eth*,enp*,ens*,eno*
entrypoint: /usr/local/sbin/lldpd
end0 is the interface name assigned by Talos predictable naming (udev firmware index d0) on CM4/Pi5 hardware. It is a fully physical interface — lldpd can bind to it correctly if told to. The -I CLI arg takes precedence over any configure system interface pattern directive in a user-supplied ExtensionServiceConfig configfile, so there is no workaround available to users without patching the extension.
For reference, end* is a known predictable interface name on Raspberry Pi hardware and has been documented as such in other projects: cilium/cilium#41919
Proposed Fix
Add end* to the -I arg in the lldpd container spec:
container:
args:
- -d
- -u
- /var/run/lldpd/lldpd.socket
- -I
- eth*,enp*,ens*,eno*,end*
entrypoint: /usr/local/sbin/lldpd
Alternatively, if the intent is to let users fully control interface selection via ExtensionServiceConfig, the -I arg could be removed from the container spec entirely and documented as a user responsibility via configure system interface pattern in their configfile.
Summary
The lldpd extension container spec hardcodes
-I eth*,enp*,ens*,eno*which excludesend*— the predictable interface name assigned by Talos on Raspberry Pi CM4 and Pi5 hardware. lldpd starts successfully but silently skips all interfaces and sends no LLDP frames.Environment
eth0matcheseth*); CM4 does not (end0not matched)Reproduction
ExtensionServiceConfigfor lldpdext-lldpdshowsRunningintalosctl servicestalosctl logs ext-lldpd— lldpd initializes but never logsAdding interface end0Evidence
The container spec at
/usr/local/lib/containers/lldpd.yamlon the node shows:end0is the interface name assigned by Talos predictable naming (udev firmware indexd0) on CM4/Pi5 hardware. It is a fully physical interface — lldpd can bind to it correctly if told to. The-ICLI arg takes precedence over anyconfigure system interface patterndirective in a user-suppliedExtensionServiceConfigconfigfile, so there is no workaround available to users without patching the extension.For reference,
end*is a known predictable interface name on Raspberry Pi hardware and has been documented as such in other projects: cilium/cilium#41919Proposed Fix
Add
end*to the-Iarg in the lldpd container spec:Alternatively, if the intent is to let users fully control interface selection via
ExtensionServiceConfig, the-Iarg could be removed from the container spec entirely and documented as a user responsibility viaconfigure system interface patternin their configfile.