[4/5] ip-tunnel: Improve checks
Commit Message
We cannot mix ipv6 and ipv4 and we also need to detect the IP protocol
version to decide which mode we have to use.
This is done in a seperated commit.
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
src/functions/functions.ip-tunnel | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
@@ -98,6 +98,24 @@ ip_tunnel_add() {
return ${EXIT_ERROR}
fi
+ # Detect the IP protocol, which is important to decide which mode we have to use
+ local remote_address_protocol="$(ip_detect_protocol "${remote_address}")"
+
+ # If we could not detect the IP protocol something with
+ # ${remote_address} is wrong
+ if ! isset remote_address_protocol; then
+ log ERROR "Could not determine remote address IP protocol"
+ return ${EXIT_ERROR}
+ fi
+
+ # We cannot mix IPv6 and IPv4
+ if [[ "${remote_address_protocol}" != \
+ "$(ip_detect_protocol "${local_address}")" ]] ; then
+ log ERROR "Local and remote address\
+ are not from the same IP protocol"
+ return ${EXIT_ERROR}
+ fi
+
# ikey and okey must be set for VTI devices
if [ "${mode}" = "vti" ] && (! isset ikey || ! isset okey); then
error "--ikey= and --okey= must be set for VTI device"