Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Apr 2013 08:27:59 GMT
From:      Alexander Panyushkin <vsityz@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/177649: [NEW PORT] net/hanstunnel: Hans makes it possible to tunnel IPv4 through ICMP
Message-ID:  <201304050827.r358RxQr089456@red.freebsd.org>
Resent-Message-ID: <201304050830.r358U06r008235@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         177649
>Category:       ports
>Synopsis:       [NEW PORT] net/hanstunnel: Hans makes it possible to tunnel IPv4 through ICMP
>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:   Fri Apr 05 08:30:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Alexander Panyushkin
>Release:        FreeBSD 9.1-STABLE #0 r248576
>Organization:
home
>Environment:
FreeBSD admin.local 9.1-STABLE FreeBSD 9.1-STABLE #0 r248576: Thu Mar 21 15:21:29 EET 2013     root@admin.local:/usr/obj/usr/src/sys/Kernel  amd64
>Description:
 Hans makes it possible to tunnel IPv4 through ICMP echo packets, so you
could call it a ping tunnel. This can be useful when you find yourself
in the situation that your Internet access is firewalled, but pings are
allowed.

WWW: http://code.gerade.org/hans/

>How-To-Repeat:

>Fix:


Patch attached with submission follows:

# 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:
#
#	hanstunnel
#	hanstunnel/pkg-message
#	hanstunnel/pkg-descr
#	hanstunnel/files
#	hanstunnel/files/patch-client.cpp
#	hanstunnel/files/patch-Makefile
#	hanstunnel/files/patch-tun.cpp
#	hanstunnel/distinfo
#	hanstunnel/Makefile
#
echo c - hanstunnel
mkdir -p hanstunnel > /dev/null 2>&1
echo x - hanstunnel/pkg-message
sed 's/^X//' >hanstunnel/pkg-message << '35a6976a3b2d8f949619ff80f5876ac6'
X------------------------------------------------------------
X
XHans runs on Linux as a client and a server.
XIt runs on FreeBSD client only.
X
XNOTE: that Hans can not receive echo requests on BSD systems.
XTherefore the server only works on Linux.
X
X------------------------------------------------------------
X
X### Running as a server ###
X
X% hans -s 10.1.2.0 -r -p password -u nobody
X
X### Running as a client ###
X
X% hans -c server_address -p password -u nobody
X
X### Help ###
X
X% hans
X
X------------------------------------------------------------
35a6976a3b2d8f949619ff80f5876ac6
echo x - hanstunnel/pkg-descr
sed 's/^X//' >hanstunnel/pkg-descr << 'b3d8e535b1ab66b72469a8c0f03d82f8'
X Hans makes it possible to tunnel IPv4 through ICMP echo packets, so you
Xcould call it a ping tunnel. This can be useful when you find yourself
Xin the situation that your Internet access is firewalled, but pings are
Xallowed.
X
XWWW: http://code.gerade.org/hans/
b3d8e535b1ab66b72469a8c0f03d82f8
echo c - hanstunnel/files
mkdir -p hanstunnel/files > /dev/null 2>&1
echo x - hanstunnel/files/patch-client.cpp
sed 's/^X//' >hanstunnel/files/patch-client.cpp << '46ad173c5d66133a4980043dcd2a5077'
X--- client.cpp.orig	2010-02-17 17:30:21.000000000 +0200
X+++ client.cpp	2013-04-03 16:05:10.000000000 +0300
X@@ -27,6 +27,8 @@
X #include <arpa/inet.h>
X #include <syslog.h>
X 
X+#include <netinet/in.h>
X+
X using namespace std;
X 
X const Worker::TunnelHeader::Magic Client::magic("hanc");
46ad173c5d66133a4980043dcd2a5077
echo x - hanstunnel/files/patch-Makefile
sed 's/^X//' >hanstunnel/files/patch-Makefile << '00f1877f7d4533cd6adc2ee1c8be24c9'
X--- Makefile.orig	2010-02-17 17:30:21.000000000 +0200
X+++ Makefile	2013-04-04 15:18:50.818219413 +0300
X@@ -1,53 +1,51 @@
X-LDFLAGS = `sh osflags ld $(MODE)`
X-CFLAGS = -c -g `sh osflags c $(MODE)`
X-TUN_DEV_FILE = `sh osflags dev $(MODE)`
X-GCC = gcc
X-GPP = g++
X+TUN_DEV_FILE = tun_dev_freebsd.c
X+GCC = ${CC}
X+GPP = ${CXX}
X 
X all: hans
X 
X hans: tun.o sha1.o main.o client.o server.o auth.o worker.o time.o tun_dev.o echo.o exception.o utility.o
X-	$(GPP) -o hans tun.o sha1.o main.o client.o server.o auth.o worker.o time.o tun_dev.o echo.o exception.o utility.o $(LDFLAGS)
X+	${GPP} -o hans tun.o sha1.o main.o client.o server.o auth.o worker.o time.o tun_dev.o echo.o exception.o utility.o ${LDFLAGS}
X 
X utility.o: utility.cpp utility.h
X-	$(GPP) -c utility.cpp $(CFLAGS)
X+	${GPP} -c utility.cpp ${CFLAGS}
X 
X exception.o: exception.cpp exception.h
X-	$(GPP) -c exception.cpp $(CFLAGS)
X+	${GPP} -c exception.cpp ${CFLAGS}
X 
X echo.o: echo.cpp echo.h exception.h
X-	$(GPP) -c echo.cpp $(CFLAGS)
X+	${GPP} -c echo.cpp ${CFLAGS}
X 
X tun.o: tun.cpp tun.h exception.h utility.h tun_dev.h
X-	$(GPP) -c tun.cpp $(CFLAGS)
X+	${GPP} -c tun.cpp ${CFLAGS}
X 
X tun_dev.o:
X-	$(GCC) -c $(TUN_DEV_FILE) -o tun_dev.o $(CFLAGS)
X+	${GCC} -c ${TUN_DEV_FILE} -o tun_dev.o ${CFLAGS}
X 
X sha1.o: sha1.cpp sha1.h
X-	$(GPP) -c sha1.cpp $(CFLAGS)
X+	${GPP} -c sha1.cpp ${CFLAGS}
X 
X main.o: main.cpp client.h server.h exception.h worker.h auth.h time.h echo.h tun.h tun_dev.h
X-	$(GPP) -c main.cpp $(CFLAGS)
X+	${GPP} -c main.cpp ${CFLAGS}
X 
X client.o: client.cpp client.h server.h exception.h config.h worker.h auth.h time.h echo.h tun.h tun_dev.h
X-	$(GPP) -c client.cpp $(CFLAGS)
X+	${GPP} -c client.cpp ${CFLAGS}
X 
X server.o: server.cpp server.h client.h utility.h config.h worker.h auth.h time.h echo.h tun.h tun_dev.h
X-	$(GPP) -c server.cpp $(CFLAGS)
X+	${GPP} -c server.cpp ${CFLAGS}
X 
X auth.o: auth.cpp auth.h sha1.h utility.h
X-	$(GPP) -c auth.cpp $(CFLAGS)
X+	${GPP} -c auth.cpp ${CFLAGS}
X 
X worker.o: worker.cpp worker.h tun.h exception.h time.h echo.h tun_dev.h config.h
X-	$(GPP) -c worker.cpp $(CFLAGS)
X+	${GPP} -c worker.cpp ${CFLAGS}
X 
X time.o: time.cpp time.h
X-	$(GPP) -c time.cpp $(CFLAGS)
X+	${GPP} -c time.cpp ${CFLAGS}
X 
X clean:
X 	rm -f tun.o sha1.o main.o client.o server.o auth.o worker.o time.o tun_dev.o echo.o exception.o utility.o tunemu.o hans
X 
X 
X tunemu.o: tunemu.h tunemu.c
X-	$(GCC) -c tunemu.c -o tunemu.o
X+	${GCC} -c tunemu.c -o tunemu.o
00f1877f7d4533cd6adc2ee1c8be24c9
echo x - hanstunnel/files/patch-tun.cpp
sed 's/^X//' >hanstunnel/files/patch-tun.cpp << '0a4216e67650c84929001f6d046ecbda'
X--- tun.cpp.orig	2010-02-17 17:30:21.000000000 +0200
X+++ tun.cpp	2013-04-04 16:55:39.802818893 +0300
X@@ -68,23 +68,17 @@
X 	string ips = Utility::formatIp(ip);
X 	string destIps = Utility::formatIp(destIp);
X 
X-#ifdef LINUX
X-	snprintf(cmdline, sizeof(cmdline), "/sbin/ifconfig %s %s netmask 255.255.255.0", device, ips.c_str());
X-#else
X-	snprintf(cmdline, sizeof(cmdline), "/sbin/ifconfig %s %s %s netmask 255.255.255.255", device, ips.c_str(), destIps.c_str());
X-#endif
X+	snprintf(cmdline, sizeof(cmdline), "/sbin/ifconfig %s %s %s netmask 255.255.255.0", device, ips.c_str(), destIps.c_str());
X 
X 	if (system(cmdline) != 0)
X 		syslog(LOG_ERR, "could not set tun device ip address");
X 
X-#ifndef LINUX
X 	if (includeSubnet)
X 	{
X 		snprintf(cmdline, sizeof(cmdline), "/sbin/route add %s/24 %s", destIps.c_str(), destIps.c_str());
X 		if (system(cmdline) != 0)
X 			syslog(LOG_ERR, "could not add route");
X 	}
X-#endif
X }
X 
X void Tun::write(const char *buffer, int length)
0a4216e67650c84929001f6d046ecbda
echo x - hanstunnel/distinfo
sed 's/^X//' >hanstunnel/distinfo << '65400445990c1970b9f5ad17ab147fd4'
XSHA256 (hans-0.4.1.tar.gz) = 8e4df005bcf6a877ffd0810cc9b31aa3ae04f23d798bea6cc2893a3f26cac29c
XSIZE (hans-0.4.1.tar.gz) = 32860
65400445990c1970b9f5ad17ab147fd4
echo x - hanstunnel/Makefile
sed 's/^X//' >hanstunnel/Makefile << '87523a3042cf8f2ebc7a9370982f09ef'
X# Created by: Alexander Panyushkin <vsityz@gmail.com>
X# $FreeBSD$
X
XPORTNAME=	hans
XPORTVERSION=	0.4.1
XCATEGORIES=	net security
XMASTER_SITES=	${MASTER_SITE_SOURCEFORGE}
XMASTER_SITE_SUBDIR=	/hanstunnel/source/
X
XMAINTAINER=	vsityz@gmail.com
XCOMMENT=	Hans makes it possible to tunnel IPv4 through ICMP
X
XLICENSE_PERMS_GPL3=	yes
X
XOPTIONS_DEFINE=	CLANG
X
XCLANG_DESC=	Build with Clang instead of GCC
X
XOPTIONS_DEFAULT=	CLANG
X
XPLIST_FILES=	${LOCALBASE}/bin/hans
X
X.include <bsd.port.options.mk>
X
X.if ${PORT_OPTIONS:MCLANG}
X.if ${OSVERSION} < 1000000
XCC=clang
XCXX=clang++
X.if ${OSVERSION} < 900033
XBUILD_DEPENDS+=	clang:${PORTSDIR}/lang/clang
X.endif
X.endif
X.else
XUSE_GCC=4.2+
XCC=gcc
XCXX=g++
XCPP=gcpp
X.endif
X
Xdo-install:
X	@${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} ${WRKSRC}/hans ${LOCALBASE}/bin
X
Xpost-install:	.SILENT
X	${ECHO_MSG}
X	${CAT} ${PKGMESSAGE}
X	${ECHO_MSG}
X
X.include <bsd.port.mk>
87523a3042cf8f2ebc7a9370982f09ef
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304050827.r358RxQr089456>