samba: add file/interface reload triggers & filter interfaces

* Only parse interfaces that are up during init_config (as the
  script depends on this to determine the proper IP/subnet range)
* Add reload interface triggers for samba-designated interfaces
* Force full service restart upon config change to ensure Samba
  binds to new interfaces (sending HUP signal doesn't work)
* Rename "interface" variable to "samba_iface" and move into
  global scope

Needed to fix Samba connectivity for clients connecting from a
different LAN subnet (e.g. pseudobridge configurations) due to the
'bind interfaces only' setting.

Signed-off-by: Conn O'Griofa <connogriofa@gmail.com>
This commit is contained in:
Conn O'Griofa 2016-08-04 01:31:50 +01:00 committed by John Crispin
parent d1b20a3659
commit 63f6fc5c16

View file

@ -5,16 +5,16 @@ START=60
USE_PROCD=1
smb_header() {
local interface
config_get interface $1 interface "loopback lan"
config_get samba_iface $1 interface "loopback lan"
# resolve interfaces
local interfaces=$(
. /lib/functions/network.sh
local net
for net in $interface; do
for net in $samba_iface; do
local device
network_is_up $net || continue
network_get_device device "$net" && {
local subnet
network_get_subnet subnet "$net" && echo -n "$subnet "
@ -93,14 +93,13 @@ init_config() {
config_foreach smb_add_share sambashare
}
reload_service() {
init_config
killall -HUP smbd
}
service_triggers() {
procd_add_reload_trigger samba
local i
for i in $samba_iface; do
procd_add_reload_interface_trigger $i
done
}
start_service() {
@ -109,10 +108,12 @@ start_service() {
procd_open_instance
procd_set_param command /usr/sbin/smbd -F
procd_set_param respawn
procd_set_param file /var/etc/smb.conf
procd_close_instance
procd_open_instance
procd_set_param command /usr/sbin/nmbd -F
procd_set_param respawn
procd_set_param file /var/etc/smb.conf
procd_close_instance
}