Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Mar 2012 22:52:06 -0700 (PDT)
From:      Stanislav Sedov <stas@deglitch.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        dgerow@afflictions.org
Subject:   ports/165997: [PATCH] security/openconnect: fix on FreeBSD 10.0
Message-ID:  <20120313055206.7BECB39F1C@orion.SpringDaemons.com>
Resent-Message-ID: <201203130700.q2D703HO095443@freefall.freebsd.org>

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

>Number:         165997
>Category:       ports
>Synopsis:       [PATCH] security/openconnect: fix on FreeBSD 10.0
>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 Mar 13 07:00:03 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Stanislav Sedov
>Release:        FreeBSD 10.0-CURRENT amd64
>Organization:
Deglitch Networks
>Environment:
System: FreeBSD orion.SpringDaemons.com 10.0-CURRENT FreeBSD 10.0-CURRENT #11 r232841M: Sun Mar 11 17:06:29 PDT
>Description:
- The SIOCSIFADDR ioctl was dropped on FreeBSD 10.0.  Use SIOCAIFADDR instead.
  This PR depends on ports/165992.

Added file(s):
- files/patch-tun.c

Port maintainer (dgerow@afflictions.org) is cc'd.

Generated with FreeBSD Port Tools 0.99_4 (mode: change, diff: suffix)
>How-To-Repeat:
>Fix:

--- openconnect-3.15_1.patch begins here ---
diff -ruN --exclude=CVS ../openconnect.orig/Makefile ./Makefile
--- ../openconnect.orig/Makefile	2012-03-12 22:48:24.000000000 -0700
+++ ./Makefile	2012-03-12 22:48:42.000000000 -0700
@@ -7,7 +7,7 @@
 
 PORTNAME=	openconnect
 PORTVERSION=	3.15
-PORTREVISION=	0
+PORTREVISION=	1
 CATEGORIES=	security
 MASTER_SITES=	ftp://ftp.infradead.org/pub/openconnect/ \
 		CRITICAL
diff -ruN --exclude=CVS ../openconnect.orig/files/patch-tun.c ./files/patch-tun.c
--- ../openconnect.orig/files/patch-tun.c	1969-12-31 16:00:00.000000000 -0800
+++ ./files/patch-tun.c	2012-03-12 22:46:33.000000000 -0700
@@ -0,0 +1,56 @@
+--- tun.c.orig	2011-11-24 08:18:34.000000000 -0800
++++ tun.c	2012-03-12 22:46:30.000000000 -0700
+@@ -38,6 +38,9 @@
+ #include <arpa/inet.h>
+ #include <errno.h>
+ #include <ctype.h>
++#if defined(__FreeBSD__)
++#include <sys/param.h>	/* For __FreeBSD_version */
++#endif
+ #if defined(__sun__)
+ #include <stropts.h>
+ #include <sys/sockio.h>
+@@ -109,9 +112,43 @@
+ 
+ 		addr.sin_family = AF_INET;
+ 		addr.sin_addr.s_addr = inet_addr(vpninfo->vpn_addr);
++
++		/*
++		 * SIOCSIFADDR ioctl was dropped in FreeBSD 10.0
++		 */
++#if defined(__FreeBSD__) && __FreeBSD_version > 1000004
++		{
++			struct ifaliasreq ifra;
++			struct sockaddr_in *sin;
++
++			memset(&ifra, 0, sizeof(ifra));
++			strncpy(ifra.ifra_name, vpninfo->ifname, sizeof(ifra.ifra_name) - 1);
++
++			/* Set source address. */
++			sin = (struct sockaddr_in *)&(ifra.ifra_addr);
++			memcpy(sin, &addr, sizeof(struct sockaddr_in));
++			sin->sin_len = sizeof(*sin);
++
++			/* Set destination address. */
++			sin = (struct sockaddr_in *)&(ifra.ifra_broadaddr);
++			memcpy(sin, &addr, sizeof(struct sockaddr_in));
++			sin->sin_len = sizeof(*sin);
++
++			/* Set mask address. */
++			sin = (struct sockaddr_in *)&(ifra.ifra_mask);
++			addr.sin_family = AF_INET;
++			addr.sin_addr.s_addr = 0xffffffff;
++			memcpy(sin, &addr, sizeof(struct sockaddr_in));
++			sin->sin_len = sizeof(*sin);
++
++			if (ioctl(net_fd, SIOCAIFADDR, &ifra) < 0)
++				perror(_("SIOCAIFADDR"));
++		}
++#else
+ 		memcpy(&ifr.ifr_addr, &addr, sizeof(addr));
+ 		if (ioctl(net_fd, SIOCSIFADDR, &ifr) < 0)
+ 			perror(_("SIOCSIFADDR"));
++#endif
+ 	}
+ 
+ 	ifr.ifr_mtu = vpninfo->mtu;
--- openconnect-3.15_1.patch ends here ---

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



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