This is a patch for the most recent stable build of OpenvSwitch (2.0.0). It supports kernels 2.6.32 - 3.10.x
It was taken and updated from Julius Shulz-Zander's work: https://github.com/schuza/openvswitch Signed-off-by: Peter Holland <[email protected]> --- diff --git a/net/openvswitch/Makefile b/net/openvswitch/Makefile new file mode 100644 --- /dev/null +++ b/net/openvswitch/Makefile @@ -0,0 +1,178 @@ +# +# Copyright (C) 2013 Julius Schulz-Zander +# Copyright (C) 2013 Peter Holland +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id: Makefile $ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=openvswitch + +PKG_RELEASE:=1 +PKG_VERSION:=2.0.0 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://openvswitch.org/releases/ +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_FIXUP=libtool + +define Package/openvswitch/Default + SECTION:=net + SUBMENU:=OpenvSwitch + CATEGORY:=Network + URL:=http://www.openvswitchswitch.org/ + DEPENDS:=+libopenssl +librt +libpcap +endef + +define Package/openvswitch/Default/description + Open vSwitch is a production quality, multilayer, software-based, Ethernet + virtual switch. It is designed to enable massive network automation through + programmatic extension, while still supporting standard management interfaces + and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In + addition, it is designed to support distribution across multiple physical + servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus + 1000V. +endef + +define Package/openvswitch-common + $(call Package/openvswitch/Default) + TITLE:=Open Flow Switch Userspace Package + DEPENDS:=+libpcap +libopenssl +librt +kmod-openvswitch +endef + +define Package/openvswitch-common/description + openvswitch-common provides components required by both openvswitch-switch and + openvswitch-controller. +endef + +define Package/openvswitch-ipsec + $(call Package/openvswitch/Default) + TITLE:=Open Flow Switch Userspace Package + DEPENDS:=+openvswitch-common +endef + +define Package/openvswitch-ipsec/description + The ovs-monitor-ipsec script provides support for encrypting GRE tunnels with + IPsec. +endef + +define Package/openvswitch-controller + $(call Package/openvswitch/Default) + TITLE:=Open Flow Switch Userspace Package + DEPENDS:=+openvswitch-common +endef + +define Package/openvswitch-controller/description + The Open vSwitch controller enables OpenFlow switches that connect to it to + act as MAC-learning Ethernet switches. +endef + +define Package/openvswitch-switch + $(call Package/openvswitch/Default) + TITLE:=Open Flow Switch Userspace Package + DEPENDS:=+openvswitch-common +endef + +define Package/openvswitch-switch/description + openvswitch-switch provides the userspace components and utilities for the + Open vSwitch kernel-based switch. +endef + +define KernelPackage/openvswitch + SECTION:=kernel + CATEGORY:=Kernel modules + SUBMENU:=Network Support + TITLE:=Open Flow Data Path Drivers + KCONFIG:=CONFIG_BRIDGE + DEPENDS:=+kmod-stp +kmod-ipv6 +kmod-gre +kmod-lib-crc32c + FILES:= \ + $(PKG_BUILD_DIR)/datapath/linux/openvswitch.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,40,openvswitch) +endef + +define KernelPackage/openvswitch/description + This package contains the Open vSwitch kernel moodule and bridge compat + module. Furthermore, it supports OpenFlow. +endef + +CONFIGURE_ARGS += --with-linux=$(LINUX_DIR) --with-rundir=/var/run + +define Build/Configure + (cd $(PKG_BUILD_DIR); \ + autoreconf -v --install --force || exit 1 \ + ); + $(call Build/Configure/Default,$(CONFIGURE_ARGS)) +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="-I$(PKG_BUILD_DIR)/lib $(TARGET_CFLAGS) -std=gnu99" \ + LDFLAGS="-L$(PKG_BUILD_DIR)/lib $(TARGET_LDFLAGS)" \ + LDFLAGS_MODULES="$(TARGET_LDFLAGS) -L$(PKG_BUILD_DIR)/lib" \ + STAGING_DIR="$(STAGING_DIR)" \ + DESTDIR="$(PKG_INSTALL_DIR)/usr" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH="$(LINUX_KARCH)" \ + PATH="$(TARGET_PATH)" \ + KCC="$(KERNEL_CC)" +endef + +define Package/openvswitch-ipsec/install + $(INSTALL_DIR) $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/debian/ovs-monitor-ipsec $(1)/usr/sbin/ +endef + +define Package/openvswitch-common/install + $(INSTALL_DIR) $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-appctl $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-benchmark $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-ofctl $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-pki $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/ovsdb-client $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/bugtool/ovs-bugtool $(1)/usr/sbin/ +endef + +define Package/openvswitch-controller/install + $(INSTALL_DIR) $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-controller $(1)/usr/bin/ +endef + +define Package/openvswitch-switch/install + $(INSTALL_DIR) $(1)/sbin $(1)/etc/init.d + $(INSTALL_BIN) ./files/etc/init.d/openvswitch.init $(1)/etc/init.d/openvswitch + + $(INSTALL_DIR) $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-dpctl $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-pcap $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-tcpundump $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-vlan-test $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/ovs-vsctl $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/ovsdb-tool $(1)/usr/bin/ + + $(INSTALL_DIR) $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/vswitchd/ovs-vswitchd $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/ovsdb-server $(1)/usr/sbin/ + + $(INSTALL_DIR) $(1)/usr/share/openvswitch/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/vswitchd/vswitch.ovsschema $(1)/usr/share/openvswitch/ +endef + +define Package/openvswitch-switch/postinst +#!/bin/sh +[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/openvswitch enable || true +endef + +$(eval $(call BuildPackage,openvswitch-ipsec)) +$(eval $(call BuildPackage,openvswitch-common)) +$(eval $(call BuildPackage,openvswitch-controller)) +$(eval $(call BuildPackage,openvswitch-switch)) +$(eval $(call KernelPackage,openvswitch)) diff --git a/net/openvswitch/files/etc/init.d/openvswitch.init b/net/openvswitch/files/etc/init.d/openvswitch.init new file mode 100644 --- /dev/null +++ b/net/openvswitch/files/etc/init.d/openvswitch.init @@ -0,0 +1,49 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2013 Julius Schulz-Zander +# Coypright (C) 2013 Peter Holland +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. + +START=15 +# DEBUG="echo" + +start() { + [ -x /etc/openvswitch ] || mkdir -p /etc/openvswitch + [ -x /var/run/openvswitch ] || mkdir -p /var/run/openvswitch + [ -e /etc/openvswitch/conf.db ] || { + $DEBUG /usr/bin/ovsdb-tool create /etc/openvswitch/conf.db \ + /usr/share/openvswitch/vswitch.ovsschema + } + + $DEBUG start-stop-daemon -q -S -x /usr/sbin/ovsdb-server -- \ + --remote=punix:/var/run/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ + --pidfile=/var/run/ovsdb-server.pid --detach + sleep 1 + + $DEBUG ovs-vsctl --no-wait init + sleep 1 + + $DEBUG start-stop-daemon -q -S -x /usr/sbin/ovs-vswitchd -- \ + --pidfile=/var/run/ovs-vswitchd.pid --detach +} + +stop() { + $DEBUG start-stop-daemon -q -K -p /var/run/ovs-vswitchd.pid + $DEBUG start-stop-daemon -q -K -p /var/run/ovsdb-server.pid +} + +restart() { + ifdown -a + stop + sleep 1 + start + ifup -a +}
_______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
