From owner-svn-ports-all@freebsd.org Mon Jul 27 20:32:38 2015 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BF38A9AC818; Mon, 27 Jul 2015 20:32:38 +0000 (UTC) (envelope-from rodrigo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AF85C233; Mon, 27 Jul 2015 20:32:38 +0000 (UTC) (envelope-from rodrigo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6RKWcLD072972; Mon, 27 Jul 2015 20:32:38 GMT (envelope-from rodrigo@FreeBSD.org) Received: (from rodrigo@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6RKWcCM072969; Mon, 27 Jul 2015 20:32:38 GMT (envelope-from rodrigo@FreeBSD.org) Message-Id: <201507272032.t6RKWcCM072969@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rodrigo set sender to rodrigo@FreeBSD.org using -f From: Rodrigo Osorio Date: Mon, 27 Jul 2015 20:32:38 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r393033 - in head/dns/dualserver: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Jul 2015 20:32:39 -0000 Author: rodrigo Date: Mon Jul 27 20:32:37 2015 New Revision: 393033 URL: https://svnweb.freebsd.org/changeset/ports/393033 Log: Fix wrong network interfaces enumeration caused by a bug when parsing the ioctl(SIOCGIFCONF) responses. Bump portrevision Modified: head/dns/dualserver/Makefile head/dns/dualserver/files/patch-dualserverd.cpp Modified: head/dns/dualserver/Makefile ============================================================================== --- head/dns/dualserver/Makefile Mon Jul 27 20:24:49 2015 (r393032) +++ head/dns/dualserver/Makefile Mon Jul 27 20:32:37 2015 (r393033) @@ -3,6 +3,7 @@ PORTNAME= dualserver PORTVERSION= 6.94 +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= dns net MASTER_SITES= http://rodrigo.osorio.free.fr/freebsd/distfiles/ Modified: head/dns/dualserver/files/patch-dualserverd.cpp ============================================================================== --- head/dns/dualserver/files/patch-dualserverd.cpp Mon Jul 27 20:24:49 2015 (r393032) +++ head/dns/dualserver/files/patch-dualserverd.cpp Mon Jul 27 20:32:37 2015 (r393033) @@ -1,5 +1,5 @@ ---- dualserverd.cpp 2012-11-09 17:02:36.000000000 +0100 -+++ dualserverd.cpp 2012-11-12 13:17:25.000000000 +0100 +--- dualserverd.cpp.orig 2015-07-27 19:41:31.000000000 +0000 ++++ dualserverd.cpp 2015-07-27 19:46:28.000000000 +0000 @@ -22,10 +22,16 @@ #include #include @@ -85,7 +85,39 @@ newNetwork.dhcpListener.addr.sin_family = AF_INET; newNetwork.dhcpListener.addr.sin_addr.s_addr = INADDR_ANY; -@@ -9496,8 +9523,11 @@ +@@ -9458,6 +9485,10 @@ + else + return false; + } ++#define MAX(a,b) ((a)>(b)?(a):(b)) ++#define NEXTIFR(i) \ ++ ((struct ifreq *)((char *)&(i)->ifr_addr \ ++ + MAX((i)->ifr_addr.sa_len, sizeof((i)->ifr_addr))) ) + + void getInterfaces(data1 *network) + { +@@ -9469,14 +9500,16 @@ + if (ioctl(cfig.fixedSocket, SIOCGIFCONF, &Ifc) >= 0) + { + ++ struct ifreq *ifrp, *ifen; + MYDWORD addr, mask; + short flags; + struct ifreq pIfr; +- MYBYTE numInterfaces = Ifc.ifc_len / sizeof(ifreq); ++ ifrp = (struct ifreq *)Ifc.ifc_buf; ++ ifen = (struct ifreq *)((char *)Ifc.ifc_buf + Ifc.ifc_len); + +- for (MYBYTE i = 0 ; i < numInterfaces; i++) +- { +- memcpy(&pIfr, &(IfcBuf[i]), sizeof(ifreq)); ++ for (; ifrp < ifen;) { ++ memcpy(&pIfr, ifrp, sizeof(ifreq)); ++ ifrp = NEXTIFR(ifrp); + + if (!ioctl(cfig.fixedSocket, SIOCGIFADDR, &pIfr)) + addr = ((struct sockaddr_in*)&pIfr.ifr_addr)->sin_addr.s_addr; +@@ -9496,8 +9529,11 @@ if (addr && !(flags & IFF_LOOPBACK)) addServer(network->allServers, addr); @@ -98,7 +130,7 @@ { if ((flags & IFF_RUNNING) && (flags & IFF_UP)) { -@@ -9656,6 +9686,12 @@ +@@ -9656,6 +9692,12 @@ MYWORD gdmess(data9 *req, MYBYTE sockInd) { @@ -111,7 +143,7 @@ //sprintf(logBuff, "Socket=%u", sockInd); //logDHCPMess(logBuff, 1); memset(req, 0, sizeof(data9)); -@@ -9671,7 +9707,11 @@ +@@ -9671,7 +9713,11 @@ req->msg.msg_name = &req->remote; req->msg.msg_namelen = sizeof(sockaddr_in); req->msg.msg_control = &req->msgcontrol; @@ -123,7 +155,7 @@ req->msg.msg_flags = msgflags; int flags = 0; -@@ -9680,6 +9720,45 @@ +@@ -9680,6 +9726,45 @@ if (errno || req->bytes <= 0) return 0; @@ -169,7 +201,7 @@ //printf("%u\n", req->msg.msg_controllen); //msgcontrol = (msg_control*)msg.msg_control; -@@ -9711,6 +9790,7 @@ +@@ -9711,6 +9796,7 @@ break; } }