blob: 74f36b000343733c3fcc35d2a5bfea9e6e9e1ef6 [file] [log] [blame]
#!/bin/sh
. /etc/utils.sh
log()
{
echo "$@" >&2
}
usage()
{
log "Usage: $0 <dev> [ip1/mask1] [ip2/mask2] ..."
log " dev = the interface, like eth0 or wlan1"
log " ip# = w.x.y.z"
log " mask# = CIDR mask length, like '24'"
exit 1
}
ip_to_json()
{
local ip mask part_ip part_mask
# Split ip/mask into ip and mask.
IFS='/' read part_ip part_mask <<EOF
$1
EOF
if [ -z "$part_ip" -o -z "$part_mask" ]; then
exit 1
fi
json="{ "
if [ -n "$part_ip" ]; then
json="$json \"new_ip_address\": \"$part_ip\""
json="$json, \"new_subnet_mask\": \"$part_mask\""
fi
json="$json }"
echo "$json"
}
if [ $# -lt 1 ]; then
usage
fi
dev="$1"; shift
ips_json=
while [ $# -ge 1 ]; do
if [ -n "$ips_json" ]; then
ips_json="$ips_json,"
fi
ips=$(ip_to_json "$1")
if [ $? -ne 0 ]; then
usage
fi
ips_json="$ips_json $ips"
shift
done
if [ -n "$ips_json" ]; then
atomic /config/ip/static/$dev "$(
echo "{ \"${dev}\": {"
echo " \"ip\": [ $ips_json ]"
echo "} }"
)"
else
rm -f "/config/ip/static/$dev"
fi
ipapply "$dev"