Skip to content

lldpd extension misses end* interfaces on Raspberry Pi CM4/Pi5 (predictable interface naming) #1025

@daniel-hurley

Description

@daniel-hurley

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

  1. Install Talos on a Raspberry Pi CM4 or Pi5 with the lldpd extension included in your schematic
  2. Apply an ExtensionServiceConfig for lldpd
  3. Observe ext-lldpd shows Running in talosctl services
  4. Check logs: talosctl logs ext-lldpd — lldpd initializes but never logs Adding interface end0
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions