Hello community, here is the log from the commit of package 6tunnel for openSUSE:Factory checked in at 2019-11-28 10:12:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/6tunnel (Old) and /work/SRC/openSUSE:Factory/.6tunnel.new.26869 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "6tunnel" Thu Nov 28 10:12:24 2019 rev:3 rq:744010 version:0.13 Changes: -------- --- /work/SRC/openSUSE:Factory/6tunnel/6tunnel.changes 2019-02-14 14:35:06.375605006 +0100 +++ /work/SRC/openSUSE:Factory/.6tunnel.new.26869/6tunnel.changes 2019-11-28 10:12:43.387636317 +0100 @@ -1,0 +2,9 @@ +Mon Oct 21 20:07:55 UTC 2019 - Martin Hauke <mar...@gmx.de> + +- Update to version 0.13 + * Updated help message. + * Avoid segfault in "-f" mode. + * Support automake's "make check" target. +- Run testsuite + +------------------------------------------------------------------- Old: ---- 6tunnel-0.12.tar.gz New: ---- 6tunnel-0.13.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ 6tunnel.spec ++++++ --- /var/tmp/diff_new_pack.pNyAXd/_old 2019-11-28 10:12:45.063636334 +0100 +++ /var/tmp/diff_new_pack.pNyAXd/_new 2019-11-28 10:12:45.063636334 +0100 @@ -1,6 +1,7 @@ # # spec file for package 6tunnel # +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2018, Martin Hauke <mar...@gmx.de> # # All modifications and additions to the file contributed by third parties @@ -12,12 +13,12 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: 6tunnel -Version: 0.12 +Version: 0.13 Release: 0 Summary: TCP proxy for non-IPv6 applications License: GPL-2.0-or-later @@ -27,6 +28,7 @@ Source: https://github.com/wojtekka/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz BuildRequires: autoconf BuildRequires: automake +BuildRequires: python2 %description 6tunnel allows using services provided by IPv6 hosts with IPv4-only @@ -37,6 +39,7 @@ %prep %setup -q +sed -i 's|#!/usr/bin/env python|#!/usr/bin/python2|' test.py %build autoreconf -fi @@ -46,6 +49,9 @@ %install %make_install +%check +make %{?_smp_mflags} check + %files %license COPYING %doc ChangeLog README.md ++++++ 6tunnel-0.12.tar.gz -> 6tunnel-0.13.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/.gitignore new/6tunnel-0.13/.gitignore --- old/6tunnel-0.12/.gitignore 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/.gitignore 2019-10-19 21:59:47.000000000 +0200 @@ -12,4 +12,5 @@ configure depcomp missing +test-driver diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/6tunnel.1 new/6tunnel-0.13/6tunnel.1 --- old/6tunnel-0.12/6tunnel.1 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/6tunnel.1 2019-10-19 21:59:47.000000000 +0200 @@ -1,8 +1,8 @@ .\" -.\" 6tunnel v0.12 -.\" (C) Copyright 2000-2005,2013,2016 by Wojtek Kaniewski <wojte...@toxygen.net> +.\" 6tunnel v0.13 +.\" (C) Copyright 2000-2005,2013,2016,2019 by Wojtek Kaniewski <wojte...@toxygen.net> .\" -.TH 6TUNNEL 1 "Oct 22, 2016" +.TH 6TUNNEL 1 "Oct 19, 2019" .SH NAME 6tunnel \- tunnelling for application that don't speak IPv6 .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/6tunnel.c new/6tunnel-0.13/6tunnel.c --- old/6tunnel-0.12/6tunnel.c 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/6tunnel.c 2019-10-19 21:59:47.000000000 +0200 @@ -1,21 +1,21 @@ /* - * 6tunnel v0.12 - * (C) Copyright 2000-2005,2013,2016 by Wojtek Kaniewski <wojte...@toxygen.net> - * + * 6tunnel v0.13 + * (C) Copyright 2000-2005,2013,2016,2019 by Wojtek Kaniewski <wojte...@toxygen.net> + * * Contributions by: * - Dariusz Jackowski <asc...@linux.pl> * - Ramunas Lukosevicius <lukor...@parok.lt> * - Roland Stigge <sti...@antcom.de> - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License Version 2 as * published by the Free Software Foundation. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -120,7 +120,7 @@ } } else if (sa->sa_family == AF_INET6) - { + { struct sockaddr_in6 *sin6 = (struct sockaddr_in6*) sa; tmp = xmalloc(INET6_ADDRSTRLEN); @@ -130,7 +130,7 @@ tmp = NULL; } } - + return tmp; } @@ -161,7 +161,7 @@ void print_hexdump(const char *buf, int len) { int i, j; - + for (i = 0; i < ((len / 16) + ((len % 16) ? 1 : 0)); i++) { printf("%.4x: ", i * 16); @@ -173,9 +173,9 @@ if (j == 7) printf(" "); } - + printf(" "); - + for (j = 0; j < 16; j++) { if (i * 16 + j < len) { char ch = buf[i * 16 + j]; @@ -239,7 +239,7 @@ } buf[i] = 0; - + if (i > 0 && buf[i - 1] == '\r') buf[i - 1] = 0; @@ -252,7 +252,7 @@ if (write(rsock, tmp, strlen(tmp)) != strlen(tmp)) { // Do nothing. We're failing anyway. } - + goto cleanup; } @@ -264,10 +264,10 @@ if (write(rsock, tmp, strlen(tmp)) != strlen(tmp)) { // Do nothing. We're failing anyway. } - + goto cleanup; } - + debug("<%d> irc proxy auth succeeded\n", rsock); } @@ -288,7 +288,7 @@ for (ai_ptr = connect_ai; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) { sock = socket(ai_ptr->ai_family, ai_ptr->ai_socktype, 0); - + if (sock == -1) { if (ai_ptr->ai_next != NULL) continue; @@ -299,7 +299,7 @@ if (source != NULL) { bind_ai = resolve_host(source, 0, source_hint); - + if (bind_ai == NULL) { debug("<%d> unable to resolve source host (%s)\n", rsock, (source != NULL) ? source : "default"); goto cleanup; @@ -326,7 +326,7 @@ debug("<%d> connection failed (%s,%d)\n", rsock, remote_host, remote_port); goto cleanup; } - + close(sock); sock = -1; } @@ -355,7 +355,7 @@ FD_SET(rsock, &wds); if (inbuf && inlen) FD_SET(sock, &wds); - + ret = select((sock > rsock) ? (sock + 1) : (rsock + 1), &rds, &wds, NULL, NULL); if (FD_ISSET(rsock, &wds)) { @@ -398,12 +398,12 @@ printf("<%d> recvfrom %s,%d\n", rsock, remote_host, remote_port); print_hexdump(buf, ret); } - + sent = write(rsock, buf, ret); if (sent < 1) goto cleanup; - + if (sent < ret) { outbuf = xrealloc(outbuf, outlen + ret - sent); memcpy(outbuf + outlen, buf + sent, ret - sent); @@ -449,17 +449,18 @@ void usage(const char *arg0) { fprintf(stderr, - + "usage: %s [-146dvh] [-s sourcehost] [-l localhost] [-i pass]\n" " [-I pass] [-L limit] [-A filename] [-p pidfile]\n" " [-m mapfile] localport remotehost [remoteport]\n" -"\n" +"\n" " -1 allow only single connection and quit\n" " -4 connect to IPv4 endpoints (default: connect to IPv6)\n" " -6 bind to IPv6 address (default: bind to IPv4)\n" " -d don't detach\n" " -f force tunneling (even if remotehost isn't resolvable)\n" " -h print hex dump of packets\n" +" -u change UID and GID after bind()\n" " -i act like irc proxy and ask for password\n" " -I send specified password to the irc server\n" " -l bind to specified address\n" @@ -474,7 +475,7 @@ void clear_argv(char *argv) { int x; - + for (x = 0; x < strlen(argv); x++) argv[x] = 'x'; @@ -484,12 +485,12 @@ void source_map_destroy(void) { source_map_t *m; - + debug("source_map_destroy()\n"); - + for (m = source_map; m != NULL; ) { source_map_t *n; - + free(m->ipv4); free(m->ipv6); n = m; @@ -513,7 +514,7 @@ debug("unable to read map file, ignoring\n"); return; } - + while (fgets(buf, sizeof(buf), f) != NULL) { char *p, *ipv4, *ipv6; source_map_t *m; @@ -545,14 +546,14 @@ *p = 0; debug("[%s] mapped to [%s]\n", ipv4, ipv6); - + m = (source_map_t*) xmalloc(sizeof(source_map_t)); m->ipv4 = xstrdup(ipv4); m->ipv6 = xstrdup(ipv6); m->next = source_map; source_map = m; } - + fclose(f); } @@ -596,7 +597,7 @@ struct passwd *pw = NULL; char *tmp; int source_hint; - + while ((optc = getopt(argc, argv, "1dv46fHs:l:I:i:hu:m:L:A:p:")) != -1) { switch (optc) { case '1': @@ -660,7 +661,7 @@ if (verbose) detach = 0; - + if (detach) verbose = 0; @@ -677,17 +678,17 @@ exit(1); } } - - if (source_map_file != NULL) + + if (source_map_file != NULL) map_read(); - + local_port = atoi(argv[optind++]); remote_host = argv[optind++]; remote_port = (argc == optind) ? local_port : atoi(argv[optind]); /* Check if destination and source hosts are resolvable. If it's expected to be * available later, -f can be used. */ - + debug("resolving %s\n", remote_host); ai = resolve_host(remote_host, remote_port, remote_hint[0]); @@ -705,17 +706,20 @@ source_hint = remote_hint[0]; } - if (source_hint == AF_INET && local_hint == AF_INET) - fprintf(stderr, "%s: warning: both local and remote addresses are IPv4\n", argv[0]); + if (ai != NULL) { - if (source_hint == AF_INET6 && local_hint == AF_INET6) - fprintf(stderr, "%s: warning: both local and remote addresses are IPv6\n", argv[0]); + if (source_hint == AF_INET && local_hint == AF_INET) + fprintf(stderr, "%s: warning: both local and remote addresses are IPv4\n", argv[0]); - tmp = xntop(ai->ai_addr); - debug("resolved to %s\n", tmp); - free(tmp); + if (source_hint == AF_INET6 && local_hint == AF_INET6) + fprintf(stderr, "%s: warning: both local and remote addresses are IPv6\n", argv[0]); - freeaddrinfo(ai); + tmp = xntop(ai->ai_addr); + debug("resolved to %s\n", tmp); + free(tmp); + + freeaddrinfo(ai); + } if (source_host != NULL) { debug("resolving %s\n", source_host); @@ -751,7 +755,7 @@ free(tmp); /* Now that we know that hosts are resolvable, dump some debugging information. */ - + debug("local: %s,%d; ", (local_host != NULL) ? local_host : "default", local_port); debug("remote: %s,%d; ", remote_host, remote_port); @@ -773,14 +777,14 @@ perror("setsockopt"); exit(1); } - + for (ai_ptr = ai; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) { if (bind(listen_fd, ai_ptr->ai_addr, ai_ptr->ai_addrlen) == -1 && ai_ptr->ai_next == NULL) { perror("bind"); exit(1); } - } - + } + if (listen(listen_fd, 100) == -1) { perror("listen"); exit(1); @@ -795,12 +799,12 @@ int i, ret; signal(SIGHUP, sighup); - + for (i = 0; i < 3; i++) close(i); ret = fork(); - + if (ret == -1) { perror("fork"); exit(1); @@ -837,8 +841,8 @@ signal(SIGTERM, sigterm); signal(SIGINT, sigterm); signal(SIGHUP, sighup); - - for (;;) { + + for (;;) { int ret; fd_set rds; int client_fd; @@ -859,7 +863,7 @@ } client_fd = accept(listen_fd, &sa, &sa_len); - + if (client_fd == -1) { perror("accept"); break; @@ -878,14 +882,14 @@ close(client_fd); continue; } - + if (conn_limit) { conn_count++; debug(" (no. %d)", conn_count); } - + fflush(stdout); - + if ((ret = fork()) == -1) { debug(" -- fork() failed.\n"); shutdown(client_fd, 2); @@ -893,7 +897,7 @@ free(client_addr); continue; } - + if (!ret) { signal(SIGHUP, SIG_IGN); close(listen_fd); @@ -902,11 +906,11 @@ free(client_addr); debug("<%d> connection closed\n", client_fd); exit(0); - } + } close(client_fd); free(client_addr); - + if (single_connection) { shutdown(listen_fd, 2); close(listen_fd); @@ -916,8 +920,6 @@ } close(listen_fd); - + exit(1); } - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/ChangeLog new/6tunnel-0.13/ChangeLog --- old/6tunnel-0.12/ChangeLog 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/ChangeLog 2019-10-19 21:59:47.000000000 +0200 @@ -1,3 +1,14 @@ +0.13 (2019-10-19) + +Changes by Stuart Cardall: +- Updated help message. + +Changes by Paul Warren: +- Avoid segfault in "-f" mode. + +Changes by Wojtek Kaniewski: +- Support automake's "make check" target. + 0.12 (2016-10-24) Changes by Wojtek Kaniewski <wojte...@toxygen.net>: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/Makefile.am new/6tunnel-0.13/Makefile.am --- old/6tunnel-0.12/Makefile.am 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/Makefile.am 2019-10-19 21:59:47.000000000 +0200 @@ -5,3 +5,6 @@ dist_man_MANS = 6tunnel.1 +TESTS = ./test.py + +EXTRA_DIST = test.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/README.md new/6tunnel-0.13/README.md --- old/6tunnel-0.12/README.md 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/README.md 2019-10-19 21:59:47.000000000 +0200 @@ -1,4 +1,5 @@ -# 6tunnel +6tunnel +======= 6tunnel allows you to use services provided by IPv6 hosts with IPv4-only applications and vice-versa. It can bind to any of your IPv4 @@ -39,3 +40,11 @@ makes IPv4 address the preffered one. For IPv6-to-any tunnels use -6 which makes 6tunnel bind to IPv6 address. +License +------- + +Since version 0.11 released under the terms of +[GPL version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) -- +see [release notes](https://github.com/wojtekka/6tunnel/releases/tag/0.11) +for details. + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/configure.ac new/6tunnel-0.13/configure.ac --- old/6tunnel-0.12/configure.ac 2016-10-24 22:42:34.000000000 +0200 +++ new/6tunnel-0.13/configure.ac 2019-10-19 21:59:47.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([6tunnel],[0.12],[]) +AC_INIT([6tunnel],[0.13],[]) AM_INIT_AUTOMAKE([1.14 foreign silent-rules subdir-objects tar-pax]) AC_PROG_CC AC_PROG_INSTALL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/6tunnel-0.12/contrib/runit.run new/6tunnel-0.13/contrib/runit.run --- old/6tunnel-0.12/contrib/runit.run 1970-01-01 01:00:00.000000000 +0100 +++ new/6tunnel-0.13/contrib/runit.run 2019-10-19 21:59:47.000000000 +0200 @@ -0,0 +1,11 @@ +#!/bin/sh +# +# example run script for service supervision with runit +# http://smarden.org/runit/ +# +# redirect ipv4 port 80 to internal ipv6 port 80 & drop privileges +# +exec 2>&1 +exec 6tunnel -u nobody -d -p /run/80.pid 80 a:dead:beef:1 80 + +