]> git.pld-linux.org Git - projects/rc-scripts.git/blob - rc.d/init.d/functions.network
- we are using better pidofproc() from RH initscripts
[projects/rc-scripts.git] / rc.d / init.d / functions.network
1 #
2 # $Id: functions.network,v 1.11 1999/07/15 13:29:44 misiek Exp $
3 #
4 # This is not a shell script; it provides functions to network scripts
5 # that source it.
6
7 source_config ()
8 {
9     DEVNAME=`basename $CONFIG | sed 's/^ifcfg-//g'`
10
11     if basename $CONFIG | grep -q '[^g]-' ; then
12         PARENTCONFIG=`echo $CONFIG | sed 's/-[^-]*$//g'`
13         PARENTDEVNAME=`echo $PARENTCONFIG | sed 's/^ifcfg-//g'`
14         [ -f $PARENTCONFIG ] || {
15             echo "Missing config file $PARENTCONFIG." >&2
16             exit 1
17         }
18         . ./$PARENTCONFIG
19     fi
20     . /etc/sysconfig/interfaces/$CONFIG
21 }
22
23 do_netreport ()
24 {
25   # Notify programs that have requested notification
26   ( cd /var/run/netreport || exit
27     for i in * ; do
28       [ -f $i ] && \
29         kill -SIGIO $i >/dev/null 2>&1 || \
30           rm -f $i >/dev/null 2>&1
31     done
32   )
33 }
34
35 need_hostname()
36 {
37     if [ "`hostname`" = "(none)" -o "`hostname`" = "localhost" -o \
38          "`hostname`" = "localhost.localdomain" ]; then
39         NEEDHOSTNAME=yes
40     else
41         unset NEEDHOSTNAME
42     fi
43 }
44
45 set_hostname()
46 {
47     echo "$1" > /etc/HOSTNAME
48     hostname $1
49     if ! grep search /etc/resolv.conf; then
50         domain=`echo $1 | sed 's/^[^\.]*\.//'`
51         echo "search $domain" >> /etc/resolv.conf
52     fi
53 }
54
55 # PLD network functions
56 # (C) 1999 Arkadiusz Mi¶kiewicz <misiek@pld.org.pl>
57 #
58 # All functions must be called "name_of_function on" or "name_of_function off"
59
60 # proc_net <zmien> <start/stop> <co ustaw> <co default> <nazwa_zmiennej> [komunikat]
61 # proc_net ipv4/ip_forward start 1         0            IPV4_FORWARDING  "IPv4 forwarding"
62 #
63 # wy¶wietli siê komunikat "Setting IPv4 forwarding to 1"
64 # je¶li nie podano komunikatu nic nie jest wy¶wietlane
65
66 proc_net()
67 {
68 WHAT="$1"
69 TODO="$2"
70 SET="$3"
71 DEF="$4"
72 VAR="$5"
73 MESSAGE="$6"
74 eval VARD=\$${VAR}
75
76 if [ -n "$VARD" ] && [ -e /proc/sys/net/$WHAT ]; then
77         if [ "$TODO" == "start" ]; then
78                 [ "$VARD" == "no" -a "$SET" == "1" ] && SET="(($SET - 1))"
79                 [ "$VARD" == "yes" -a "$SET" == "0" ] && SET="(($SET + 1))"
80                 if [ -n "$MESSAGE" ]; then
81                         show "Setting $MESSAGE to $SET"; busy
82                         if (echo "$SET" > /proc/sys/net/$WHAT) 2> /dev/null; then
83                                 deltext; ok
84                         else
85                                 deltext; fail
86                         fi
87                 else
88                         echo "$SET" > /proc/sys/net/$WHAT
89                 fi
90         elif [ "$TODO" == "stop" ]; then
91                 if [ -n "$MESSAGE" ]; then
92                         show "Setting $MESSAGE to $DEF"; busy
93                         if (echo "$DEF" > /proc/sys/net/$WHAT) 2> /dev/null; then
94                                 deltext; ok
95                         else
96                                 deltext; fail
97                         fi
98                 fi
99         fi
100 fi
101 }
102
103 ipv4_dynamic_ip_patch()
104 {
105 if [ "$IPV4_DYNAMIC_IP_PATCH" != "default" -a -n "$IPV4_DYNAMIC_IP_PATCH" ] || [ ! -e /proc/sys/net/ipv4/ip_dynaddr ]; then
106
107 case "$IPV4_DYNAMIC_IP_PATCH_VALUE" in
108         [1-9])  ;;
109         *)      IPV4_DYNAMIC_IP_PATCH_VALUE=7 ;;
110 esac
111
112 if [ "$IPV4_DYNAMIC_IP_PATCH" == "yes" ] && [ "$1" == "on" ]; then
113 show Enabling dynamic IP patch; busy
114 if echo $IPV4_DYNAMIC_IP_PATCH_VALUE > /proc/sys/net/ipv4/ip_dynaddr; then deltext; ok; else deltext; fail; fi
115 else
116 show Diabling dynamic IP patch; busy
117 if echo 0 > /proc/sys/net/ipv4/ip_dynaddr; then deltext; ok; else deltext; fail; fi
118 fi
119
120 fi
121 }
122
123 ipv4_local_port_range()
124 {
125 if [ "$IPV4_LOCAL_PORT_RANGE" != "default" -a -n "$IPV4_LOCAL_PORT_RANGE" ] || [ ! -e /proc/sys/net/ipv4/ip_local_port_range ]; then
126
127 if [ "$IPV4_LOCAL_PORT_RANGE" == "yes" ] && [ "$1" == "on" ]; then
128 show Setting local port range; busy
129 if echo "$IPV4_LOCAL_PORT_RANGE" > /proc/sys/net/ipv4/ip_local_port_range; then deltext; ok; else deltext; fail; fi
130 else
131 show Setting default local port range; busy
132 if echo "1024 4999" > /proc/sys/net/ipv4/ip_local_port_range; then deltext; ok; else deltext; fail; fi
133 fi
134
135 fi
136 }
137
138 ipv4_anti_spoofing()
139 {
140 if [ "$IPV4_ANTI_SPOOFING" != "default" -a -n "$IPV4_ANTI_SPOOFING" ] || [ ! -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
141
142 if [ "$IPV4_ANTI_SPOOFING" == "yes" ] && [ "$1" == "on" ]; then
143 show Setting up IP spoofing protection; busy
144 if (for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f; done); then deltext; ok; else deltext; fail; fi
145 else
146 show Setting down IP spoofing protection; busy
147 if (for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done); then deltext; ok; else deltext; fail; fi
148 fi
149
150 fi
151 }
152
153 # Koniecznie trzeba to usprawnic
154 modprobe_net()
155 {
156 [ "$IPV6_NETWORKING" == "yes" ] && modprobe net-pf-10 2> /dev/null
157 modprobe ipip ip_gre 2> /dev/null
158 }
159
160 #
161 # folowing function calculates network prefix from given network mask
162 # (c) 1999 Grzegorz Stanislawski <stangrze@open.net.pl>
163 #
164 calcprefix() {
165 local OISF len olen bad prefix
166  OISF=$IFS
167  IFS="."
168  prefix=0
169  olen=8
170  bad=0
171  for i in $1
172  do len=0
173  case $i in
174   255)   len=8 ;;
175   254)   len=7 ;;
176   252)   len=6 ;;
177   248)   len=5 ;;
178   240)   len=4 ;;
179   224)   len=3 ;;
180   192)   len=2 ;;
181   128)   len=1 ;;
182   0)     len=0 ;;
183   *)     len=300 ;;
184  esac
185  if [ "$len" -gt "$olen" ] ; then bad=1; fi
186  prefix=`expr $prefix + $len`
187  olen=$len
188  done
189  IFS=$OIFS
190  if [ "$bad" == "0" ]; then
191  echo "$prefix"
192  else
193  echo "32"
194  fi
195  return
196 }
197 #
198 # folowing function calculates network mask from given prefix
199 # (c) 1999 Grzegorz Stanislawski <stangrze@open.net.pl>
200 #
201 calcnetmask() {
202 local prefix a MASK
203 MASK=""
204 if [ "`echo "${1}" | grep "^[0-9]"`" == "" ]; then
205         prefix=32
206 else
207         typeset -i prefix=$1
208 fi
209 for i in 1 2 3 4
210  do
211   case $prefix in
212    7) a=254 ;;
213    6) a=252 ;;
214    5) a=248 ;;
215    4) a=240 ;;
216    3) a=224 ;;
217    2) a=192 ;;
218    1) a=128 ;;
219    *)
220       if [ $prefix -ge 8 ]; then a=255; fi 
221       if [ $prefix -le 0 ]; then a=0; fi
222       ;;
223   esac
224   prefix="`expr $prefix - 8`"
225   if [ -z "$MASK" ]
226    then MASK=$a
227    else MASK=$MASK.$a
228   fi
229  done
230 echo $MASK
231 return
232 }
233                                                  
This page took 0.036529 seconds and 3 git commands to generate.