]>
Commit | Line | Data |
---|---|---|
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 |
8 | find_ldap_interfaces() | |
12d804ca | 9 | { |
fa8aca70 JR |
10 | typeset BSWITH QUERY |
11 | is_no "$USE_LDAP" && return 0 | |
12 | ||
cdab3b96 | 13 | if [ -n "$LDAP_BASE_DN" ] ; then |
14 | BSWITCH="-b$LDAP_BASE_DN" | |
15 | else | |
16 | BSWITH="" | |
17 | fi | |
18 | ||
19 | QUERY="(&(objectclass=pldinterface)(if_onboot=yes))" | |
20 | ldapsearch "$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 |
25 | find_ldap_aliases() | |
26 | { | |
fa8aca70 JR |
27 | typeset BSWITH QUERY |
28 | is_no "$USE_LDAP" && return 0 | |
29 | ||
cdab3b96 | 30 | if [ -n "$LDAP_BASE_DN" ] ; then |
31 | BSWITCH="-b$LDAP_BASE_DN" | |
32 | else | |
33 | BSWITH="" | |
34 | fi | |
35 | ||
36 | QUERY="(&(objectclass=pldinterface)(if_onboot=yes)(if_device~=$1:*))" | |
37 | ldapsearch "$BSWITCH" "$QUERY" if_device | \ | |
e9e86175 | 38 | grep "^if_device=" | awk ' { gsub(/^if_device=/,NIL); print $0; } ' |
c6df6b37 | 39 | } |
85ebccea | 40 | |
c6df6b37 JK |
41 | get_ldap_config () |
42 | { | |
fa8aca70 JR |
43 | typeset BSWITH QUERY IPV6_ADDR IPADDR_ALIASES FIELD VALUE VAR |
44 | is_no "$USE_LDAP" && return 0 | |
85ebccea | 45 | |
cdab3b96 | 46 | # Initialise fields which can have multiple values: |
47 | IPV6_ADDR="" | |
48 | IPADDR_ALIASES="" | |
49 | ||
50 | QUERY="(&(objectclass=pldinterface)(if_device=$1))" | |
51 | if [ -n "$LDAP_BASE_DN" ] ; then | |
52 | BSWITCH="-b$LDAP_BASE_DN" | |
53 | else | |
54 | BSWITH="" | |
55 | fi | |
56 | ||
e9e86175 | 57 | ldapsearch "$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 | 81 | source_config () |
82 | { | |
e9e86175 | 83 | DEVNAME=$(basename "$CONFIG" | awk ' { gsub(/^ifcfg-/,NIL); print $0; } ') |
111f7a0d | 84 | |
cdab3b96 | 85 | if echo "$CONFIG"|egrep "^/" >/dev/null 2>&1 ; then |
86 | if [ -f "$CONFIG" ] ; then | |
87 | . "$CONFIG" | |
12d804ca | 88 | fi |
cdab3b96 | 89 | elif [ -f "/etc/sysconfig/interfaces/$CONFIG" ] ; then |
90 | . "/etc/sysconfig/interfaces/$CONFIG" | |
dd4a755f | 91 | elif is_yes "$USE_LDAP"; then |
cdab3b96 | 92 | eval `get_ldap_config $DEVNAME` |
93 | fi | |
fa8aca70 JR |
94 | if [ -n "${PREFIX}" ] && ! $(echo $IPADDR | grep "/" 2>&1 >/dev/null) ; then |
95 | IPADDR="$IPADDR/$PREFIX" | |
96 | fi | |
7e04fe0e | 97 | } |
98 | ||
99 | do_netreport () | |
100 | { | |
cdab3b96 | 101 | # Notify programs that have requested notification |
102 | ( cd /var/run/netreport || exit | |
103 | for i in * ; do | |
104 | [ -f $i ] && \ | |
105 | kill -SIGIO $i >/dev/null 2>&1 || \ | |
106 | rm -f $i >/dev/null 2>&1 | |
107 | done | |
108 | ) | |
7e04fe0e | 109 | } |
110 | ||
111 | need_hostname() | |
112 | { | |
cdab3b96 | 113 | if [ "`hostname`" = "(none)" -o "`hostname`" = "localhost" -o \ |
114 | "`hostname`" = "localhost.localdomain" ]; then | |
115 | NEEDHOSTNAME=yes | |
116 | else | |
117 | unset NEEDHOSTNAME | |
118 | fi | |
7e04fe0e | 119 | } |
120 | ||
121 | set_hostname() | |
122 | { | |
da1fc19d | 123 | typeset hostname domain |
e9e86175 AM |
124 | hostname=$(echo $1 | awk ' { gsub(/\..*$/,NIL); print $0; } ') |
125 | domain=$(echo $1 | awk ' { sub(/^[^\.]*\./,NIL); print $0; } ') | |
c159d0a7 JK |
126 | |
127 | if [ -n "$hostname" ] ; then | |
128 | echo "$hostname" > /etc/HOSTNAME | |
129 | hostname $hostname | |
130 | fi | |
131 | ||
132 | if [ -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 | 140 | fi |
7e04fe0e | 141 | } |
142 | ||
fa8aca70 | 143 | # PLD GNU/Linux network functions |
201c98b9 | 144 |