mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
The ndproxy(4) kernel module implements IPv6 Neighbor Discovery
proxying with many options to handle several use-cases. It replies to a neighbor solicitation with a specific neighbor advertisement, in order to let the PE uplink router send further packets to a CPE downlink router, that may or may not be the same node that the one which runs ndproxy. The main difference with the ndp(8) command-line tool is that, with ndproxy(4), the host running ndp can be used only to redirect packets to another IPv6 internal router, for instance a dedicated one with hardware support of IPv6 routing processes. WWW: http://www.fenyo.net/newweb/ndproxy.html PR: 219622 Submitted by: Alexandre Fenyo (maintainer) Reviewed by: matthew (mentor), mat Approved by: matthew (mentor) Differential Revision: https://reviews.freebsd.org/D11892
This commit is contained in:
parent
86cce0560a
commit
a85c20e180
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=447578
6 changed files with 143 additions and 0 deletions
|
@ -446,6 +446,7 @@
|
||||||
SUBDIR += ncp
|
SUBDIR += ncp
|
||||||
SUBDIR += ndisc6
|
SUBDIR += ndisc6
|
||||||
SUBDIR += ndpi
|
SUBDIR += ndpi
|
||||||
|
SUBDIR += ndproxy
|
||||||
SUBDIR += nepenthes
|
SUBDIR += nepenthes
|
||||||
SUBDIR += nepim
|
SUBDIR += nepim
|
||||||
SUBDIR += net6
|
SUBDIR += net6
|
||||||
|
|
30
net/ndproxy/Makefile
Normal file
30
net/ndproxy/Makefile
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
PORTNAME= ndproxy
|
||||||
|
PORTVERSION= 2.0
|
||||||
|
DISTVERSIONPREFIX= v
|
||||||
|
CATEGORIES= net ipv6
|
||||||
|
|
||||||
|
MAINTAINER= fbsd.bugzilla@fenyo.net
|
||||||
|
COMMENT= Implementation of IPv6 Neighbor Discovery proxy
|
||||||
|
|
||||||
|
LICENSE= BSD2CLAUSE
|
||||||
|
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||||
|
|
||||||
|
SUB_FILES= pkg-message
|
||||||
|
|
||||||
|
USES= kmod
|
||||||
|
USE_RC_SUBR= ndproxy
|
||||||
|
USE_GITHUB= yes
|
||||||
|
GH_ACCOUNT= AlexandreFenyo
|
||||||
|
|
||||||
|
PLIST_FILES= ${KMODDIR}/${PORTNAME}.ko man/man4/${PORTNAME}.4.gz
|
||||||
|
|
||||||
|
pre-build:
|
||||||
|
(cd ${BUILD_WRKSRC}; ${MAKE} depend)
|
||||||
|
|
||||||
|
do-install:
|
||||||
|
${INSTALL_KLD} ${WRKSRC}/${PORTNAME}.ko ${STAGEDIR}${KMODDIR}
|
||||||
|
${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.4 ${STAGEDIR}${PREFIX}/man/man4/
|
||||||
|
|
||||||
|
.include <bsd.port.mk>
|
3
net/ndproxy/distinfo
Normal file
3
net/ndproxy/distinfo
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
TIMESTAMP = 1502146291
|
||||||
|
SHA256 (AlexandreFenyo-ndproxy-v2.0_GH0.tar.gz) = 29c626355d91fef9c13281d668b2a1f79618758c44c4aaf4b0434977ceb38588
|
||||||
|
SIZE (AlexandreFenyo-ndproxy-v2.0_GH0.tar.gz) = 8274107
|
73
net/ndproxy/files/ndproxy.in
Normal file
73
net/ndproxy/files/ndproxy.in
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
# PROVIDE: ndproxy
|
||||||
|
# REQUIRE: NETWORKING sysctl
|
||||||
|
# KEYWORD: nojail
|
||||||
|
|
||||||
|
. /etc/rc.subr
|
||||||
|
|
||||||
|
name="ndproxy"
|
||||||
|
rcvar=ndproxy_enable
|
||||||
|
start_cmd="ndproxy_start"
|
||||||
|
stop_cmd="ndproxy_stop"
|
||||||
|
|
||||||
|
ndproxy_start()
|
||||||
|
{
|
||||||
|
echo "Starting ndproxy:"
|
||||||
|
if ! sysctl net.inet6.ndproxyconf_uplink_interface > /dev/null 2>&1; then
|
||||||
|
if ! kldload ndproxy > /dev/null 2>&1; then
|
||||||
|
echo Failure loading ndproxy.
|
||||||
|
return;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sysctl net.inet6.ndproxycount=0
|
||||||
|
|
||||||
|
if [ -z "${ndproxy_uplink_interface}" ]; then
|
||||||
|
echo "Warning: ndproxy_uplink_interface should be defined in rc.conf (see ndproxy(4))."
|
||||||
|
fi
|
||||||
|
sysctl net.inet6.ndproxyconf_uplink_interface=${ndproxy_uplink_interface}
|
||||||
|
|
||||||
|
if [ -z "${ndproxy_downlink_mac_address}" ]; then
|
||||||
|
echo "Warning: ndproxy_downlink_mac_address should be defined in rc.conf (see ndproxy(4))."
|
||||||
|
fi
|
||||||
|
sysctl net.inet6.ndproxyconf_downlink_mac_address=${ndproxy_downlink_mac_address}
|
||||||
|
|
||||||
|
if [ -z "${ndproxy_uplink_ipv6_addresses}" ]; then
|
||||||
|
echo "Warning: ndproxy_uplink_ipv6_addresses should be defined in rc.conf (see ndproxy(4))."
|
||||||
|
fi
|
||||||
|
sysctl net.inet6.ndproxyconf_exception_ipv6_addresses=${ndproxy_exception_ipv6_addresses}
|
||||||
|
|
||||||
|
# Note that ndproxy_exception_ipv6_addresses may be left empty.
|
||||||
|
|
||||||
|
if [ -n "${ndproxy_uplink_interface}" ]; then
|
||||||
|
if ! ifconfig ${ndproxy_uplink_interface} | head -1 | grep -q PPROMISC; then
|
||||||
|
echo "Putting interface ${ndproxy_uplink_interface} into permanently promiscuous mode."
|
||||||
|
ifconfig ${ndproxy_uplink_interface} promisc
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
sysctl net.inet6.ndproxyconf_uplink_ipv6_addresses=${ndproxy_uplink_ipv6_addresses}
|
||||||
|
|
||||||
|
echo Done.
|
||||||
|
}
|
||||||
|
|
||||||
|
ndproxy_stop()
|
||||||
|
{
|
||||||
|
echo "Stopping ndproxy:"
|
||||||
|
|
||||||
|
if ! sysctl net.inet6.ndproxyconf_uplink_interface > /dev/null 2>&1; then
|
||||||
|
echo Failure unloading ndproxy.
|
||||||
|
else
|
||||||
|
if ! kldunload ndproxy > /dev/null 2>&1; then
|
||||||
|
echo Failure unloading ndproxy.
|
||||||
|
else
|
||||||
|
echo Done.
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
load_rc_config $name
|
||||||
|
run_rc_command "$1"
|
22
net/ndproxy/files/pkg-message.in
Normal file
22
net/ndproxy/files/pkg-message.in
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
IMPORTANT! MAKE SURE TO READ THE FOLLOWING!
|
||||||
|
|
||||||
|
Please remember to reinstall this port after kernel source update.
|
||||||
|
|
||||||
|
ndproxy is configured using four sysctl kernel states. The boot script
|
||||||
|
(%%PREFIX%%/etc/rc.d/ndproxy) can set those states using rc.conf variables.
|
||||||
|
|
||||||
|
Here is the corresponding rc.conf variable to each sysctl kernel state:
|
||||||
|
|
||||||
|
sysctl kernel state rc.conf corresponding variable
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
net.inet6.ndproxyconf_uplink_interface ndproxy_uplink_interface
|
||||||
|
net.inet6.ndproxyconf_downlink_mac_address ndproxy_downlink_mac_address
|
||||||
|
net.inet6.ndproxyconf_exception_ipv6_addresses ndproxy_exception_ipv6_addresses
|
||||||
|
net.inet6.ndproxyconf_uplink_ipv6_addresses ndproxy_uplink_ipv6_addresses
|
||||||
|
|
||||||
|
The network interface set in ndproxy_uplink_interface will be put into
|
||||||
|
permanently promiscuous mode.
|
||||||
|
|
||||||
|
IMPORTANT! MAKE SURE TO READ THE ABOVE!
|
||||||
|
-------------------------------------------------------------------------------
|
14
net/ndproxy/pkg-descr
Normal file
14
net/ndproxy/pkg-descr
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
The ndproxy(4) kernel module implements IPv6 Neighbor Discovery
|
||||||
|
proxying with many options to handle several use-cases.
|
||||||
|
|
||||||
|
It replies to a neighbor solicitation with a specific neighbor
|
||||||
|
advertisement, in order to let the PE uplink router send further
|
||||||
|
packets to a CPE downlink router, that may or may not be the same
|
||||||
|
node that the one which runs ndproxy.
|
||||||
|
|
||||||
|
The main difference with the ndp(8) command-line tool is that, with
|
||||||
|
ndproxy(4), the host running ndp can be used only to redirect
|
||||||
|
packets to another IPv6 internal router, for instance a dedicated
|
||||||
|
one with hardware support of IPv6 routing processes.
|
||||||
|
|
||||||
|
WWW: http://www.fenyo.net/newweb/ndproxy.html
|
Loading…
Add table
Reference in a new issue