From 496d31e7d455ba03a1541b9533fca12d48fc686f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 24 Sep 2018 00:28:40 +0200 Subject: [PATCH] port: ip-tunnel: Allow to set MAC address Signed-off-by: Michael Tremer --- src/hooks/ports/ip-tunnel | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/hooks/ports/ip-tunnel b/src/hooks/ports/ip-tunnel index 73e803e2..3943e4cd 100644 --- a/src/hooks/ports/ip-tunnel +++ b/src/hooks/ports/ip-tunnel @@ -29,6 +29,9 @@ hook_check_settings() { assert isset MODE assert isoneof MODE ${SUPPORTED_IP_TUNNEL_MODES} + assert isset ADDRESS + assert mac_is_valid "${ADDRESS}" + # Generate a random mark if ! isset MARK; then MARK="$(( ${RANDOM} & 0xffffffff ))" @@ -38,6 +41,15 @@ hook_check_settings() { hook_parse_cmdline() { while [ $# -gt 0 ]; do case "${1}" in + --address=*) + ADDRESS="$(cli_get_val "${1}")" + + if ! isset ADDRESS || ! mac_is_valid "${ADDRESS}"; then + error "Invalid MAC address: ${ADDRESS}" + return ${EXIT_ERROR} + fi + ;; + --local-address=*) LOCAL_ADDRESS="$(cli_get_val "${1}")" ;; @@ -64,6 +76,11 @@ hook_parse_cmdline() { shift done + # Generate a random MAC address if none is set + if ! isset ADDRESS; then + ADDRESS="$(mac_generate)" + fi + # If PEER is set, it must be a valid IP address if isset PEER && ! ip_is_valid "${PEER}"; then error "Peer ${PEER} is not a valid IP address" -- 2.47.2