65 lines
1.7 KiB
Bash
Executable File
65 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
# dhcpcd client hook to write /run/net*.conf files compatible to ipconfig from klibc-utils
|
|
|
|
# Ensure that the search domain ends with dots
|
|
domain_search_with_trailing_dots() {
|
|
local domain_search=""
|
|
for domain in $1; do
|
|
domain_search="${domain_search}${domain_search:+ }${domain%.}."
|
|
done
|
|
echo "$domain_search"
|
|
}
|
|
|
|
write_dhcp_netinfo() {
|
|
local domain_search netinfo_path="$1"
|
|
|
|
domain_search=$(domain_search_with_trailing_dots "${new_domain_search-}")
|
|
cat >"$netinfo_path" << EOF
|
|
DEVICE='${interface-}'
|
|
PROTO='${protocol-}'
|
|
IPV4ADDR='${new_ip_address-}'
|
|
IPV4BROADCAST='${new_broadcast_address-}'
|
|
IPV4NETMASK='${new_subnet_mask-}'
|
|
IPV4GATEWAY='${new_routers-}'
|
|
IPV4DNS0='${new_domain_name_servers-}'
|
|
HOSTNAME='${new_host_name-}'
|
|
DNSDOMAIN='${new_domain_name-}'
|
|
ROOTSERVER='${new_routers-}'
|
|
filename='${new_filename-}'
|
|
DHCPLEASETIME='${new_dhcp_lease_time-}'
|
|
DOMAINSEARCH='${domain_search}'
|
|
EOF
|
|
}
|
|
|
|
write_dhcp6_netinfo() {
|
|
local domain_search netinfo_path="$1"
|
|
|
|
domain_search=$(domain_search_with_trailing_dots "${new_dhcp6_domain_search-}")
|
|
cat >"$netinfo_path" << EOF
|
|
DEVICE6='${interface-}'
|
|
IPV6PROTO='${protocol-}'
|
|
IPV6ADDR='${new_dhcp6_ia_na1_ia_addr1-}'
|
|
IPV6NETMASK='128'
|
|
IPV6DNS0='${new_dhcp6_name_servers-}'
|
|
IPV6DOMAINSEARCH='${domain_search}'
|
|
EOF
|
|
}
|
|
|
|
if ${if_configured?}; then
|
|
if ${if_up?}; then
|
|
if [ "${protocol?}" = dhcp ]; then
|
|
write_dhcp_netinfo "/run/net-${interface?}.conf"
|
|
elif [ "${protocol}" = dhcp6 ]; then
|
|
write_dhcp6_netinfo "/run/net6-${interface?}.conf"
|
|
fi
|
|
elif ${if_down?}; then
|
|
if [ "${protocol?}" = dhcp ]; then
|
|
rm -f "/run/net-${interface?}.conf"
|
|
elif [ "${protocol}" = dhcp6 ]; then
|
|
rm -f "/run/net6-${interface?}.conf"
|
|
fi
|
|
fi
|
|
fi
|