Browse Source

rsync: fix ipv6 detection

Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
lilik-openwrt-22.03
Maxim Storchak 5 years ago
committed by Rosen Penev
parent
commit
e1cd4bcf0a
No known key found for this signature in database GPG Key ID: 36D31CFA845F0E3B
3 changed files with 176 additions and 19 deletions
  1. +6
    -0
      net/rsync/Makefile
  2. +170
    -0
      net/rsync/patches/000-fix-ipv6-detection.patch
  3. +0
    -19
      net/rsync/patches/010-disable-ssh-46-hint.patch

+ 6
- 0
net/rsync/Makefile View File

@ -20,6 +20,7 @@ PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:rsync:rsync
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
@ -57,6 +58,11 @@ CONFIGURE_ARGS += \
--with$(if $(CONFIG_RSYNC_zlib),,out)-included-zlib \
--$(if $(CONFIG_IPV6),en,dis)able-ipv6
define Build/Configure
$(call Build/Configure/Default)
$(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" reconfigure
endef
define Package/rsyncd
SECTION:=net
CATEGORY:=Network


+ 170
- 0
net/rsync/patches/000-fix-ipv6-detection.patch View File

@ -0,0 +1,170 @@
commit f25dc9d21a9aba2d4c5f3d21273e1f7924d591be
Author: Maxim Storchak <m.storchak@gmail.com>
Date: Sun Jun 28 14:23:03 2020 +0300
Based on Pierre-Olivier Mercier's patch for https://bugzilla.samba.org/show_bug.cgi?id=10715
Original commit message:
From 811db086507aceaec0022798dd418956cdd4b54e Mon Sep 17 00:00:00 2001
From: Pierre-Olivier Mercier <nemunaire@nemunai.re>
Date: Mon, 4 Sep 2017 22:29:55 +0200
Subject: [PATCH] Test IPv6 compatibility instead of relying on library probes.
Legacy configure behaviour was to detect IPv6 support through known IPv6
capable version of common standard libraries. Now: it runs a POSIX test
to determine if IPv6 is usable (in case it has not been disabled).
---
diff --git a/configure.ac b/configure.ac
index 28865ea..7a2bbfe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -339,119 +339,36 @@ if test x"$rsync_cv_HAVE_BROKEN_LARGEFILE" != x"yes"; then
AC_SYS_LARGEFILE
fi
-ipv6type=unknown
-ipv6lib=none
-ipv6trylibc=yes
-
+# Checks if IPv6 is requested
+AC_MSG_CHECKING([whether to enable ipv6])
AC_ARG_ENABLE(ipv6,
- AS_HELP_STRING([--disable-ipv6],[turn off IPv6 support]))
-if test x"$enable_ipv6" != x"no"; then
- AC_MSG_CHECKING([ipv6 stack type])
- for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta cygwin; do
- case $i in
- inria)
- # http://www.kame.net/
- AC_EGREP_CPP(yes, [
-#include <netinet/in.h>
-#ifdef IPV6_INRIA_VERSION
-yes
-#endif],
- [ipv6type=$i;
- AC_DEFINE(INET6, 1, [true if you have IPv6])
- ])
- ;;
- kame)
- # http://www.kame.net/
- AC_EGREP_CPP(yes, [
-#include <netinet/in.h>
-#ifdef __KAME__
-yes
-#endif],
- [ipv6type=$i;
- AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- linux-glibc)
- # http://www.v6.linux.or.jp/
- AC_EGREP_CPP(yes, [
-#include <features.h>
-#if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
-yes
-#endif],
- [ipv6type=$i;
-AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- linux-inet6)
- # http://www.v6.linux.or.jp/
- if test -d /usr/inet6 -o -f /usr/inet6/lib/libinet6.a; then
- ipv6type=$i
- ipv6lib=inet6
- ipv6libdir=/usr/inet6/lib
- ipv6trylibc=yes;
- AC_DEFINE(INET6, 1, [true if you have IPv6])
- CFLAGS="-I/usr/inet6/include $CFLAGS"
- fi
- ;;
- solaris)
- # http://www.sun.com
- AC_EGREP_CPP(yes, [
-#include <netinet/ip6.h>
-#ifdef __sun
-yes
-#endif],
- [ipv6type=$i;
- AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- toshiba)
- AC_EGREP_CPP(yes, [
-#include <sys/param.h>
-#ifdef _TOSHIBA_INET6
-yes
-#endif],
- [ipv6type=$i;
- ipv6lib=inet6;
- ipv6libdir=/usr/local/v6/lib;
- AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- v6d)
- AC_EGREP_CPP(yes, [
-#include </usr/local/v6/include/sys/v6config.h>
-#ifdef __V6D__
-yes
-#endif],
- [ipv6type=$i;
- ipv6lib=v6;
- ipv6libdir=/usr/local/v6/lib;
- AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- zeta)
- AC_EGREP_CPP(yes, [
-#include <sys/param.h>
-#ifdef _ZETA_MINAMI_INET6
-yes
-#endif],
- [ipv6type=$i;
- ipv6lib=inet6;
- ipv6libdir=/usr/local/v6/lib;
- AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- cygwin)
- AC_EGREP_CPP(yes, [
-#include <netinet/in.h>
-#ifdef _CYGWIN_IN6_H
-yes
-#endif],
- [ipv6type=$i;
- AC_DEFINE(INET6, 1, [true if you have IPv6])])
- ;;
- esac
- if test "$ipv6type" != "unknown"; then
- break
- fi
- done
- AC_MSG_RESULT($ipv6type)
+[ --disable-ipv6 disable ipv6 support],
+[ case "$enableval" in
+ no)
+ AC_MSG_RESULT(no)
+ ;;
+ *) AC_MSG_RESULT(yes)
+ AC_DEFINE(INET6, 1, [true if you have IPv6])
+ ;;
+ esac ],
- AC_SEARCH_LIBS(getaddrinfo, inet6)
-fi
+ AC_TRY_RUN([ /* AF_INET6 avalable check */
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+main()
+{
+ if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
+ exit(1);
+ else
+ exit(0);
+}
+],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(INET6, 1, [true if you have IPv6]),
+ AC_MSG_RESULT(no),
+ AC_MSG_RESULT(no)
+))
dnl Do you want to disable use of locale functions
AC_ARG_ENABLE([locale],

+ 0
- 19
net/rsync/patches/010-disable-ssh-46-hint.patch View File

@ -1,19 +0,0 @@
diff --git a/main.c b/main.c
index b41a394..dd49f87 100644
--- a/main.c
+++ b/main.c
@@ -572,14 +572,6 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in
args[argc++] = "-l";
args[argc++] = user;
}
-#ifdef AF_INET
- if (default_af_hint == AF_INET && strcmp(t, "ssh") == 0)
- args[argc++] = "-4"; /* we're using ssh so we can add a -4 option */
-#endif
-#ifdef AF_INET6
- if (default_af_hint == AF_INET6 && strcmp(t, "ssh") == 0)
- args[argc++] = "-6"; /* we're using ssh so we can add a -6 option */
-#endif
args[argc++] = machine;
#endif

Loading…
Cancel
Save