isc-dhcp: update to 4.3.3. Migrate from oldplackages
Signed-off-by: Antony Antony <antony@phenome.org>
This commit is contained in:
parent
4457604f3b
commit
7f594309bf
15 changed files with 964 additions and 0 deletions
241
net/isc-dhcp/Makefile
Normal file
241
net/isc-dhcp/Makefile
Normal file
|
@ -0,0 +1,241 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2006-2012 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=isc-dhcp
|
||||||
|
UPSTREAM_NAME:=dhcp
|
||||||
|
PKG_VERSION:=4.3.3
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
PKG_MAINTAINER:=Antony Antony <antony@phenome.org>
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(UPSTREAM_NAME)-$(PKG_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=ftp://ftp.isc.org/isc/dhcp/$(PKG_VERSION)
|
||||||
|
PKG_MD5SUM:=c5577b09c9017cdd319a11ff6364268e
|
||||||
|
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(UPSTREAM_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/isc-dhcp/Default
|
||||||
|
SECTION:=net
|
||||||
|
CATEGORY:=Network
|
||||||
|
SUBMENU:=IP Addresses and Names
|
||||||
|
TITLE:=ISC's DHCP
|
||||||
|
URL:=https://www.isc.org/software/dhcp
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-ipv4
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
TITLE+= relay (without IPv6)
|
||||||
|
VARIANT:=ipv4
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-ipv6
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
TITLE+= relay (with IPv6)
|
||||||
|
VARIANT:=ipv6
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay/description
|
||||||
|
provides a means for relaying DHCP and BOOTP requests from a subnet to which
|
||||||
|
no DHCP server is directly connected to one or more DHCP servers on other
|
||||||
|
subnets.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-ipv4/description
|
||||||
|
$(call Package/isc-dhcp-relay-ipv6/description)
|
||||||
|
This package is compiled with IPv4 support only.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-ipv4/conffiles
|
||||||
|
/etc/config/dhcrelay
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-ipv6/description
|
||||||
|
$(call Package/isc-dhcp-relay/description)
|
||||||
|
This package is compiled with IPv4 and IPv6 support.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-ipv6/conffiles
|
||||||
|
/etc/config/dhcrelay
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-ipv4
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
TITLE+= client (without IPv6)
|
||||||
|
VARIANT:=ipv4
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-ipv6
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
TITLE+= client (with IPv6)
|
||||||
|
VARIANT:=ipv6
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client/description
|
||||||
|
provides a means for configuring one or more network interfaces using the
|
||||||
|
Dynamic Host Configuration Protocol, BOOTP protocol, or if these protocols
|
||||||
|
fail, by statically assigning an address.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-ipv4/description
|
||||||
|
$(call Package/isc-dhcp-client/description)
|
||||||
|
This package is compiled with IPv4 support only.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-ipv6/description
|
||||||
|
$(call Package/isc-dhcp-client/description)
|
||||||
|
This package is compiled with IPv4 and IPv6 support.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-ipv4
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
TITLE+= server (without IPv6)
|
||||||
|
VARIANT:=ipv4
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-ipv6
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
TITLE+= server (with IPv6)
|
||||||
|
VARIANT:=ipv6
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server/description
|
||||||
|
implements the Dynamic Host Configuration Protocol (DHCP) and the Internet
|
||||||
|
Bootstrap Protocol (BOOTP).
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-ipv4/description
|
||||||
|
$(call Package/isc-dhcp-server/description)
|
||||||
|
This package is compiled with IPv4 support only.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-ipv6/description
|
||||||
|
$(call Package/isc-dhcp-server/description)
|
||||||
|
This package is compiled with IPv4 and IPv6 support.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-omshell-ipv4
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
DEPENDS:= +isc-dhcp-server-ipv4
|
||||||
|
TITLE+= omshell (without IPv6)
|
||||||
|
VARIANT:=ipv4
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-omshell-ipv6
|
||||||
|
$(call Package/isc-dhcp/Default)
|
||||||
|
DEPENDS:= +isc-dhcp-server-ipv6
|
||||||
|
TITLE+= omshell (with IPv6)
|
||||||
|
VARIANT:=ipv6
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-omshell/description
|
||||||
|
provides an interactive way to connect to, query, and possibly change, the ISC
|
||||||
|
DHCP Server's state via OMAPI, the Object Management API.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-omshell-ipv4/description
|
||||||
|
$(call Package/isc-dhcp-omshell/description)
|
||||||
|
This package is compiled with IPv4 support only.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-omshell-ipv6/description
|
||||||
|
$(call Package/isc-dhcp-omshell/description)
|
||||||
|
This package is compiled with IPv4 and IPv6 support.
|
||||||
|
endef
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--disable-tracing \
|
||||||
|
--enable-paranoia \
|
||||||
|
--disable-dependency-tracking \
|
||||||
|
--with-randomdev=/dev/urandom \
|
||||||
|
ac_cv_file__dev_random=yes
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),ipv4)
|
||||||
|
CONFIGURE_ARGS += --disable-dhcpv6
|
||||||
|
endif
|
||||||
|
ifeq ($(BUILD_VARIANT),ipv6)
|
||||||
|
CONFIGURE_ARGS += --enable-dhcpv6
|
||||||
|
endif
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||||
|
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||||
|
BUILD_CC="$(HOSTCC_NOCACHE)" \
|
||||||
|
CROSS_CC="$(TARGET_CC)" \
|
||||||
|
host_alias="$(GNU_TARGET_NAME)" \
|
||||||
|
target_alias="$(GNU_TARGET_NAME)" \
|
||||||
|
build_alias="$(GNU_HOST_NAME)" \
|
||||||
|
all install-exec
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-relay-$(BUILD_VARIANT)/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhcrelay $(1)/usr/sbin
|
||||||
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
|
$(INSTALL_DATA) ./files/etc/config/dhcrelay $(1)/etc/config
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_BIN) ./files/dhcrelay4.init $(1)/etc/init.d/dhcrelay4
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-$(BUILD_VARIANT)/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d
|
||||||
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhcpd $(1)/usr/sbin
|
||||||
|
$(INSTALL_BIN) ./files/dhcpd.init $(1)/etc/init.d/dhcpd
|
||||||
|
$(INSTALL_BIN) ./files/dhcpd.conf $(1)/etc
|
||||||
|
ifeq ($(BUILD_VARIANT),ipv6)
|
||||||
|
$(INSTALL_BIN) ./files/dhcpd6.init $(1)/etc/init.d/dhcpd6
|
||||||
|
$(INSTALL_BIN) ./files/dhcpd6.conf $(1)/etc
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-ipv4/conffiles
|
||||||
|
/etc/dhcpd.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-server-ipv6/conffiles
|
||||||
|
/etc/dhcpd6.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-$(BUILD_VARIANT)/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc
|
||||||
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhclient $(1)/usr/sbin
|
||||||
|
$(INSTALL_BIN) ./files/dhclient-script $(1)/usr/sbin/
|
||||||
|
ifeq ($(BUILD_VARIANT),ipv6)
|
||||||
|
$(INSTALL_BIN) ./files/dhclient6.conf $(1)/etc
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-ipv4/conffiles
|
||||||
|
/etc/dhclient.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-client-ipv6/conffiles
|
||||||
|
/etc/dhclient6.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/isc-dhcp-omshell-$(BUILD_VARIANT)/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/omshell $(1)/usr/bin
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-relay-ipv4))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-server-ipv4))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-client-ipv4))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-omshell-ipv4))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-relay-ipv6))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-server-ipv6))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-client-ipv6))
|
||||||
|
$(eval $(call BuildPackage,isc-dhcp-omshell-ipv6))
|
281
net/isc-dhcp/files/dhclient-script
Normal file
281
net/isc-dhcp/files/dhclient-script
Normal file
|
@ -0,0 +1,281 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
make_resolv_conf() {
|
||||||
|
if [ x"$new_domain_name_servers" != x ]; then
|
||||||
|
cat /dev/null > /etc/resolv.conf.dhclient
|
||||||
|
chmod 644 /etc/resolv.conf.dhclient
|
||||||
|
if [ x"$new_domain_search" != x ]; then
|
||||||
|
echo search $new_domain_search >> /etc/resolv.conf.dhclient
|
||||||
|
elif [ x"$new_domain_name" != x ]; then
|
||||||
|
# Note that the DHCP 'Domain Name Option' is really just a domain
|
||||||
|
# name, and that this practice of using the domain name option as
|
||||||
|
# a search path is both nonstandard and deprecated.
|
||||||
|
echo search $new_domain_name >> /etc/resolv.conf.dhclient
|
||||||
|
fi
|
||||||
|
for nameserver in $new_domain_name_servers; do
|
||||||
|
echo nameserver $nameserver >>/etc/resolv.conf.dhclient
|
||||||
|
done
|
||||||
|
|
||||||
|
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||||||
|
cat /dev/null > /etc/resolv.conf.dhclient6
|
||||||
|
chmod 644 /etc/resolv.conf.dhclient6
|
||||||
|
|
||||||
|
if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||||||
|
echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
|
||||||
|
fi
|
||||||
|
for nameserver in ${new_dhcp6_name_servers} ; do
|
||||||
|
echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if both v4 and v6 clients are running, concatenate results
|
||||||
|
cat /etc/resolv.conf.* > /etc/resolv.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
|
||||||
|
exit_with_hooks() {
|
||||||
|
exit_status=$1
|
||||||
|
if [ -f /etc/dhclient-exit-hooks ]; then
|
||||||
|
. /etc/dhclient-exit-hooks
|
||||||
|
fi
|
||||||
|
# probably should do something with exit status of the local script
|
||||||
|
exit $exit_status
|
||||||
|
}
|
||||||
|
|
||||||
|
# Invoke the local dhcp client enter hooks, if they exist.
|
||||||
|
if [ -f /etc/dhclient-enter-hooks ]; then
|
||||||
|
exit_status=0
|
||||||
|
. /etc/dhclient-enter-hooks
|
||||||
|
# allow the local script to abort processing of this state
|
||||||
|
# local script must set exit_status variable to nonzero.
|
||||||
|
if [ $exit_status -ne 0 ]; then
|
||||||
|
exit $exit_status
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
### DHCPv4 Handlers
|
||||||
|
###
|
||||||
|
|
||||||
|
if [ x$new_broadcast_address != x ]; then
|
||||||
|
new_broadcast_arg="broadcast $new_broadcast_address"
|
||||||
|
fi
|
||||||
|
if [ x$new_subnet_mask != x ]; then
|
||||||
|
new_subnet_arg="netmask $new_subnet_mask"
|
||||||
|
fi
|
||||||
|
if [ x$alias_subnet_mask != x ]; then
|
||||||
|
alias_subnet_arg="netmask $alias_subnet_mask"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xMEDIUM ]; then
|
||||||
|
# Linux doesn't do mediums (ok, ok, media).
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xPREINIT ]; then
|
||||||
|
if [ x$alias_ip_address != x ]; then
|
||||||
|
# Bring down alias interface. Its routes will disappear too.
|
||||||
|
ifconfig $interface:0- 0.0.0.0
|
||||||
|
fi
|
||||||
|
ifconfig $interface 0.0.0.0 up
|
||||||
|
|
||||||
|
# We need to give the kernel some time to get the interface up.
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
|
||||||
|
[ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
|
||||||
|
current_hostname=`hostname`
|
||||||
|
if [ x$current_hostname = x ] || \
|
||||||
|
[ x$current_hostname = x$old_host_name ]; then
|
||||||
|
if [ x$current_hostname = x ] || \
|
||||||
|
[ x$new_host_name != x$old_host_name ]; then
|
||||||
|
hostname $new_host_name
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
|
||||||
|
[ x$alias_ip_address != x$old_ip_address ]; then
|
||||||
|
# Possible new alias. Remove old alias.
|
||||||
|
ifconfig $interface:0- 0.0.0.0
|
||||||
|
fi
|
||||||
|
if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
|
||||||
|
# IP address changed. Bringing down the interface will delete all routes,
|
||||||
|
# and clear the ARP cache.
|
||||||
|
ifconfig $interface 0.0.0.0 down
|
||||||
|
|
||||||
|
fi
|
||||||
|
if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
|
||||||
|
[ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
|
||||||
|
|
||||||
|
ifconfig $interface $new_ip_address $new_subnet_arg \
|
||||||
|
$new_broadcast_arg
|
||||||
|
for router in $new_routers; do
|
||||||
|
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
|
||||||
|
route add -host $router dev $interface
|
||||||
|
fi
|
||||||
|
route add default gw $router
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
|
||||||
|
then
|
||||||
|
ifconfig $interface:0- 0.0.0.0
|
||||||
|
ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
|
||||||
|
route add -host $alias_ip_address $interface:0
|
||||||
|
fi
|
||||||
|
make_resolv_conf
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \
|
||||||
|
|| [ x$reason = xSTOP ]; then
|
||||||
|
if [ x$alias_ip_address != x ]; then
|
||||||
|
# Turn off alias interface.
|
||||||
|
ifconfig $interface:0- 0.0.0.0
|
||||||
|
fi
|
||||||
|
if [ x$old_ip_address != x ]; then
|
||||||
|
# Shut down interface, which will delete routes and clear arp cache.
|
||||||
|
ifconfig $interface 0.0.0.0 down
|
||||||
|
fi
|
||||||
|
if [ x$alias_ip_address != x ]; then
|
||||||
|
ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
|
||||||
|
route add -host $alias_ip_address $interface:0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove v4 dns configuration for this interface
|
||||||
|
rm /etc/resolv.conf.dhclient
|
||||||
|
cat /etc/resolv.conf.* > /etc/resolv.conf
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xTIMEOUT ]; then
|
||||||
|
if [ x$alias_ip_address != x ]; then
|
||||||
|
ifconfig $interface:0- 0.0.0.0
|
||||||
|
fi
|
||||||
|
ifconfig $interface $new_ip_address $new_subnet_arg \
|
||||||
|
$new_broadcast_arg
|
||||||
|
set $new_routers
|
||||||
|
if ping -q -c 1 $1; then
|
||||||
|
if [ x$new_ip_address != x$alias_ip_address ] && \
|
||||||
|
[ x$alias_ip_address != x ]; then
|
||||||
|
ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
|
||||||
|
route add -host $alias_ip_address dev $interface:0
|
||||||
|
fi
|
||||||
|
for router in $new_routers; do
|
||||||
|
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
|
||||||
|
route add -host $router dev $interface
|
||||||
|
fi
|
||||||
|
route add default gw $router
|
||||||
|
done
|
||||||
|
make_resolv_conf
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
ifconfig $interface 0.0.0.0 down
|
||||||
|
exit_with_hooks 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
### DHCPv6 Handlers
|
||||||
|
###
|
||||||
|
|
||||||
|
if [ x$reason = xPREINIT6 ]; then
|
||||||
|
# Ensure interface is up.
|
||||||
|
ifconfig ${interface} up
|
||||||
|
|
||||||
|
# Remove any stale addresses from aborted clients.
|
||||||
|
ip -f inet6 addr flush dev ${interface} scope global
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then
|
||||||
|
echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix}
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xBOUND6 ]; then
|
||||||
|
if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then
|
||||||
|
exit_with_hooks 2;
|
||||||
|
fi
|
||||||
|
|
||||||
|
ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}
|
||||||
|
|
||||||
|
# Check for nameserver options.
|
||||||
|
make_resolv_conf
|
||||||
|
|
||||||
|
### <<
|
||||||
|
# Set up softwire tunnel
|
||||||
|
if [ x${new_dhcp6_softwire} != x ] ; then
|
||||||
|
/etc/init.d/dhclient stop
|
||||||
|
ifconfig ${interface} 0.0.0.0
|
||||||
|
ip -6 tunnel add tun0 mode ipip6 \
|
||||||
|
remote ${new_dhcp6_softwire} \
|
||||||
|
local ${new_ip6_address} \
|
||||||
|
dev ${interface} encaplimit none
|
||||||
|
ip link set tun0 up
|
||||||
|
ip route add default dev tun0
|
||||||
|
fi
|
||||||
|
### >>
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then
|
||||||
|
if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then
|
||||||
|
exit_with_hooks 2;
|
||||||
|
fi
|
||||||
|
|
||||||
|
ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}
|
||||||
|
|
||||||
|
# Make sure nothing has moved around on us.
|
||||||
|
|
||||||
|
# Nameservers/domains/etc.
|
||||||
|
if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] ||
|
||||||
|
[ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then
|
||||||
|
make_resolv_conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xDEPREF6 ]; then
|
||||||
|
if [ x${new_ip6_address} = x ] ; then
|
||||||
|
exit_with_hooks 2;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Busybox ifconfig has no way to communicate this to the kernel, so ignore it
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then
|
||||||
|
if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then
|
||||||
|
exit_with_hooks 2;
|
||||||
|
fi
|
||||||
|
|
||||||
|
ifconfig ${interface} del ${old_ip6_address}/${old_ip6_prefixlen}
|
||||||
|
|
||||||
|
# remove v6 dns configuration for this interface
|
||||||
|
rm /etc/resolv.conf.dhclient6
|
||||||
|
cat /etc/resolv.conf.* > /etc/resolv.conf
|
||||||
|
|
||||||
|
### <<
|
||||||
|
# Tear down softwire tunnel
|
||||||
|
if [ x${old_dhcp6_softwire} != x ] ; then
|
||||||
|
ip link set tun0 down
|
||||||
|
ip tunnel del tun0
|
||||||
|
fi
|
||||||
|
### >>
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit_with_hooks 0
|
30
net/isc-dhcp/files/dhclient.init
Normal file
30
net/isc-dhcp/files/dhclient.init
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=60
|
||||||
|
|
||||||
|
lease_file=/var/dhclient.leases
|
||||||
|
config_file=/etc/dhclient.conf
|
||||||
|
pid_file=/var/run/dhclient.pid
|
||||||
|
script_file=/usr/sbin/dhclient-script
|
||||||
|
|
||||||
|
start() {
|
||||||
|
/usr/sbin/dhclient -q -nw -cf $config_file -lf $lease_file -pf $pid_file -sf $script_file `/sbin/uci get network.wan.ifname`
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if [ ! -e $pid_file ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
kill -9 `cat $pid_file`
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm $pid_file
|
||||||
|
}
|
2
net/isc-dhcp/files/dhclient6.conf
Normal file
2
net/isc-dhcp/files/dhclient6.conf
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
option dhcp6.softwire code 54 = ip6-address;
|
||||||
|
also request dhcp6.softwire;
|
30
net/isc-dhcp/files/dhclient6.init
Normal file
30
net/isc-dhcp/files/dhclient6.init
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=60
|
||||||
|
|
||||||
|
lease_file=/var/dhclient6.leases
|
||||||
|
config_file=/etc/dhclient6.conf
|
||||||
|
pid_file=/var/run/dhclient6.pid
|
||||||
|
script_file=/usr/sbin/dhclient-script
|
||||||
|
|
||||||
|
start() {
|
||||||
|
/usr/sbin/dhclient -q -nw -6 -cf $config_file -lf $lease_file -pf $pid_file -sf $script_file `/sbin/uci get network.wan.ifname`
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if [ ! -e $pid_file ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
kill -9 `cat $pid_file`
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm $pid_file
|
||||||
|
}
|
13
net/isc-dhcp/files/dhcpd.conf
Normal file
13
net/isc-dhcp/files/dhcpd.conf
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# dhcpd.conf
|
||||||
|
|
||||||
|
authoritative;
|
||||||
|
|
||||||
|
default-lease-time 3600;
|
||||||
|
max-lease-time 86400;
|
||||||
|
|
||||||
|
option domain-name-servers 192.168.1.1;
|
||||||
|
|
||||||
|
subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||||
|
range 192.168.1.10 192.168.1.50;
|
||||||
|
option routers 192.168.1.1;
|
||||||
|
}
|
33
net/isc-dhcp/files/dhcpd.init
Normal file
33
net/isc-dhcp/files/dhcpd.init
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=65
|
||||||
|
|
||||||
|
lease_file=/tmp/dhcpd.leases
|
||||||
|
config_file=/etc/dhcpd.conf
|
||||||
|
pid_file=/var/run/dhcpd.pid
|
||||||
|
|
||||||
|
start() {
|
||||||
|
if [ ! -e $lease_file ]; then
|
||||||
|
touch $lease_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
/usr/sbin/dhcpd -q -cf $config_file -lf $lease_file -pf $pid_file $dhcp_ifs
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if [ ! -e $pid_file ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
kill -9 `cat $pid_file`
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm $pid_file
|
||||||
|
}
|
30
net/isc-dhcp/files/dhcpd6.conf
Normal file
30
net/isc-dhcp/files/dhcpd6.conf
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# dhcpd6.conf
|
||||||
|
|
||||||
|
authoritative;
|
||||||
|
|
||||||
|
default-lease-time 3600;
|
||||||
|
max-lease-time 86400;
|
||||||
|
|
||||||
|
# Enable RFC 5007 support
|
||||||
|
#allow leasequery;
|
||||||
|
|
||||||
|
# Global definitions for name server address(es) and domain search list
|
||||||
|
#option dhcp6.name-servers 3ffe:501:ffff:100:200:ff:fe00:3f3e;
|
||||||
|
#option dhcp6.domain-search "test.example.com","example.com";
|
||||||
|
|
||||||
|
# Set preference to 255 (maximum) in order to avoid waiting for
|
||||||
|
# additional servers when there is only one
|
||||||
|
#option dhcp6.preference 255;
|
||||||
|
|
||||||
|
# Server side command to enable rapid-commit (2 packet exchange)
|
||||||
|
#option dhcp6.rapid-commit;
|
||||||
|
|
||||||
|
# The delay before information-request refresh
|
||||||
|
# (minimum is 10 minutes, maximum one day, default is to not refresh)
|
||||||
|
# (set to 6 hours)
|
||||||
|
#option dhcp6.info-refresh-time 3600;
|
||||||
|
|
||||||
|
subnet6 3ffe:501:ffff:101::/64 {
|
||||||
|
# Use the whole /64 prefix for clients
|
||||||
|
range6 3ffe:501:ffff:101:: /64;
|
||||||
|
}
|
33
net/isc-dhcp/files/dhcpd6.init
Normal file
33
net/isc-dhcp/files/dhcpd6.init
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=65
|
||||||
|
|
||||||
|
lease_file=/var/dhcpd6.leases
|
||||||
|
config_file=/etc/dhcpd6.conf
|
||||||
|
pid_file=/var/run/dhcpd6.pid
|
||||||
|
|
||||||
|
start() {
|
||||||
|
if [ ! -e $lease_file ]; then
|
||||||
|
touch $lease_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
/usr/sbin/dhcpd -q -6 -cf $config_file -lf $lease_file -pf $pid_file $dhcp_ifs
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if [ ! -e $pid_file ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
kill -9 `cat $pid_file`
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm $pid_file
|
||||||
|
}
|
53
net/isc-dhcp/files/dhcrelay4.init
Normal file
53
net/isc-dhcp/files/dhcrelay4.init
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
|
||||||
|
START=91
|
||||||
|
|
||||||
|
SERVICE_SIG="KILL"
|
||||||
|
SERVICE_PID_FILE="/var/run/dhcrelay4.pid"
|
||||||
|
SERVICE_USE_PID=1
|
||||||
|
|
||||||
|
start() {
|
||||||
|
. /lib/functions/network.sh
|
||||||
|
config_load dhcrelay
|
||||||
|
local args=""
|
||||||
|
|
||||||
|
local enabled
|
||||||
|
config_get_bool enabled ipv4 enabled 0
|
||||||
|
[ "$enabled" -eq 0 ] && return 0
|
||||||
|
|
||||||
|
# listen interfaces
|
||||||
|
local interfaces
|
||||||
|
local ifname
|
||||||
|
config_get interfaces ipv4 interfaces
|
||||||
|
for net in $interfaces; do
|
||||||
|
if network_get_device ifname "$net"; then
|
||||||
|
append args "-i $ifname"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# link selection sub-option (RFC3527)
|
||||||
|
local link_selection
|
||||||
|
config_get link_selection ipv4 link_selection
|
||||||
|
if network_get_device ifname "$link_selection"; then
|
||||||
|
append args "-l $ifname"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# relay mode
|
||||||
|
local relay_mode
|
||||||
|
config_get relay_mode ipv4 relay_mode
|
||||||
|
[ -n "$relay_mode" ] && append args "-m $relay_mode"
|
||||||
|
|
||||||
|
# dhcp server address
|
||||||
|
local server
|
||||||
|
config_get server ipv4 dhcpserver
|
||||||
|
[ -n "$server" ] || return 0
|
||||||
|
append args "$server"
|
||||||
|
|
||||||
|
service_start /usr/sbin/dhcrelay -4 -q \
|
||||||
|
-pf $SERVICE_PID_FILE $args
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
service_stop /usr/sbin/dhcrelay
|
||||||
|
}
|
42
net/isc-dhcp/files/dhcrelay6.init
Normal file
42
net/isc-dhcp/files/dhcrelay6.init
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
|
||||||
|
START=91
|
||||||
|
|
||||||
|
SERVICE_SIG="KILL"
|
||||||
|
SERVICE_PID_FILE="/var/run/dhcrelay6.pid"
|
||||||
|
SERVICE_USE_PID=1
|
||||||
|
|
||||||
|
start() {
|
||||||
|
local relay_dhcpserver
|
||||||
|
local relay_upper
|
||||||
|
local relay_lowers
|
||||||
|
local relay_lower_args
|
||||||
|
|
||||||
|
config_load dhcrelay
|
||||||
|
config_get relay_dhcpserver ipv6 dhcpserver
|
||||||
|
config_get relay_upper ipv6 upper
|
||||||
|
config_get relay_lowers ipv6 lower
|
||||||
|
|
||||||
|
# If a specific DHCP server is specified,
|
||||||
|
# add it to the upper interface.
|
||||||
|
if [ -n "$relay_dhcpserver" ]; then
|
||||||
|
relay_upper="${relay_dhcpserver}%$relay_upper"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add all lower interfaces at the end.
|
||||||
|
if [ -n "$relay_lowers" ]; then
|
||||||
|
local relay_lower
|
||||||
|
for relay_lower in $relay_lowers; do
|
||||||
|
append relay_lower_args "-l $relay_lower"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
service_start /usr/sbin/dhcrelay -6 -q \
|
||||||
|
-pf $SERVICE_PID_FILE \
|
||||||
|
-u $relay_upper $relay_lower_args
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
service_stop /usr/sbin/dhcrelay
|
||||||
|
}
|
27
net/isc-dhcp/files/etc/config/dhcrelay
Normal file
27
net/isc-dhcp/files/etc/config/dhcrelay
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
config dhcrelay ipv4
|
||||||
|
option 'enabled' '0'
|
||||||
|
|
||||||
|
# IP address of the server
|
||||||
|
option 'dhcpserver' '192.0.2.10'
|
||||||
|
|
||||||
|
# network interfaces to listen on (e.g. lan or wan)
|
||||||
|
option 'interfaces' ''
|
||||||
|
|
||||||
|
# What to do about packets that already have a relay option:
|
||||||
|
# 'append': Forward and append our own relay option
|
||||||
|
# 'replace': Forward, but replace theirs with ours (default)
|
||||||
|
# 'forward': Forward without changes
|
||||||
|
# 'discard': Don't forward
|
||||||
|
option 'relay_mode' ''
|
||||||
|
|
||||||
|
# enable RFC3527 link selection sub-option and use the IP address of
|
||||||
|
# the specified network interface as "uplink" IP address (e.g. wan)
|
||||||
|
option 'link_selection' ''
|
||||||
|
|
||||||
|
config dhcrelay ipv6
|
||||||
|
# option dhcpserver '2001:db8:1::1'
|
||||||
|
option upper 'eth1'
|
||||||
|
list lower 'eth0.2'
|
||||||
|
list lower 'eth0.3'
|
||||||
|
|
30
net/isc-dhcp/patches/000-compile.patch
Normal file
30
net/isc-dhcp/patches/000-compile.patch
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
diff --git a/bind/Makefile.in b/bind/Makefile.in
|
||||||
|
index bd784c6..5950d19 100644
|
||||||
|
--- a/bind/Makefile.in
|
||||||
|
+++ b/bind/Makefile.in
|
||||||
|
@@ -85,13 +85,13 @@ bind2:
|
||||||
|
echo Bind export libraries already installed ; \
|
||||||
|
else \
|
||||||
|
echo Building BIND Export libraries - this takes some time. ;\
|
||||||
|
- (cd ${bindsrcdir}/lib/export ; \
|
||||||
|
- echo building in `pwd` ; \
|
||||||
|
- MAKE=${GMAKE} ${GMAKE} >> ${binddir}/build.log) ; \
|
||||||
|
+ (cd ${bindsrcdir}/lib/export/dns ; \
|
||||||
|
+ echo building gen using ${BUILD_CC} in `pwd` ; \
|
||||||
|
+ $(MAKE) CC=${BUILD_CC} CFLAGS="-O2" LIBS="" gen) ; \
|
||||||
|
\
|
||||||
|
echo Installing BIND Export libraries to ${binddir}. ; \
|
||||||
|
(cd ${bindsrcdir}/lib/export ; \
|
||||||
|
- MAKE=${GMAKE} ${GMAKE} install > ${binddir}/install.log) ; \
|
||||||
|
+ $(MAKE) DESTDIR="" install > ${binddir}/build.log) ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@@ -100,6 +100,7 @@ clean:
|
||||||
|
|
||||||
|
# Include the following so that this Makefile is happy when the parent
|
||||||
|
# tries to use them.
|
||||||
|
+install-exec:
|
||||||
|
|
||||||
|
distdir:
|
||||||
|
|
100
net/isc-dhcp/patches/100-relay-rfc3527-link-selection.patch
Normal file
100
net/isc-dhcp/patches/100-relay-rfc3527-link-selection.patch
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
--- a/relay/dhcrelay.c
|
||||||
|
+++ b/relay/dhcrelay.c
|
||||||
|
@@ -60,6 +60,7 @@
|
||||||
|
int client_packet_errors = 0; /* Errors sending packets to clients. */
|
||||||
|
|
||||||
|
int add_agent_options = 0; /* If nonzero, add relay agent options. */
|
||||||
|
+int add_rfc3527_suboption = 0; /* If nonzero, add RFC3527 link selection sub-option. */
|
||||||
|
|
||||||
|
int agent_option_errors = 0; /* Number of packets forwarded without
|
||||||
|
agent options because there was no room. */
|
||||||
|
@@ -99,6 +100,8 @@
|
||||||
|
struct sockaddr_in to;
|
||||||
|
} *servers;
|
||||||
|
|
||||||
|
+struct interface_info *uplink;
|
||||||
|
+
|
||||||
|
#ifdef DHCPv6
|
||||||
|
struct stream_list {
|
||||||
|
struct stream_list *next;
|
||||||
|
@@ -147,6 +150,7 @@
|
||||||
|
" [-pf <pid-file>] [--no-pid]\n"\
|
||||||
|
" [-m append|replace|forward|discard]\n" \
|
||||||
|
" [-i interface0 [ ... -i interfaceN]\n" \
|
||||||
|
+" [-l interface]\n" \
|
||||||
|
" server0 [ ... serverN]\n\n" \
|
||||||
|
" dhcrelay -6 [-d] [-q] [-I] [-c <hops>] [-p <port>]\n" \
|
||||||
|
" [-pf <pid-file>] [--no-pid]\n" \
|
||||||
|
@@ -161,6 +165,7 @@
|
||||||
|
" [-pf <pid-file>] [--no-pid]\n" \
|
||||||
|
" [-m append|replace|forward|discard]\n" \
|
||||||
|
" [-i interface0 [ ... -i interfaceN]\n" \
|
||||||
|
+" [-l interface]\n" \
|
||||||
|
" server0 [ ... serverN]\n\n"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -325,6 +330,20 @@
|
||||||
|
agent_relay_mode = discard;
|
||||||
|
} else
|
||||||
|
usage();
|
||||||
|
+ } else if (!strcmp (argv [i], "-l")) {
|
||||||
|
+ add_agent_options = 1;
|
||||||
|
+ add_rfc3527_suboption = 1;
|
||||||
|
+ if (++i == argc)
|
||||||
|
+ usage();
|
||||||
|
+
|
||||||
|
+ status = interface_allocate(&uplink, MDL);
|
||||||
|
+ if (status != ISC_R_SUCCESS)
|
||||||
|
+ log_fatal("%s: interface_allocate: %s",
|
||||||
|
+ argv[i],
|
||||||
|
+ isc_result_totext(status));
|
||||||
|
+ strcpy(uplink->name, argv[i]);
|
||||||
|
+ interface_snorf(uplink, INTERFACE_REQUESTED);
|
||||||
|
+ //interface_dereference(&uplink, MDL);
|
||||||
|
} else if (!strcmp(argv[i], "-D")) {
|
||||||
|
#ifdef DHCPv6
|
||||||
|
if (local_family_set && (local_family == AF_INET6)) {
|
||||||
|
@@ -711,12 +730,17 @@
|
||||||
|
ip->addresses[0])))
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ /* RFC3527: Replace giaddr address by uplink address. The original
|
||||||
|
+ * giaddr will be used in the link selection sub-option */
|
||||||
|
+ if (add_rfc3527_suboption)
|
||||||
|
+ packet->giaddr = uplink->addresses[0];
|
||||||
|
+
|
||||||
|
/* If giaddr is not already set, Set it so the server can
|
||||||
|
figure out what net it's from and so that we can later
|
||||||
|
forward the response to the correct net. If it's already
|
||||||
|
set, the response will be sent directly to the relay agent
|
||||||
|
that set giaddr, so we won't see it. */
|
||||||
|
- if (!packet->giaddr.s_addr)
|
||||||
|
+ else if (!packet->giaddr.s_addr)
|
||||||
|
packet->giaddr = ip->addresses[0];
|
||||||
|
if (packet->hops < max_hop_count)
|
||||||
|
packet->hops = packet->hops + 1;
|
||||||
|
@@ -1090,6 +1114,9 @@
|
||||||
|
optlen += ip->remote_id_len + 2; /* RAI_REMOTE_ID + len */
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (add_rfc3527_suboption)
|
||||||
|
+ optlen += 6;
|
||||||
|
+
|
||||||
|
/* We do not support relay option fragmenting(multiple options to
|
||||||
|
* support an option data exceeding 255 bytes).
|
||||||
|
*/
|
||||||
|
@@ -1121,6 +1148,14 @@
|
||||||
|
memcpy(sp, ip->remote_id, ip->remote_id_len);
|
||||||
|
sp += ip->remote_id_len;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (add_rfc3527_suboption) {
|
||||||
|
+ *sp++ = RAI_LINK_SELECT;
|
||||||
|
+ *sp++ = 4u;
|
||||||
|
+ memcpy(sp, &giaddr.s_addr, 4);
|
||||||
|
+ sp += 4;
|
||||||
|
+ log_debug ("RFC3527 link selection sub-option added: %s", inet_ntoa(giaddr));
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
++agent_option_errors;
|
||||||
|
log_error("No room in packet (used %d of %d) "
|
19
net/isc-dhcp/patches/510-bind-CC.patch
Normal file
19
net/isc-dhcp/patches/510-bind-CC.patch
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
--- a/bind/Makefile.in
|
||||||
|
+++ b/bind/Makefile.in
|
||||||
|
@@ -63,8 +63,14 @@
|
||||||
|
else \
|
||||||
|
echo Configuring BIND Export libraries for DHCP. ; \
|
||||||
|
rm -rf ${cleandirs} ${cleanfiles} ; \
|
||||||
|
- (cd ${bindsrcdir} && \
|
||||||
|
- ./configure ${bindconfig} > ${binddir}/configure.log); \
|
||||||
|
+ (cd ${bindsrcdir} && export CC=${CROSS_CC} && \
|
||||||
|
+ ./configure --disable-atomic --disable-kqueue \
|
||||||
|
+ --disable-epoll --disable-devpoll --without-openssl \
|
||||||
|
+ --without-libxml2 --enable-exportlib \
|
||||||
|
+ --enable-threads=no \
|
||||||
|
+ --with-export-includedir=${binddir}/include \
|
||||||
|
+ --with-export-libdir=${binddir}/lib --with-gssapi=no \
|
||||||
|
+ --without-randomdev > ${binddir}/configure.log); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
atf:
|
Loading…
Reference in a new issue