]>
Commit | Line | Data |
---|---|---|
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 | ||
19 | HOOK_NAME="pppoe" | |
20 | HOOK_TYPE="zone" | |
21 | ||
22 | PPPOE_PLUGIN=rp-pppoe.so | |
23 | ||
24 | case "${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 | |
57 | name ${NAME} | |
58 | linkname ${NAME} | |
59 | ||
60 | plugin ${PPPOE_PLUGIN} ${zone} | |
61 | ||
62 | # User configuration | |
63 | user ${USER} | |
64 | ||
65 | $([ "${PEERDNS}" = "1" ] && echo "usepeerdns") | |
66 | $([ "${DEFAULTROUTE}" = "1" ] && echo "defaultroute") | |
67 | ||
68 | noauth | |
69 | $([ -n "${AUTH}" ] && echo "require-${AUTH}") | |
70 | ||
71 | noipdefault | |
72 | ||
73 | # Maximum transmission/receive unit | |
74 | mtu ${MTU} | |
75 | mru ${MTU} | |
76 | ||
77 | # Disable the compression | |
78 | noaccomp nodeflate nopcomp novj novjccomp nobsdcomp | |
79 | ||
80 | debug | |
81 | EOF | |
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} | |
153 | HOOK="${HOOK_NAME}" | |
154 | USER="${USER}" | |
155 | SECRET="${SECRET}" | |
156 | NAME="${NAME}" | |
157 | MTU="${MTU}" | |
158 | DEFAULTROUTE="${DEFAULTROUTE}" | |
159 | PEERDNS="${PEERDNS}" | |
160 | AUTH="${AUTH}" | |
161 | EOF | |
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 | ;; | |
189 | esac | |
190 | ||
191 | # End $NETWORK_DEVICES/services/ipv4-static |