diff options
Diffstat (limited to 'net/system.sh')
-rw-r--r-- | net/system.sh | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/net/system.sh b/net/system.sh new file mode 100644 index 0000000..98017d5 --- /dev/null +++ b/net/system.sh @@ -0,0 +1,122 @@ +# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> +# Released under the 2-clause BSD license. + +_config_vars="$_config_vars dns_servers dns_domain dns_search" +_config_vars="$_config_vars dns_sortlist dns_options" +_config_vars="$_config_vars ntp_servers nis_servers nis_domain" + +system_depend() +{ + after interface + before dhcp +} + +_system_dns() +{ + local servers= domain= search= sortlist= options= x= imetric= + + eval servers=\$dns_servers_${IFVAR} + [ -z "${servers}" ] && servers=${dns_servers} + + eval domain=\$dns_domain_${IFVAR} + [ -z "${domain}" ] && domain=${dns_domain} + + eval search=\$dns_search_${IFVAR} + [ -z "${search}" ] && search=${dns_search} + + eval sortlist=\$dns_sortlist_${IFVAR} + [ -z "${sortlist}" ] && sortlist=${dns_sortlist} + + eval options=\$dns_options_${IFVAR} + [ -z "${options}" ] && options=${dns_options} + + [ -z "${servers}" -a -z "${domain}" -a -z "${search}" \ + -a -z "${sortlist}" -a -z "${options}" ] && return 0 + + local buffer="# Generated by net-scripts for interface ${IFACE}\n" + [ -n "${domain}" ] && buffer="${buffer}domain ${domain}\n" + [ -n "${search}" ] && buffer="${buffer}search ${search}\n" + + for x in ${servers}; do + buffer="${buffer}nameserver ${x}\n" + done + + [ -n "${sortlist}" ] && buffer="${buffer}sortlist ${sortlist}\n" + [ -n "${options}" ] && buffer="${buffer}options ${options}\n" + + # Support resolvconf if we have it. + if [ -x /sbin/resolvconf ]; then + x="-a ${IFACE}" + eval imetric=\${metric_${IFVAR}} + if [ -n "${imetric}" ]; then + x="${x} -m ${imetric}" + fi + printf "${buffer}" | resolvconf ${x} + else + printf "${buffer}" > /etc/resolv.conf + chmod 644 /etc/resolv.conf + fi +} + +_system_ntp() +{ + local servers= buffer= x= + + eval servers=\$ntp_servers_${IFVAR} + [ -z "${servers}" ] && servers=${ntp_servers} + [ -z "${servers}" ] && return 0 + + buffer="# Generated by net-scripts for interface ${IFACE}\n" + buffer="${buffer}restrict default noquery notrust nomodify\n" + buffer="${buffer}restrict 127.0.0.1\n" + + for x in ${servers}; do + buffer="${buffer}restrict ${x} nomodify notrap noquery\n" + buffer="${buffer}server ${x}\n" + done + + printf "${buffer}" > /etc/ntp.conf + chmod 644 /etc/ntp.conf +} + +_system_nis() +{ + local servers= domain= x= buffer= + + eval servers=\$nis_servers_${IFVAR} + [ -z "${servers}" ] && servers=${nis_servers} + + eval domain=\$nis_domain_${IFVAR} + [ -z "${domain}" ] && domain=${nis_domain} + + [ -z "${servers}" -a -z "${domain}" ] && return 0 + + buffer="# Generated by net-scripts for interface ${iface}\n" + + if [ -n "${domain}" ]; then + hostname -y "${domain}" + if [ -n "${servers}" ]; then + for x in ${servers}; do + buffer="${buffer}domain ${domain} server ${x}\n" + done + else + buffer="${buffer}domain ${domain} broadcast\n" + fi + else + for x in ${servers}; do + buffer="${buffer}ypserver ${x}\n" + done + fi + + printf "${buffer}" > /etc/yp.conf + chmod 644 /etc/yp.conf +} + +system_pre_start() +{ + _system_dns + _system_ntp + _system_nis + + return 0 +} |