require IP4 and IP6 on dual stack clone

This commit is contained in:
tschettervictor
2025-06-02 21:55:36 -06:00
parent b9d5a56b5a
commit 3baebc674a

View File

@@ -141,19 +141,20 @@ validate_ip() {
set ${TEST_IP}
for quad in 1 2 3 4; do
if eval [ \$$quad -gt 255 ]; then
error_exit "Invalid: (${TEST_IP})"
error_continue "Invalid: (${TEST_IP})"
fi
done
if ifconfig | grep -qwF "${TEST_IP}"; then
warn "\nWarning: IP address already in use (${TEST_IP})."
IP4_ADDR="${_ip}"
else
info "\nValid: (${_ip})."
IP4_ADDR="${_ip}"
fi
else
error_exit "Invalid: (${_ip})."
error_continue "Invalid: (${_ip})."
fi
fi
}
@@ -400,15 +401,12 @@ update_jailconf_vnet() {
sysrc -f "${_rc_conf}" ifconfig_vnet0_ipv6="inet6 -ifdisabled ${IP6_ADDR}"
fi
else
if [ "${IP6_ADDR}" = "SLAAC" ]; then
sysrc -f "${_rc_conf}" ifconfig_${_jail_vnet}_ipv6="inet6 -ifdisabled accept_rtadv"
fi
sysrc -f "${_rc_conf}" ifconfig_${_jail_vnet}_ipv6="inet6 -ifdisabled accept_rtadv"
fi
fi
# Replace epair description
sed -i '' "/${_jail_if}/ s|${_jail_vnet} host interface for Bastille jail ${TARGET}|${_jail_vnet} host interface for Bastille jail ${NEWNAME}|g" "${_jail_conf}"
break
fi
done
@@ -467,9 +465,7 @@ update_jailconf_vnet() {
sysrc -f "${_rc_conf}" ifconfig_vnet0_ipv6="inet6 -ifdisabled ${IP6_ADDR}"
fi
else
if [ "${IP6_ADDR}" = "SLAAC" ]; then
sysrc -f "${_rc_conf}" ifconfig_${_jail_vnet}_ipv6="inet6 -ifdisabled accept_rtadv"
fi
sysrc -f "${_rc_conf}" ifconfig_${_jail_vnet}_ipv6="inet6 -ifdisabled accept_rtadv"
fi
fi
break
@@ -506,6 +502,30 @@ clone_jail() {
usage
fi
# Validate proper IP settings
if [ "$(bastille config ${TARGET} get vnet)" != "not set" ]; then
# VNET
if grep -Eoq "ifconfig_vnet0=" "${bastille_jailsdir}/root/etc/rc.conf"; then
if [ -z "${IP4_ADDR}" ]; then
error_exit "[ERROR]: IPv4 not set. Retry with a proper IPv4 address."
fi
if grep -Eoq "ifconfig_vnet0_ipv6=" "${bastille_jailsdir}/root/etc/rc.conf"; then
if [ -z "${IP6_ADDR}" ]; then
error_exit "[ERROR]: IPv6 not set. Retry with a proper IPv6 address."
fi
fi
else
if [ "$(bastille config ${TARGET} get ip4.addr)" != "not set" ]; then
if [ -z "${IP4_ADDR}" ]; then
error_exit "[ERROR]: IPv4 not set. Retry with a proper IPv4 address."
fi
elif [ "$(bastille config ${TARGET} get ip6.addr)" != "not set" ]; then
if [ -z "${IP6_ADDR}" ]; then
error_exit "[ERROR]: IPv6 not set. Retry with a proper IPv6 address."
fi
fi
fi
if [ -n "${bastille_zfs_zpool}" ]; then
# Replicate the existing container
DATE=$(date +%F-%H%M%S)