From owner-freebsd-ports-bugs@FreeBSD.ORG Fri Mar 12 09:30:03 2010 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 34B961065746 for ; Fri, 12 Mar 2010 09:30:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id EA25B8FC16 for ; Fri, 12 Mar 2010 09:30:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o2C9U2gq081714 for ; Fri, 12 Mar 2010 09:30:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o2C9U2cl081711; Fri, 12 Mar 2010 09:30:02 GMT (envelope-from gnats) Resent-Date: Fri, 12 Mar 2010 09:30:02 GMT Resent-Message-Id: <201003120930.o2C9U2cl081711@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Alex Deiter Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E1C4B106566B for ; Fri, 12 Mar 2010 09:24:23 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id D02308FC1B for ; Fri, 12 Mar 2010 09:24:23 +0000 (UTC) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o2C9ONFp041020 for ; Fri, 12 Mar 2010 09:24:23 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.3/8.14.3/Submit) id o2C9ON6b041019; Fri, 12 Mar 2010 09:24:23 GMT (envelope-from nobody) Message-Id: <201003120924.o2C9ON6b041019@www.freebsd.org> Date: Fri, 12 Mar 2010 09:24:23 GMT From: Alex Deiter To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: ports/144682: [PATCH] net/udpxy: update from 1.0.14 up to 1.0.15 X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Mar 2010 09:30:03 -0000 >Number: 144682 >Category: ports >Synopsis: [PATCH] net/udpxy: update from 1.0.14 up to 1.0.15 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Fri Mar 12 09:30:02 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Alex Deiter >Release: 9.0-CURRENT >Organization: N/A >Environment: FreeBSD x60.deiter.net.ru 9.0-CURRENT FreeBSD 9.0-CURRENT #0: Tue Feb 16 17:22:58 MSK 2010 root@x60.deiter.net.ru:/usr/obj/usr/src/sys/X60 amd64 >Description: net/udpxy: update from 1.0.14 up to 1.0.15 Changes in Build 15 (XX-Mar-2010) by upstream: (*) FIXED: not compiling with -O2/O3 flags under gcc (select additional options in USER_OPT env variable) (*) FIXED: would not allow running more than one udpxy daemon Changes in port: * add udpxy_port variable for rc script (default value 4022) * set properly variable for pidfile * enable client statistics by default * allow to set IPv4 address/interface to listen|multicast via -a|-m Thanks a lot! >How-To-Repeat: >Fix: Patch attached with submission follows: --- net/udpxy/Makefile.orig 2010-03-12 10:02:53.329479936 +0300 +++ net/udpxy/Makefile 2010-03-12 10:03:38.459055532 +0300 @@ -6,8 +6,7 @@ # PORTNAME= udpxy -PORTVERSION= 1.0.14 -PORTREVISION= 1 +PORTVERSION= 1.0.15 CATEGORIES= net MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${RELEASE_MASCOT}-${PORTVERSION:R} DISTNAME= ${PORTNAME}.${PORTVERSION:R}-${RELEASE_MASCOT}-${PORTVERSION:E} --- net/udpxy/distinfo.orig 2010-03-12 10:02:58.687546206 +0300 +++ net/udpxy/distinfo 2010-03-12 10:05:24.131403509 +0300 @@ -1,3 +1,3 @@ -MD5 (udpxy.1.0-Chipmunk-14.tgz) = 96c7a71bddd90c85721926af0435bab9 -SHA256 (udpxy.1.0-Chipmunk-14.tgz) = 11f0efa7726c6daeb6b7b40a06507d5818662f55548857786a90b8610cef8010 -SIZE (udpxy.1.0-Chipmunk-14.tgz) = 79232 +MD5 (udpxy.1.0-Chipmunk-15.tgz) = ef992c1f2f4622439252968c8e920b20 +SHA256 (udpxy.1.0-Chipmunk-15.tgz) = ca2ded933336c7cd6afe530539a85624b2cd497a11b79dc6cf051be25e91f14c +SIZE (udpxy.1.0-Chipmunk-15.tgz) = 79093 --- net/udpxy/files/udpxy.in.orig 2010-03-12 10:07:03.014665411 +0300 +++ net/udpxy/files/udpxy.in 2010-03-12 11:56:18.695609022 +0300 @@ -6,20 +6,29 @@ # PROVIDE: udpxy # REQUIRE: NETWORKING -# The following variables are provided to control startup of udpxy: -# rc configuration file (eg /etc/rc.conf): +# Define these udpxy_* variables in one of these files: +# /etc/rc.conf +# /etc/rc.conf.local +# /etc/rc.conf.d/udpxy +# # udpxy_enable (bool): Set to "NO" by default. # Set it to "YES" to enable udpxy. -# udpxy_flags (str): Set to "" by default. -# Extra flags passed to start command. +# udpxy_port (number): Set to "4022" by default. +# Set listening port number. +# udpxy_flags (str): Set to "-S" by default. +# Extra flags passed to start command. . %%RC_SUBR%% name="udpxy" -rcvar=`set_rcvar` -command="%%PREFIX%%/sbin/${name}" -command_args="${udpxy_flags}" +rcvar=$(set_rcvar) + udpxy_enable=${udpxy_enable-"NO"} +udpxy_port=${udpxy_port-"4022"} +udpxy_flags=${udpxy_flags-"-S"} +command="%%PREFIX%%/sbin/${name}" +pidfile="/var/run/${name}${udpxy_port}.pid" +command_args="-p ${udpxy_port} ${udpxy_flags}" load_rc_config $name run_rc_command "$1" --- net/udpxy/files/patch-ifaddr.c.orig 2010-03-12 12:04:16.690720291 +0300 +++ net/udpxy/files/patch-ifaddr.c 2010-01-15 00:16:52.727321532 +0300 @@ -0,0 +1,149 @@ +--- ifaddr.c.orig 2010-01-14 23:49:24.515378502 +0300 ++++ ifaddr.c 2010-01-14 23:50:07.723908032 +0300 +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -21,114 +22,29 @@ + */ + int + if2addr( const char* ifname, +- struct sockaddr *addr, size_t addrlen ) ++ struct sockaddr_in *addr, size_t addrlen ) + { +- int rc, sockfd; +- char *buf, *rec; +- size_t buflen, sa_len; +- int last_len; +- struct ifconf ifc; +- struct ifreq ifr; +- +- static size_t IFC_TABLE_SIZE; +- +- static const size_t IFC_ENTRIES = 32; +- static const size_t MAX_IFCBUF_SIZE = (1024 * 256); +- +- IFC_TABLE_SIZE = sizeof(struct ifreq) * IFC_ENTRIES; ++ int rc = -1; ++ struct ifaddrs *ifr, *ifc; ++ struct sockaddr_in *sin; + + assert( ifname && addr && addrlen ); +- rc = 0; +- +- /* acquire the list of network interfaces */ +- +- sockfd = socket( AF_INET, SOCK_DGRAM, 0 ); +- if( -1 == sockfd ) return -1; +- +- buf = NULL; buflen = IFC_TABLE_SIZE; last_len = 0; +- for( ; buflen < MAX_IFCBUF_SIZE; buflen += IFC_TABLE_SIZE ) { +- if( NULL == (buf = malloc( buflen )) ) { +- rc = -1; +- break; +- } +- +- ifc.ifc_len = buflen; +- ifc.ifc_buf = buf; +- if( ioctl( sockfd, SIOCGIFCONF, &ifc ) < 0 ) { +- if( (EINVAL != errno) || (last_len != 0) ) { +- rc = errno; +- break; +- } +- } +- else { +- if( ifc.ifc_len == last_len ) +- break; +- else +- last_len = ifc.ifc_len; +- } +- +- free( buf ); +- buf = NULL; +- } /* for */ +- +- (void) close( sockfd ); +- if( buflen > MAX_IFCBUF_SIZE ) rc = -1; +- +- if( 0 != rc ) { +- if( NULL != buf ) free( buf ); +- return rc; +- } + +- assert( ifc.ifc_buf ); ++ getifaddrs(&ifr); + +- /* look for ifname in the list */ +- +- for( rec = ifc.ifc_buf; rec < (ifc.ifc_buf + ifc.ifc_len); ) { +- (void) memcpy( &ifr, rec, sizeof(struct ifreq) ); +- +- #ifdef NO_SOCKADDR_SA_LEN +- switch( ifr.ifr_addr.sa_family ) +- { +- case AF_INET: +- sa_len = sizeof(struct sockaddr); break; +-#ifndef NO_INET6_SUPPORT +- case AF_INET6: +- sa_len = sizeof(struct sockaddr_in6); break; +-#endif +- default: +- rc = -1; break; +- } +- #else +- sa_len = ifr.ifr_addr.sa_len; +- #endif +- if( 0 != rc ) break; +- +- if( ifr.ifr_addr.sa_family != AF_INET ) ++ for (ifc = ifr; ifc != NULL; ifc = ifc->ifa_next) { ++ if (strcmp(ifc->ifa_name, ifname) != 0) + continue; +- +- if( 0 == strncmp(ifname, ifr.ifr_name, sizeof(struct ifreq)) ) { +- if( addrlen < sa_len ) { +- rc = -1; +- break; +- } +- +- (void) memcpy( addr, &(ifr.ifr_addr), sa_len ); +- break; +- } +- else { +- /* rec += (sa_len + sizeof( ifr.ifr_name )); */ +- /**** the above is per R. Stevens' book and not working +- **** on 64-bit Linux */ +- +- rec += sizeof(ifr); +- } +- } /* for */ +- +- if( rec >= (buf + ifc.ifc_len) ) { +- rc = -1; ++ if (ifc->ifa_addr == NULL) ++ continue; ++ sin = (struct sockaddr_in *)ifc->ifa_addr; ++ if (sin->sin_family != AF_INET) ++ continue; ++ memcpy(addr, sin, addrlen); ++ rc = 0; + } + +- free( buf ); ++ freeifaddrs(ifr); + return rc; + } + +@@ -147,7 +63,7 @@ + (void) strncpy( buf, s, len ); + } + else { +- rc = if2addr( s, (struct sockaddr*)&saddr, sizeof(saddr) ); ++ rc = if2addr( s, (struct sockaddr_in *)&saddr, sizeof(saddr) ); + if( 0 != rc ) return rc; + + (void) strncpy( buf, inet_ntoa(saddr.sin_addr), len ); --- net/udpxy/files/patch-ifaddr.h.orig 2010-03-12 12:04:26.472843492 +0300 +++ net/udpxy/files/patch-ifaddr.h 2010-01-15 00:16:43.151207509 +0300 @@ -0,0 +1,11 @@ +--- ifaddr.h.orig 2010-01-14 23:49:31.288490434 +0300 ++++ ifaddr.h 2010-01-14 23:49:56.636770433 +0300 +@@ -21,7 +21,7 @@ + */ + int + if2addr( const char* ifname, +- struct sockaddr *addr, size_t addrlen ); ++ struct sockaddr_in *addr, size_t addrlen ); + + + /* convert input parameter into an IPv4-address string >Release-Note: >Audit-Trail: >Unformatted: