Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

For mcproxy fixes #1073

Closed
wants to merge 14 commits into from
Closed

For mcproxy fixes #1073

wants to merge 14 commits into from

Conversation

mhusaam
Copy link

@mhusaam mhusaam commented Jul 9, 2024

Various improvements and fixes to the mcproxy package

mhusaam added 14 commits July 9, 2024 21:15
* query interval
* query response interval
* last member query interval
* robustness value
* fast leave
* max groups

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Every IGMPv3 message must be sent with IP Type of Service 0xc0
  (see RFC 3376, chapter 4).

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Fixed wrong order of parameters in group and source matching functions.
  Because of this error, the forwarding rules in the mcproxy config files
  do not work correctly. In the definition "table { (source | group) ... };"
  group was treated as source and vice versa.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* All threads in mcproxy were finished by the cpp runtime in a arbitrary
  order when the destructor of the base 'proxy' class was called.
  This caused pure virtual member functions of already destroyed child
  classes to be called (receiver::analyse_packet).
  Also, a 'timing::worker_thread' that was not finished in time could refer
  to an already destroyed queue of the 'proxy_instance'.

* This led to the crashes of the mcproxy.

* Fix: all code related to threads is reduced to one class 'base_worker'
  and thread finishing functions are called explicitly before the objects
  they use are destroyed.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* The main() function has a try ... catch block to catch c-string
  exceptions (trow "message"), but mcproxy generate a few other types
  of exceptions (std::strins) that will not be caught.

* All explicitly thrown exceptions are now caught.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Added a signal handler in mcproxy that dumps the group membership details
  information into file /tmp/igmp_snooping_stats.

* Group information is collected from arp table, bridge mdb table
  and bridge fdb table via netlink sockets, as all this information
  is not available at on place.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Add a check to not to send igmp group specific queries in case
  fast leave is enabled.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Get an explicit interface number for all packets instead of
  detecting interface by the source address.
* Some proxies may send IGMP reports with a zero IP source address (0.0.0.0),
  so interface number can't be reliably detected by source IP.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Instead of the source address, the destination address from IPV6_PKTINFO
  was used. This incorrect address was included in MLD multicast dump entries.
  Now the real src address of the packet is used.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
* Add handling of special IPv4 and IPv6 mcast addresses while
  proxying.

Signed-off-by: Mohd Husaam Mehdi <[email protected]>
@BKPepe
Copy link
Member

BKPepe commented Jul 9, 2024

I wonder, those patches, which you would like to add, where are they from? Because they are not part of the upstream repository https://github.com/mcproxy/mcproxy not even they are in pending pull requests.

@BKPepe
Copy link
Member

BKPepe commented Jul 20, 2024

Closing, we can not accept and merge so many patches as it leads to maintenance burden. It should be discussed with upstream.

@BKPepe BKPepe closed this Jul 20, 2024
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.

2 participants