40 lines
1.0 KiB
Bash
40 lines
1.0 KiB
Bash
format_ip6_from_mac() {
|
|
local template=$1
|
|
IFS=':'; set $2; unset IFS
|
|
printf "$template" 0x${3} 0x${4} 0x${5} 0x${6}
|
|
}
|
|
|
|
add_ip6() {
|
|
local interface=$1
|
|
local ip=$2
|
|
local prefixlen=$3
|
|
if has ip; then
|
|
_add_ip_linux "$ip" "$prefixlen" "$interface"
|
|
elif has ifconfig; then
|
|
ifconfig "$interface" inet6 "$ip" prefixlen "$prefixlen" delete || true
|
|
ifconfig "$interface" inet6 "$ip" prefixlen "$prefixlen" add
|
|
else
|
|
die "no suitable program found to configure the network interface, need iproute2 or ifconfig"
|
|
fi
|
|
}
|
|
|
|
add_ip4() {
|
|
local interface=$1
|
|
local ip=$2
|
|
local netmask=$3
|
|
if has ip; then
|
|
local cidr="$(mask2cidr $netmask)"
|
|
_add_ip_linux "$ip" "$cidr" "$interface"
|
|
elif has ifconfig; then
|
|
ifconfig "$interface" "$ip" netmask "$netmask" delete || true
|
|
ifconfig "$interface" "$ip" netmask "$netmask" add
|
|
else
|
|
die "no suitable program found to set ip address, need iproute2 or ifconfig"
|
|
fi
|
|
}
|
|
|
|
_add_ip_linux() {
|
|
ip addr del "$1/$2" dev "$3" || true
|
|
ip addr add "$1/$2" dev "$3"
|
|
}
|