aiccu: new package
authorMichael Rommel <rommel@layer-7.net>
Fri, 13 Sep 2013 20:57:04 +0000 (22:57 +0200)
committerPeter Korsgaard <jacmet@sunsite.dk>
Sun, 15 Sep 2013 19:38:27 +0000 (21:38 +0200)
Automatic IPv6 Connectivity Configuration Utility for users of a
IPv6 tunnel broker, developed by sixxs.net

[Peter: drop strip patch, pass TARGET_CONFIGURE_OPTS]
Signed-off-by: Michael Rommel <rommel@layer-7.net>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/Config.in
package/aiccu/Config.in [new file with mode: 0644]
package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch [new file with mode: 0644]
package/aiccu/aiccu.mk [new file with mode: 0644]

index ca92812d83a355e32e5f9d2189da07da09296bac..973d32c70757b8ad9806e82633da35fd9ee1829b 100644 (file)
@@ -743,6 +743,7 @@ source "package/sound-theme-freedesktop/Config.in"
 endmenu
 
 menu "Networking applications"
+source "package/aiccu/Config.in"
 source "package/aircrack-ng/Config.in"
 source "package/argus/Config.in"
 source "package/arptables/Config.in"
diff --git a/package/aiccu/Config.in b/package/aiccu/Config.in
new file mode 100644 (file)
index 0000000..1c6f554
--- /dev/null
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_AICCU
+       bool "aiccu"
+       depends on BR2_INET_IPV6
+       depends on BR2_USE_WCHAR
+       select BR2_PACKAGE_GNUTLS
+       help
+         SixXS Automatic IPv6 Connectivity Client Utility
+
+         AICCU (Automatic IPv6 Connectivity Client Utility) makes it
+         easy for users to get IPv6 connectivity. After having
+         requested an account, tunnel and optionally a subnet, AICCU
+         can be used to automatically configure the tunnel. AICCU
+         supports TIC (Tunnel Information & Control protocol), which it
+         uses for retrieving the tunnel configuration information,
+         AYIYA, which allows tunnels to be created even behind
+         firewalls and NAT's.
+
+         http://www.sixxs.net/tools/aiccu/
+
+comment "aiccu requires a toolchain with IPv6 and WCHAR support"
+       depends on !(BR2_INET_IPV6 && BR2_USE_WCHAR)
diff --git a/package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch b/package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch
new file mode 100644 (file)
index 0000000..d316f8f
--- /dev/null
@@ -0,0 +1,104 @@
+aiccu.h, common.c, common.h: fixes for deprecated GNUTLS functions and types
+resolver.c: fixes for selection of wrong resolver function under uclibc
+
+Signed-off-by: Michael Rommel <rommel@layer-7.net>
+
+diff -purN aiccu_20070115.orig/common/aiccu.h aiccu_20070115/common/aiccu.h
+--- aiccu_20070115.orig/common/aiccu.h 2007-01-15 13:01:43.000000000 +0100
++++ aiccu_20070115/common/aiccu.h      2013-08-31 23:50:53.651936146 +0200
+@@ -111,7 +111,7 @@ struct AICCU_conf
+ #endif
+ #ifdef AICCU_GNUTLS
+-      gnutls_certificate_credentials  tls_cred;       /* GNUTLS credentials */
++      gnutls_certificate_credentials_t tls_cred;      /* GNUTLS credentials */
+ #endif
+       bool            daemonize;              /* Daemonize? */
+diff -purN aiccu_20070115.orig/common/common.c aiccu_20070115/common/common.c
+--- aiccu_20070115.orig/common/common.c        2006-12-21 15:08:50.000000000 +0100
++++ aiccu_20070115/common/common.c     2013-09-01 01:21:36.031396740 +0200
+@@ -271,9 +271,8 @@ TLSSOCKET sock_alloc(void);
+ TLSSOCKET sock_alloc(void)
+ {
+ #ifdef AICCU_GNUTLS
+-      /* Allow connections to servers that have OpenPGP keys as well */
+-      const int       cert_type_priority[3] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 };
+       int             ret;
++      const char      *err;
+ #endif /* AICCU_GNUTLS*/
+       TLSSOCKET       sock;   
+@@ -297,11 +296,16 @@ TLSSOCKET sock_alloc(void)
+       }
+       /* Use default priorities */
+-      gnutls_set_default_priority(sock->session);
+-      /* XXX: Return value is not documented in GNUTLS documentation! */
+-
+-      gnutls_certificate_type_set_priority(sock->session, cert_type_priority);
+-      /* XXX: Return value is not documented in GNUTLS documentation! */
++      ret = gnutls_priority_set_direct(sock->session, "NORMAL", &err); 
++      if (ret < 0)
++      {
++              if (ret == GNUTLS_E_INVALID_REQUEST)
++              {
++                      dolog( LOG_ERR, "TLS set priority failed, syntax error at: %s\n", err);
++              }
++              free(sock);
++              return NULL;
++      }
+       /* Configure the x509 credentials for the current session */
+       gnutls_credentials_set(sock->session, GNUTLS_CRD_CERTIFICATE, g_aiccu->tls_cred);
+@@ -474,7 +478,7 @@ bool sock_gotls(TLSSOCKET sock)
+       }
+       /* Set the transport */
+-      gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr)sock->socket);
++      gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr_t) sock->socket);
+       /* Perform the TLS handshake */
+       ret = gnutls_handshake(sock->session);
+diff -purN aiccu_20070115.orig/common/common.h aiccu_20070115/common/common.h
+--- aiccu_20070115.orig/common/common.h        2007-01-11 15:50:51.000000000 +0100
++++ aiccu_20070115/common/common.h     2013-08-31 23:26:13.683659455 +0200
+@@ -381,7 +381,7 @@ struct tlssocket
+       SOCKET                  socket;
+ #ifdef AICCU_GNUTLS
+       bool                    tls_active;     /* TLS active? */
+-      gnutls_session          session;        /* The GnuTLS sesision */
++      gnutls_session_t        session;        /* The GnuTLS sesision */
+ #endif
+ };
+diff -purN aiccu_20070115.orig/common/resolver.c aiccu_20070115/common/resolver.c
+--- aiccu_20070115.orig/common/resolver.c      2006-07-23 16:55:14.000000000 +0200
++++ aiccu_20070115/common/resolver.c   2013-08-31 23:44:31.574866862 +0200
+@@ -26,7 +26,7 @@
+ int getrrs(const char *label, int rrtype, void gotrec(unsigned int num, int type, const char *record))
+ {
+-#ifdef _LINUX
++#if defined(_LINUX) && !defined(__UCLIBC__)
+       struct __res_state      res;
+ #endif
+       unsigned char           answer[8192];
+@@ -38,7 +38,7 @@ int getrrs(const char *label, int rrtype
+       uint16_t                type = 0, class = 0;
+       uint32_t                ttl = 0;
+-#ifdef _LINUX
++#if defined(_LINUX) && !defined(__UCLIBC__)
+       memset(&res, 0, sizeof(res));
+       res.options = RES_DEBUG;
+       res_ninit(&res);
+@@ -47,7 +47,7 @@ int getrrs(const char *label, int rrtype
+ #endif
+       memset(answer, 0, sizeof(answer));
+-#ifdef _LINUX
++#if defined(_LINUX) && !defined(__UCLIBC__)
+       ret = res_nquery(&res, label, C_IN, rrtype, answer, sizeof(answer));
+ #else
+       ret = res_query(label, C_IN, rrtype, answer, sizeof(answer));
diff --git a/package/aiccu/aiccu.mk b/package/aiccu/aiccu.mk
new file mode 100644 (file)
index 0000000..2c54644
--- /dev/null
@@ -0,0 +1,34 @@
+################################################################################
+#
+# aiccu
+#
+################################################################################
+
+AICCU_VERSION = 20070115
+AICCU_SOURCE = aiccu_$(AICCU_VERSION).tar.gz
+AICCU_SITE = http://www.sixxs.net/archive/sixxs/aiccu/unix/
+AICCU_LICENSE = SixXS License, concise redistribution license
+AICCU_LICENSE_FILES = doc/LICENSE
+AICCU_DEPENDENCIES = gnutls
+
+# dummy RPM_OPT_FLAGS to disable stripping
+define AICCU_BUILD_CMDS
+       $(TARGET_CONFIGURE_OPTS) $(MAKE) CC="$(TARGET_CC)" \
+               RPM_OPT_FLAGS=1 -C $(@D)/unix-console all
+endef
+
+define AICCU_INSTALL_TARGET_CMDS
+       $(INSTALL) -D -m 0755 $(@D)/unix-console/aiccu \
+               $(TARGET_DIR)/usr/sbin/aiccu
+       [ -f $(TARGET_DIR)/etc/aiccu.conf ] || \
+               $(INSTALL) -D -m 0644 $(@D)/doc/aiccu.conf \
+               $(TARGET_DIR)/etc/aiccu.conf
+endef
+
+define AICCU_INSTALL_INIT_SYSV
+       [ -f $(TARGET_DIR)/etc/init.d/S50aiccu ] || \
+               $(INSTALL) -D -m 0755 $(@D)/doc/aiccu.init \
+               $(TARGET_DIR)/etc/init.d/S50aiccu
+endef
+
+$(eval $(generic-package))