Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[19.07] unbound: improve odhcpd rapid update robustness #13310

Merged
merged 1 commit into from Sep 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion net/unbound/Makefile
Expand Up @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=unbound
PKG_VERSION:=1.11.0
PKG_RELEASE:=1
PKG_RELEASE:=2

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nlnetlabs.nl/downloads/unbound
Expand Down
27 changes: 20 additions & 7 deletions net/unbound/files/odhcpd.sh
Expand Up @@ -23,12 +23,10 @@
#
##############################################################################

. /lib/functions.sh
. /usr/lib/unbound/defaults.sh

##############################################################################

odhcpd_zonedata() {
. /lib/functions.sh
. /usr/lib/unbound/defaults.sh

local dhcp_link=$( uci_get unbound.@unbound[0].dhcp_link )
local dhcp4_slaac6=$( uci_get unbound.@unbound[0].dhcp4_slaac6 )
local dhcp_domain=$( uci_get unbound.@unbound[0].domain )
Expand Down Expand Up @@ -62,7 +60,7 @@ odhcpd_zonedata() {
sort $dhcp_origin > $dhcp_ls_new
longconf=longtime

elif [ $dateoldf -gt 3 ] ; then
elif [ $dateoldf -gt 1 ] ; then
touch $dns_ls_old
sort $dhcp_origin > $dhcp_ls_new
longconf=increment
Expand Down Expand Up @@ -124,7 +122,22 @@ odhcpd_zonedata() {

##############################################################################

odhcpd_zonedata
UB_ODHPCD_LOCK=/tmp/unbound_odhcpd.lock

if [ ! -f $UB_ODHPCD_LOCK ] ; then
# imperfect but it should avoid collisions
touch $UB_ODHPCD_LOCK
odhcpd_zonedata
rm -f $UB_ODHPCD_LOCK

else
UB_ODHCPD_LOCK_AGE=$(( $( date +%s ) - $( date -r $UB_ODHPCD_LOCK +%s ) ))

if [ $UB_ODHCPD_LOCK_AGE -gt 100 ] ; then
# unlock because something likely broke but do not write this time through
rm -f $UB_ODHPCD_LOCK
fi
fi

##############################################################################