]>
Commit | Line | Data |
---|---|---|
12de71be | 1 | #!/bin/sh |
b0443108 | 2 | # |
de1fc6ce | 3 | # $Id: ifup-aliases,v 1.11 2001/05/15 16:03:44 baggins Exp $ |
b0443108 | 4 | # |
de1fc6ce | 5 | # adds all addresses of device $1 |
7742e157 | 6 | |
f3002e12 | 7 | . /etc/sysconfig/network |
dd4a755f | 8 | . /etc/rc.d/init.d/functions |
8b3e2b71 | 9 | . /etc/sysconfig/network-scripts/.functions |
f3002e12 | 10 | |
de1fc6ce JR |
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 | } | |
7742e157 | 18 | |
de1fc6ce JR |
19 | if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then |
20 | CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV" | |
5726f160 | 21 | else |
de1fc6ce | 22 | CONFIG="$DEV" |
6955eb97 | 23 | fi |
f3002e12 | 24 | |
de1fc6ce | 25 | source_config |
f3002e12 | 26 | |
de1fc6ce JR |
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 | |
f3002e12 JK |
49 | done |
50 | ||
de1fc6ce JR |
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 | |
f3002e12 JK |
74 | done |
75 | ||
de1fc6ce JR |
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 | |
5726f160 AM |
112 | fi |
113 | ||
de1fc6ce JR |
114 | |
115 | # This must be last line ! | |
116 | # vi:syntax=sh:tw=78:ts=8:sw=4 |