]> git.pld-linux.org Git - projects/rc-scripts.git/blame - rc.d/init.d/functions.network
- GNU/Linux is gone.
[projects/rc-scripts.git] / rc.d / init.d / functions.network
CommitLineData
b0443108 1#
40d4a90a 2# $Id: functions.network,v 1.68 2002/02/03 16:14:32 adasi Exp $
dd8b6525 3#
7e04fe0e 4# This is not a shell script; it provides functions to network scripts
5# that source it.
6
c6df6b37
JK
7# This will work only after starting interface to which LDAP server is connected
8find_ldap_interfaces()
12d804ca 9{
fa8aca70
JR
10typeset BSWITH QUERY
11is_no "$USE_LDAP" && return 0
12
cdab3b96 13if [ -n "$LDAP_BASE_DN" ] ; then
14 BSWITCH="-b$LDAP_BASE_DN"
15else
16 BSWITH=""
17fi
18
19QUERY="(&(objectclass=pldinterface)(if_onboot=yes))"
20ldapsearch "$BSWITCH" "$QUERY" if_device | \
e9e86175 21 awk ' (/^if_device=/) { gsub(/^if_device=/,NIL); print $0; } '
c6df6b37 22}
85ebccea 23
c6df6b37
JK
24# find aliases for device
25find_ldap_aliases()
26{
fa8aca70
JR
27typeset BSWITH QUERY
28is_no "$USE_LDAP" && return 0
29
cdab3b96 30if [ -n "$LDAP_BASE_DN" ] ; then
31 BSWITCH="-b$LDAP_BASE_DN"
32else
33 BSWITH=""
34fi
35
36QUERY="(&(objectclass=pldinterface)(if_onboot=yes)(if_device~=$1:*))"
37ldapsearch "$BSWITCH" "$QUERY" if_device | \
e9e86175 38 grep "^if_device=" | awk ' { gsub(/^if_device=/,NIL); print $0; } '
c6df6b37 39}
85ebccea 40
c6df6b37
JK
41get_ldap_config ()
42{
fa8aca70
JR
43typeset BSWITH QUERY IPV6_ADDR IPADDR_ALIASES FIELD VALUE VAR
44is_no "$USE_LDAP" && return 0
85ebccea 45
cdab3b96 46# Initialise fields which can have multiple values:
47IPV6_ADDR=""
48IPADDR_ALIASES=""
49
50QUERY="(&(objectclass=pldinterface)(if_device=$1))"
51if [ -n "$LDAP_BASE_DN" ] ; then
52 BSWITCH="-b$LDAP_BASE_DN"
53else
54 BSWITH=""
55fi
56
e9e86175 57ldapsearch "$BSWITCH" "$QUERY" | awk ' (/=/) { gsub(/=/," "); print $0; } ' | {
cdab3b96 58 while read FIELD VALUE ; do
59 # Field, which have name compatible with other
60 # LDAP object
61 if [ "$FIELD" = "iphostnumber" ] ; then
62 VAR="IPADDR";
63 else # Other fields
e9e86175 64 VAR=$(echo "$FIELD" | awk '(/^if_/) { data=toupper($0); gsub(/IF_/,NIL,data); print data; }')
cdab3b96 65 fi
66 # Fields which can have multiple values:
67 if [ "$VAR" = "IPV6_ADDR" \
68 -o "$VAR" = "IPADDR_ALIASES" ] && \
69 [ -n "`eval echo \$$VAR`" ] ; then
70 echo "$VAR=\"\$$VAR $VALUE\"" ;
71
72 # single value fields, or the first value
73 elif [ -n "$VAR" ] ; then
74 eval "$VAR=\"$VALUE\""
75 echo "$VAR=\"$VALUE\""
76 fi
77 done
78}
12d804ca
JK
79}
80
7e04fe0e 81source_config ()
82{
e9e86175 83DEVNAME=$(basename "$CONFIG" | awk ' { gsub(/^ifcfg-/,NIL); print $0; } ')
111f7a0d 84
cdab3b96 85if echo "$CONFIG"|egrep "^/" >/dev/null 2>&1 ; then
86 if [ -f "$CONFIG" ] ; then
87 . "$CONFIG"
12d804ca 88 fi
cdab3b96 89elif [ -f "/etc/sysconfig/interfaces/$CONFIG" ] ; then
90 . "/etc/sysconfig/interfaces/$CONFIG"
dd4a755f 91elif is_yes "$USE_LDAP"; then
cdab3b96 92 eval `get_ldap_config $DEVNAME`
93fi
fa8aca70
JR
94if [ -n "${PREFIX}" ] && ! $(echo $IPADDR | grep "/" 2>&1 >/dev/null) ; then
95 IPADDR="$IPADDR/$PREFIX"
96fi
7e04fe0e 97}
98
99do_netreport ()
100{
cdab3b96 101# Notify programs that have requested notification
102( cd /var/run/netreport || exit
103for i in * ; do
104 [ -f $i ] && \
105 kill -SIGIO $i >/dev/null 2>&1 || \
106 rm -f $i >/dev/null 2>&1
107done
108)
7e04fe0e 109}
110
111need_hostname()
112{
cdab3b96 113if [ "`hostname`" = "(none)" -o "`hostname`" = "localhost" -o \
114 "`hostname`" = "localhost.localdomain" ]; then
115 NEEDHOSTNAME=yes
116else
117 unset NEEDHOSTNAME
118fi
7e04fe0e 119}
120
121set_hostname()
122{
da1fc19d 123typeset hostname domain
e9e86175
AM
124hostname=$(echo $1 | awk ' { gsub(/\..*$/,NIL); print $0; } ')
125domain=$(echo $1 | awk ' { sub(/^[^\.]*\./,NIL); print $0; } ')
c159d0a7
JK
126
127if [ -n "$hostname" ] ; then
128 echo "$hostname" > /etc/HOSTNAME
129 hostname $hostname
130fi
131
132if [ -n "$domain" ] ; then
133 >/etc/resolv.conf.new
134 if ! grep -q "search $domain" /etc/resolv.conf ; then
135 echo "search $domain" >> /etc/resolv.conf.new
136 fi
137 echo "domain $domain" >> /etc/resolv.conf.new
138 grep -v "^domain " /etc/resolv.conf >> /etc/resolv.conf.new
139 mv -f /etc/resolv.conf.new /etc/resolv.conf
cdab3b96 140fi
7e04fe0e 141}
142
fa8aca70 143# PLD GNU/Linux network functions
201c98b9 144