Date: Tue, 7 Sep 2004 15:22:48 +0200 From: "Meno Abels" <abels@adviser.com> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Meno Abels <meno.abels@adviser.com> Subject: ports/71462: New port: net/sixxs-aiccu ipv6 TIC+ tunnel broker Message-ID: <20040907132307.037FC84040@pmff.de> Resent-Message-ID: <200409071330.i87DUSg1011045@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 71462 >Category: ports >Synopsis: New port: net/sixxs-aiccu ipv6 TIC+ tunnel broker >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Sep 07 13:30:27 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Meno Abels >Release: FreeBSD 5.2.1-RELEASE-p9 i386 >Organization: Adviser COM >Environment: System: FreeBSD race 5.2.1-RELEASE-p9 FreeBSD 5.2.1-RELEASE-p9 #14: Sun Jul 4 09:10:57 CEST 2004 root@neo.abels.adviser.com:/usr/obj/usr/src/sys/GENERIC i386 not needed >Description: This is the TIC+ heartbeart client for the public dynamic-IPv4 IPv6 tunnel beta test from the SixXS tunnel service provider. WWW: http://www.sixxs.net/tools/aiccu/ >How-To-Repeat: not applied change request >Fix: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # sixxs-aiccu # sixxs-aiccu/pkg-plist # sixxs-aiccu/pkg-descr # sixxs-aiccu/distinfo # sixxs-aiccu/Makefile # sixxs-aiccu/files # sixxs-aiccu/files/sixxs-aiccu.sh # sixxs-aiccu/files/patch-aiccu_freebsd.c # sixxs-aiccu/files/patch-aiccu_kame.c # sixxs-aiccu/files/patch-ayiya.c # sixxs-aiccu/files/patch-ayiya.h # sixxs-aiccu/files/patch-common.c # sixxs-aiccu/files/patch-common.h # sixxs-aiccu/files/patch-hash_sha1.c # sixxs-aiccu/files/patch-Makefile # sixxs-aiccu/files/patch-hash_md5.h # echo c - sixxs-aiccu mkdir -p sixxs-aiccu > /dev/null 2>&1 echo x - sixxs-aiccu/pkg-plist sed 's/^X//' >sixxs-aiccu/pkg-plist << 'END-of-sixxs-aiccu/pkg-plist' X@comment $FreeBSD$ Xetc/rc.d/sixxs-aiccu.sh Xetc/aiccu.conf.sample Xsbin/sixxs-aiccu X%%DOCSDIR%%/README X%%EXAMPLESDIR%%/aiccu.conf X@dirrm %%EXAMPLESDIR%% X@dirrm %%DOCSDIR%% END-of-sixxs-aiccu/pkg-plist echo x - sixxs-aiccu/pkg-descr sed 's/^X//' >sixxs-aiccu/pkg-descr << 'END-of-sixxs-aiccu/pkg-descr' XThis is the TIC+ heartbeart client for the public dynamic-IPv4 XIPv6 tunnel beta test from the SixXS tunnel service provider. X XWWW: http://www.sixxs.net/tools/aiccu/ END-of-sixxs-aiccu/pkg-descr echo x - sixxs-aiccu/distinfo sed 's/^X//' >sixxs-aiccu/distinfo << 'END-of-sixxs-aiccu/distinfo' XMD5 (aiccu_2004.08.30-beta2.tar.gz) = 0000d9be36995b1ac939e851873e30f8 XSIZE (aiccu_2004.08.30-beta2.tar.gz) = 60580 END-of-sixxs-aiccu/distinfo echo x - sixxs-aiccu/Makefile sed 's/^X//' >sixxs-aiccu/Makefile << 'END-of-sixxs-aiccu/Makefile' X# New ports collection makefile for: sixxs-aiccu X# Date created: 2004-09-07 X# Whom: Meno Abels <meno.abels@adviser.com> X# X# $FreeBSD$ X# X XPORTNAME= sixxs-aiccu XPORTVERSION= 20040830 XPORTREVISION= 1 XCATEGORIES= net ipv6 XMASTER_SITES= http://www.sixxs.net/tools/aiccu/dl/ XDISTNAME= aiccu_2004.08.30-beta2 X XMAINTAINER= meno.abels@adviser.com XCOMMENT= SixXS IPv6 TIC+ tunnel broker heartbeat client X XUSE_RC_SUBR= yes XUSE_GMAKE= yes XWRKSRC= ${WRKDIR}/aiccu X Xpre-build: X @${SED} -e 's:%%PREFIX%%:${PREFIX}:g' \ X -e 's:%%RC_SUBR%%:${RC_SUBR}:g' \ X ${FILESDIR}/sixxs-aiccu.sh >${WRKDIR}/sixxs-aiccu.sh X @${SED} \ X -e 's:verbose true:verbose false:' \ X -e 's:daemonize false:daemonize true:' \ X -e 's:automatic false:automatic true:' \ X -e 's:tunnel_id T2995:#tunnel_id TXXXX:' \ X -e 's:ipv4_interface eth0:ipv4_interface sis0:' \ X -e 's:ipv6_interface sixxs:ipv6_interface gif0:' \ X ${WRKSRC}/doc/aiccu.conf > ${WRKDIR}/aiccu.conf X Xdo-install: X @${MKDIR} ${DOCSDIR} ${EXAMPLESDIR} X ${INSTALL_PROGRAM} ${WRKSRC}/unix-console/aiccu ${PREFIX}/sbin/sixxs-aiccu X ${INSTALL_DATA} ${WRKSRC}/doc/README ${DOCSDIR} X ${INSTALL_DATA} ${WRKSRC}/doc/aiccu.conf ${EXAMPLESDIR} X ${INSTALL_DATA} ${WRKDIR}/aiccu.conf ${PREFIX}/etc/aiccu.conf.sample X ${INSTALL_SCRIPT} ${WRKDIR}/sixxs-aiccu.sh ${PREFIX}/etc/rc.d X Xpost-install: X if [ \! -f ${PREFIX}/etc/aiccu.conf ]; then \ X ${MV} ${PREFIX}/etc/aiccu.conf.sample ${PREFIX}/etc/aiccu.conf.sample; \ X fi X X.include <bsd.port.pre.mk> X X.if ${OSVERSION} > 501100 XGIFCONFIG= netbsd X.else XGIFCONFIG= freebsd X.endif X X.include <bsd.port.post.mk> END-of-sixxs-aiccu/Makefile echo c - sixxs-aiccu/files mkdir -p sixxs-aiccu/files > /dev/null 2>&1 echo x - sixxs-aiccu/files/sixxs-aiccu.sh sed 's/^X//' >sixxs-aiccu/files/sixxs-aiccu.sh << 'END-of-sixxs-aiccu/files/sixxs-aiccu.sh' X#!/bin/sh X# X# $FreeBSD$ X# X X# PROVIDE: sixxs-aiccu X# REQUIRE: NETWORKING X# KEYWORD: FreeBSD X X# X# Add the following lines to /etc/rc.conf to enable sixxs-aiccu: X# X#sixxs_aiccu_enable="YES" X# X X. %%RC_SUBR%% X Xname=sixxs_aiccu Xrcvar=`set_rcvar` X Xcommand="%%PREFIX%%/sbin/sixxs-aiccu start" Xcommand_args=%%PREFIX%%/etc/aiccu.conf Xstop_cmd="%%PREFIX%%/sbin/sixxs-aiccu stop" Xrequired_files=%%PREFIX%%/etc/aiccu.conf X X# set default Xsixxs_aiccu_enable=${sixxs_aiccu_enable:-"NO"} X Xload_rc_config ${name} Xrun_rc_command "$1" END-of-sixxs-aiccu/files/sixxs-aiccu.sh echo x - sixxs-aiccu/files/patch-aiccu_freebsd.c sed 's/^X//' >sixxs-aiccu/files/patch-aiccu_freebsd.c << 'END-of-sixxs-aiccu/files/patch-aiccu_freebsd.c' XOnly in aiccu.my/common: aiccu.o Xdiff -ur common/aiccu_freebsd.c aiccu.my/common/aiccu_freebsd.c X--- common/aiccu_freebsd.c Mon Aug 30 21:20:54 2004 X+++ common/aiccu_freebsd.c Tue Sep 7 07:41:21 2004 X@@ -15,7 +15,7 @@ X void aiccu_os_install() X { X // Just try to load it, doesn't really matter if it fails X- system("modprobe -q ipv6 2>/dev/null >/dev/null"); X+ //system("modprobe -q ipv6 2>/dev/null >/dev/null"); X } X X void aiccu_os_setup(struct TIC_Tunnel *hTunnel) X@@ -38,10 +38,11 @@ X g_aiccu->ipv6_interface); X X aiccu_exec( X- "ifconfig %s inet6 %s %s prefixlen 128 alias", X+ "ifconfig %s inet6 %s prefixlen %d alias", X g_aiccu->ipv6_interface, X hTunnel->sIPv6_Local, X- hTunnel->sIPv6_Remote); X+ hTunnel->nIPv6_PrefixLength); X+ X X aiccu_exec( X "route add -inet6 %s %s", END-of-sixxs-aiccu/files/patch-aiccu_freebsd.c echo x - sixxs-aiccu/files/patch-aiccu_kame.c sed 's/^X//' >sixxs-aiccu/files/patch-aiccu_kame.c << 'END-of-sixxs-aiccu/files/patch-aiccu_kame.c' XOnly in aiccu.my/common: aiccu_freebsd.o Xdiff -ur common/aiccu_kame.c aiccu.my/common/aiccu_kame.c X--- common/aiccu_kame.c Mon Aug 30 21:20:54 2004 X+++ common/aiccu_kame.c Tue Sep 7 07:24:43 2004 X@@ -15,7 +15,7 @@ X void aiccu_os_install() X { X // Just try to load it, doesn't really matter if it fails X- system("modprobe -q ipv6 2>/dev/null >/dev/null"); X+ //system("modprobe -q ipv6 2>/dev/null >/dev/null"); X } X X void aiccu_os_setup(struct TIC_Tunnel *hTunnel) X@@ -38,10 +38,10 @@ X g_aiccu->ipv6_interface); X X aiccu_exec( X- "ifconfig %s inet6 %s %s prefixlen 128 alias", X+ "ifconfig %s inet6 %s prefixlen %d alias", X g_aiccu->ipv6_interface, X hTunnel->sIPv6_Local, X- hTunnel->sIPv6_Remote); X+ hTunnel->nIPv6_PrefixLength); X X aiccu_exec( X "route add -inet6 %s %s", END-of-sixxs-aiccu/files/patch-aiccu_kame.c echo x - sixxs-aiccu/files/patch-ayiya.c sed 's/^X//' >sixxs-aiccu/files/patch-ayiya.c << 'END-of-sixxs-aiccu/files/patch-ayiya.c' XOnly in aiccu.my/common: aiccu_kame.o XOnly in aiccu.my/common: aiccu_test.o Xdiff -ur aiccu/common/ayiya.c aiccu.my/common/ayiya.c X--- common/ayiya.c Mon Aug 30 19:08:59 2004 X+++ common/ayiya.c Wed Sep 1 21:40:06 2004 X@@ -326,24 +326,32 @@ X // Forward the packet to the kernel X #ifndef _WIN32 X { X+ unsigned int c; X+#ifdef LINUX X struct X { X struct tun_pi pi; X char payload[2048]; X } packet; X- unsigned int c; X X memset(&packet, 0, sizeof(packet)); X X packet.pi.proto = htons(ETH_P_IPV6); X memcpy(&packet.payload, &s->payload, payloadlen); X- X // Forward the packet to the kernel X c = write(ayiya_fd, &packet, payloadlen+sizeof(struct tun_pi)); X if (c != payloadlen+sizeof(struct tun_pi)) X { X ayiya_log(LOG_ERR, &ci, cl, "[writer] Error while writing to TAP: %u != %u\n", c, payloadlen+sizeof(struct tun_pi)); X } X+#else X+ c = write(ayiya_fd, &s->payload, payloadlen); X+ if (c != payloadlen) X+ { X+ ayiya_log(LOG_ERR, &ci, cl, "[writer] Error while writing to TAP: %u != %u\n", c, payloadlen); X+ } X+#endif X+ X } X #else X if (!WriteFile(device_handle, &s->payload, payloadlen, &lenout, &overlapped)) X@@ -366,8 +374,9 @@ X struct addrinfo hints, *res, *ressave; X #ifndef _WIN32 X pthread_t thread; X- struct ifreq ifr; X X+#ifdef LINUX X+ struct ifreq ifr; X // Create a new tap device X ayiya_fd = open("/dev/net/tun", O_RDWR); X if (ayiya_fd == -1) X@@ -388,6 +397,28 @@ X g_aiccu->ipv6_interface, errno, strerror(errno)); X return false; X } X+#else X+ int i; X+ ayiya_fd = -1; X+ for (i = 0; i < 256; ++i) X+ { X+ char buf[128]; X+ snprintf(buf, sizeof(buf), "/dev/tun%d", i); X+ ayiya_fd = open(buf, O_RDWR); X+ if (ayiya_fd >= 0) X+ { X+ break; X+ } X+ } X+ if (ayiya_fd < 0) X+ { X+ ayiya_log(LOG_ERR, NULL, 0, "Couldn't open device %s (%d): %s\n", "/dev/tun", errno, strerror(errno)); X+ return false; X+ } X+#endif X+ X+ X+ X #else X HKEY key; X DWORD pID; END-of-sixxs-aiccu/files/patch-ayiya.c echo x - sixxs-aiccu/files/patch-ayiya.h sed 's/^X//' >sixxs-aiccu/files/patch-ayiya.h << 'END-of-sixxs-aiccu/files/patch-ayiya.h' Xdiff -ur aiccu/common/ayiya.h aiccu.my/common/ayiya.h X--- common/ayiya.h Mon Aug 30 19:08:59 2004 X+++ common/ayiya.h Tue Sep 7 06:51:45 2004 X@@ -59,7 +59,7 @@ X X struct ayiyahdr X { X-#if __BYTE_ORDER == __BIG_ENDIAN X+#if SX_BYTE_ORDER == SX_BIG_ENDIAN X #error "Big Endian" X u_int8_t ayh_idlen:4; // Identity Length X u_int8_t ayh_idtype:4; // Identity Type X@@ -67,7 +67,7 @@ X u_int8_t ayh_hshmeth:4; // Hashing Method X u_int8_t ayh_autmeth:4; // Authentication Method X u_int8_t ayh_opcode:4; // Operation Code X-#elif __BYTE_ORDER == __LITTLE_ENDIAN X+#elif SX_BYTE_ORDER == SX_LITTLE_ENDIAN X u_int8_t ayh_idtype:4; // Identity Type X u_int8_t ayh_idlen:4; // Identity Length X u_int8_t ayh_hshmeth:4; // Hashing Method END-of-sixxs-aiccu/files/patch-ayiya.h echo x - sixxs-aiccu/files/patch-common.c sed 's/^X//' >sixxs-aiccu/files/patch-common.c << 'END-of-sixxs-aiccu/files/patch-common.c' XOnly in aiccu.my/common: ayiya.o Xdiff -ur aiccu/common/common.c aiccu.my/common/common.c X--- common/common.c Mon Aug 30 19:08:59 2004 X+++ common/common.c Tue Sep 7 07:12:00 2004 X@@ -414,7 +414,7 @@ X strncmp(p, split, strlen(split)) != 0) p++; X // Terminate this argument X *p = '\0'; X- *p++; X+ p++; X X // Skip whitespace X while ( p < end && END-of-sixxs-aiccu/files/patch-common.c echo x - sixxs-aiccu/files/patch-common.h sed 's/^X//' >sixxs-aiccu/files/patch-common.h << 'END-of-sixxs-aiccu/files/patch-common.h' Xdiff -ur aiccu/common/common.h aiccu.my/common/common.h X--- common/common.h Mon Aug 30 19:08:59 2004 X+++ common/common.h Tue Sep 7 06:58:21 2004 X@@ -52,7 +52,12 @@ X X #include <net/if.h> X #include <netinet/if_ether.h> X+#ifdef LINUX X #include <netpacket/packet.h> X+#endif X+#ifdef __FreeBSD__ X+ #include <netinet/in_systm.h> X+#endif X #include <netinet/ip.h> X #include <netinet/ip6.h> X #include <netinet/icmp6.h> X@@ -60,7 +65,9 @@ X #include <netinet/udp.h> X #include <netinet/ip_icmp.h> X #include <sys/ioctl.h> X+#ifdef LINUX X #include <linux/if_tun.h> X+#endif X X #include <pthread.h> X X@@ -128,6 +135,49 @@ X const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt); X int inet_pton(int af, const char *src, void *dst); X #endif X+ X+/* X+ redefine the System BYTE_ORDER defines to aiccu/sixxs internal X+ which is here done centralized. All aiccu/sixxs should use SX_XXXXXX X+ so that we will able make adaptions to new platforms in this area X+*/ X+#ifdef BYTE_ORDER X+ #define SX_BYTE_ORDER BYTE_ORDER X+#else X+ #ifdef __BYTE_ORDER X+ #define SX_BYTE_ORDER __BYTE_ORDER X+ #endif X+#endif X+ X+#ifdef LITTLE_ENDIAN X+ #define SX_LITTLE_ENDIAN LITTLE_ENDIAN X+#else X+ #ifdef __LITTLE_ENDIAN X+ #define SX_LITTLE_ENDIAN __LITTLE_ENDIAN X+ #endif X+#endif X+ X+#ifdef BIG_ENDIAN X+ #define SX_BIG_ENDIAN BIG_ENDIAN X+#else X+ #ifdef __BIG_ENDIAN X+ #define SX_BIG_ENDIAN __BIG_ENDIAN X+ #endif X+#endif X+ X+// Determine Endianness X+#if SX_BYTE_ORDER == SX_LITTLE_ENDIAN X+ /* 1234 machines */ X+#elif SX_BYTE_ORDER == SX_BIG_ENDIAN X+ /* 4321 machines */ X+# define WORDS_BIGENDIAN 1 X+#elif SX_BYTE_ORDER == SX_PDP_ENDIAN X+ /* 3412 machines */ X+#error PDP endianness not supported yet! X+#else X+#error unknown endianness! X+#endif X+ X X // Boolean support X #ifndef bool END-of-sixxs-aiccu/files/patch-common.h echo x - sixxs-aiccu/files/patch-hash_sha1.c sed 's/^X//' >sixxs-aiccu/files/patch-hash_sha1.c << 'END-of-sixxs-aiccu/files/patch-hash_sha1.c' XOnly in aiccu.my/common: hash_md5.o Xdiff -ur aiccu/common/hash_sha1.c aiccu.my/common/hash_sha1.c X--- common/hash_sha1.c Sun Aug 29 15:49:55 2004 X+++ common/hash_sha1.c Tue Sep 7 06:52:59 2004 X@@ -24,7 +24,7 @@ X */ X X #include "hash_sha1.h" X-#include "malloc.h" X+#include "stdlib.h" X #include <string.h> X X #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) X@@ -32,7 +32,7 @@ X /* blk0() and blk() perform the initial expand. */ X /* I got the idea of expanding during the round function from SSLeay */ X X-#if BYTE_ORDER == LITTLE_ENDIAN X+#if SX_BYTE_ORDER == SX_LITTLE_ENDIAN X #define blk0(i) (block->l[i] = (rol(block->l[i],24)&(sha1_quadbyte)0xFF00FF00) \ X |(rol(block->l[i],8)&(sha1_quadbyte)0x00FF00FF)) X #else END-of-sixxs-aiccu/files/patch-hash_sha1.c echo x - sixxs-aiccu/files/patch-Makefile sed 's/^X//' >sixxs-aiccu/files/patch-Makefile << 'END-of-sixxs-aiccu/files/patch-Makefile' Xdiff -ur aiccu/unix-console/Makefile aiccu.my/unix-console/Makefile X--- unix-console/Makefile Mon Aug 30 19:09:05 2004 X+++ unix-console/Makefile Tue Sep 7 07:10:53 2004 X@@ -13,10 +13,9 @@ X SRCS = main.c ../common/aiccu.c ../common/hash_md5.c ../common/hash_sha1.c ../common/common.c ../common/heartbeat.c ../common/tic.c ../common/ayiya.c ../common/aiccu_test.c X INCS = ../common/aiccu.h ../common/hash_md5.h ../common/hash_sha1.h ../common/common.h ../common/heartbeat.h ../common/tic.h ../common/ayiya.h X OBJS = main.o ../common/aiccu.o ../common/hash_md5.o ../common/hash_sha1.o ../common/common.o ../common/heartbeat.o ../common/tic.o ../common/ayiya.o ../common/aiccu_test.o X-CWARNS = -W -Wall -Wshadow -Wcast-align -Wpadded X-CFLAGS = $(CWARNS) -D _GNU_SOURCE -D _DEBUG -g X-#CFLAGS = $(CWARNS) -D _GNU_SOURCE -O3 X-LDFLAGS = -lpthread X+CWARNS = -W -Wall -Wshadow -Wcast-align X+CFLAGS += $(CWARNS) -D _DEBUG -g X+#CFLAGS = $(CWARNS) -O3 X CC = gcc X RM = rm X X@@ -24,18 +23,22 @@ X ifeq ($(shell uname | grep -c "Linux"),1) X SRCS += ../common/aiccu_linux.c X OBJS += ../common/aiccu_linux.o X+CFLAGS += -D _GNU_SOURCE -Wpadded X+LDFLAGS += -lpthread X endif X X+ifeq ($(shell uname | grep -c "FreeBSD"),1) X+ifeq ($(shell uname -r | grep -c "^4"),1) X # FreeBSD 4.x X-ifeq ($(shell uname | grep -c "FreeBSD"),1) X-SRCS += ../common/aiccu_freebsd4.c X-OBJS += ../common/aiccu_freebsd4.o X-endif X- X-# FreeBSD 5.x X-ifeq ($(shell uname | grep -c "FreeBSD"),1) X SRCS += ../common/aiccu_kame.c X OBJS += ../common/aiccu_kame.o X+else X+# FreeBSD 5.x X+SRCS += ../common/aiccu_freebsd.c X+OBJS += ../common/aiccu_freebsd.o X+CFLAGS += -Wpadded X+endif X+CFLAGS += -pthread X endif X X # NetBSD END-of-sixxs-aiccu/files/patch-Makefile echo x - sixxs-aiccu/files/patch-hash_md5.h sed 's/^X//' >sixxs-aiccu/files/patch-hash_md5.h << 'END-of-sixxs-aiccu/files/patch-hash_md5.h' XOnly in aiccu.my/common: common.o Xdiff -ur aiccu/common/hash_md5.h aiccu.my/common/hash_md5.h X--- common/hash_md5.h Thu Aug 26 22:58:48 2004 X+++ common/hash_md5.h Tue Sep 7 06:52:40 2004 X@@ -36,18 +36,6 @@ X #define UWORD32 u_int32_t X #endif X X-// Determine Endianness X-#if BYTE_ORDER == LITTLE_ENDIAN X- /* 1234 machines */ X-#elif BYTE_ORDER == BIG_ENDIAN X- /* 4321 machines */ X-# define WORDS_BIGENDIAN 1 X-#elif BYTE_ORDER == PDP_ENDIAN X- /* 3412 machines */ X-#error PDP endianness not supported yet! X-#else X-#error unknown endianness! X-#endif X X #define md5byte unsigned char X END-of-sixxs-aiccu/files/patch-hash_md5.h exit >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040907132307.037FC84040>