aboutsummaryrefslogtreecommitdiff
path: root/net/dhcpd
diff options
context:
space:
mode:
authorSteve Wills <swills@FreeBSD.org>2018-07-04 14:21:07 +0000
committerSteve Wills <swills@FreeBSD.org>2018-07-04 14:21:07 +0000
commit3af863882fde9ea4dde6cf4b834c14da6392c24d (patch)
tree45894eff699d880e54bcb796b196d9af7b0b55b1 /net/dhcpd
parente068c0966a8e205cbf1373b60bc43b91924224df (diff)
downloadports-3af863882fde9ea4dde6cf4b834c14da6392c24d.tar.gz
ports-3af863882fde9ea4dde6cf4b834c14da6392c24d.zip
Notes
Diffstat (limited to 'net/dhcpd')
-rw-r--r--net/dhcpd/Makefile15
-rw-r--r--net/dhcpd/files/extra-patch-dhcp.c18
-rw-r--r--net/dhcpd/files/extra-patch-dhcpd.c50
-rw-r--r--net/dhcpd/files/extra-patch-memory.c34
-rw-r--r--net/dhcpd/files/extra-patch-pfutils.c16
5 files changed, 130 insertions, 3 deletions
diff --git a/net/dhcpd/Makefile b/net/dhcpd/Makefile
index 45256769fa4a..c2c04eba84fe 100644
--- a/net/dhcpd/Makefile
+++ b/net/dhcpd/Makefile
@@ -2,7 +2,7 @@
PORTNAME= dhcpd
PORTVERSION= 6.0.20170207
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= net
MAINTAINER= koue@chaosophia.net
@@ -24,8 +24,17 @@ CFLAGS+= -Wall
MAKE_ARGS+= BINDIR=${PREFIX}/sbin MANDIR=${PREFIX}/man/man
-USERS= dhcpd
-GROUPS= dhcpd
+OPTIONS_DEFINE= NOPF
+
+NOPF_DESC= Disable PF support
+
+OPTIONS_SUB= yes
+
+NOPF_CFLAGS= -DNO_PF=1
+NOPF_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-dhcp.c \
+ ${PATCHDIR}/extra-patch-dhcpd.c \
+ ${PATCHDIR}/extra-patch-memory.c \
+ ${PATCHDIR}/extra-patch-pfutils.c
post-patch:
@${REINPLACE_CMD} -e "s|/etc/dhcpd.conf|${PREFIX}/etc/dhcpd.conf|" \
diff --git a/net/dhcpd/files/extra-patch-dhcp.c b/net/dhcpd/files/extra-patch-dhcp.c
new file mode 100644
index 000000000000..0963847b3823
--- /dev/null
+++ b/net/dhcpd/files/extra-patch-dhcp.c
@@ -0,0 +1,18 @@
+--- dhcp.c.orig 2018-06-06 09:10:04 UTC
++++ dhcp.c
+@@ -154,6 +154,7 @@ dhcpdiscover(struct packet *packet)
+ * If we can't find an unabandoned lease,
+ * reclaim the abandoned lease.
+ */
++#ifndef NO_PF
+ if ((lease->flags & ABANDONED_LEASE)) {
+ warning("Reclaiming abandoned IP address %s.",
+ piaddr(lease->ip_addr));
+@@ -161,6 +162,7 @@ dhcpdiscover(struct packet *packet)
+
+ pfmsg('L', lease); /* unabandon address */
+ }
++#endif /* NO_PF */
+ }
+
+ /* Try to find a host_decl that matches the client
diff --git a/net/dhcpd/files/extra-patch-dhcpd.c b/net/dhcpd/files/extra-patch-dhcpd.c
new file mode 100644
index 000000000000..427f384bc951
--- /dev/null
+++ b/net/dhcpd/files/extra-patch-dhcpd.c
@@ -0,0 +1,50 @@
+--- dhcpd.c.orig 2018-06-06 09:12:11 UTC
++++ dhcpd.c
+@@ -74,11 +74,15 @@ u_int16_t client_port;
+ struct passwd *pw;
+ int log_priority;
+ int log_perror = 0;
++#ifndef NO_PF
+ int pfpipe[2];
++#endif /* NO_PF */
+ int gotpipe = 0;
+ int syncrecv;
+ int syncsend;
++#ifndef NO_PF
+ pid_t pfproc_pid = -1;
++#endif /* NO_PF */
+ char *path_dhcpd_conf = _PATH_DHCPD_CONF;
+ char *path_dhcpd_db = _PATH_DHCPD_DB;
+ char *abandoned_tab = NULL;
+@@ -225,6 +229,7 @@ main(int argc, char *argv[])
+ if ((pw = getpwnam("_dhcp")) == NULL)
+ error("user \"_dhcp\" not found");
+
++#ifndef NO_PF
+ /* don't go near /dev/pf unless we actually intend to use it */
+ if ((abandoned_tab != NULL) ||
+ (changedmac_tab != NULL) ||
+@@ -248,6 +253,7 @@ main(int argc, char *argv[])
+ break;
+ }
+ }
++#endif /* NO_PF */
+
+ if (udpsockmode)
+ udpsock_startup(udpaddr);
+@@ -386,6 +392,7 @@ periodic_scan(void *p)
+ if (y < 1)
+ y = 1;
+
++#ifndef NO_PF
+ /* walk across all leases to find the exired ones */
+ for (n = subnets; n; n = n->next_subnet)
+ for (g = n->group; g; g = g->next)
+@@ -394,6 +401,7 @@ periodic_scan(void *p)
+ if (cur_time >= l->ends)
+ if (l->ends > last_scan)
+ pfmsg('R', l);
++#endif /* NO_PF */
+
+ last_scan = cur_time;
+ add_timeout(cur_time + y, periodic_scan, NULL);
diff --git a/net/dhcpd/files/extra-patch-memory.c b/net/dhcpd/files/extra-patch-memory.c
new file mode 100644
index 000000000000..8acd0cf6e4f1
--- /dev/null
+++ b/net/dhcpd/files/extra-patch-memory.c
@@ -0,0 +1,34 @@
+--- memory.c.orig 2018-06-06 09:14:19 UTC
++++ memory.c
+@@ -619,9 +619,11 @@ supersede_lease(struct lease *comp, stru
+ comp->ends = lease->ends;
+ }
+
++#ifndef NO_PF
+ pfmsg('L', lease); /* address is leased. remove from purgatory */
+ if (do_pftable) /* address changed hwaddr. remove from overload */
+ pfmsg('C', lease);
++#endif /* NO_PF */
+
+ /* Return zero if we didn't commit the lease to permanent storage;
+ nonzero if we did. */
+@@ -641,7 +643,9 @@ release_lease(struct lease *lease)
+ supersede_lease(lease, &lt, 1);
+ note("Released lease for IP address %s",
+ piaddr(lease->ip_addr));
++#ifndef NO_PF
+ pfmsg('R', lease);
++#endif /* NO_PF */
+ }
+ }
+
+@@ -669,7 +673,9 @@ abandon_lease(struct lease *lease, char
+ lt.uid_len = 0;
+ supersede_lease(lease, &lt, 1);
+
++#ifndef NO_PF
+ pfmsg('A', lease); /* address is abandoned. send to purgatory */
++#endif /* NO_PF */
+ return;
+ }
+
diff --git a/net/dhcpd/files/extra-patch-pfutils.c b/net/dhcpd/files/extra-patch-pfutils.c
new file mode 100644
index 000000000000..ab32fc5c9464
--- /dev/null
+++ b/net/dhcpd/files/extra-patch-pfutils.c
@@ -0,0 +1,16 @@
+--- pfutils.c.orig 2018-06-06 08:53:18 UTC
++++ pfutils.c
+@@ -15,6 +15,8 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#ifndef NO_PF /* No need of PF support */
++
+ #include <sys/types.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+@@ -254,3 +256,4 @@ pfmsg(char c, struct lease *lp)
+ break;
+ }
+ }
++#endif /* NO_PF */