]> git.ipfire.org Git - people/stevee/network.git/blob - hooks/pppoe.helper
network: New package.
[people/stevee/network.git] / hooks / pppoe.helper
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