summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-scripts/net/system.sh')
-rw-r--r--net-scripts/net/system.sh125
1 files changed, 125 insertions, 0 deletions
diff --git a/net-scripts/net/system.sh b/net-scripts/net/system.sh
new file mode 100644
index 0000000..c32bb74
--- /dev/null
+++ b/net-scripts/net/system.sh
@@ -0,0 +1,125 @@
+# Copyright (c) 2005-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Contributed by Roy Marples (uberlord@gentoo.org)
+
+# void system_depend(void)
+#
+# Sets up the dependancies for the module
+system_depend() {
+ after interface
+ before dhcp
+}
+
+# void system_expose(void)
+#
+# Expose variables that can be configured
+system_expose() {
+ variables dns_servers dns_domain dns_options dns_search dns_sortlist \
+ ntp_servers nis_domain nis_servers
+}
+
+system_dns() {
+ local iface="$1" ifvar="$(bash_variable "$1")" x= domain= search=
+ local buffer=
+ local -a servers=()
+
+ servers="dns_servers_${ifvar}[@]"
+ [[ -z ${!servers} ]] && servers="dns_servers[@]"
+
+ domain="dns_domain_${ifvar}"
+ [[ -z ${!domain} ]] && domain="dns_domain"
+
+ search="dns_search_${ifvar}"
+ [[ -z ${!search} ]] && search="dns_search"
+
+ [[ -z ${!servers} && -z ${!domain} && -z ${!search} ]] && return 0
+
+ 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
+
+ # Support resolvconf if we have it.
+ if [[ -x /sbin/resolvconf ]] ; then
+ echo -e "${buffer}" | resolvconf -a "${iface}"
+ else
+ echo -e "${buffer}" > /etc/resolv.conf
+ chmod 644 /etc/resolv.conf
+ fi
+}
+
+system_ntp() {
+ local iface="$1" ifvar="$(bash_variable "$1")" x= buffer=
+ local -a servers=()
+
+ 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
+
+ buffer="${buffer}driftfile /var/lib/ntp/ntp.drift\n"
+ buffer="${buffer}logfile /var/log/ntp.log\n"
+
+ echo -e "${buffer}" > /etc/ntp.conf
+ chmod 644 /etc/ntp.conf
+}
+
+system_nis() {
+ local iface="$1" ifvar="$(bash_variable "$1")" domain= x= buffer=
+ local -a servers=()
+
+ servers="nis_servers_${ifvar}[@]"
+ [[ -z ${!servers} ]] && servers="nis_servers[@]"
+
+ domain="nis_domain_${ifvar}"
+ [[ -z ${!domain} ]] && domain="nis_domain"
+
+ [[ -z ${!servers} && -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
+
+ echo -e "${buffer}" > /etc/yp.conf
+ chmod 644 /etc/yp.conf
+}
+
+# bool system_post_start(char *iface)
+#
+# Configures the host system for dns, ntp and nis information
+# Always returns 0
+system_pre_start() {
+ local iface="$1"
+
+ system_dns "${iface}"
+ system_ntp "${iface}"
+ system_nis "${iface}"
+
+ return 0
+}
+
+# vim: set ts=4 :