X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fconfig%2Fvxlan%2Ffiles%2Fvxlan.sh;h=d063c47d47d0f4e339b21e97f4e25f55a33c0497;hp=d055d41edc59f50c0c132849bbcd0235edeef5b9;hb=65e9de3c333bae1ccef1dfb0cc008ad6f13958e4;hpb=95ab18e0124e8b409e4fc9d24cbf1729cd7c6f05 diff --git a/package/network/config/vxlan/files/vxlan.sh b/package/network/config/vxlan/files/vxlan.sh index d055d41edc..d063c47d47 100755 --- a/package/network/config/vxlan/files/vxlan.sh +++ b/package/network/config/vxlan/files/vxlan.sh @@ -7,6 +7,50 @@ init_proto "$@" } +proto_vxlan_setup_peer() { + type bridge &> /dev/null || { + proto_notify_error "$cfg" "MISSING_BRIDGE_COMMAND" + exit + } + + local peer_config="$1" + + local vxlan + local lladdr + local dst + local src_vni + local vni + local port + local via + + config_get vxlan "${peer_config}" "vxlan" + config_get lladdr "${peer_config}" "lladdr" + config_get dst "${peer_config}" "dst" + config_get src_vni "${peer_config}" "src_vni" + config_get vni "${peer_config}" "vni" + config_get port "${peer_config}" "port" + config_get via "${peer_config}" "via" + + [ "$cfg" = "$vxlan" ] || { + # This peer section belongs to another device + return + } + + [ -n "${dst}" ] || { + proto_notify_error "$cfg" "MISSING_PEER_ADDRESS" + exit + } + + bridge fdb append \ + ${lladdr:-00:00:00:00:00:00} \ + dev ${cfg} \ + dst ${dst} \ + ${src_vni:+src_vni $src_vni} \ + ${vni:+vni $vni} \ + ${port:+port $port} \ + ${via:+via $via} +} + vxlan_generic_setup() { local cfg="$1" local mode="$2" @@ -18,7 +62,6 @@ vxlan_generic_setup() { local port vid ttl tos mtu macaddr zone rxcsum txcsum json_get_vars port vid ttl tos mtu macaddr zone rxcsum txcsum - proto_init_update "$link" 1 proto_add_tunnel @@ -47,6 +90,9 @@ vxlan_generic_setup() { proto_close_data proto_send_update "$cfg" + + config_load network + config_foreach proto_vxlan_setup_peer "vxlan_peer" } proto_vxlan_setup() { @@ -55,12 +101,6 @@ proto_vxlan_setup() { local ipaddr peeraddr json_get_vars ipaddr peeraddr tunlink - [ -z "$peeraddr" ] && { - proto_notify_error "$cfg" "MISSING_ADDRESS" - proto_block_restart "$cfg" - exit - } - ( proto_add_host_dependency "$cfg" '' "$tunlink" ) [ -z "$ipaddr" ] && { @@ -85,12 +125,6 @@ proto_vxlan6_setup() { local ip6addr peer6addr json_get_vars ip6addr peer6addr tunlink - [ -z "$peer6addr" ] && { - proto_notify_error "$cfg" "MISSING_ADDRESS" - proto_block_restart "$cfg" - exit - } - ( proto_add_host_dependency "$cfg" '' "$tunlink" ) [ -z "$ip6addr" ] && { @@ -129,6 +163,8 @@ vxlan_generic_init_config() { proto_config_add_int "ttl" proto_config_add_int "tos" proto_config_add_int "mtu" + proto_config_add_boolean "rxcsum" + proto_config_add_boolean "txcsum" proto_config_add_string "macaddr" }