X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/ddaa3d81f23f9aa4a7a5da5763d63fe407fb04a2..50bef45e9067335a79ec958180adc48aef04ff7e:/package/dnsmasq/files/dnsmasq.init diff --git a/package/dnsmasq/files/dnsmasq.init b/package/dnsmasq/files/dnsmasq.init index 4cd941cfd..9bf89fa6d 100644 --- a/package/dnsmasq/files/dnsmasq.init +++ b/package/dnsmasq/files/dnsmasq.init @@ -296,12 +296,37 @@ dhcp_domain_add() { local raddr="${4:+$4.$3.$2.$1.in-addr.arpa}" for name in $names; do - append args "-A /$name${DOMAIN:+.$DOMAIN}/$ip" - [ -n "$raddr" ] && \ - append args "--ptr-record=$raddr,$name${DOMAIN:+.$DOMAIN}" + local fqdn="$name" + + [ "${fqdn%.*}" == "$fqdn" ] && \ + fqdn="$fqdn${DOMAIN:+.$DOMAIN}" + + append args "-A /$fqdn/$ip" + + [ -n "$raddr" ] && { + append args "--ptr-record=$raddr,$fqdn" + raddr="" + } done } +dhcp_srv_add() { + local cfg="$1" + + config_get srv "$cfg" srv + [ -n "$srv" ] || return 0 + + config_get target "$cfg" target + [ -n "$target" ] || return 0 + + config_get port "$cfg" port + + local service="$srv,$target" + [ -n "$port" ] && service="$service,$port" + + append args "-W $service" +} + start() { include /lib/network scan_interfaces @@ -318,6 +343,7 @@ start() { config_foreach dhcp_remoteid_add remoteid config_foreach dhcp_subscrid_add subscrid config_foreach dhcp_domain_add domain + config_foreach dhcp_srv_add srvhost config_foreach dhcp_add dhcp /usr/sbin/dnsmasq $args && {