]> git.pld-linux.org Git - projects/rc-scripts.git/blob - sysconfig/network-scripts/ifup-aliases
- merge from TOTALNEW branch (see NEWS for more info)
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup-aliases
1 #!/bin/sh
2 #
3 #       $Id: ifup-aliases,v 1.11 2001/05/15 16:03:44 baggins Exp $
4 #
5 # adds all addresses of device $1
6
7 . /etc/sysconfig/network
8 . /etc/rc.d/init.d/functions
9 . /etc/sysconfig/network-scripts/.functions
10
11 # device name must be ifcfg-somename
12 DEV=$1
13
14 [ -z "$DEV" ] && {
15     nls "usage: %s <device name>" "ifup-aliases" >&2
16     exit 1
17 }
18
19 if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
20         CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
21 else
22         CONFIG="$DEV"
23 fi
24
25 source_config
26
27 # set all major variables
28 setup_ip_param
29                     
30 # Add all addresses
31 for IP_ADDR in $IPADDR_ALIASES; do
32         IP_ADDR_OPT=""
33         IP_ROUTE_OPT=""
34         
35         [ -z "$IP_ADDR" ] && continue
36         # Be sure that primary address is added
37         if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
38                 if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then
39                         continue
40                 fi
41         fi
42         if is_yes "${IPV4_NETWORKING}"; then
43                 # If broadcast is missing then autocalculate it
44                 if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then
45                         IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
46                 fi
47                 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
48         fi
49 done
50
51 for IP_ADDR in $IPV6_ADDR; do
52         IP_ADDR_OPT=""
53         IP_ROUTE_OPT=""
54         
55         [ -z "$IP_ADDR" ] && continue
56         # Be sure that primary address is added
57         if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
58                 if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then
59                         continue
60                 fi
61         fi
62         # Check for IPv6 address
63         if (echo $IP_ADDR | grep -q ":"); then
64                 if is_yes "${IPV6_NETWORKING}"; then
65                         ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
66                 fi
67         elif is_yes "${IPV4_NETWORKING}"; then
68                 # If broadcast is missing then autocalculate it
69                 if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then
70                         IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
71                 fi
72                 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
73         fi
74 done
75
76 for nr in $(awk 'BEGIN { for (j=1; j<256; j++) print j}'); do
77         eval IP_ADDR="\$IPADDR${nr}"
78         eval IP_ADDR_OPT="\$IP_AOPTS${nr}"
79         eval IP_ROUTE_OPT="\$IP_ROPTS${nr}"
80         
81         [ -z "$IP_ADDR" ] && continue
82         # Be sure that primary address is added
83         if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
84                 if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then
85                         continue
86                 fi
87         fi
88         # Check for IPv6 address
89         if (echo $IP_ADDR | grep -q ":"); then
90                 if is_yes "${IPV6_NETWORKING}"; then
91                         ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
92                 fi
93         elif is_yes "${IPV4_NETWORKING}"; then
94                 # If broadcast is missing then autocalculate it
95                 if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then
96                         IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
97                 fi
98                 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
99         fi
100 done
101
102 # Setup IPv4-compatible addresses
103 if is_yes "$IPV6_NETWORKING" && [ "$BOOTMETHOD6" = "v4compat" ]; then
104         # enable automatic tunnels
105         ip link set sit0 up
106
107         # add v4compat addresses to device
108         for addr in $(ip -4 addr show scope global dev $DEVICE | \
109                 awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do
110                 ip -6 addr add ::$addr dev $DEVICE
111         done
112 fi
113
114
115 # This must be last line !
116 # vi:syntax=sh:tw=78:ts=8:sw=4
This page took 0.05319 seconds and 3 git commands to generate.