]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | # | |
3 | # | |
4 | # Adds all addresses of device. | |
5 | # Called from ifup-post. | |
6 | ||
7 | # Add all addresses | |
8 | for IP_ADDR in $IPADDR_ALIASES; do | |
9 | [ -z "$IP_ADDR" ] && continue | |
10 | # Be sure that primary address is added | |
11 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
12 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
13 | continue | |
14 | fi | |
15 | fi | |
16 | if is_yes "${IPV4_NETWORKING}"; then | |
17 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd + | |
18 | fi | |
19 | done | |
20 | ||
21 | for IP_ADDR in $IPV6_ADDR; do | |
22 | [ -z "$IP_ADDR" ] && continue | |
23 | # Be sure that primary address is added | |
24 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
25 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
26 | continue | |
27 | fi | |
28 | fi | |
29 | # Check for IPv6 address | |
30 | if (echo $IP_ADDR | grep -q ":"); then | |
31 | if is_yes "${IPV6_NETWORKING}"; then | |
32 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} | |
33 | fi | |
34 | elif is_yes "${IPV4_NETWORKING}"; then | |
35 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd + | |
36 | fi | |
37 | done | |
38 | ||
39 | 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 | |
40 | eval IP_ADDR="\$IPADDR${nr}" | |
41 | [ -z "$IP_ADDR" ] && continue | |
42 | ||
43 | eval IP_ADDR_OPT="\$IP_AOPTS${nr}" | |
44 | eval IP_ROUTE_OPT="\$IP_ROPTS${nr}" | |
45 | eval IP_ADDR_LABEL="\$IP_LABEL${nr}" | |
46 | ||
47 | # Be sure that primary address is added | |
48 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
49 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
50 | continue | |
51 | fi | |
52 | fi | |
53 | # Check for IPv6 address | |
54 | if echo $IP_ADDR | grep -q ":"; then | |
55 | if is_yes "${IPV6_NETWORKING}"; then | |
56 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
57 | if [ -n "${IP_ADDR_LABEL}" ]; then | |
58 | ip -6 addrlabel add prefix ${IP_ADDR} dev ${DEVICE} label ${IP_ADDR_LABEL} | |
59 | fi | |
60 | fi | |
61 | elif is_yes "${IPV4_NETWORKING}"; then | |
62 | # If broadcast is missing then autocalculate it | |
63 | if ! (echo $IP_ADDR_OPT | grep -qE "brd|broadcast"); then | |
64 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
65 | fi | |
66 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
67 | fi | |
68 | done | |
69 | ||
70 | # Setup IPv4-compatible addresses | |
71 | if is_yes "$IPV6_NETWORKING" && [ "$BOOTPROTO6" = "v4compat" ]; then | |
72 | # enable automatic tunnels | |
73 | ip link set sit0 up | |
74 | ||
75 | # add v4compat addresses to device | |
76 | for addr in $(ip -4 addr show scope global dev $DEVICE | \ | |
77 | awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do | |
78 | ip -6 addr add ::$addr dev $DEVICE | |
79 | done | |
80 | fi |