]> git.ipfire.org Git - people/stevee/network.git/blame - hooks/pppoe
network: Remove support for blue zone.
[people/stevee/network.git] / hooks / pppoe
CommitLineData
5b20e43a
MT
1#!/bin/sh
2########################################################################
3# Begin $NETWORK_DEVICES/services/ipv4-static
4#
5# Description : IPV4 Static Boot Script
6#
7# Authors : Nathan Coulson - nathan@linuxfromscratch.org
8# Kevin P. Fleming - kpfleming@linuxfromscratch.org
9#
10# Version : 00.00
11#
12# Notes :
13#
14########################################################################
15
16. /lib/network/hook-header
17. /lib/network/functions.ppp
18
19HOOK_NAME="pppoe"
20HOOK_TYPE="zone"
21
22PPPOE_PLUGIN=rp-pppoe.so
23
24case "${action}" in
25 help)
26 ;;
27
28 info)
29 echo "HOOK_NAME=$HOOK_NAME"
30 echo "HOOK_TYPE=$HOOK_TYPE"
31 ;;
32
33 status)
34 echo -e "# ${CLR_BOLD_CYN}PPPoE: ${NAME}${NORMAL}"
35 echo -n "# pppd's PID: "
36 pid=$(head -n1 /var/run/ppp-${NAME}.pid 2>/dev/null)
37 if [ -n "${pid}" ] && [ -d "/proc/${pid}" ]; then
38 echo -e "${CLR_BOLD_GRN}${pid}${NORMAL}"
39 exit ${EXIT_OK}
40 else
41 echo -e "${CLR_BOLD_RED}${pid-off}${NORMAL}"
42 exit ${EXIT_OK}
43 fi
44 ;;
45
46 pre-up)
47 ppp_pre_up
48
49 check_config NAME
50 # Creating necessary files
51 [ -d "${RED_RUN}/${NAME}" ] || mkdir -p ${RED_RUN}/${NAME}
52
53 ppp_secret "${USER}" "${SECRET}"
54
55 cat <<EOF >${RED_RUN}/${NAME}/options
56# Naming options
57name ${NAME}
58linkname ${NAME}
59
60plugin ${PPPOE_PLUGIN} ${zone}
61
62# User configuration
63user ${USER}
64
65$([ "${PEERDNS}" = "1" ] && echo "usepeerdns")
66$([ "${DEFAULTROUTE}" = "1" ] && echo "defaultroute")
67
68noauth
69$([ -n "${AUTH}" ] && echo "require-${AUTH}")
70
71noipdefault
72
73# Maximum transmission/receive unit
74mtu ${MTU}
75mru ${MTU}
76
77# Disable the compression
78noaccomp nodeflate nopcomp novj novjccomp nobsdcomp
79
80debug
81EOF
82 ;;
83
84 post-up)
85 check_config zone NAME
86 MESSAGE="Starting PPP Daemon on interface ${zone}..."
87 if zone_is_forwarding ${zone}; then
88 pppd file ${RED_RUN}/${NAME}/options >/dev/null
89 evaluate_retval
90 else
91 log_failure_msg "Zone ${zone} is not forwaring any traffic..."
92 exit ${EXIT_ERROR}
93 fi
94
95 ppp_post_up
96 ;;
97
98 pre-down)
99 ppp_pre_down
100
101 MESSAGE="Stopping PPP Daemon on interface ${zone}..."
102 pid=$(head -n1 /var/run/ppp-${NAME}.pid 2>/dev/null)
103 if [ -n "${pid}" ]; then
104 kill ${pid} &>/dev/null
105 evaluate_retval
106 fi
107 ;;
108
109 post-down)
110 ppp_post_down
111 ;;
112
113 add)
114 # A pregenerated connection name
115 NAME=$(</proc/sys/kernel/random/uuid)
116 DEFAULTROUTE=1
117 PEERDNS=1
118 MTU=1492
119
120 while [ $# -gt 0 ]; do
121 case "$1" in
122 --user=*)
123 USER=${1#--user=}
124 ;;
125 --secret=*)
126 SECRET=${1#--secret=}
127 ;;
128 --name=*)
129 NAME=${1#--name=}
130 ;;
131 --mtu=*)
132 MTU=${1#--mtu=}
133 ;;
134 --no-defaultroute)
135 DEFAULTROUTE=0
136 ;;
137 --no-dns)
138 PEERDNS=0
139 ;;
140 --auth=*)
141 AUTH=${1#--auth=}
142 ;;
143 *)
144 echo "Unknown option: $1" >&2
145 exit 1
146 ;;
147 esac
148 shift
149 done
150
151 UUID=$(uuid)
152 cat <<EOF >${CONFIG_UUIDS}/${UUID}
153HOOK="${HOOK_NAME}"
154USER="${USER}"
155SECRET="${SECRET}"
156NAME="${NAME}"
157MTU="${MTU}"
158DEFAULTROUTE="${DEFAULTROUTE}"
159PEERDNS="${PEERDNS}"
160AUTH="${AUTH}"
161EOF
162
163 ln -sf ${CONFIG_UUIDS}/${UUID} \
164 ${CONFIG_ZONES}/${zone}/${HOOK_NAME}-${UUID}
165
166 exit ${EXIT_OK}
167 ;;
168
169 discover)
170 output=$(pppoe-discovery -I ${zone} \
171 -U $(</proc/sys/kernel/random/uuid) 2>&1)
172 if grep -q "Timeout" <<<${output}; then
173 echo "${HOOK_NAME}: FAILED"
174 exit ${EXIT_ERROR}
175 else
176 echo "${HOOK_NAME}: OK"
177 echo "${output}" | while read line; do
178 [ "${line:0:1}" = "A" ] || continue
179 echo "${HOOK_NAME}: ${line}"
180 done
181 exit ${EXIT_OK}
182 fi
183 ;;
184
185 *)
186 echo "Usage: ${0} {config|pre-up|post-up|pre-down|post-down|status} [interface]"
187 exit ${EXIT_ERROR}
188 ;;
189esac
190
191# End $NETWORK_DEVICES/services/ipv4-static