miredo: Initial version 1.2.6
authorNikita Vostokov <yawosk@yandex.com>
Sun, 1 Mar 2020 12:13:58 +0000 (15:13 +0300)
committerNikita Vostokov <yawosk@yandex.com>
Sun, 1 Mar 2020 12:13:58 +0000 (15:13 +0300)
Teredo IPv6 tunneling utility

Signed-off-by: Nikita Vostokov <yawosk@yandex.com>
ipv6/miredo/Makefile [new file with mode: 0644]
ipv6/miredo/files/miredo.init [new file with mode: 0644]
ipv6/miredo/patches/001-fix-musl-pthread-non-portable.patch [new file with mode: 0644]
ipv6/miredo/patches/002-fix-redefinition-ethadr.patch [new file with mode: 0644]
ipv6/miredo/patches/003-fix-warnings-portable-defined.patch [new file with mode: 0644]

diff --git a/ipv6/miredo/Makefile b/ipv6/miredo/Makefile
new file mode 100644 (file)
index 0000000..30463be
--- /dev/null
@@ -0,0 +1,70 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=miredo
+PKG_VERSION:=1.2.6
+PKG_RELEASE:=1
+
+PKG_SOURCE:=miredo-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://www.remlab.net/files/miredo/
+PKG_HASH:=fa26d2f4a405415833669e2e2e22677b225d8f83600844645d5683535ea43149
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_CONFIG_DEPENDS := \
+       CONFIG_IPV6 \
+       CONFIG_TUN
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+PKG_MAINTAINER:=
+
+include $(INCLUDE_DIR)/package.mk
+
+CONFIGURE_ARGS+= \
+               --enable-shared \
+               --enable-static \
+               --disable-binreloc \
+               --with-pic \
+               --without-libiconv-prefix \
+               --without-libintl-prefix
+
+TARGET_CFLAGS+= $(FPIC) \
+               -std=gnu99 \
+               -O3 \
+               -ffunction-sections \
+               -fdata-sections \
+               -Wno-format-security
+
+TARGET_LDFLAGS += -Wl,--gc-sections
+
+define Package/miredo
+       SECTION:=net
+       CATEGORY:=Network
+       TITLE:=Teredo IPv6 tunneling utility
+       URL:=https://www.remlab.net/miredo/
+       VERSION:=$(PKG_VERSION)
+       DEPENDS:=@IPV6 +libpthread +librt +kmod-tun
+endef
+
+define Package/miredo/description
+ Miredo is an open-source Teredo IPv6 tunneling software, for Linux and the BSD
+ operating systems. It includes functional implementations of all components of
+ the Teredo specification (client, relay and server). It is meant to provide
+ IPv6 connectivity even from behind NAT devices.
+endef
+
+define Package/miredo/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/miredo $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/miredo-checkconf $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/usr/lib/miredo
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/miredo/miredo-privproc $(1)/usr/lib/miredo
+       $(INSTALL_DIR) $(1)/etc/miredo
+       $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/miredo/miredo.conf $(1)/etc/miredo
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/etc/miredo/client-hook $(1)/etc/miredo
+       $(INSTALL_DIR) $(1)/etc/init.d/
+       $(INSTALL_BIN) ./files/miredo.init $(1)/etc/init.d/miredo
+endef
+
+$(eval $(call BuildPackage,miredo))
diff --git a/ipv6/miredo/files/miredo.init b/ipv6/miredo/files/miredo.init
new file mode 100644 (file)
index 0000000..9ff1d8d
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh /etc/rc.common
+
+USE_PROCD=1
+START=20
+
+PROG=/usr/sbin/miredo
+CONFFILE=/etc/miredo/miredo.conf
+
+start_service() {
+  procd_open_instance
+  procd_set_param command $PROG -f -c $CONFFILE
+  procd_set_param respawn
+  procd_set_param file $CONFFILE
+  procd_set_param stdout 1 # forward stdout of the command to logd
+  procd_set_param stderr 1 # same for stderr
+  procd_close_instance
+}
diff --git a/ipv6/miredo/patches/001-fix-musl-pthread-non-portable.patch b/ipv6/miredo/patches/001-fix-musl-pthread-non-portable.patch
new file mode 100644 (file)
index 0000000..bbaa54c
--- /dev/null
@@ -0,0 +1,24 @@
+--- a/libteredo/debug.h        2009-02-28 23:17:14.000000000 +0300
++++ b/libteredo/debug.h        2019-04-07 01:46:48.235087395 +0300
+@@ -43,8 +43,10 @@
+ #  ifdef __linux__
+ #   include <errno.h>
+ #   include <assert.h>
+-#   undef PTHREAD_MUTEX_INITIALIZER
+-#   define PTHREAD_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
++#   if defined(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP)
++#     undef PTHREAD_MUTEX_INITIALIZER
++#     define PTHREAD_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
++#   endif
+ static inline int
+ d_pthread_mutex_init (pthread_mutex_t *mutex, pthread_mutexattr_t *pattr)
+@@ -57,7 +59,7 @@
+               pthread_mutexattr_init (&attr);
+       }
+-      pthread_mutexattr_settype (pattr, PTHREAD_MUTEX_ERRORCHECK_NP);
++      pthread_mutexattr_settype (pattr, PTHREAD_MUTEX_ERRORCHECK);
+       int res = pthread_mutex_init (mutex, pattr);
+       if (pattr == &attr)
diff --git a/ipv6/miredo/patches/002-fix-redefinition-ethadr.patch b/ipv6/miredo/patches/002-fix-redefinition-ethadr.patch
new file mode 100644 (file)
index 0000000..5cd20f4
--- /dev/null
@@ -0,0 +1,21 @@
+--- a/libtun6/tun6.c   2012-09-12 17:03:59.000000000 +0400
++++ b/libtun6/tun6.c   2019-04-07 02:21:07.439952535 +0300
+@@ -53,7 +53,7 @@
+ const char os_driver[] = "Linux";
+ # define USE_LINUX 1
+-# include <linux/if_tun.h> // TUNSETIFF - Linux tunnel driver
++# include <linux/if_tun.h> // TUNSETIFF - Linux tunnel driver, ETH_P_IPV6
+ /*
+  * <linux/ipv6.h> conflicts with <netinet/in.h> and <arpa/inet.h>,
+  * so we've got to declare this structure by hand.
+@@ -65,7 +65,7 @@
+ };
+ # include <net/route.h> // struct in6_rtmsg
+-# include <netinet/if_ether.h> // ETH_P_IPV6
++//# include <netinet/if_ether.h> // ETH_P_IPV6
+ typedef struct
+ {
+
diff --git a/ipv6/miredo/patches/003-fix-warnings-portable-defined.patch b/ipv6/miredo/patches/003-fix-warnings-portable-defined.patch
new file mode 100644 (file)
index 0000000..d812f77
--- /dev/null
@@ -0,0 +1,47 @@
+--- a/include/gettext.h        2012-09-12 16:57:52.000000000 +0400
++++ b/include/gettext.h        2019-04-07 01:11:52.492519796 +0300
+@@ -182,7 +182,7 @@
+   (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined(__STRICT_ANSI__)) \
+    /* || __STDC_VERSION__ >= 199901L */ )
+-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
++#if !defined(_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS)
+ #include <stdlib.h>
+ #endif
+@@ -206,7 +206,7 @@
+   size_t msgctxt_len = strlen (msgctxt) + 1;
+   size_t msgid_len = strlen (msgid) + 1;
+   const char *translation;
+-#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
++#if defined(_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS)
+   char msg_ctxt_id[msgctxt_len + msgid_len];
+ #else
+   char buf[1024];
+@@ -221,7 +221,7 @@
+       msg_ctxt_id[msgctxt_len - 1] = '\004';
+       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+       translation = dcgettext (domain, msg_ctxt_id, category);
+-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
++#if !defined(_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS)
+       if (msg_ctxt_id != buf)
+         free (msg_ctxt_id);
+ #endif
+@@ -252,7 +252,7 @@
+   size_t msgctxt_len = strlen (msgctxt) + 1;
+   size_t msgid_len = strlen (msgid) + 1;
+   const char *translation;
+-#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
++#if defined(_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS)
+   char msg_ctxt_id[msgctxt_len + msgid_len];
+ #else
+   char buf[1024];
+@@ -267,7 +267,7 @@
+       msg_ctxt_id[msgctxt_len - 1] = '\004';
+       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+       translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
++#if !defined(_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS)
+       if (msg_ctxt_id != buf)
+         free (msg_ctxt_id);
+ #endif