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