samba-common.dhcp   [plain text]


#!/bin/sh

SAMBA_DHCP_CONF=/etc/samba/dhcp.conf

netbios_setup() {
	# No need to continue if we're called with an unsupported option

	if [ "$reason" != BOUND ] && [ "$reason" != RENEW ] \
	   && [ "$reason" != REBIND ] && [ "$reason" != REBOOT ] \
	   && [ "$reason" != EXPIRE ] && [ "$reason" != FAIL ]
	then
		return
	fi

	# Nor should we continue if no settings have changed
	if [ "$new_netbios_name_servers" = "$old_netbios_name_servers" ] \
	   && [ "$new_netbios_scope" = "$old_netbios_scope" ]
	then
		return
	fi

	# reparse our own file
	local other_servers=`sed -n -e"s/[[:space:]]$interface:[^[:space:]]*//g; \
		s/^[[:space:]]*wins server[[:space:]]*=[[:space:]]*//pi" \
		$SAMBA_DHCP_CONF`

	umask 022

	local serverlist="$other_servers"
	for server in $new_netbios_name_servers
	do
		serverlist="$serverlist $interface:$server"
	done

	echo -n > $SAMBA_DHCP_CONF

	# If we're updating on failure/expire, AND there are no WINS
	# servers for other interfaces, leave the file empty.
	if [ -z "$other_servers" ]
	then
		if [ "$reason" = FAIL ] || [ "$reason" = EXPIRE ]
		then
			return
		fi
	fi

	if [ -n "$serverlist" ]
	then
		echo "   wins server =$serverlist" >> $SAMBA_DHCP_CONF
	fi
	if [ -n "$new_netbios_scope" ]
	then
		echo "   netbios scope = $new_netbios_scope" >> $SAMBA_DHCP_CONF
	fi
}

netbios_setup