Skip to content

omcproxy: route updates, querier settings, fast_leave, altnet and fixes - #28

Closed
blogic wants to merge 9 commits into
openwrt:masterfrom
blogic:pending-281026
Closed

blogic wants to merge 9 commits into
openwrt:masterfrom
blogic:pending-281026

Conversation

@blogic

@blogic blogic commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Carries #24, with prefixed titles and reworded bodies, followed by:

  • proxy: update the routes of a group when its members change
  • proxy: add querier settings options
  • proxy: add the fast_leave option
  • proxy: add the altnet option
  • querier: include older queriers in the election

mu-b added 4 commits October 28, 2026 10:36
igmp_send_query() never incremented cnt, so a group-and-source-specific
query went out without sources.

Signed-off-by: Neil Kettle <neil@digit-labs.org>
client_init() leaked igmp_fd when the MLD socket could not be created.

Signed-off-by: Neil Kettle <neil@digit-labs.org>
mrib_clean_iface() set iface->ifindex to 0 before it used it, so the
IP_DROP_MEMBERSHIP and IPV6_DROP_MEMBERSHIP calls ran with ifindex 0
and the all-routers memberships of the interface were not dropped.

Signed-off-by: Neil Kettle <neil@digit-labs.org>
addrbuf in mld_handle() holds an IPv6 address but had INET_ADDRSTRLEN
(16) bytes. inet_ntop() fails for longer addresses, and the log message
about another querier then printed an uninitialised buffer.

Signed-off-by: Neil Kettle <neil@digit-labs.org>
@blogic blogic changed the title proxy: faster join/leave, querier settings, older querier election omcproxy: querier settings, fast_leave, altnet and pending fixes Oct 28, 2026
The outgoing interfaces of a multicast route are set only when the
kernel reports a new source. A host that joined a group whose source
was already known got no traffic until the route expired after
MRIB_DEFAULT_LIFETIME (125 s), and a leave kept the traffic flowing for
as long.

proxy_trigger() now updates the outgoing interfaces of the known routes
of the group in place, so a join or leave takes effect at once and the
forwarding has no gap.

Signed-off-by: John Crispin <john@phrozen.org>
Add the proxy options robustness=, query_interval= (seconds),
query_response_interval= and last_member_query_interval= (tenths of a
second). They set the querier of the downlinks.

Keep the settings per address family, so that each family gets its own
settings back when another querier goes away.

Signed-off-by: John Crispin <john@phrozen.org>
With fast_leave, a leave ends the group or source at once instead of
after the last member query time. The group specific queries still go
out, so other members on the link report again.

Signed-off-by: John Crispin <john@phrozen.org>
altnet=<prefix>, repeatable, limits the routed sources of a proxy to
these networks. An address family without networks routes every
source.

Signed-off-by: John Crispin <john@phrozen.org>
IGMPv1/v2 and MLDv1 queriers were ignored in the election, so two
queriers stayed active on a link with an older router. An older query
carries no robustness or query interval, so it only takes over the
query role. Queries from 0.0.0.0 or ::, which snooping switches send
(RFC 4541 2.1.1), stay out of the election.

Signed-off-by: John Crispin <john@phrozen.org>
@blogic blogic changed the title omcproxy: querier settings, fast_leave, altnet and pending fixes omcproxy: route updates, querier settings, fast_leave, altnet and fixes Oct 28, 2026
@nbd168

nbd168 commented Oct 28, 2026

Copy link
Copy Markdown
Member

LGTM

@blogic

blogic commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

merged, Thanks !

@blogic blogic closed this Oct 28, 2026
blogic added a commit that referenced this pull request Oct 28, 2026
The outgoing interfaces of a multicast route are set only when the
kernel reports a new source. A host that joined a group whose source
was already known got no traffic until the route expired after
MRIB_DEFAULT_LIFETIME (125 s), and a leave kept the traffic flowing for
as long.

proxy_trigger() now updates the outgoing interfaces of the known routes
of the group in place, so a join or leave takes effect at once and the
forwarding has no gap.

Link: #28
Signed-off-by: John Crispin <john@phrozen.org>
blogic added a commit that referenced this pull request Oct 28, 2026
Add the proxy options robustness=, query_interval= (seconds),
query_response_interval= and last_member_query_interval= (tenths of a
second). They set the querier of the downlinks.

Keep the settings per address family, so that each family gets its own
settings back when another querier goes away.

Link: #28
Signed-off-by: John Crispin <john@phrozen.org>
blogic added a commit that referenced this pull request Oct 28, 2026
With fast_leave, a leave ends the group or source at once instead of
after the last member query time. The group specific queries still go
out, so other members on the link report again.

Link: #28
Signed-off-by: John Crispin <john@phrozen.org>
blogic added a commit that referenced this pull request Oct 28, 2026
altnet=<prefix>, repeatable, limits the routed sources of a proxy to
these networks. An address family without networks routes every
source.

Link: #28
Signed-off-by: John Crispin <john@phrozen.org>
blogic added a commit that referenced this pull request Oct 28, 2026
IGMPv1/v2 and MLDv1 queriers were ignored in the election, so two
queriers stayed active on a link with an older router. An older query
carries no robustness or query interval, so it only takes over the
query role. Queries from 0.0.0.0 or ::, which snooping switches send
(RFC 4541 2.1.1), stay out of the election.

Link: #28
Signed-off-by: John Crispin <john@phrozen.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants