svn commit: r309329 - in head/dns/dualserver: . files
Pawel Pekala
pawel at FreeBSD.org
Thu Dec 20 22:56:12 UTC 2012
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 at 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 at FreeBSD.org
+MAINTAINER= rodrigo at 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.
More information about the svn-ports-head
mailing list