]>
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 | [ -z "$IP_ADDR" ] && continue |
11 | # Be sure that primary address is added | |
12 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
a51d5138 | 13 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then |
5e6dfc29 JR |
14 | continue |
15 | fi | |
de1fc6ce | 16 | fi |
5e6dfc29 | 17 | if is_yes "${IPV4_NETWORKING}"; then |
2f6bb78f | 18 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd + |
de1fc6ce | 19 | fi |
f3002e12 JK |
20 | done |
21 | ||
de1fc6ce | 22 | for IP_ADDR in $IPV6_ADDR; do |
5e6dfc29 JR |
23 | [ -z "$IP_ADDR" ] && continue |
24 | # Be sure that primary address is added | |
25 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
a51d5138 | 26 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then |
5e6dfc29 JR |
27 | continue |
28 | fi | |
de1fc6ce | 29 | fi |
5e6dfc29 JR |
30 | # Check for IPv6 address |
31 | if (echo $IP_ADDR | grep -q ":"); then | |
32 | if is_yes "${IPV6_NETWORKING}"; then | |
2f6bb78f | 33 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} |
5e6dfc29 JR |
34 | fi |
35 | elif is_yes "${IPV4_NETWORKING}"; then | |
2f6bb78f | 36 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd + |
74a7f2e4 | 37 | fi |
f3002e12 JK |
38 | done |
39 | ||
13118158 | 40 | 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 | 41 | eval IP_ADDR="\$IPADDR${nr}" |
13118158 AM |
42 | [ -z "$IP_ADDR" ] && continue |
43 | ||
5e6dfc29 JR |
44 | eval IP_ADDR_OPT="\$IP_AOPTS${nr}" |
45 | eval IP_ROUTE_OPT="\$IP_ROPTS${nr}" | |
46 | ||
5e6dfc29 JR |
47 | # Be sure that primary address is added |
48 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
a51d5138 | 49 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then |
5e6dfc29 JR |
50 | continue |
51 | fi | |
de1fc6ce | 52 | fi |
5e6dfc29 | 53 | # Check for IPv6 address |
2450b5fc | 54 | if echo $IP_ADDR | grep -q ":"; then |
5e6dfc29 JR |
55 | if is_yes "${IPV6_NETWORKING}"; then |
56 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
57 | fi | |
58 | elif is_yes "${IPV4_NETWORKING}"; then | |
59 | # If broadcast is missing then autocalculate it | |
a51d5138 | 60 | if ! (echo $IP_ADDR_OPT | grep -qE "brd|broadcast"); then |
5e6dfc29 JR |
61 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" |
62 | fi | |
63 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
de1fc6ce JR |
64 | fi |
65 | done | |
66 | ||
67 | # Setup IPv4-compatible addresses | |
16eb00d9 | 68 | if is_yes "$IPV6_NETWORKING" && [ "$BOOTPROTO6" = "v4compat" ]; then |
5e6dfc29 JR |
69 | # enable automatic tunnels |
70 | ip link set sit0 up | |
de1fc6ce | 71 | |
5e6dfc29 JR |
72 | # add v4compat addresses to device |
73 | for addr in $(ip -4 addr show scope global dev $DEVICE | \ | |
74 | awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do | |
75 | ip -6 addr add ::$addr dev $DEVICE | |
76 | done | |
5726f160 | 77 | fi |