mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-13 03:09:51 +03:00
main/dhcp: remove, unmaintained upstream
https://www.isc.org/blogs/isc-dhcp-eol/
This commit is contained in:
parent
ad5cdd604a
commit
785e5584c4
10 changed files with 0 additions and 1137 deletions
|
@ -1,212 +0,0 @@
|
|||
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
|
||||
# Maintainer:
|
||||
pkgname=dhcp
|
||||
pkgver=4.4.3_p1
|
||||
_projver=${pkgver/_p/-P}
|
||||
pkgrel=5
|
||||
pkgdesc="ISC Dynamic Host Configuration Protocol (DHCP)"
|
||||
url="https://www.isc.org/dhcp/"
|
||||
arch="all"
|
||||
license="MPL-2.0"
|
||||
depends_static="$pkgname-dev=$pkgver-r$pkgrel"
|
||||
# busybox utils are not sufficient
|
||||
_depends_dhclient="
|
||||
coreutils
|
||||
iproute2
|
||||
run-parts
|
||||
"
|
||||
makedepends="
|
||||
krb5-dev
|
||||
linux-headers
|
||||
openldap-dev
|
||||
perl
|
||||
$_depends_dhclient
|
||||
"
|
||||
pkgusers="dhcp"
|
||||
pkggroups="dhcp"
|
||||
install="$pkgname.pre-install"
|
||||
subpackages="
|
||||
$pkgname-dbg
|
||||
$pkgname-doc
|
||||
$pkgname-openrc
|
||||
$pkgname-libs-static
|
||||
$pkgname-dev
|
||||
$pkgname-server-vanilla:_server_vanilla
|
||||
$pkgname-server-ldap:_server_ldap
|
||||
dhcrelay
|
||||
dhcrelay-openrc
|
||||
dhclient
|
||||
keama
|
||||
"
|
||||
source="https://downloads.isc.org/isc/dhcp/$_projver/dhcp-$_projver.tar.gz
|
||||
fix-unwind-import.patch
|
||||
dhcp-3.0-fix-perms.patch
|
||||
dhclient-script-alpine
|
||||
dhcrelay.initd
|
||||
dhcrelay.confd
|
||||
dhcpd.confd
|
||||
dhcpd.initd
|
||||
"
|
||||
builddir="$srcdir/$pkgname-$_projver"
|
||||
|
||||
# secfixes:
|
||||
# 4.4.3_p1-r0:
|
||||
# - CVE-2022-2928
|
||||
# - CVE-2022-2929
|
||||
# 4.4.2_p1-r0:
|
||||
# - CVE-2021-25217
|
||||
# 4.4.1-r0:
|
||||
# - CVE-2019-6470
|
||||
# - CVE-2018-5732
|
||||
# - CVE-2018-5733
|
||||
|
||||
_configure() {
|
||||
# fix ipv6
|
||||
export CFLAGS="$CFLAGS -D_GNU_SOURCE \
|
||||
-D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'"
|
||||
|
||||
./configure \
|
||||
--build="$CBUILD" \
|
||||
--host="$CHOST" \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc/dhcp \
|
||||
--localstatedir=/var \
|
||||
--with-srv-conf-file=/etc/dhcp/dhcpd.conf \
|
||||
--with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \
|
||||
--with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \
|
||||
--with-cli-lease-file=/var/lib/dhcp/dhclient.leases \
|
||||
--with-cli6-lease-file=/var/lib/dhcp/dhclient6.leases \
|
||||
--with-srv-pid-file=/run/dhcp/dhcpd.pid \
|
||||
--with-srv6-pid-file=/run/dhcp/dhcpd6.pid \
|
||||
--with-cli-pid-file=/run/dhcp/dhclient.pid \
|
||||
--with-cli6-pid-file=/run/dhcp/dhclient6.pid \
|
||||
--with-relay-pid-file=/run/dhcp/dhcrelay.pid \
|
||||
--with-relay6-pid-file=/run/dhcp/dhcrelay6.pid \
|
||||
--with-libbind=no \
|
||||
--enable-dhcpv4o6 \
|
||||
--enable-paranoia \
|
||||
--enable-log-pid \
|
||||
"$@"
|
||||
}
|
||||
|
||||
prepare() {
|
||||
# Normally the upstream build system unpacks this before building the
|
||||
# library but we need to patch it for segfualt-fix.patch. If we unpack
|
||||
# it early then the build system will just use what we've already
|
||||
# unpacked and patched.
|
||||
tar -C "$builddir"/bind/ -xzf "$builddir"/bind/bind.tar.gz
|
||||
|
||||
default_prepare
|
||||
|
||||
update_config_guess
|
||||
update_config_sub
|
||||
cp config.guess config.sub bind/bind-*/
|
||||
|
||||
cp -ar "$builddir" "$builddir-ldap"
|
||||
}
|
||||
|
||||
build() {
|
||||
_configure
|
||||
make -j1 -C bind && make
|
||||
make -C keama
|
||||
|
||||
cd "$builddir-ldap"
|
||||
_configure \
|
||||
--with-ldap \
|
||||
--with-ldapcrypto \
|
||||
--with-ldap-gssapi
|
||||
make -j1 -C bind && make
|
||||
}
|
||||
|
||||
check() {
|
||||
make check
|
||||
|
||||
cd "$builddir-ldap"
|
||||
make check
|
||||
}
|
||||
|
||||
package() {
|
||||
make DESTDIR="$pkgdir" install
|
||||
make DESTDIR="$pkgdir" -C keama install
|
||||
|
||||
install -m751 -D "$srcdir"/dhclient-script-alpine "$pkgdir"/sbin/dhclient-script
|
||||
install -d -o dhcp -g dhcp "$pkgdir"/var/lib/dhcp
|
||||
}
|
||||
|
||||
openrc() {
|
||||
local name="${subpkgname%-openrc}"
|
||||
[ "$name" = dhcp ] && name="dhcpd"
|
||||
|
||||
install -m755 -D "$srcdir"/$name.initd "$pkgdir"/etc/init.d/$name
|
||||
install -m644 -D "$srcdir"/$name.confd "$pkgdir"/etc/conf.d/$name
|
||||
|
||||
default_openrc
|
||||
}
|
||||
|
||||
static() {
|
||||
depends="$depends_static"
|
||||
default_static || mkdir -p "$subpkgdir"
|
||||
}
|
||||
|
||||
_server_vanilla() {
|
||||
pkgdesc="ISC DHCP server"
|
||||
depends="$pkgname=$pkgver-r$pkgrel"
|
||||
install_if="$pkgname=$pkgver-r$pkgrel"
|
||||
provides="dhcp-server=$pkgver-r$pkgrel"
|
||||
provider_priority=100 # highest
|
||||
|
||||
amove usr/sbin/dhcpd
|
||||
}
|
||||
|
||||
_server_ldap() {
|
||||
pkgdesc="ISC DHCP server with LDAP support"
|
||||
depends="$pkgname=$pkgver-r$pkgrel"
|
||||
provides="dhcp-server=$pkgver-r$pkgrel"
|
||||
provider_priority=10 # lowest
|
||||
|
||||
install -d "$subpkgdir"
|
||||
make DESTDIR="$subpkgdir" -C "$builddir-ldap/server" install-sbinPROGRAMS
|
||||
}
|
||||
|
||||
dhcrelay() {
|
||||
pkgdesc="ISC DHCP relay agent"
|
||||
depends=""
|
||||
install="$subpkgname.pre-install"
|
||||
|
||||
amove usr/sbin/dhcrelay
|
||||
}
|
||||
|
||||
dhclient() {
|
||||
pkgdesc="ISC DHCP client"
|
||||
depends="$_depends_dhclient"
|
||||
|
||||
amove etc/dhcp/dhclient.conf*
|
||||
amove usr/sbin/dhclient
|
||||
amove sbin/dhclient-script
|
||||
ln -s ../sbin/dhclient-script "$subpkgdir"/etc/dhclient-script
|
||||
|
||||
install -d -o dhcp -g dhcp "$subpkgdir"/var/lib/dhcp
|
||||
}
|
||||
|
||||
keama() {
|
||||
pkgdesc="KEA Migration Assistant to translate ISC DHCP configurations to Kea"
|
||||
|
||||
amove usr/sbin/keama
|
||||
}
|
||||
|
||||
# gpg_signature_extensions="sha512.asc"
|
||||
# gpgfingerprints="
|
||||
# good:AE3F AC79 6711 EC59 FC00 7AA4 74BB 6B9A 4CBB 3D38
|
||||
# BE0E 9748 B718 253A 28BB 89FF F1B1 1BF0 5CF0 2E57
|
||||
# "
|
||||
|
||||
sha512sums="
|
||||
d14dc44d1c015780ae19769816cb01015959927a1ad7a3e84b89e0463253aaf46451af88e3260347196373906d5b438c7c616fee45ec3f128aa82af6702b7154 dhcp-4.4.3-P1.tar.gz
|
||||
23ab581d85ba97a37fd6a0a612e0aa977b24bbaf83d58a93d1a87f9f24ea9a098aa549e77a6e1d78f721681c152464b15fd1d402d0673edf4dac6aa196df1fe9 fix-unwind-import.patch
|
||||
d5697a56fbbff25199962608986e7ffb533ed4afd3e344e3c79d2010dda73cc0b088f06c454e9f0c69eb054e09a374455fa71d3f73306e0c98fa76df4dd321b7 dhcp-3.0-fix-perms.patch
|
||||
d1dce58875793316761f168e29feddc1d3454d1d917d063d43ae102b7b6aab256c3cb420478335c57ebcdb2b7c804afa4d8a1f9ab06a29a4dd23bc5d87db8df2 dhclient-script-alpine
|
||||
e672ec030137e870afb817ec0fe4e01a7553f331181e481cba1f032f1e18798dd153bf30105ca8361284e6e11f80435ef7c960b0a11c32c5766c30a0c960550c dhcrelay.initd
|
||||
970ee381dd6a7e0e30d71e28597d17074421ac167b233f597a129ed9b977cba1026375a020dff2613c3f4d458b71ed9fe4447abfcf5edf27b395e6f2b00f0982 dhcrelay.confd
|
||||
7b7a77b7826b475a4113ebeee54501ce417cc56e85754301a82a185d88b4713d198f615a366e63e0e2b0aef988c8137dcd1e18c4036d993378257079da17693d dhcpd.confd
|
||||
1f78c4f64a891012b4de029c50934b284ad80313959e06b0f29416f33a9e4f0deca8b61e9224a683a92faf8a08e8b7c075bc6e833ab73b6305c0d6d9712d0baf dhcpd.initd
|
||||
"
|
|
@ -1,682 +0,0 @@
|
|||
#!/bin/sh
|
||||
# dhclient-script for Linux. Dan Halbert, March, 1997.
|
||||
# Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
|
||||
# No guarantees about this. I'm a novice at the details of Linux
|
||||
# networking.
|
||||
|
||||
# Notes:
|
||||
|
||||
# 0. This script is based on the netbsd script supplied with dhcp-970306.
|
||||
|
||||
# 1. ifconfig down apparently deletes all relevant routes and flushes
|
||||
# the arp cache, so this doesn't need to be done explicitly.
|
||||
|
||||
# 2. The alias address handling here has not been tested AT ALL.
|
||||
# I'm just going by the doc of modern Linux ip aliasing, which uses
|
||||
# notations like eth0:0, eth0:1, for each alias.
|
||||
|
||||
# 3. I have to calculate the network address, and calculate the broadcast
|
||||
# address if it is not supplied. This might be much more easily done
|
||||
# by the dhclient C code, and passed on.
|
||||
|
||||
# 4. TIMEOUT not tested. ping has a flag I don't know, and I'm suspicious
|
||||
# of the $1 in its args.
|
||||
|
||||
# 5. Script refresh in 2017. The aliasing code was too convoluted and needs
|
||||
# to go away. Migrated DHCPv4 script to ip command from iproute2 suite.
|
||||
# This is based on Debian script with some tweaks. ifconfig is no longer
|
||||
# used. Everything is done using ip tool from ip-route2.
|
||||
|
||||
# 'ip' just looks too weird. Also, we now have unit-tests! Those unit-tests
|
||||
# overwirte this line to use a fake ip-echo tool. It's also convenient
|
||||
# if your system holds ip tool in a non-standard location.
|
||||
ip='/sbin/ip'
|
||||
|
||||
# This is a dummy function to prevent shellcheck from complaining about these
|
||||
# variables later in this script. It is not used during normal operation and
|
||||
# should not slow down the execution of this script at all.
|
||||
# If, given the above, it still bothers you, please feel free to delete it.
|
||||
# SC2154: These specific variables are assigned external to this script.
|
||||
# shellcheck disable=SC2154
|
||||
_shellcheck_external_variables() {
|
||||
: alias_ip_address="$alias_ip_address"
|
||||
: alias_subnet_mask="$alias_subnet_mask"
|
||||
: cur_ip6_address="$cur_ip6_address"
|
||||
: cur_ip6_prefixlen="$cur_ip6_prefixlen"
|
||||
: dad_wait_time="$dad_wait_time"
|
||||
: interface="$interface"
|
||||
: new_broadcast_address="$new_broadcast_address"
|
||||
: new_dhcp6_domain_search="$new_dhcp6_domain_search"
|
||||
: new_dhcp6_name_servers="$new_dhcp6_name_servers"
|
||||
: new_domain_name="$new_domain_name"
|
||||
: new_domain_name_servers="$new_domain_name_servers"
|
||||
: new_host_name="$new_host_name"
|
||||
: new_interface_mtu="$new_interface_mtu"
|
||||
: new_ip6_address="$new_ip6_address"
|
||||
: new_ip6_prefixlen="$new_ip6_prefixlen"
|
||||
: new_ip_address="$new_ip_address"
|
||||
: new_max_life="$new_max_life"
|
||||
: new_preferred_life="$new_preferred_life"
|
||||
: new_rfc3442_classless_static_routes="$new_rfc3442_classless_static_routes"
|
||||
: new_routers="$new_routers"
|
||||
: new_subnet_mask="$new_subnet_mask"
|
||||
: old_dhcp6_domain_search="$old_dhcp6_domain_search"
|
||||
: old_dhcp6_name_servers="$old_dhcp6_name_servers"
|
||||
: old_host_name="$old_host_name"
|
||||
: old_ip6_address="$old_ip6_address"
|
||||
: old_ip6_prefixlen="$old_ip6_prefixlen"
|
||||
: old_ip_address="$old_ip_address"
|
||||
: reason="$reason"
|
||||
}
|
||||
|
||||
print_nameservers() {
|
||||
sed -n '/^[[:space:]]*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p' "${@}"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
init_resolv_conf() {
|
||||
local tmpfile
|
||||
tmpfile="$(mktemp -q /etc/resolv.conf.dhclient-new.XXXXXXXXXX)"
|
||||
if [ -z "${tmpfile}" ]; then
|
||||
tmpfile='/etc/resolv.conf.dhclient-new'
|
||||
rm -rf "${tmpfile}"
|
||||
fi
|
||||
: >>"${tmpfile}"
|
||||
# shellcheck disable=SC2064
|
||||
trap "rm -f ${tmpfile}" EXIT
|
||||
echo "${tmpfile}"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
replace_resolv_conf() {
|
||||
local src="${1}"
|
||||
local dst='/etc/resolv.conf'
|
||||
|
||||
if [ -f "${dst}" ]; then
|
||||
chown --reference="${dst}" "${src}"
|
||||
chmod --reference="${dst}" "${src}"
|
||||
fi
|
||||
mv -f "${src}" "${dst}"
|
||||
}
|
||||
|
||||
# update /etc/resolv.conf based on received values
|
||||
# This updated version mostly follows Debian script by Andrew Pollock et al.
|
||||
# shellcheck disable=SC2039
|
||||
make_resolv_conf() {
|
||||
local nameserver
|
||||
local new_resolv_conf
|
||||
|
||||
# DHCPv4
|
||||
if [ -n "${new_domain_search}" ] ||
|
||||
[ -n "${new_domain_name}" ] ||
|
||||
[ -n "${new_domain_name_servers}" ]
|
||||
then
|
||||
new_resolv_conf="$(init_resolv_conf)"
|
||||
|
||||
if [ -n "${new_domain_name}" ]; then
|
||||
echo "domain ${new_domain_name%% *}" >>"${new_resolv_conf}"
|
||||
fi
|
||||
|
||||
if [ -n "${new_domain_search}" ]; then
|
||||
if [ -n "${new_domain_name}" ]; then
|
||||
local domain domain_in_search_list=''
|
||||
for domain in ${new_domain_search}; do
|
||||
if [ "${domain}" = "${new_domain_name}" ] ||
|
||||
[ "${domain}" = "${new_domain_name}." ]
|
||||
then
|
||||
domain_in_search_list='Yes'
|
||||
fi
|
||||
done
|
||||
if [ -z "${domain_in_search_list}" ]; then
|
||||
new_domain_search="${new_domain_name} ${new_domain_search}"
|
||||
fi
|
||||
fi
|
||||
echo "search ${new_domain_search}" >>"${new_resolv_conf}"
|
||||
elif [ -n "${new_domain_name}" ]; then
|
||||
echo "search ${new_domain_name}" >>"${new_resolv_conf}"
|
||||
fi
|
||||
|
||||
if [ -n "${new_domain_name_servers}" ]; then
|
||||
for nameserver in ${new_domain_name_servers}; do
|
||||
echo "nameserver ${nameserver}" >>"${new_resolv_conf}"
|
||||
done
|
||||
else # keep 'old' nameservers
|
||||
print_nameservers /etc/resolv.conf >>"${new_resolv_conf}"
|
||||
fi
|
||||
|
||||
replace_resolv_conf "${new_resolv_conf}"
|
||||
# DHCPv6
|
||||
elif [ -n "${new_dhcp6_domain_search}" ] ||
|
||||
[ -n "${new_dhcp6_name_servers}" ]
|
||||
then
|
||||
new_resolv_conf="$(init_resolv_conf)"
|
||||
|
||||
if [ -n "${new_dhcp6_domain_search}" ]; then
|
||||
echo "search ${new_dhcp6_domain_search}" >>"${new_resolv_conf}"
|
||||
fi
|
||||
|
||||
if [ -n "${new_dhcp6_name_servers}" ]; then
|
||||
for nameserver in ${new_dhcp6_name_servers}; do
|
||||
# append %interface to link-local-address nameservers
|
||||
if [ "${nameserver##fe80::}" != "${nameserver}" ] ||
|
||||
[ "${nameserver##FE80::}" != "${nameserver}" ]
|
||||
then
|
||||
nameserver="${nameserver}%${interface}"
|
||||
fi
|
||||
echo "nameserver ${nameserver}" >>"${new_resolv_conf}"
|
||||
done
|
||||
else # keep 'old' nameservers
|
||||
print_nameservers /etc/resolv.conf >>"${new_resolv_conf}"
|
||||
fi
|
||||
|
||||
replace_resolv_conf "${new_resolv_conf}"
|
||||
fi
|
||||
}
|
||||
|
||||
# set host name
|
||||
# SC2039: our shell has local for function scope
|
||||
# shellcheck disable=SC2039
|
||||
set_hostname() {
|
||||
local current_hostname
|
||||
|
||||
if [ -n "${new_host_name}" ]; then
|
||||
current_hostname="$(hostname)"
|
||||
|
||||
# current host name is empty, '(none)' or 'localhost' or
|
||||
# differs from new one from DHCP
|
||||
if [ -z "${current_hostname}" ] ||
|
||||
[ '(none)' = "${current_hostname}" ] ||
|
||||
[ 'localhost' = "${current_hostname}" ] ||
|
||||
[ "${old_host_name}" = "${current_hostname}" ]
|
||||
then
|
||||
if [ "${new_host_name}" != "${old_host_name}" ]; then
|
||||
hostname "${new_host_name}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# run given script
|
||||
# shellcheck disable=SC2039,SC1090
|
||||
run_hook() {
|
||||
local script
|
||||
local exit_status
|
||||
script="${1}"
|
||||
|
||||
if [ -f "${script}" ]; then
|
||||
. "${script}"
|
||||
fi
|
||||
|
||||
if [ -n "${exit_status}" ] && [ 0 != "${exit_status}" ]; then
|
||||
logger -t dhclient-script -p daemon.err \
|
||||
"run_hook: ${script} returned non-zero exit status (${exit_status})"
|
||||
[ "${exit_status}" -lt 256 ] 2>/dev/null || exit_status=255
|
||||
[ "${exit_status}" -gt 0 ] 2>/dev/null || exit_status=1
|
||||
fi
|
||||
|
||||
return "${exit_status:-${?}}"
|
||||
}
|
||||
|
||||
# run scripts in given directory
|
||||
# shellcheck disable=SC2039
|
||||
run_hookdir() {
|
||||
local dir
|
||||
local script
|
||||
local exit_status
|
||||
dir="${1}"
|
||||
|
||||
if [ -d "${dir}" ]; then
|
||||
for script in $(run-parts --list "${dir}"); do
|
||||
if ! run_hook "${script}"; then
|
||||
exit_status="${?}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
return "${exit_status:-${?}}"
|
||||
}
|
||||
|
||||
# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
|
||||
# shellcheck disable=SC2039
|
||||
exit_with_hooks() {
|
||||
local exit_status
|
||||
exit_status="${1}"
|
||||
|
||||
# Source the documented exit-hook script, if it exists
|
||||
if ! run_hook /etc/dhclient-exit-hooks; then
|
||||
exit_status="${?}"
|
||||
fi
|
||||
|
||||
# Now run scripts in the Debian-specific directory.
|
||||
if ! run_hookdir /etc/dhclient-exit-hooks.d; then
|
||||
exit_status="${?}"
|
||||
fi
|
||||
|
||||
exit "${exit_status}"
|
||||
}
|
||||
|
||||
ipv6_addr_del() {
|
||||
"${ip}" -6 addr del "$@" dev "${interface}"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
ipv6_addr_show() {
|
||||
local dev
|
||||
dev="${1}"
|
||||
|
||||
"${ip}" -6 addr show ${dev:+dev "${dev}"}
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
ipv6_addr_filter() {
|
||||
local dev
|
||||
dev="${1}"
|
||||
shift
|
||||
|
||||
ipv6_addr_show "${dev}" | grep -F -e "${*}"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
ipv6_addr_has_tentative() {
|
||||
local dev
|
||||
dev="${1}"
|
||||
shift
|
||||
|
||||
ipv6_addr_filter "${dev}" "${@}" | grep -F -e tentative >/dev/null 2>&1
|
||||
}
|
||||
|
||||
ip_link_set() {
|
||||
"${ip}" link set "${@}"
|
||||
}
|
||||
|
||||
link_set_up() {
|
||||
ip_link_set dev "${interface}" up
|
||||
}
|
||||
|
||||
link_set_mtu() {
|
||||
[ -n "${1}" ] || return 0
|
||||
|
||||
ip_link_set dev "${interface}" mtu "${1}"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
_ip_addr_flush() {
|
||||
local af
|
||||
af="${1}"
|
||||
shift
|
||||
|
||||
case "${af}" in
|
||||
(4|6)
|
||||
;;
|
||||
(*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
"${ip}" "-${af}" addr flush "${@}"
|
||||
}
|
||||
|
||||
#ip_addr_flush() {
|
||||
# "${ip}" addr flush "${@}"
|
||||
#}
|
||||
|
||||
ipv4_addr_flush() {
|
||||
_ip_addr_flush 4 "$@"
|
||||
}
|
||||
|
||||
ipv6_addr_flush() {
|
||||
_ip_addr_flush 6 "$@"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
addr_flush() {
|
||||
local label
|
||||
label="${1}"
|
||||
|
||||
if [ -n "${label}" ]; then
|
||||
ipv4_addr_flush dev "${interface}" label "${label}"
|
||||
else
|
||||
ipv4_addr_flush dev "${interface}"
|
||||
fi
|
||||
}
|
||||
|
||||
ipv4_route_add() {
|
||||
"${ip}" -4 route add "${@}"
|
||||
}
|
||||
|
||||
route_add() {
|
||||
ipv4_route_add "$@" dev "${interface}" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
route_add_default() {
|
||||
local via
|
||||
local metric
|
||||
via="${1}"
|
||||
metric="${2}"
|
||||
|
||||
ipv4_route_add default via "${via}" \
|
||||
dev "${interface}" \
|
||||
${metric:+metric "${metric}"} \
|
||||
>/dev/null 2>&1
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
addr_add() {
|
||||
local label
|
||||
local addr
|
||||
local mask
|
||||
local broadcast
|
||||
label="${1}"
|
||||
addr="${2}"
|
||||
mask="${3}"
|
||||
broadcast="${4}"
|
||||
|
||||
"${ip}" -4 addr add \
|
||||
"${addr}${mask:+/${mask}}" \
|
||||
${broadcast:+broadcast "${broadcast}"} \
|
||||
dev "${label%%:*}" label "${label}"
|
||||
}
|
||||
|
||||
# This function was largely borrowed from dhclient-script that
|
||||
# ships with Centos, authored by Jiri Popelka and David Cantrell
|
||||
# of Redhat. Thanks guys.
|
||||
# shellcheck disable=SC2039
|
||||
add_ipv6_addr_with_DAD() {
|
||||
local _i
|
||||
"${ip}" -6 addr replace "${new_ip6_address}/${new_ip6_prefixlen}" \
|
||||
dev "${interface}" scope global valid_lft "${new_max_life}" \
|
||||
preferred_lft "${new_preferred_life}"
|
||||
|
||||
if [ "${dad_wait_time}" -le 0 ]; then
|
||||
# if we're not waiting for DAD, assume we're good
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Repeatedly test whether newly added address passed
|
||||
# duplicate address detection (DAD)
|
||||
for _i in $(seq 1 "${dad_wait_time}"); do
|
||||
sleep 1 # give the DAD some time
|
||||
|
||||
addr="$(ipv6_addr_filter "${interface}" \
|
||||
"${new_ip6_address}/${new_ip6_prefixlen}")"
|
||||
|
||||
# tentative flag == DAD is still not complete
|
||||
tentative="$(echo "${addr}" | grep tentative)"
|
||||
# dadfailed flag == address is already in use somewhere else
|
||||
dadfailed="$(echo "${addr}" | grep dadfailed)"
|
||||
|
||||
if [ -n "${dadfailed}" ]; then
|
||||
# address was added with valid_lft/preferred_lft 'forever',
|
||||
# remove it
|
||||
ipv6_addr_del "${new_ip6_address}/${new_ip6_prefixlen}"
|
||||
|
||||
exit_with_hooks 3
|
||||
fi
|
||||
|
||||
if [ -z "${tentative}" ]; then
|
||||
if [ -n "${addr}" ]; then
|
||||
# DAD is over
|
||||
return 0
|
||||
else
|
||||
# address was auto-removed (or not added at all)
|
||||
exit_with_hooks 3
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
init_if_metric() {
|
||||
local _if_metric
|
||||
|
||||
# set if_metric if IF_METRIC is set or there's more than one router
|
||||
# shellcheck disable=SC2153
|
||||
_if_metric="${IF_METRIC}"
|
||||
if [ "${new_routers%% *}" != "${new_routers}" ]; then
|
||||
_if_metric="${_if_metric:-1}"
|
||||
fi
|
||||
|
||||
if_metric="${_if_metric}"
|
||||
echo "${_if_metric}"
|
||||
}
|
||||
|
||||
# Invoke the local dhcp client enter hooks, if they exist.
|
||||
run_hook /etc/dhclient-enter-hooks
|
||||
run_hookdir /etc/dhclient-enter-hooks.d
|
||||
|
||||
# Execute the operation
|
||||
case "${reason}" in
|
||||
|
||||
### DHCPv4 Handlers
|
||||
|
||||
MEDIUM|ARPCHECK|ARPSEND)
|
||||
# Do nothing
|
||||
;;
|
||||
PREINIT)
|
||||
# The DHCP client is requesting that an interface be
|
||||
# configured as required in order to send packets prior to
|
||||
# receiving an actual address. - dhclient-script(8)
|
||||
|
||||
# ensure interface is up
|
||||
link_set_up
|
||||
|
||||
if [ -n "${alias_ip_address}" ]; then
|
||||
# flush alias IP from interface
|
||||
addr_flush "${interface}:0"
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
BOUND|RENEW|REBIND|REBOOT)
|
||||
set_hostname
|
||||
|
||||
if [ -n "${old_ip_address}" ] && [ -n "${alias_ip_address}" ] &&
|
||||
[ "${alias_ip_address}" != "${old_ip_address}" ]; then
|
||||
# alias IP may have changed => flush it
|
||||
addr_flush "${interface}:0"
|
||||
fi
|
||||
|
||||
if [ -n "${old_ip_address}" ] &&
|
||||
[ "${old_ip_address}" != "${new_ip_address}" ]; then
|
||||
# leased IP has changed => flush it
|
||||
addr_flush "${interface}"
|
||||
fi
|
||||
|
||||
if [ -z "${old_ip_address}" ] ||
|
||||
[ "${old_ip_address}" != "${new_ip_address}" ] ||
|
||||
[ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ]; then
|
||||
# new IP has been leased or leased IP changed => set it
|
||||
addr_add "${interface}" \
|
||||
"${new_ip_address}" "${new_subnet_mask}" \
|
||||
"${new_broadcast_address}"
|
||||
|
||||
link_set_mtu "${new_interface_mtu}"
|
||||
|
||||
# if we have $new_rfc3442_classless_static_routes then we have to
|
||||
# ignore $new_routers entirely
|
||||
if [ -z "${new_rfc3442_classless_static_routes}" ]; then
|
||||
if_metric="$(init_if_metric)"
|
||||
for router in ${new_routers}; do
|
||||
if [ "255.255.255.255" = "${new_subnet_mask}" ]; then
|
||||
# point-to-point connection => set explicit route
|
||||
route_add "${router}"
|
||||
fi
|
||||
|
||||
# set default route
|
||||
route_add_default "${router}" "${if_metric}"
|
||||
|
||||
if [ -n "${if_metric}" ]; then
|
||||
if_metric="$((1+if_metric))"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${alias_ip_address}" ] &&
|
||||
[ "${new_ip_address}" != "${alias_ip_address}" ]
|
||||
then
|
||||
# separate alias IP given, which may have changed
|
||||
# => flush it, set it & add host route to it
|
||||
addr_flush "${interface}:0"
|
||||
addr_add "${interface}:0" \
|
||||
"${alias_ip_address}" "${alias_subnet_mask}"
|
||||
route_add "${alias_ip_address}"
|
||||
fi
|
||||
|
||||
# update /etc/resolv.conf
|
||||
make_resolv_conf
|
||||
|
||||
;;
|
||||
|
||||
EXPIRE|FAIL|RELEASE|STOP)
|
||||
if [ -n "${alias_ip_address}" ]; then
|
||||
# flush alias IP
|
||||
addr_flush "${interface}:0"
|
||||
fi
|
||||
|
||||
if [ -n "${old_ip_address}" ]; then
|
||||
# flush leased IP
|
||||
addr_flush "${interface}"
|
||||
fi
|
||||
|
||||
if [ -n "${alias_ip_address}" ]; then
|
||||
# alias IP given => set it & add host route to it
|
||||
addr_add "${interface}:0" \
|
||||
"${alias_ip_address}" "${alias_subnet_mask}"
|
||||
route_add "${alias_ip_address}"
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
TIMEOUT)
|
||||
if [ -n "${alias_ip_address}" ]; then
|
||||
# flush alias IP
|
||||
addr_flush "${interface}:0"
|
||||
fi
|
||||
|
||||
# set IP from recorded lease
|
||||
addr_add "${interface}" \
|
||||
"${new_ip_address}" "${new_subnet_mask}" \
|
||||
"${new_broadcast_address}"
|
||||
|
||||
link_set_mtu "${new_interface_mtu}"
|
||||
|
||||
# if there is no router recorded in the lease
|
||||
# or the 1st router answers pings
|
||||
if [ -z "${new_routers}" ] || ping -q -c 1 "${new_routers%% *}"; then
|
||||
# if we have $new_rfc3442_classless_static_routes then we have to
|
||||
# ignore $new_routers entirely
|
||||
if [ -z "${new_rfc3442_classless_static_routes}" ]; then
|
||||
if [ -n "${alias_ip_address}" ] &&
|
||||
[ "${new_ip_address}" != "${alias_ip_address}" ]
|
||||
then
|
||||
# separate alias IP given => set up the alias IP & add host route to it
|
||||
addr_add "${interface}:0" \
|
||||
"${alias_ip_address}" "${alias_subnet_mask}"
|
||||
route_add "${alias_ip_address}"
|
||||
fi
|
||||
|
||||
if_metric="$(init_if_metric)"
|
||||
for router in ${new_routers}; do
|
||||
# set default route
|
||||
route_add_default "${router}" "${if_metric}"
|
||||
|
||||
if [ -n "${if_metric}" ]; then
|
||||
if_metric="$((1+if_metric))"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# update /etc/resolv.conf
|
||||
make_resolv_conf
|
||||
else
|
||||
# flush all IPs from interface
|
||||
addr_flush
|
||||
exit_with_hooks 2
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
### DHCPv6 Handlers
|
||||
# TODO handle prefix change: ?based on ${old_ip6_prefix} and ${new_ip6_prefix}?
|
||||
|
||||
PREINIT6)
|
||||
# ensure interface is up
|
||||
link_set_up
|
||||
|
||||
# We need to give the kernel some time to active interface
|
||||
interface_up_wait_time=5
|
||||
# shellcheck disable=SC2034
|
||||
for _i in $(seq 0 ${interface_up_wait_time}); do
|
||||
if ifconfig "${interface}" | grep RUNNING >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done; unset -v _i
|
||||
|
||||
# flush any stale global permanent IPs from interface
|
||||
ipv6_addr_flush dev "${interface}" scope global permanent
|
||||
|
||||
# Wait for duplicate address detection for this interface if the
|
||||
# --dad-wait-time parameter has been specified and is greater than
|
||||
# zero.
|
||||
if [ "${dad_wait_time}" -gt 0 ]; then
|
||||
# Check if any IPv6 address on this interface is marked as
|
||||
# tentative.
|
||||
if ipv6_addr_has_tentative "${interface}" inet6; then
|
||||
# Wait for duplicate address detection to complete or for
|
||||
# the timeout specified as --dad-wait-time.
|
||||
# shellcheck disable=SC2034
|
||||
for _i in $(seq 0 "${dad_wait_time}"); do
|
||||
# We're going to poll for the tentative flag every second.
|
||||
sleep 1
|
||||
if ! ipv6_addr_has_tentative "${interface}" inet6; then
|
||||
break
|
||||
fi
|
||||
done; unset -v _i
|
||||
fi
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
BOUND6|RENEW6|REBIND6)
|
||||
if [ "${new_ip6_address}" ] && [ "${new_ip6_prefixlen}" ]; then
|
||||
# set leased IP
|
||||
add_ipv6_addr_with_DAD
|
||||
fi
|
||||
|
||||
# update /etc/resolv.conf
|
||||
if [ "${reason}" = BOUND6 ] ||
|
||||
[ "${new_dhcp6_name_servers}" != "${old_dhcp6_name_servers}" ] ||
|
||||
[ "${new_dhcp6_domain_search}" != "${old_dhcp6_domain_search}" ]; then
|
||||
make_resolv_conf
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
DEPREF6)
|
||||
if [ -z "${cur_ip6_prefixlen}" ]; then
|
||||
exit_with_hooks 2
|
||||
fi
|
||||
|
||||
# set preferred lifetime of leased IP to 0
|
||||
"${ip}" -6 addr change "${cur_ip6_address}/${cur_ip6_prefixlen}" \
|
||||
dev "${interface}" scope global preferred_lft 0
|
||||
|
||||
;;
|
||||
|
||||
EXPIRE6|RELEASE6|STOP6)
|
||||
if [ -z "${old_ip6_address}" ] || [ -z "${old_ip6_prefixlen}" ]; then
|
||||
exit_with_hooks 2
|
||||
fi
|
||||
|
||||
# delete leased IP
|
||||
ipv6_addr_del "${old_ip6_address}/${old_ip6_prefixlen}"
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
exit_with_hooks 0
|
|
@ -1,15 +0,0 @@
|
|||
--- a/server/dhcpd.c 2003-11-05 14:08:09.000000000 -0800
|
||||
+++ b/server/dhcpd.c 2003-11-05 14:15:32.000000000 -0800
|
||||
@@ -602,6 +602,12 @@
|
||||
if (lftest)
|
||||
exit (0);
|
||||
|
||||
+#if defined (PARANOIA)
|
||||
+ /* Set proper permissions... */
|
||||
+ if (lchown (path_dhcpd_db, set_uid, set_gid))
|
||||
+ log_fatal ("lchown(%s, %d, %d): %m", path_dhcpd_db, (int) set_uid, (int) set_gid);
|
||||
+#endif /* PARANOIA */
|
||||
+
|
||||
/* Discover all the network interfaces and initialize them. */
|
||||
discover_interfaces (DISCOVER_SERVER);
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
addgroup -S dhcp 2>/dev/null
|
||||
adduser -S -D -H -h /var/lib/dhcp -s /sbin/nologin -G dhcp -g dhcp dhcp 2>/dev/null
|
||||
|
||||
exit 0
|
|
@ -1,28 +0,0 @@
|
|||
# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd
|
||||
|
||||
# If you require more than one instance of dhcpd you can create symbolic
|
||||
# links to dhcpd service like so
|
||||
# cd /etc/init.d
|
||||
# ln -s dhcpd dhcpd.foo
|
||||
# cd ../conf.d
|
||||
# cp dhcpd dhcpd.foo
|
||||
# Now you can edit dhcpd.foo and specify a different configuration file.
|
||||
# You'll also need to specify a pidfile in that dhcpd.conf file.
|
||||
# See the pid-file-name option in the dhcpd.conf man page for details.
|
||||
|
||||
# If you wish to run dhcpd in a chroot, uncomment the following line
|
||||
# DHCPD_CHROOT="/var/lib/dhcp/chroot"
|
||||
|
||||
# All file paths below are relative to the chroot.
|
||||
# You can specify a different chroot directory but MAKE SURE it's empty.
|
||||
|
||||
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf
|
||||
# DHCPD_CONF="/etc/dhcp/dhcpd.conf"
|
||||
|
||||
# Configure which interface or interfaces to for dhcpd to listen on.
|
||||
# List all interfaces space separated. If this is not specified then
|
||||
# we listen on all interfaces.
|
||||
# DHCPD_IFACE=""
|
||||
|
||||
# Insert any other dhcpd options - see the man page for a full list.
|
||||
# DHCPD_OPTS=""
|
|
@ -1,115 +0,0 @@
|
|||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcp/files/dhcpd.init5,v 1.1 2011/12/04 22:45:07 vapier Exp $
|
||||
|
||||
extra_commands="configtest"
|
||||
|
||||
: ${DHCPD_CONF:=/etc/dhcp/${SVCNAME}.conf}
|
||||
|
||||
depend() {
|
||||
need net
|
||||
after firewall
|
||||
use logger dns
|
||||
}
|
||||
|
||||
get_var() {
|
||||
local var="$(sed -n 's/^[[:blank:]]\?'"$1"' "*\([^#";]\+\).*/\1/p' "${chroot}${DHCPD_CONF}")"
|
||||
echo ${var:-$2}
|
||||
}
|
||||
|
||||
checkconfig() {
|
||||
set -- ${DHCPD_OPTS} ${chroot:+-chroot} ${chroot} -t
|
||||
|
||||
dhcpd "$@" 1>/dev/null 2>&1
|
||||
local ret=$?
|
||||
if [ ${ret} -ne 0 ] ; then
|
||||
eerror "${SVCNAME} has detected a syntax error in your configuration files:"
|
||||
dhcpd "$@"
|
||||
fi
|
||||
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
configtest() {
|
||||
local chroot=${DHCPD_CHROOT%/}
|
||||
|
||||
ebegin "Checking ${SVCNAME} configuration"
|
||||
checkconfig
|
||||
eend $?
|
||||
}
|
||||
|
||||
start() {
|
||||
local chroot=${DHCPD_CHROOT%/}
|
||||
|
||||
# Work out our cffile if it's in our DHCPD_OPTS
|
||||
case " ${DHCPD_OPTS} " in
|
||||
*" -cf "*)
|
||||
DHCPD_CONF=" ${DHCPD_OPTS} "
|
||||
DHCPD_CONF="${DHCPD_CONF##* -cf }"
|
||||
DHCPD_CONF="${DHCPD_CONF%% *}"
|
||||
;;
|
||||
*) DHCPD_OPTS="${DHCPD_OPTS} -cf ${DHCPD_CONF}"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "${chroot}" ] ; then
|
||||
# the config test want's these to exist
|
||||
mkdir -p \
|
||||
"${chroot}"/run/dhcp \
|
||||
"${chroot}"/var/lib/dhcp \
|
||||
"${chroot}"/etc/dhcp
|
||||
fi
|
||||
|
||||
# see comment in get_var() above
|
||||
if [ ! -f "${chroot}${DHCPD_CONF}" ] ; then
|
||||
eerror "${chroot}${DHCPD_CONF} does not exist"
|
||||
return 1
|
||||
fi
|
||||
|
||||
checkconfig || return 1
|
||||
|
||||
checkpath -d -o dhcp:dhcp "${chroot}"/run/dhcp "${chroot}"/var/lib/dhcp
|
||||
|
||||
local leasefile="$(get_var lease-file-name /var/lib/dhcp/${SVCNAME}.leases)"
|
||||
checkpath -f -o dhcp:dhcp "${chroot}${leasefile}"
|
||||
|
||||
# Setup LD_PRELOAD so name resolution works in our chroot.
|
||||
if [ -n "${chroot}" ] ; then
|
||||
checkpath -d -o root:root -m 755 "${chroot}"/dev "${chroot}"/etc "${chroot}"/proc
|
||||
cp -pP /etc/localtime /etc/resolv.conf "${chroot}"/etc/
|
||||
export LD_PRELOAD="${LD_PRELOAD} libresolv.so libnss_dns.so"
|
||||
if ! mountinfo -q "${chroot}/proc" ; then
|
||||
mount --bind /proc "${chroot}/proc"
|
||||
fi
|
||||
fi
|
||||
|
||||
local pidfile="$(get_var pid-file-name /run/dhcp/${SVCNAME}.pid)"
|
||||
|
||||
ebegin "Starting ${chroot:+chrooted }${SVCNAME}"
|
||||
start-stop-daemon --start --exec /usr/sbin/dhcpd \
|
||||
--pidfile "${chroot}/${pidfile}" \
|
||||
-- ${DHCPD_OPTS} -q -pf "${pidfile}" -lf "${leasefile}" \
|
||||
-user dhcp -group dhcp \
|
||||
${chroot:+-chroot} ${chroot} ${DHCPD_IFACE}
|
||||
eend $? \
|
||||
&& save_options chroot "${chroot}" \
|
||||
&& save_options pidfile "${pidfile}"
|
||||
}
|
||||
|
||||
stop() {
|
||||
local chroot="$(get_options chroot)"
|
||||
|
||||
ebegin "Stopping ${chroot:+chrooted }${SVCNAME}"
|
||||
start-stop-daemon --stop --exec /usr/sbin/dhcpd \
|
||||
--pidfile "${chroot}/$(get_options pidfile)"
|
||||
res=$?
|
||||
|
||||
if [ ${res} -eq 0 ] && [ -n "${chroot}" ] ; then
|
||||
if mountinfo -q "${chroot}/proc" ; then
|
||||
umount "${chroot}/proc"
|
||||
fi
|
||||
fi
|
||||
|
||||
eend $res
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
# /etc/conf.d/dhcrelay: config file for /etc/init.d/dhcrelay
|
||||
|
||||
# Configure which interface or interfaces to for dhcrelay to listen on
|
||||
# and send to.
|
||||
# List all interfaces space separated. If this is not specified then
|
||||
# we use all interfaces.
|
||||
#IFACE=""
|
||||
|
||||
# Insert any other options needed. See dhcrelay(8) for details.
|
||||
#DHCRELAY_OPTS=""
|
||||
|
||||
# Space separated list of IPs to forward BOOTP/DHCP packets to.
|
||||
DHCRELAY_SERVERS=""
|
||||
|
||||
# vrf e.g 'vrf-int'
|
||||
#vrf=""
|
|
@ -1,41 +0,0 @@
|
|||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2004 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcp/files/dhcrelay.init,v 1.2 2007/03/22 15:36:59 uberlord Exp $
|
||||
|
||||
depend() {
|
||||
need net
|
||||
use logger
|
||||
after firewall
|
||||
}
|
||||
|
||||
start() {
|
||||
if [ -z "${DHCRELAY_SERVERS}" ]; then
|
||||
eerror "No DHCRELAY_SERVERS specified in /etc/conf.d/dhcrelay"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# If we are configured to run in a VRF, provide a hint for that
|
||||
RC_VRF_EXEC=""
|
||||
if [ -n "$vrf" ]; then
|
||||
RC_VRF_EXEC="/sbin/ip vrf exec $vrf"
|
||||
fi
|
||||
|
||||
local IFACES= i=
|
||||
for i in ${IFACE} ; do
|
||||
IFACES="${IFACES} -i ${i}"
|
||||
done
|
||||
|
||||
checkpath --directory --owner dhcp:dhcp /run/dhcp
|
||||
|
||||
ebegin "Starting dhcrelay"
|
||||
${RC_VRF_EXEC} start-stop-daemon --start --exec /usr/sbin/dhcrelay \
|
||||
-- -q ${IFACES} ${DHCRELAY_OPTS} ${DHCRELAY_SERVERS}
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping dhcrelay"
|
||||
start-stop-daemon --stop --pidfile /run/dhcp/dhcrelay.pid
|
||||
eend $?
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
addgroup -S dhcp 2>/dev/null
|
||||
adduser -S -D -H -h /var/lib/dhcp -s /sbin/nologin -G dhcp -g dhcp dhcp 2>/dev/null
|
||||
|
||||
exit 0
|
|
@ -1,16 +0,0 @@
|
|||
bind assumes _Unwind_GetIP is a function which is not necessarily
|
||||
true. In some implementations of libunwind it's a macro.
|
||||
This fixes the build on Alpine on armhf and armv7.
|
||||
|
||||
--- a/bind/bind-9.11.36/lib/isc/backtrace.c
|
||||
+++ b/bind/bind-9.11.36/lib/isc/backtrace.c
|
||||
@@ -81,8 +81,7 @@ isc_backtrace_gettrace(void **addrs, int
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
#elif defined(BACKTRACE_GCC)
|
||||
-extern int _Unwind_Backtrace(void* fn, void* a);
|
||||
-extern void* _Unwind_GetIP(void* ctx);
|
||||
+#include <unwind.h>
|
||||
|
||||
typedef struct {
|
||||
void **result;
|
Loading…
Add table
Add a link
Reference in a new issue