diff --git a/patches/lede/0033-vxlan-add-new-package-for-netifd-VXLAN-proto.patch b/patches/lede/0033-vxlan-add-new-package-for-netifd-VXLAN-proto.patch new file mode 100644 index 00000000..446e6af1 --- /dev/null +++ b/patches/lede/0033-vxlan-add-new-package-for-netifd-VXLAN-proto.patch @@ -0,0 +1,198 @@ +From: Matthias Schiffer +Date: Fri, 10 Mar 2017 01:23:50 +0100 +Subject: vxlan: add new package for netifd VXLAN proto + +Signed-off-by: Matthias Schiffer + +diff --git a/package/network/config/vxlan/Makefile b/package/network/config/vxlan/Makefile +new file mode 100644 +index 0000000000000000000000000000000000000000..a471d4e90cbe30c1d1dd01dbf7553995d8c0485e +--- /dev/null ++++ b/package/network/config/vxlan/Makefile +@@ -0,0 +1,32 @@ ++include $(TOPDIR)/rules.mk ++ ++PKG_NAME:=vxlan ++PKG_VERSION:=1 ++PKG_LICENSE:=GPL-2.0 ++ ++include $(INCLUDE_DIR)/package.mk ++ ++define Package/vxlan ++ SECTION:=net ++ CATEGORY:=Network ++ MAINTAINER:=Matthias Schiffer ++ TITLE:=Virtual eXtensible LAN config support ++ DEPENDS:=+kmod-vxlan ++endef ++ ++define Package/vxlan/description ++ Virtual eXtensible LAN config support in /etc/config/network. ++endef ++ ++define Build/Compile ++endef ++ ++define Build/Configure ++endef ++ ++define Package/vxlan/install ++ $(INSTALL_DIR) $(1)/lib/netifd/proto ++ $(INSTALL_BIN) ./files/vxlan.sh $(1)/lib/netifd/proto/vxlan.sh ++endef ++ ++$(eval $(call BuildPackage,vxlan)) +diff --git a/package/network/config/vxlan/files/vxlan.sh b/package/network/config/vxlan/files/vxlan.sh +new file mode 100755 +index 0000000000000000000000000000000000000000..27ccd8f12759f69c7c226cac0c923335b8ccc6a8 +--- /dev/null ++++ b/package/network/config/vxlan/files/vxlan.sh +@@ -0,0 +1,148 @@ ++#!/bin/sh ++ ++[ -n "$INCLUDE_ONLY" ] || { ++ . /lib/functions.sh ++ . /lib/functions/network.sh ++ . ../netifd-proto.sh ++ init_proto "$@" ++} ++ ++vxlan_generic_setup() { ++ local cfg="$1" ++ local mode="$2" ++ local local="$3" ++ local remote="$4" ++ ++ local link="$cfg" ++ ++ local port vid ttl tos mtu macaddr zone ++ json_get_vars port vid ttl tos mtu macaddr zone ++ ++ ++ proto_init_update "$link" 1 ++ ++ proto_add_tunnel ++ json_add_string mode "$mode" ++ ++ [ -n "$tunlink" ] && json_add_string link "$tunlink" ++ [ -n "$local" ] && json_add_string local "$local" ++ [ -n "$remote" ] && json_add_string remote "$remote" ++ ++ [ -n "$ttl" ] && json_add_int ttl "$ttl" ++ [ -n "$tos" ] && json_add_string tos "$tos" ++ [ -n "$mtu" ] && json_add_int mtu "$mtu" ++ ++ json_add_object 'data' ++ [ -n "$port" ] && json_add_int port "$port" ++ [ -n "$vid" ] && json_add_int id "$vid" ++ [ -n "$macaddr" ] && json_add_string macaddr "$macaddr" ++ json_close_object ++ ++ proto_close_tunnel ++ ++ proto_add_data ++ [ -n "$zone" ] && json_add_string zone "$zone" ++ proto_close_data ++ ++ proto_send_update "$cfg" ++} ++ ++proto_vxlan_setup() { ++ local cfg="$1" ++ ++ 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" ] && { ++ local wanif="$tunlink" ++ if [ -z "$wanif" ] && ! network_find_wan wanif; then ++ proto_notify_error "$cfg" "NO_WAN_LINK" ++ exit ++ fi ++ ++ if ! network_get_ipaddr ipaddr "$wanif"; then ++ proto_notify_error "$cfg" "NO_WAN_LINK" ++ exit ++ fi ++ } ++ ++ vxlan_generic_setup "$cfg" 'vxlan' "$ipaddr" "$peeraddr" ++} ++ ++proto_vxlan6_setup() { ++ local cfg="$1" ++ ++ 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" ] && { ++ local wanif="$tunlink" ++ if [ -z "$wanif" ] && ! network_find_wan6 wanif; then ++ proto_notify_error "$cfg" "NO_WAN_LINK" ++ exit ++ fi ++ ++ if ! network_get_ipaddr6 ip6addr "$wanif"; then ++ proto_notify_error "$cfg" "NO_WAN_LINK" ++ exit ++ fi ++ } ++ ++ vxlan_generic_setup "$cfg" 'vxlan6' "$ip6addr" "$peer6addr" ++} ++ ++proto_vxlan_teardown() { ++ local cfg="$1" ++} ++ ++proto_vxlan6_teardown() { ++ local cfg="$1" ++} ++ ++vxlan_generic_init_config() { ++ no_device=1 ++ available=1 ++ ++ proto_config_add_string "tunlink" ++ proto_config_add_string "zone" ++ ++ proto_config_add_int "vid" ++ proto_config_add_int "port" ++ proto_config_add_int "ttl" ++ proto_config_add_int "tos" ++ proto_config_add_int "mtu" ++ proto_config_add_string "macaddr" ++} ++ ++proto_vxlan_init_config() { ++ vxlan_generic_init_config ++ proto_config_add_string "ipaddr" ++ proto_config_add_string "peeraddr" ++} ++ ++proto_vxlan6_init_config() { ++ vxlan_generic_init_config ++ proto_config_add_string "ip6addr" ++ proto_config_add_string "peer6addr" ++} ++ ++[ -n "$INCLUDE_ONLY" ] || { ++ add_protocol vxlan ++ add_protocol vxlan6 ++}