Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Dec 2012 22:56:11 +0000 (UTC)
From:      Pawel Pekala <pawel@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r309329 - in head/dns/dualserver: . files
Message-ID:  <201212202256.qBKMuBnr038735@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pawel
Date: Thu Dec 20 22:56:10 2012
New Revision: 309329
URL: http://svnweb.freebsd.org/changeset/ports/309329

Log:
  - Update to version 6.94 [1]
  - Use CXXFLAGS, PTHREAD_LIBS during build
  - Fix typo in pkg-descr
  - Give maintainership to submitter
  
  PR:		ports/174005 [1]
  Submitted by:	Rodrigo (ros) OSORIO <rodrigo@bebik.net>

Added:
  head/dns/dualserver/files/patch-dualserverd.cpp   (contents, props changed)
  head/dns/dualserver/files/patch-dualserverd.h   (contents, props changed)
Modified:
  head/dns/dualserver/Makefile
  head/dns/dualserver/distinfo
  head/dns/dualserver/pkg-descr

Modified: head/dns/dualserver/Makefile
==============================================================================
--- head/dns/dualserver/Makefile	Thu Dec 20 22:19:45 2012	(r309328)
+++ head/dns/dualserver/Makefile	Thu Dec 20 22:56:10 2012	(r309329)
@@ -1,35 +1,33 @@
-# Ports collection Makefile for:	dualserver
-# Date created:				10 Dec 2005
-# Whom:					Gabor Kovesdan
+# Created by: Gabor Kovesdan
 # $FreeBSD$
 
 PORTNAME=	dualserver
-PORTVERSION=	3.0
+PORTVERSION=	6.94
 CATEGORIES=	dns net
-MASTER_SITES=	SF/dhcp-dns-server/OldFiles
+MASTER_SITES=	SF/dhcp-dns-server/Dual%20DHCP%20DNS%20Server/
 DISTNAME=	${PORTNAME}V${PORTVERSION}
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	rodrigo@bebik.net
 COMMENT=	Combined DHCP/DNS server for small LANs
 
 USE_DOS2UNIX=	yes
 USE_RC_SUBR=	dualserver
 PLIST_FILES=	sbin/dualserver etc/dualserver.conf.sample
 
-.include <bsd.port.pre.mk>
-
 post-extract:
 	@${MV} ${WRKDIR}/${PORTNAME} ${WRKSRC}
 
-pre-patch:
-	${REINPLACE_CMD} 's|/etc/dualserver.ini|${PREFIX}/etc/dualserver.conf|' ${WRKSRC}/dualserver.cpp
-	${REINPLACE_CMD} 's|/etc/dualserver.state|/var/run/dualserver.state|' ${WRKSRC}/dualserver.cpp
+#pre-patch:
+#post-patch:
+#	${REINPLACE_CMD} 's|/etc/dualserver.ini|${PREFIX}/etc/dualserver.conf|' ${WRKSRC}/dualserverd.cpp
+#	${REINPLACE_CMD} 's|/etc/dualserver.state|/var/run/dualserver.state|' ${WRKSRC}/dualserverd.cpp
 
 do-build:
-	${CXX} -o ${WRKSRC}/dualserver ${WRKSRC}/dualserver.cpp
+	${CXX} ${CXXFLAGS} -o ${WRKSRC}/dualserver \
+		${WRKSRC}/dualserverd.cpp ${PTHREAD_LIBS}
 
 do-install:
 	${INSTALL_PROGRAM} ${WRKSRC}/dualserver ${PREFIX}/sbin
 	${INSTALL_DATA} ${WRKSRC}/dualserver.ini ${PREFIX}/etc/dualserver.conf.sample
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>

