Skip to content

os-igmp-proxy: doesn't respect CARP state #5118

@timrosu

Description

@timrosu

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

Describe the bug
igmp-proxy plugin doesn't respect carp status. If my primary firewall goes offline and later comes back, (multicast) iptv streams will freeze, because proxy on secondary node doesn't turn off.

To Reproduce
Steps to reproduce the behavior:

  1. Setup 2 opnsense instances with working carp failover.
  2. Set net.inet.carp.preempt tunable to 1 (only because my secondary device is a lot weaker).
  3. Install and configure os-igmp-proxy.
  4. Start iptv stream and confirm it works.
  5. Restart primary device.
  6. Wait for failover to secondary device.
  7. Stream resumes.
  8. Wait for primary device to come online and igmp proxy service to start.
  9. Stream starts glitching and dropping frames and eventually freezes (because 2 igmp proxies are running at the same time).

Client is my PC with mpv player.

Expected behavior

  • Igmp-proxy checks carp status before starting.
  • On Carp event change, igmp-proxy is started or stopped.

Screenshots
mpv screenshot with 2 igmp proxies active

Relevant log files
From primary device after the restart (opnsense-log | grep igmp):

<13>1 2026-01-03T18:48:42+01:00 opnsense1.infra.flandr.si opnsense 501 - [meta sequenceId="400"] /usr/local/etc/rc.bootup: plugins_configure bootup (execute task : igmpproxy_configure_do(1))
<12>1 2026-01-03T18:48:42+01:00 opnsense1.infra.flandr.si igmpproxy 52680 - [meta sequenceId="402"] can't join group 224.0.0.2 on interface vtnet1; Errno(48): Address already in use
<12>1 2026-01-03T18:48:42+01:00 opnsense1.infra.flandr.si igmpproxy 52680 - [meta sequenceId="403"] can't join group 224.0.0.22 on interface vtnet1; Errno(48): Address already in use
<13>1 2026-01-03T18:48:45+01:00 opnsense1.infra.flandr.si opnsense 79302 - [meta sequenceId="438"] /usr/local/etc/rc.newwanip: plugins_configure newwanip (execute task : igmpproxy_configure_do())
<12>1 2026-01-03T18:48:45+01:00 opnsense1.infra.flandr.si igmpproxy 53013 - [meta sequenceId="439"] select() failure; Errno(4): Interrupted system call
<12>1 2026-01-03T18:48:45+01:00 opnsense1.infra.flandr.si igmpproxy 53013 - [meta sequenceId="440"] MRT_DEL_MFC; Errno(49): Can't assign requested address
<12>1 2026-01-03T18:48:46+01:00 opnsense1.infra.flandr.si igmpproxy 39899 - [meta sequenceId="4"] can't join group 224.0.0.2 on interface vtnet1; Errno(48): Address already in use
<12>1 2026-01-03T18:48:46+01:00 opnsense1.infra.flandr.si igmpproxy 39899 - [meta sequenceId="5"] can't join group 224.0.0.22 on interface vtnet1; Errno(48): Address already in use
<12>1 2026-01-03T18:51:06+01:00 opnsense1.infra.flandr.si igmpproxy 40828 - [meta sequenceId="1"] MRT_DEL_MFC; Errno(49): Can't assign requested address

Additional context
I tried writing carp php script myself, but haven't found a way to mimic start and stop button action on /ui/core/service in webui. That one seems to use ajax web api to initiate the action.

Environment
OPNsense 25.7.10 (amd64)
os-igmp-proxy 1.5_6

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