From 0e85c35e502e3607a82ce34bf1664977d5185e62 Mon Sep 17 00:00:00 2001 From: wanfeng Date: Wed, 3 Jul 2024 17:28:05 +0800 Subject: [PATCH] add MCAST_MSFILTER in setsockopt for MLDv2 of IPv6 (cherry picked from commit 840b330fab146ad8706b7f7ea6acf80f7c1f6a6e) --- ...LTER-in-setsockopt-for-MLDv2-of-IPv6.patch | 44 +++++++++++++++++++ lwip.spec | 7 ++- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 0144-add-MCAST_MSFILTER-in-setsockopt-for-MLDv2-of-IPv6.patch diff --git a/0144-add-MCAST_MSFILTER-in-setsockopt-for-MLDv2-of-IPv6.patch b/0144-add-MCAST_MSFILTER-in-setsockopt-for-MLDv2-of-IPv6.patch new file mode 100644 index 0000000..463d521 --- /dev/null +++ b/0144-add-MCAST_MSFILTER-in-setsockopt-for-MLDv2-of-IPv6.patch @@ -0,0 +1,44 @@ +From b6e9527f073d81ee9a3aa186c86a6a4fc8ff6a0b Mon Sep 17 00:00:00 2001 +From: wanfeng +Date: Wed, 3 Jul 2024 17:01:53 +0800 +Subject: [PATCH] add MCAST_MSFILTER in setsockopt for MLDv2 of IPv6 + +--- + src/api/sockets.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/src/api/sockets.c b/src/api/sockets.c +index 7a67650..9e6ba90 100644 +--- a/src/api/sockets.c ++++ b/src/api/sockets.c +@@ -4124,6 +4124,27 @@ lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_ + if (NETCONNTYPE_GROUPV6(netconn_type(sock->conn)) == NETCONN_RAW_IPV6) { + err = mcast_sock_block_unblock_source_group(&sock->conn->pcb.raw->ipmc, optname, (const struct group_source_req *)optval); + } else ++#endif /* LWIP_RAW */ ++ { ++ done_socket(sock); ++ return ENOPROTOOPT; ++ } ++ break; ++ case MCAST_MSFILTER: ++ LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, struct group_filter); ++ if (((const struct group_filter *)optval)->gf_group.ss_family != AF_INET6) { ++ done_socket(sock); ++ return EINVAL; ++ } ++#if LWIP_UDP ++ if (NETCONNTYPE_GROUPV6(netconn_type(sock->conn)) == NETCONN_UDP_IPV6) { ++ err = mcast_sock_set_groupfilter(&sock->conn->pcb.udp->ipmc, optname, (const struct group_filter *)optval); ++ } else ++#endif /* LWIP_UDP */ ++#if LWIP_RAW ++ if (NETCONNTYPE_GROUPV6(netconn_type(sock->conn)) == NETCONN_RAW_IPV6) { ++ err = mcast_sock_set_groupfilter(&sock->conn->pcb.raw->ipmc, optname, (const struct group_filter *)optval); ++ } else + #endif /* LWIP_RAW */ + { + done_socket(sock); +-- +2.25.1 + diff --git a/lwip.spec b/lwip.spec index 7f31f1f..5b48f75 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: 36 +Release: 37 License: BSD URL: http://savannah.nongnu.org/projects/lwip/ Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip @@ -155,6 +155,8 @@ Patch9139: 0140-add-IP_ADD_SOURCE_MEMBERSHIP-to-setsockopt-for-igmpv3.patch Patch9140: 0141-Improve-size-of-multicast-specifications.patch Patch9141: 0142-virtio-record-local_port-for-port_map-of-virtio.patch Patch9142: 0143-add-MCAST_MSFILTER-to-setsockopt-for-IGMPv3.patch +Patch9143: 0144-add-MCAST_MSFILTER-in-setsockopt-for-MLDv2-of-IPv6.patch + BuildRequires: gcc-c++ dos2unix dpdk-devel #Requires: @@ -183,6 +185,9 @@ cd %{_builddir}/%{name}-%{version}/src %{_libdir}/liblwip.a %changelog +* Wed Jul 3 2024 wanfeng - 2.2.0-37 +- add MCAST_MSFILTER in setsockopt for MLDv2 of IPv6 + * Fri Jun 28 2024 wanfeng - 2.2.0-36 - add MCAST_MSFILTER to setsockopt for IGMPv3