thanks for the suggestions... some of the questions (about sleeps, and what I presume is the postinst step) I don't immediately have answers to as I sourced the original patch from another developer, and, well it works... but I will figure them out and resubmit a patch.
On Fri, Nov 8, 2013 at 3:50 PM, Jo-Philipp Wich <j...@openwrt.org> wrote: > Hi. > > Comments inline. > > > 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 <phollan...@gmail.com> > > --- > > 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 > > That section should be remeoved, manual autoreconf invocations will lead > to problems on various build environments. Instead use > PKG_FIXUP:=autoreconf . > > > + > > +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 > > Instead of overriding the entire Build/Compile rule it is better to extend > MAKE_VARS for the additional vars needed. > > > + > > +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 > > This should not be done. > > > + > > +$(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 > > Why are these sleeps needed? > > > +} > > + > > +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 > > Same here, whats the need for sleeping? > > > +} > > > Also instead of invoking s-s-d manually you should use service wrappers > ( > https://dev.openwrt.org/browser/trunk/package/base-files/files/lib/functions/service.sh > ) > > That file is sourced automatically from rc.common so the procedures are > ready to use in init scripts. > > > Regards, > Jow > > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > >
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel