2 ########################################################################
3 # Begin $NETWORK_DEVICES/services/ipv4-static
5 # Description : IPV4 Static Boot Script
7 # Authors : Nathan Coulson - nathan@linuxfromscratch.org
8 # Kevin P. Fleming - kpfleming@linuxfromscratch.org
14 ########################################################################
16 .
/lib
/network
/hook-header
18 HOOK_NAME
="ipv4-static"
21 function check_config
() {
23 if [ -z "${IP}" ]; then
24 log_failure_msg
"IP variable missing, cannot continue."
25 exit ${EXIT_CONF_ERROR}
28 if [ -z "${PREFIX}" -a -z "${PEER}" ]; then
29 log_warning_msg
"PREFIX variable missing, assuming 24."
31 args
="${args} ${IP}/${PREFIX}"
32 elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then
33 log_failure_msg
"PREFIX and PEER both specified, cannot continue."
34 exit ${EXIT_CONF_ERROR}
35 elif [ -n "${PREFIX}" ]; then
36 args
="${args} ${IP}/${PREFIX}"
37 elif [ -n "${PEER}" ]; then
38 args
="${args} ${IP} peer ${PEER}"
41 if [ -n "${BROADCAST}" ]; then
42 args
="${args} broadcast ${BROADCAST}"
45 if [ -n "${SOURCE}" ]; then
46 args
="${args} src ${SOURCE}"
55 echo "HOOK_NAME=$HOOK_NAME"
56 echo "HOOK_TYPE=$HOOK_TYPE"
61 echo -e "# ${CLR_BOLD_CYN}IPv4 static: ${IP}/${PREFIX}${NORMAL}"
62 if [ -n "${GATEWAY}" ]; then
63 echo "# Gateway: ${GATEWAY}"
64 echo -n "# Reachable: "
65 if ping -c1 -w1 -I ${zone} ${GATEWAY} &>/dev
/null
; then
66 echo -e "${CLR_BOLD_GRN}yes${NORMAL}"
68 echo -e "${CLR_BOLD_RED}no${NORMAL}"
71 ip addr show
${zone} | grep "inet " | fgrep -q "${IP}/${PREFIX}"
80 if ! device_has_ipv4 ${zone} ${IP}; then
81 MESSAGE="Adding IPv4 address
${IP} to zone
${zone} interface...
"
82 ip addr add ${args} dev ${zone}
86 if [ -n "${GATEWAY}" ]; then
87 if ip route | grep -q default; then
88 log_warning_msg "Gateway already setup
; skipping.
" ${WARNING}
90 MESSAGE="Setting up default gateway...
"
91 ip route add default via ${GATEWAY} dev ${zone}
99 if [ -n "${GATEWAY}" ]; then
100 MESSAGE="Removing default gateway...
"
105 if device_has_ipv4 ${zone} ${IP}; then
106 MESSAGE="Removing IPv4 address
${IP} from zone
${zone}...
"
107 ip addr del ${args} dev ${zone}
116 while [ $# -gt 0 ]; do
122 PREFIX=${1#--prefix=}
128 BROADCAST=${1#--broadcast=}
131 SOURCE=${1#--source=}
134 GATEWAY=${1#--gateway=}
137 echo "Unknown option
: $1" >&2
144 cat <<EOF >${CONFIG_ZONES}/${zone}/ipv4-static_$IP
149 BROADCAST="${BROADCAST}"
153 [ "$?
" = "0" ] && exit ${EXIT_OK} || exit ${EXIT_ERROR}
164 echo "Usage
: ${0} {config|pre-up|post-up|pre-down|post-down|status
} [interface
]"
169 # End $NETWORK_DEVICES/services/ipv4-static