#!/bin/sh ######################################################################## # Begin $NETWORK_DEVICES/services/ipv4-static # # Description : IPV4 Static Boot Script # # Authors : Nathan Coulson - nathan@linuxfromscratch.org # Kevin P. Fleming - kpfleming@linuxfromscratch.org # # Version : 00.00 # # Notes : # ######################################################################## . /lib/network/hook-header . /lib/network/functions.ppp HOOK_NAME="pppoe" HOOK_TYPE="zone" PPPOE_PLUGIN=rp-pppoe.so case "${action}" in help) ;; info) echo "HOOK_NAME=$HOOK_NAME" echo "HOOK_TYPE=$HOOK_TYPE" ;; status) echo -e "# ${CLR_BOLD_CYN}PPPoE: ${NAME}${NORMAL}" echo -n "# pppd's PID: " pid=$(head -n1 /var/run/ppp-${NAME}.pid 2>/dev/null) if [ -n "${pid}" ] && [ -d "/proc/${pid}" ]; then echo -e "${CLR_BOLD_GRN}${pid}${NORMAL}" exit ${EXIT_OK} else echo -e "${CLR_BOLD_RED}${pid-off}${NORMAL}" exit ${EXIT_OK} fi ;; pre-up) ppp_pre_up check_config NAME # Creating necessary files [ -d "${RED_RUN}/${NAME}" ] || mkdir -p ${RED_RUN}/${NAME} ppp_secret "${USER}" "${SECRET}" cat <${RED_RUN}/${NAME}/options # Naming options name ${NAME} linkname ${NAME} plugin ${PPPOE_PLUGIN} ${zone} # User configuration user ${USER} $([ "${PEERDNS}" = "1" ] && echo "usepeerdns") $([ "${DEFAULTROUTE}" = "1" ] && echo "defaultroute") noauth $([ -n "${AUTH}" ] && echo "require-${AUTH}") noipdefault # Maximum transmission/receive unit mtu ${MTU} mru ${MTU} # Disable the compression noaccomp nodeflate nopcomp novj novjccomp nobsdcomp debug EOF ;; post-up) check_config zone NAME MESSAGE="Starting PPP Daemon on interface ${zone}..." if zone_is_forwarding ${zone}; then pppd file ${RED_RUN}/${NAME}/options >/dev/null evaluate_retval else log_failure_msg "Zone ${zone} is not forwaring any traffic..." exit ${EXIT_ERROR} fi ppp_post_up ;; pre-down) ppp_pre_down MESSAGE="Stopping PPP Daemon on interface ${zone}..." pid=$(head -n1 /var/run/ppp-${NAME}.pid 2>/dev/null) if [ -n "${pid}" ]; then kill ${pid} &>/dev/null evaluate_retval fi ;; post-down) ppp_post_down ;; add) # A pregenerated connection name NAME=$(&2 exit 1 ;; esac shift done UUID=$(uuid) cat <${CONFIG_UUIDS}/${UUID} HOOK="${HOOK_NAME}" USER="${USER}" SECRET="${SECRET}" NAME="${NAME}" MTU="${MTU}" DEFAULTROUTE="${DEFAULTROUTE}" PEERDNS="${PEERDNS}" AUTH="${AUTH}" EOF ln -sf ${CONFIG_UUIDS}/${UUID} \ ${CONFIG_ZONES}/${zone}/${HOOK_NAME}-${UUID} exit ${EXIT_OK} ;; discover) output=$(pppoe-discovery -I ${zone} \ -U $(&1) if grep -q "Timeout" <<<${output}; then echo "${HOOK_NAME}: FAILED" exit ${EXIT_ERROR} else echo "${HOOK_NAME}: OK" echo "${output}" | while read line; do [ "${line:0:1}" = "A" ] || continue echo "${HOOK_NAME}: ${line}" done exit ${EXIT_OK} fi ;; *) echo "Usage: ${0} {config|pre-up|post-up|pre-down|post-down|status} [interface]" exit ${EXIT_ERROR} ;; esac # End $NETWORK_DEVICES/services/ipv4-static