From 7d22ca7eb534d726e6cac5a6b2f777e90a82e5e2 Mon Sep 17 00:00:00 2001 From: wanfeng Date: Fri, 10 May 2024 15:19:47 +0800 Subject: [PATCH] allow multicast membership to register multiple times (cherry picked from commit 8034fbc3dea7d6d4ba831f459cf65e32d4ee476d) --- ...embership-to-register-multiple-times.patch | 34 +++++++++++++++++++ lwip.spec | 6 +++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 0133-allow-membership-to-register-multiple-times.patch diff --git a/0133-allow-membership-to-register-multiple-times.patch b/0133-allow-membership-to-register-multiple-times.patch new file mode 100644 index 0000000..2249b9a --- /dev/null +++ b/0133-allow-membership-to-register-multiple-times.patch @@ -0,0 +1,34 @@ +From 3b23b3a69d71a862dfe7fca1b53b673dc868ffa5 Mon Sep 17 00:00:00 2001 +From: wanfeng +Date: Fri, 10 May 2024 15:11:12 +0800 +Subject: [PATCH] allow membership to register multiple times + +--- + src/api/sockets.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/api/sockets.c b/src/api/sockets.c +index 04df15a..5a72b62 100644 +--- a/src/api/sockets.c ++++ b/src/api/sockets.c +@@ -4501,7 +4501,7 @@ lwip_socket_register_membership(int s, unsigned int if_idx, const ip4_addr_t *mu + #else + for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) { + #endif +- if (socket_ipv4_multicast_memberships[i].sock == NULL) { ++ if (socket_ipv4_multicast_memberships[i].sock == NULL || (socket_ipv4_multicast_memberships[i].sock == sock)) { + socket_ipv4_multicast_memberships[i].sock = sock; + socket_ipv4_multicast_memberships[i].if_idx = if_idx; + ip4_addr_copy(socket_ipv4_multicast_memberships[i].multi_addr, *multi_addr); +@@ -4617,7 +4617,7 @@ lwip_socket_register_mld6_membership(int s, unsigned int if_idx, const ip6_addr_ + #else + for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) { + #endif +- if (socket_ipv6_multicast_memberships[i].sock == NULL) { ++ if (socket_ipv6_multicast_memberships[i].sock == NULL || (socket_ipv6_multicast_memberships[i].sock == sock)) { + socket_ipv6_multicast_memberships[i].sock = sock; + socket_ipv6_multicast_memberships[i].if_idx = (u8_t)if_idx; + ip6_addr_copy(socket_ipv6_multicast_memberships[i].multi_addr, *multi_addr); +-- +2.25.1 + diff --git a/lwip.spec b/lwip.spec index 612122b..b4b3fc3 100644 --- a/lwip.spec +++ b/lwip.spec @@ -4,7 +4,7 @@ Summary: lwip is a small independent implementation of the TCP/IP protocol suite Name: lwip Version: 2.2.0 -Release: 24 +Release: 26 License: BSD URL: http://savannah.nongnu.org/projects/lwip/ Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip @@ -144,6 +144,7 @@ Patch9128: 0129-memset-gazelle_quintuple-in-vdev_reg_done.patch Patch9129: 0130-add-MCAST_JOIN_GROUP-to-setsockopt-for-igmpv3.patch Patch9130: 0131-add-MCAST_BLOCK_SOURCE-to-setsockopt-for-igmpv3.patch Patch9131: 0132-mod-udp-loop-mem-leak.patch +Patch9132: 0133-allow-membership-to-register-multiple-times.patch BuildRequires: gcc-c++ dos2unix dpdk-devel @@ -173,6 +174,9 @@ cd %{_builddir}/%{name}-%{version}/src %{_libdir}/liblwip.a %changelog +* Fri May 10 2024 wanfeng - 2.2.0-26 +- allow multicast membership to register multiple times + * Tue May 07 2024 hankangkang - 2.2.0-25 - Fix MBUF memory leakage issue when message length is greater than MTU