]>
Commit | Line | Data |
---|---|---|
12de71be | 1 | #!/bin/sh |
b0443108 | 2 | # |
ec8b15cb | 3 | # $Id$ |
b0443108 | 4 | # |
625871bd ER |
5 | # Adds all addresses of device. |
6 | # Called from ifup-post. | |
7742e157 | 7 | |
de1fc6ce JR |
8 | # Add all addresses |
9 | for IP_ADDR in $IPADDR_ALIASES; do | |
5e6dfc29 JR |
10 | IP_ADDR_OPT="" |
11 | IP_ROUTE_OPT="" | |
12 | ||
13 | [ -z "$IP_ADDR" ] && continue | |
14 | # Be sure that primary address is added | |
15 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
16 | if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
17 | continue | |
18 | fi | |
de1fc6ce | 19 | fi |
5e6dfc29 JR |
20 | if is_yes "${IPV4_NETWORKING}"; then |
21 | # If broadcast is missing then autocalculate it | |
22 | if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then | |
23 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
24 | fi | |
25 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
de1fc6ce | 26 | fi |
f3002e12 JK |
27 | done |
28 | ||
de1fc6ce | 29 | for IP_ADDR in $IPV6_ADDR; do |
5e6dfc29 JR |
30 | IP_ADDR_OPT="" |
31 | IP_ROUTE_OPT="" | |
32 | ||
33 | [ -z "$IP_ADDR" ] && continue | |
34 | # Be sure that primary address is added | |
35 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
36 | if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
37 | continue | |
38 | fi | |
de1fc6ce | 39 | fi |
5e6dfc29 JR |
40 | # Check for IPv6 address |
41 | if (echo $IP_ADDR | grep -q ":"); then | |
42 | if is_yes "${IPV6_NETWORKING}"; then | |
43 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
44 | fi | |
45 | elif is_yes "${IPV4_NETWORKING}"; then | |
46 | # If broadcast is missing then autocalculate it | |
47 | if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then | |
48 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
49 | fi | |
50 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
74a7f2e4 | 51 | fi |
f3002e12 JK |
52 | done |
53 | ||
13118158 | 54 | for nr in $(awk 'BEGIN { max=0; }; /^IPADDR[0-9]+=/ { s = $0; gsub(/^IPADDR/, "", s); gsub(/=.*/, "", s); if (int(s) > int(max)) { max=s; }; }; END { for(j=1; j<=int(max); j++) print j } ' $CONFIG); do |
5e6dfc29 | 55 | eval IP_ADDR="\$IPADDR${nr}" |
13118158 AM |
56 | [ -z "$IP_ADDR" ] && continue |
57 | ||
5e6dfc29 JR |
58 | eval IP_ADDR_OPT="\$IP_AOPTS${nr}" |
59 | eval IP_ROUTE_OPT="\$IP_ROPTS${nr}" | |
60 | ||
5e6dfc29 JR |
61 | # Be sure that primary address is added |
62 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
63 | if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
64 | continue | |
65 | fi | |
de1fc6ce | 66 | fi |
5e6dfc29 | 67 | # Check for IPv6 address |
2450b5fc | 68 | if echo $IP_ADDR | grep -q ":"; then |
5e6dfc29 JR |
69 | if is_yes "${IPV6_NETWORKING}"; then |
70 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
71 | fi | |
72 | elif is_yes "${IPV4_NETWORKING}"; then | |
73 | # If broadcast is missing then autocalculate it | |
74 | if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then | |
75 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
76 | fi | |
77 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
de1fc6ce JR |
78 | fi |
79 | done | |
80 | ||
81 | # Setup IPv4-compatible addresses | |
16eb00d9 | 82 | if is_yes "$IPV6_NETWORKING" && [ "$BOOTPROTO6" = "v4compat" ]; then |
5e6dfc29 JR |
83 | # enable automatic tunnels |
84 | ip link set sit0 up | |
de1fc6ce | 85 | |
5e6dfc29 JR |
86 | # add v4compat addresses to device |
87 | for addr in $(ip -4 addr show scope global dev $DEVICE | \ | |
88 | awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do | |
89 | ip -6 addr add ::$addr dev $DEVICE | |
90 | done | |
5726f160 AM |
91 | fi |
92 | ||
de1fc6ce | 93 | # This must be last line ! |
5e6dfc29 | 94 | # vi:syntax=sh |