]> git.pld-linux.org Git - projects/rc-scripts.git/blame_incremental - lib/ifup-aliases
fix 12 year old bug in pidofproc
[projects/rc-scripts.git] / lib / ifup-aliases
... / ...
CommitLineData
1#!/bin/sh
2#
3#
4# Adds all addresses of device.
5# Called from ifup-post.
6
7# Add all addresses
8for 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
19done
20
21for 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
37done
38
39for 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
68done
69
70# Setup IPv4-compatible addresses
71if 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
80fi
This page took 0.06072 seconds and 4 git commands to generate.