aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2021-03-29 12:03:39 +0000
committerKristof Provost <kp@FreeBSD.org>2021-05-07 08:15:42 +0000
commit3711a144935f2eee0819dc45e1840ca6737c7b4a (patch)
treed2c4a18c415bc4831fe765c415bd5e89075ecbda
parent0da554e4b60a74340896cc4292bebd97b59e3685 (diff)
downloadsrc-3711a144935f2eee0819dc45e1840ca6737c7b4a.tar.gz
src-3711a144935f2eee0819dc45e1840ca6737c7b4a.zip
(t)ftp-proxy: use libpfctl
Reviewed by: glebius MFC after: 4 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D29641 (cherry picked from commit 95be9288f01f30a50440ea56d11468a2c6e18fed)
-rw-r--r--contrib/pf/ftp-proxy/filter.c16
-rw-r--r--contrib/pf/tftp-proxy/filter.c10
-rw-r--r--libexec/tftp-proxy/Makefile3
-rw-r--r--usr.sbin/ftp-proxy/Makefile3
4 files changed, 23 insertions, 9 deletions
diff --git a/contrib/pf/ftp-proxy/filter.c b/contrib/pf/ftp-proxy/filter.c
index f575db1c69cc..db3735565dac 100644
--- a/contrib/pf/ftp-proxy/filter.c
+++ b/contrib/pf/ftp-proxy/filter.c
@@ -28,6 +28,7 @@
#include <err.h>
#include <errno.h>
+#include <libpfctl.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
@@ -68,7 +69,8 @@ add_filter(u_int32_t id, u_int8_t dir, struct sockaddr *src,
return (-1);
pfr.rule.direction = dir;
- if (ioctl(dev, DIOCADDRULE, &pfr) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
return (0);
@@ -97,12 +99,14 @@ add_nat(u_int32_t id, struct sockaddr *src, struct sockaddr *dst,
&satosin6(nat)->sin6_addr.s6_addr, 16);
memset(&pfp.addr.addr.v.a.mask.addr8, 255, 16);
}
- if (ioctl(dev, DIOCADDADDR, &pfp) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
pfr.rule.rpool.proxy_port[0] = nat_range_low;
pfr.rule.rpool.proxy_port[1] = nat_range_high;
- if (ioctl(dev, DIOCADDRULE, &pfr) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
return (0);
@@ -130,11 +134,13 @@ add_rdr(u_int32_t id, struct sockaddr *src, struct sockaddr *dst,
&satosin6(rdr)->sin6_addr.s6_addr, 16);
memset(&pfp.addr.addr.v.a.mask.addr8, 255, 16);
}
- if (ioctl(dev, DIOCADDADDR, &pfp) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
pfr.rule.rpool.proxy_port[0] = rdr_port;
- if (ioctl(dev, DIOCADDRULE, &pfr) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
return (0);
diff --git a/contrib/pf/tftp-proxy/filter.c b/contrib/pf/tftp-proxy/filter.c
index e5a769a62a54..0b87d568809f 100644
--- a/contrib/pf/tftp-proxy/filter.c
+++ b/contrib/pf/tftp-proxy/filter.c
@@ -32,6 +32,7 @@
#include <err.h>
#include <errno.h>
#include <fcntl.h>
+#include <libpfctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -72,7 +73,8 @@ add_filter(u_int32_t id, u_int8_t dir, struct sockaddr *src,
return (-1);
pfr.rule.direction = dir;
- if (ioctl(dev, DIOCADDRULE, &pfr) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
return (0);
@@ -106,7 +108,8 @@ add_nat(u_int32_t id, struct sockaddr *src, struct sockaddr *dst,
pfr.rule.rpool.proxy_port[0] = nat_range_low;
pfr.rule.rpool.proxy_port[1] = nat_range_high;
- if (ioctl(dev, DIOCADDRULE, &pfr) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
return (0);
@@ -138,7 +141,8 @@ add_rdr(u_int32_t id, struct sockaddr *src, struct sockaddr *dst,
return (-1);
pfr.rule.rpool.proxy_port[0] = rdr_port;
- if (ioctl(dev, DIOCADDRULE, &pfr) == -1)
+ if (pfctl_add_rule(dev, &pfr.rule, pfr.anchor, pfr.anchor_call,
+ pfr.ticket, pfr.pool_ticket))
return (-1);
return (0);
diff --git a/libexec/tftp-proxy/Makefile b/libexec/tftp-proxy/Makefile
index 596ca26cb61c..353e72007734 100644
--- a/libexec/tftp-proxy/Makefile
+++ b/libexec/tftp-proxy/Makefile
@@ -6,6 +6,9 @@ PROG= tftp-proxy
SRCS= tftp-proxy.c filter.c
MAN= tftp-proxy.8
+CFLAGS+= -I${SRCTOP}/lib/libpfctl -I${OBJTOP}/lib/libpfctl
+LIBADD= pfctl
+
WARNS?= 3
.include <bsd.prog.mk>
diff --git a/usr.sbin/ftp-proxy/Makefile b/usr.sbin/ftp-proxy/Makefile
index 7d05aa9bf624..768901f99131 100644
--- a/usr.sbin/ftp-proxy/Makefile
+++ b/usr.sbin/ftp-proxy/Makefile
@@ -8,8 +8,9 @@ MAN= ftp-proxy.8
SRCS= ftp-proxy.c filter.c
CFLAGS+=-I${SRCTOP}/contrib/pf/libevent
+CFLAGS+= -I${SRCTOP}/lib/libpfctl -I${OBJTOP}/lib/libpfctl
-LIBADD= event1
+LIBADD= event1 pfctl
WARNS?= 3