From 5c68e7063ac29332a301ede1a625a36c81009c63 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 10 Sep 2020 21:01:35 +0200 Subject: [PATCH] Check if mac address are not duplicated --- mptcp/files/etc/init.d/mptcp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mptcp/files/etc/init.d/mptcp b/mptcp/files/etc/init.d/mptcp index 4294554d2..6c8dcebb5 100755 --- a/mptcp/files/etc/init.d/mptcp +++ b/mptcp/files/etc/init.d/mptcp @@ -39,6 +39,13 @@ global_multipath_settings() { [ -z "$mptcp_ndiffports_num_subflows" ] || sysctl -qw /sys/module/mptcp_ndiffports/parameters/num_subflows="$mptcp_ndiffports_num_subflows" } +interface_macaddr_count() { + local intf="$1" + local dmacaddr="$2" + config_get macaddr "$intf" macaddr + [ "$macaddr" = "$dmacaddr" ] && nbmac=$((nbmac+1)) +} + interface_multipath_settings() { local mode iface proto local config="$1" @@ -88,6 +95,16 @@ interface_multipath_settings() { uci -q set openmptcprouter.${config}="interface" uci -q set openmptcprouter.${config}.multipath="$mode" + config_get macaddr "$config" macaddr "" + [ -n "$maccaddr" ] && { + nbmac=0 + config_foreach interface_macaddr_count interface $macaddr + [ "$nbmac" != "1" ] && { + logger -t "MPTCP" "Duplicate MAC saved, removing" + uci -q delete network.${config}.macaddr + } + } + [ "$enabled" = "0" ] && return 0 [ -n "$intf" ] && [ "$iface" != "$intf" ] && return 0 [ -z "$iface" ] && return 0