]>
Commit | Line | Data |
---|---|---|
5b20e43a MT |
1 | #!/bin/bash |
2 | ||
3 | . /lib/network/functions | |
4 | . /lib/network/functions.ppp | |
5 | ||
6 | while [ $# -gt 0 ]; do | |
7 | case "${1}" in | |
8 | --config=*) | |
9 | . ${1#--config=} | |
10 | ;; | |
11 | *) | |
12 | action=${1} | |
13 | break | |
14 | ;; | |
15 | esac | |
16 | shift | |
17 | done | |
18 | ||
19 | zone=${DEVICE} | |
20 | ||
21 | DIR=${RED_RUN}/${LINKNAME} | |
22 | ||
23 | case "${action}" in | |
24 | ip-up) | |
25 | mkdir -p ${DIR} 2>/dev/null | |
26 | ||
27 | echo "${IPREMOTE}" > ${DIR}/remote-ip-address | |
28 | echo "${IPLOCAL}" > ${DIR}/local-ip-address | |
29 | ||
30 | # Update firewall with new IP address(es) | |
31 | ||
32 | # Prepare main routing table | |
33 | ip route add ${IPREMOTE}/32 dev ${IFNAME} src ${IPLOCAL} | |
34 | ||
35 | # Configure our own routing table | |
36 | ip route add table ${zone} default via ${IPREMOTE} dev ${IFNAME} | |
37 | ||
38 | if [ "${DEFAULTROUTE}" = "1" ]; then | |
39 | ln -sf remote-ip-address ${DIR}/gateway | |
40 | [ -n "${WEIGHT}" ] && \ | |
41 | echo "${WEIGHT}" > ${DIR}/weight | |
42 | ||
43 | red_defaultroute_update | |
44 | fi | |
45 | ||
46 | if [ "${PEERDNS}" = "1" ]; then | |
47 | echo "${DNS1}" > ${DIR}/dns | |
48 | if [ -n "${DNS2}" ] && [ "${DNS1}" != "${DNS2}" ]; then | |
49 | echo "${DNS2}" > ${DIR}/dns | |
50 | fi | |
51 | red_dns_update | |
52 | fi | |
53 | ;; | |
54 | ||
55 | ip-down) | |
56 | # Flush firewall | |
57 | ||
58 | if [ "${DEFAULTROUTE}" = "1" ]; then | |
59 | : | |
60 | fi | |
61 | ||
62 | ip route flush table ${zone} | |
63 | ||
64 | if [ "${PEERDNS}" = "1" ]; then | |
65 | : | |
66 | fi | |
67 | ||
68 | # Save statistics | |
69 | ppp_stat "${NAME}" "${CONNECT_TIME}" "${BYTES_RCVD}" "${BYTES_SENT}" | |
70 | ;; | |
71 | esac | |
72 | ||
73 | exit 0 |