Modified: head/dns/dualserver/distinfo
==============================================================================
--- head/dns/dualserver/distinfo	Thu Dec 20 22:19:45 2012	(r309328)
+++ head/dns/dualserver/distinfo	Thu Dec 20 22:56:10 2012	(r309329)
@@ -1,2 +1,2 @@
-SHA256 (dualserverV3.0.tar.gz) = ff0b9b42df598ed06b6cd5378daba1fd8265513f6268414ff7bbc96cd7617d00
-SIZE (dualserverV3.0.tar.gz) = 61992
+SHA256 (dualserverV6.94.tar.gz) = 3007e6508eb95d06f3c8764951ff6d3276733409e2119f6299c9485060b9445c
+SIZE (dualserverV6.94.tar.gz) = 796893

Added: head/dns/dualserver/files/patch-dualserverd.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/dualserver/files/patch-dualserverd.cpp	Thu Dec 20 22:56:10 2012	(r309329)
@@ -0,0 +1,179 @@
+--- dualserverd.cpp	2012-11-09 17:02:36.000000000 +0100
++++ dualserverd.cpp	2012-11-12 13:17:25.000000000 +0100
+@@ -22,10 +22,16 @@
+ #include <math.h>
+ #include <sys/types.h>
+ #include <sys/ioctl.h>
++#ifdef __FreeBSD__
++#include <sys/socket.h>
++#endif
+ #include <limits.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <net/if.h>
++#ifdef __FreeBSD__
++#include <net/if_dl.h>
++#endif
+ #include <arpa/inet.h>
+ #include <netdb.h>
+ #include <unistd.h>
+@@ -39,6 +45,9 @@
+ #include <syslog.h>
+ #include <pthread.h>
+ #include <map>
++#ifdef __FreeBSD__
++#include <ifaddrs.h>
++#endif
+ using namespace std;
+ #include "dualserverd.h"
+ 
+@@ -84,7 +93,11 @@
+ const char send200[] = "HTTP/1.1 200 OK\r\nDate: %s\r\nLast-Modified: %s\r\nContent-Type: text/html\r\nConnection: Close\r\nContent-Length:         \r\n\r\n";
+ //const char send200[] = "HTTP/1.1 200 OK\r\nDate: %s\r\nLast-Modified: %s\r\nContent-Type: text/html\r\nConnection: Close\r\nTransfer-Encoding: chunked\r\n";
+ const char line200[] = "<td>%s</td>";
++#ifdef __FreeBSD__
++const char sVersion[] = "Dual DHCP DNS Server Version 6.94 for FreeBSD";
++#else
+ const char sVersion[] = "Dual DHCP DNS Server Version 6.94 Linux Build 7011";
++#endif
+ const data4 opData[] =
+     {
+ 		{ "SubnetMask", DHCP_OPTION_NETMASK, 3 },
+@@ -261,7 +274,7 @@
+         strcpy(leaFile, "/tmp/dualserver.state");
+ 
+     if (!iniFile[0])
+-        strcpy(iniFile, "/etc/dualserver.ini");
++        strcpy(iniFile, "/usr/local/etc/dualserver.conf");
+ 
+     if (verbatim)
+     {
+@@ -4002,7 +4015,13 @@
+ 	else if (req->dhcpp.header.bp_broadcast || !req->remote.sin_addr.s_addr || req->reqIP)
+ 	{
+ 		req->remote.sin_port = htons(IPPORT_DHCPC);
++#ifdef __FreeBSD__
++    req->remote.sin_addr.s_addr = network.dhcpConn[req->sockInd].addr.sin_addr.s_addr | 
++    (~network.dhcpConn[req->sockInd].mask);
++    //printf("broadcast dhcp response to %s\n",inet_ntoa(req->remote.sin_addr));
++#else
+ 		req->remote.sin_addr.s_addr = INADDR_BROADCAST;
++#endif
+ 		req->dhcpp.header.bp_broadcast = 1;
+ 	}
+ 	else
+@@ -8983,6 +9002,10 @@
+ 					newNetwork.dhcpConn[i].broadCastSize = sizeof(newNetwork.dhcpConn[i].broadCastVal);
+ 
+ 					setsockopt(newNetwork.dhcpConn[i].sock, SOL_SOCKET, SO_BROADCAST, (char*)&newNetwork.dhcpConn[i].broadCastVal, newNetwork.dhcpConn[i].broadCastSize);
++#ifdef __FreeBSD__
++          // See man ip
++          setsockopt(newNetwork.dhcpConn[i].sock,IPPROTO_IP, IP_ONESBCAST,(char*)&newNetwork.dhcpConn[i].broadCastVal, newNetwork.dhcpConn[i].broadCastSize);
++#endif
+ 					int nRet = bind(newNetwork.dhcpConn[i].sock, (sockaddr*)&newNetwork.dhcpConn[i].addr, sizeof(struct sockaddr_in));
+ 
+ 					if (nRet == SOCKET_ERROR)
+@@ -9034,7 +9057,11 @@
+ 					setsockopt(newNetwork.dhcpListener.sock, SOL_SOCKET, SO_REUSEADDR, (char*)&newNetwork.dhcpListener.reUseVal, newNetwork.dhcpListener.reUseSize);
+ 					newNetwork.dhcpListener.pktinfoVal = true;
+ 					newNetwork.dhcpListener.pktinfoSize = sizeof(newNetwork.dhcpListener.pktinfoVal);
++#ifdef __FreeBSD__
++					setsockopt(newNetwork.dhcpListener.sock, IPPROTO_IP, IP_RECVIF, &newNetwork.dhcpListener.pktinfoVal, newNetwork.dhcpListener.pktinfoSize);
++#else
+ 					setsockopt(newNetwork.dhcpListener.sock, IPPROTO_IP, IP_PKTINFO, &newNetwork.dhcpListener.pktinfoVal, newNetwork.dhcpListener.pktinfoSize);
++#endif
+ 
+ 					newNetwork.dhcpListener.addr.sin_family = AF_INET;
+ 					newNetwork.dhcpListener.addr.sin_addr.s_addr = INADDR_ANY;
+@@ -9496,8 +9523,11 @@
+ 
+ 			if (addr && !(flags & IFF_LOOPBACK))
+ 				addServer(network->allServers, addr);
+-
++#ifdef __FreeBSD__
++			if (addr && mask && !(flags & IFF_POINTOPOINT) && !(flags & IFF_LOOPBACK))
++#else
+ 			if (addr && mask && !(flags & IFF_POINTOPOINT) && !(flags & IFF_LOOPBACK) && !(flags & IFF_DYNAMIC))
++#endif
+ 			{
+ 				if ((flags & IFF_RUNNING) && (flags & IFF_UP))
+ 				{
+@@ -9656,6 +9686,12 @@
+ 
+ MYWORD gdmess(data9 *req, MYBYTE sockInd)
+ {
++#ifdef __FreeBSD__
++    struct cmsghdr *cmsg;
++    struct sockaddr_dl * isdl;
++    struct sockaddr_in *isin;
++    struct ifaddrs *ifap, *ifa;
++#endif
+     //sprintf(logBuff, "Socket=%u", sockInd);
+ 	//logDHCPMess(logBuff, 1);
+     memset(req, 0, sizeof(data9));
+@@ -9671,7 +9707,11 @@
+         req->msg.msg_name = &req->remote;
+         req->msg.msg_namelen = sizeof(sockaddr_in);
+         req->msg.msg_control = &req->msgcontrol;
++#ifdef __FreeBSD__
++        req->msg.msg_controllen = sizeof(req->msgcontrol);
++#else
+         req->msg.msg_controllen = sizeof(msg_control);
++#endif
+         req->msg.msg_flags = msgflags;
+ 
+         int flags = 0;
+@@ -9680,6 +9720,45 @@
+         if (errno || req->bytes <= 0)
+             return 0;
+ 
++#ifdef __FreeBSD__
++        isdl = NULL;
++        isin = NULL;
++        MYDWORD addr=0;
++        bool found_addr = false;
++
++        if (req->msg.msg_controllen>0){
++          for (cmsg=CMSG_FIRSTHDR(&req->msg);cmsg;cmsg=CMSG_NXTHDR(&req->msg,cmsg)){
++            if (cmsg->cmsg_type==IP_RECVIF) {
++              isdl=(struct sockaddr_dl *)CMSG_DATA(cmsg);
++            }
++          }
++        }
++
++        if (!isdl || getifaddrs(&ifap))
++          return 0;
++
++        for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
++          if(ifa->ifa_addr->sa_family == AF_INET &&
++          strcmp(ifa->ifa_name,isdl->sdl_data) == 0){
++            isin = (struct sockaddr_in *)ifa->ifa_addr;
++            addr = isin->sin_addr.s_addr;
++            for (int i = 0; (i < MAX_SERVERS || !network.dhcpConn[i].server);i++){
++              if (addr == network.dhcpConn[i].server){
++                found_addr = true;
++                req->sockInd = i;
++                break;
++              }
++            }
++          }
++        }
++        freeifaddrs(ifap);
++
++        if(!found_addr) return 0;
++
++        //printf("IF = %s\n", isdl->sdl_data);
++        //printf("RADDR = %s\n", inet_ntoa(isin->sin_addr));
++        
++#else
+         //printf("%u\n", req->msg.msg_controllen);
+         //msgcontrol = (msg_control*)msg.msg_control;
+ 
+@@ -9711,6 +9790,7 @@
+                 break;
+             }
+         }
++#endif
+     }
+     else
+     {

Added: head/dns/dualserver/files/patch-dualserverd.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/dns/dualserver/files/patch-dualserverd.h	Thu Dec 20 22:56:10 2012	(r309329)
@@ -0,0 +1,41 @@
+--- dualserverd.h	2012-11-09 15:45:52.000000000 +0100
++++ dualserverd.h	2012-11-09 15:55:00.000000000 +0100
+@@ -52,9 +52,11 @@
+ #define INADDR_NONE ULONG_MAX
+ #endif
+ 
++#ifndef __FreeBSD__
+ #ifndef IFF_DYNAMIC
+ #define IFF_DYNAMIC 0x8000
+ #endif
++#endif
+ 
+ #define MYWORD unsigned short
+ #define MYBYTE unsigned char
+@@ -594,10 +596,15 @@
+ 
+ struct msg_control
+ {
+-	ulong cmsg_len;
++	u_long cmsg_len;
+ 	int cmsg_level;
+ 	int cmsg_type;
+-	in_pktinfo pktinfo;
++  #ifdef __FreeBSD__
++  // Arbitrary size, when the size is required we use sizeof
++  unsigned char pktinfo[100];
++  #else
++  in_pktinfo pktinfo;
++  #endif
+ };
+ 
+ #if defined(__hppa__) || \
+@@ -713,7 +720,7 @@
+ 	union
+ 	{
+ 		int broadCastVal;
+-		bool pktinfoVal;
++		int pktinfoVal;
+ 	};
+ 	union
+ 	{

Modified: head/dns/dualserver/pkg-descr
==============================================================================
--- head/dns/dualserver/pkg-descr	Thu Dec 20 22:19:45 2012	(r309328)
+++ head/dns/dualserver/pkg-descr	Thu Dec 20 22:56:10 2012	(r309329)
@@ -1,5 +1,5 @@
 Combined DHCP/DNS Server for Small LAN. Dynamic DHCP allocates/renew host
-addresses while Caching DNS Server first try resolving from DHCP alotted
+addresses while Caching DNS Server first try resolving from DHCP allotted
 names then from Cache then only forwarding to External DNS Servers. Auto
 Config and auto Dynamic DNS update.
 



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