when you say 'this should not be done', can you give a pointer to 'what should be done instead'?
On Fri, Nov 8, 2013 at 3:58 PM, Pete Holland <phollan...@gmail.com> wrote: > 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