diff --git a/lksctp-tools-1.0.16-libdir.patch b/lksctp-tools-1.0.16-libdir.patch index a70c287..965928b 100644 --- a/lksctp-tools-1.0.16-libdir.patch +++ b/lksctp-tools-1.0.16-libdir.patch @@ -1,10 +1,10 @@ ---- lksctp-tools-1.0.16/src/withsctp/withsctp.in.orig 2014-02-18 10:42:49.000000000 +0000 -+++ lksctp-tools-1.0.16/src/withsctp/withsctp.in 2014-05-06 12:24:12.931873787 +0100 +--- lksctp-tools-1.0.17/src/withsctp/withsctp.in.orig 2014-02-18 10:42:49.000000000 +0000 ++++ lksctp-tools-1.0.17/src/withsctp/withsctp.in 2014-05-06 12:24:12.931873787 +0100 @@ -1,6 +1,6 @@ #!/bin/sh # -*- sh -*- -LIBDIR=@libdir@/@PACKAGE@ +LIBDIR=`rpm --eval "%{_libdir}"`/@PACKAGE@ BINDIR=@bindir@ - export LD_PRELOAD=${LIBDIR}/libwithsctp.so.1.0.16 + export LD_PRELOAD=${LIBDIR}/libwithsctp.so.1.0.17 if ! ${BINDIR}/checksctp 2> /dev/null diff --git a/lksctp-tools-1.0.16.tar.gz b/lksctp-tools-1.0.16.tar.gz deleted file mode 100644 index c609d14..0000000 Binary files a/lksctp-tools-1.0.16.tar.gz and /dev/null differ diff --git a/lksctp-tools-1.0.17-sctp_status-fix-hostname-resolution.patch b/lksctp-tools-1.0.17-sctp_status-fix-hostname-resolution.patch new file mode 100644 index 0000000..acdcac7 --- /dev/null +++ b/lksctp-tools-1.0.17-sctp_status-fix-hostname-resolution.patch @@ -0,0 +1,117 @@ +From 18272a1f3cf8c3fe287c1bf8a007d0ef4de4cf2f Mon Sep 17 00:00:00 2001 +Message-Id: <18272a1f3cf8c3fe287c1bf8a007d0ef4de4cf2f.1467043686.git.marcelo.leitner@gmail.com> +From: Marcelo Ricardo Leitner +Date: Thu, 23 Jun 2016 18:27:26 -0300 +Subject: [PATCH] sctp_status: fix hostname resolution + +getaddrinfo already returns the IP address in binary format for the +given hostname/IP address, so there is no need to use inet_pton() +afterwards. + +Such usage, actually, was causing localhost6 to be evaluated as ::. + +Also, fix a leak on getaddrinfo results. + +Signed-off-by: Marcelo R. Leitner +Signed-off-by: Marcelo Ricardo Leitner +--- + src/apps/sctp_status.c | 38 +++++++++++++++++++++++--------------- + 1 file changed, 23 insertions(+), 15 deletions(-) + +diff --git a/src/apps/sctp_status.c b/src/apps/sctp_status.c +index 5bb48efc18074cb706112b10aa0d4a098954c3cd..46e9ca2af08ade626517a2d52bf0289d6be362e6 100644 +--- a/src/apps/sctp_status.c ++++ b/src/apps/sctp_status.c +@@ -280,11 +280,12 @@ int main(int argc, char *argv[]) { + case AF_INET: + t_addr = (struct sockaddr_in *)&s_rem; + +- t_addr->sin_family = AF_INET; ++ memcpy(t_addr, res->ai_addr, ++ res->ai_addrlen); ++ t_addr->sin_family = res->ai_family; + t_addr->sin_port = htons(remote_port); +- inet_pton(AF_INET, remote_host, &t_addr->sin_addr); + +- r_len = sizeof (struct sockaddr_in); ++ r_len = res->ai_addrlen; + #ifdef __FreeBSD__ + t_addr->sin_len = r_len; + #endif +@@ -292,13 +293,14 @@ int main(int argc, char *argv[]) { + case AF_INET6: + t_addr6 = (struct sockaddr_in6 *)&s_rem; + ++ memcpy(t_addr6, res->ai_addr, ++ res->ai_addrlen); ++ t_addr6->sin6_family = res->ai_family; ++ t_addr6->sin6_port = htons(remote_port); + if (interface) + t_addr6->sin6_scope_id = if_nametoindex(interface); +- t_addr6->sin6_family = AF_INET6; +- t_addr6->sin6_port = htons(remote_port); +- inet_pton(AF_INET6, remote_host, &t_addr6->sin6_addr); + +- r_len = sizeof (struct sockaddr_in6); ++ r_len = res->ai_addrlen; + + #ifdef __FreeBSD__ + t_addr6->sin6_len = r_len; +@@ -311,6 +313,8 @@ int main(int argc, char *argv[]) { + + DEBUG_PRINT(DEBUG_MAX, "remote:addr=%s, port=%s, family=%d\n", + host_s, serv_s, res->ai_family); ++ ++ freeaddrinfo(res); + } + + if (local_host != NULL) { +@@ -342,11 +346,13 @@ int main(int argc, char *argv[]) { + switch (res->ai_family) { + case AF_INET: + t_addr = (struct sockaddr_in *)&s_loc; +- t_addr->sin_family = AF_INET; ++ ++ memcpy(t_addr, res->ai_addr, ++ res->ai_addrlen); ++ t_addr->sin_family = res->ai_family; + t_addr->sin_port = htons(local_port); +- inet_pton(AF_INET, local_host, &t_addr->sin_addr); + +- l_len = sizeof (struct sockaddr_in); ++ l_len = res->ai_addrlen; + #ifdef __FreeBSD__ + t_addr->sin_len = l_len; + #endif +@@ -354,14 +360,14 @@ int main(int argc, char *argv[]) { + case AF_INET6: + t_addr6 = (struct sockaddr_in6 *)&s_loc; + ++ memcpy(t_addr6, res->ai_addr, ++ res->ai_addrlen); ++ t_addr6->sin6_family = res->ai_family; ++ t_addr6->sin6_port = htons(local_port); + if (interface) + t_addr6->sin6_scope_id = if_nametoindex(interface); +- t_addr6->sin6_family = AF_INET6; +- t_addr6->sin6_port = htons(local_port); + +- inet_pton(AF_INET6, local_host, &t_addr6->sin6_addr); +- +- l_len = sizeof (struct sockaddr_in6); ++ l_len = res->ai_addrlen; + + #ifdef __FreeBSD__ + t_addr6->sin6_len = l_len; +@@ -377,6 +383,8 @@ int main(int argc, char *argv[]) { + + DEBUG_PRINT(DEBUG_MAX, "local:addr=%s, port=%s, family=%d\n", + host_s, serv_s, res->ai_family); ++ ++ freeaddrinfo(res); + } + + /* Let the testing begin. */ +-- +2.5.5 + diff --git a/lksctp-tools-1.0.17.tar.gz b/lksctp-tools-1.0.17.tar.gz new file mode 100644 index 0000000..faceb00 Binary files /dev/null and b/lksctp-tools-1.0.17.tar.gz differ diff --git a/lksctp-tools.spec b/lksctp-tools.spec index fba3d1a..7b53a97 100644 --- a/lksctp-tools.spec +++ b/lksctp-tools.spec @@ -1,83 +1,95 @@ -Name: lksctp-tools -Version: 1.0.16 -Release: 11 -Summary: Linux Kernel Stream Control Transmission Protocol Tools - -License: GPLv2 and GPLv2+ and LGPLv2 and MIT -URL: http://lksctp.sourceforge.net -Source0: https://downloads.sourceforge.net/project/lksctp/lksctp-tools/%{name}-%{version}.tar.gz - -BuildRequires: make gcc libtool autoconf automake - +Summary: User-space access to Linux Kernel SCTP +Name: lksctp-tools +Version: 1.0.17 +Release: 1%{?dist} +# src/apps/bindx_test.C is GPLv2, I've asked upstream for clarification +License: GPLv2 and GPLv2+ and LGPLv2 and MIT +Group: System Environment/Libraries +URL: http://lksctp.sourceforge.net +Source0: http://downloads.sourceforge.net/lksctp/%{name}-%{version}.tar.gz +Patch0: lksctp-tools-1.0.16-libdir.patch +Patch1: lksctp-tools-1.0.17-sctp_status-fix-hostname-resolution.patch +BuildRequires: libtool, automake, autoconf %description -The lksctp-tools project provides a Linux user space library for SCTP (libsctp) -including C language header files (netinet/sctp.h) for accessing SCTP specific -application programming interfaces not provided by the standard sockets, -and also some helper utilities around SCTP. +This is the lksctp-tools package for Linux Kernel SCTP (Stream Control +Transmission Protocol) Reference Implementation. -For more information on the features and functions currently supported by -lksctp, please refer to the documentation in the Linux kernel resp. in the -lksctp-tools package. The lksctp-tools source contains a set of test programs -which would also serve as example applications. +This package is intended to supplement the Linux Kernel SCTP Reference +Implementation now available in the Linux kernel source tree in +versions 2.5.36 and following. For more information on LKSCTP see the +package documentation README file, section titled "LKSCTP - Linux +Kernel SCTP." +This package contains the base run-time library and command-line tools. -%package devel -Summary: Development files for %{name} -Requires: %{name} = %{version}-%{release} - +%package devel +Summary: Development files for lksctp-tools +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} %description devel -Development files for %{name} which include header files and dynamic -libraries. +Development files for lksctp-tools which include man pages, header files, +static libraries, symlinks to dynamic libraries and some tutorial source code. +%package doc +Summary: Documents pertaining to SCTP +Group: System Environment/Libraries +Requires: %{name} = %{version}-%{release} -%package_help - +%description doc +Documents pertaining to LKSCTP & SCTP in general (IETF RFC's & Internet +Drafts). %prep -%autosetup -n %{name}-%{version} -p1 - +%setup -q +%patch0 -p1 +%patch1 -p1 %build -rm -rf configure && sh bootstrap +[ ! -x ./configure ] && sh bootstrap %configure --disable-static -%disable_rpath -%make_build +# remove rpath from libtool +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool +make %{?_smp_mflags} %install -%make_install -%delete_la +rm -f doc/rfc2960.txt doc/states.txt +make install DESTDIR="$RPM_BUILD_ROOT" INSTALL="install -p" +find $RPM_BUILD_ROOT/%{_libdir}/ -name "*.la" | xargs rm -f -%pre -%preun %post -p /sbin/ldconfig + %postun -p /sbin/ldconfig - -%files -%defattr(-,root,root) -%license COPYING* +%files +%defattr(-,root,root,-) +%doc AUTHORS ChangeLog COPYING* README %{_bindir}/* %{_libdir}/libsctp.so.* +%dir %{_libdir}/lksctp-tools/ %{_libdir}/lksctp-tools/libwithsctp.so.* - +%{_mandir}/man7/* %files devel +%defattr(-,root,root,-) %{_includedir}/* %{_libdir}/libsctp.so %{_libdir}/lksctp-tools/libwithsctp.so +%{_libdir}/pkgconfig/libsctp.pc %{_datadir}/lksctp-tools/ - - -%files help -%doc AUTHORS ChangeLog README doc/*.txt %{_mandir}/man3/* -%{_mandir}/man7/* +%files doc +%defattr(-,root,root,-) +%doc doc/*.txt + +%changelog +* Tue Jun 30 2020 hanhui - 1.0.17-1 +- openEuler Mainline Update to 1.0.17 -%changelog * Thu Nov 28 2019 Qianbiao.NG - 1.0.16-11 -- Repackage for openEuler OS +- repackage for openEuler OS