[ovs-dev] configure --disable-brcompat?

Chris Wright chrisw at sous-sol.org
Fri Mar 2 07:09:07 UTC 2012


I'm pondering adding a way to disable brcompat.  This would keep from
building it and strip it from config templates, init scripts, ovs-ctl,
etc...  Here's a quick hack to give an idea.

Any thoughts whether this is worth pursuing, and if so ideas on best way
to do it?

thanks,
-chris

diff --git a/Makefile.am b/Makefile.am
index dc4a609..6d05df6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -90,6 +90,12 @@ noinst_HEADERS += $(EXTRA_DIST)
 ro_c = echo '/* -*- mode: c; buffer-read-only: t -*- */'
 ro_shell = printf '\043 Generated automatically -- do not modify!    -*- buffer-read-only: t -*-\n'
 
+if BUILD_BRCOMPAT
+   brcompat_sed = -e 's,[@]BUILD_BRCOMPAT[@],,g'
+else
+   brcompat_sed = -e '/[@]BUILD_BRCOMPAT[@]/d'
+endif
+
 SUFFIXES += .in
 .in:
 	$(PERL) $(srcdir)/build-aux/soexpand.pl -I$(srcdir) < $< | \
@@ -102,6 +108,7 @@ SUFFIXES += .in
                 -e 's,[@]VERSION[@],$(VERSION),g' \
                 -e 's,[@]BUILDNR[@],$(BUILDNR),g' \
                 -e 's,[@]OVSKMOD[@],$(OVSKMOD),g' \
+		$(brcompat_sed) \
                 -e 's,[@]localstatedir[@],$(localstatedir),g' \
                 -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
                 -e 's,[@]sysconfdir[@],$(sysconfdir),g' \
diff --git a/configure.ac b/configure.ac
index 7e4fdb7..cd6e01d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -68,6 +68,7 @@ OVS_CHECK_SOCKET_LIBS
 OVS_CHECK_LINKER_SECTIONS
 OVS_CHECK_XENSERVER_VERSION
 OVS_CHECK_GROFF
+OVS_CHECK_BRCOMPAT
 
 OVS_ENABLE_OPTION([-Wall])
 OVS_ENABLE_OPTION([-Wno-sign-compare])
diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
index 9b2a5ba..ee972fb 100644
--- a/m4/openvswitch.m4
+++ b/m4/openvswitch.m4
@@ -354,3 +354,18 @@ AC_DEFUN([OVS_CHECK_GROFF],
        ovs_cv_groff=no
      fi])
    AM_CONDITIONAL([HAVE_GROFF], [test "$ovs_cv_groff" = yes])])
+
+dnl Checks for --disable-brcompat and undefines BUILD_BRCOMPAT if it is specified.
+AC_DEFUN([OVS_CHECK_BRCOMPAT],
+  [AC_ARG_ENABLE(
+     [brcompat],
+     [AC_HELP_STRING([--disable-brcompat], 
+                     [Disable building brcompat])],
+     [case "${enableval}" in
+        (yes) brcompat=true ;;
+        (no)  brcompat=false ;;
+        (*) AC_MSG_ERROR([bad value ${enableval} for --enable-brcompat]) ;;
+      esac],
+     [brcompat=true])
+   AM_CONDITIONAL([BUILD_BRCOMPAT], [test x$brcompat = xtrue])])
+
diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
index 07b9f32..d14764c 100755
--- a/utilities/ovs-ctl.in
+++ b/utilities/ovs-ctl.in
@@ -37,34 +37,34 @@ insert_openvswitch_mod_if_required () {
     # Load @OVSKMOD at .  If that's successful then we're done.
     action "Inserting openvswitch module" modprobe @OVSKMOD@ && return 0
 
-    # If the bridge module is loaded, then that might be blocking
-    # @OVSKMOD at .  Try to unload it, if there are no bridges.
-    test -e /sys/module/bridge || return 1
-    bridges=`echo /sys/class/net/*/bridge | sed 's,/sys/class/net/,,g;s,/bridge,,g'`
-    if test "$bridges" != "*"; then
-        log_warning_msg "not removing bridge module because bridges exist ($bridges)"
-        return 1
-    fi
-    action "removing bridge module" rmmod bridge || return 1
-
-    # Try loading @OVSKMOD@ again.
-    action "Inserting openvswitch module" modprobe @OVSKMOD@
+ at BUILD_BRCOMPAT@    # If the bridge module is loaded, then that might be blocking
+ at BUILD_BRCOMPAT@    # @OVSKMOD at .  Try to unload it, if there are no bridges.
+ at BUILD_BRCOMPAT@    test -e /sys/module/bridge || return 1
+ at BUILD_BRCOMPAT@    bridges=`echo /sys/class/net/*/bridge | sed 's,/sys/class/net/,,g;s,/bridge,,g'`
+ at BUILD_BRCOMPAT@    if test "$bridges" != "*"; then
+ at BUILD_BRCOMPAT@        log_warning_msg "not removing bridge module because bridges exist ($bridges)"
+ at BUILD_BRCOMPAT@        return 1
+ at BUILD_BRCOMPAT@    fi
+ at BUILD_BRCOMPAT@    action "removing bridge module" rmmod bridge || return 1
+ at BUILD_BRCOMPAT@
+ at BUILD_BRCOMPAT@    # Try loading @OVSKMOD@ again.
+ at BUILD_BRCOMPAT@    action "Inserting openvswitch module" modprobe @OVSKMOD@
 }
 
-insert_brcompat_mod_if_required () {
-    if test -e /sys/module/bridge; then
-        log_warning_msg "bridge module is loaded, not loading brcompat_mod"
-        return 1
-    fi
-    test -e /sys/module/brcompat_mod && return 0
-    action "Inserting brcompat module" modprobe brcompat_mod
-}
+ at BUILD_BRCOMPAT@insert_brcompat_mod_if_required () {
+ at BUILD_BRCOMPAT@    if test -e /sys/module/bridge; then
+ at BUILD_BRCOMPAT@        log_warning_msg "bridge module is loaded, not loading brcompat_mod"
+ at BUILD_BRCOMPAT@        return 1
+ at BUILD_BRCOMPAT@    fi
+ at BUILD_BRCOMPAT@    test -e /sys/module/brcompat_mod && return 0
+ at BUILD_BRCOMPAT@    action "Inserting brcompat module" modprobe brcompat_mod
+ at BUILD_BRCOMPAT@}
 
 insert_mod_if_required () {
     insert_openvswitch_mod_if_required || return 1
-    if test X"$BRCOMPAT" = Xyes; then
-        insert_brcompat_mod_if_required || return 1
-    fi
+ at BUILD_BRCOMPAT@    if test X"$BRCOMPAT" = Xyes; then
+ at BUILD_BRCOMPAT@        insert_brcompat_mod_if_required || return 1
+ at BUILD_BRCOMPAT@    fi
 }
 
 ovs_vsctl () {
@@ -217,13 +217,13 @@ start () {
 	start_daemon "$OVS_VSWITCHD_PRIORITY" "$@"
     fi
 
-    if daemon_is_running ovs-brcompatd; then
-	log_success_msg "ovs-brcompatd is already running"
-    elif test X"$BRCOMPAT" = Xyes; then
-        set ovs-brcompatd
-	set "$@" -vANY:CONSOLE:EMER -vANY:SYSLOG:ERR -vANY:FILE:INFO
-	start_daemon "$OVS_BRCOMPATD_PRIORITY" "$@"
-    fi
+ at BUILD_BRCOMPAT@    if daemon_is_running ovs-brcompatd; then
+ at BUILD_BRCOMPAT@	log_success_msg "ovs-brcompatd is already running"
+ at BUILD_BRCOMPAT@    elif test X"$BRCOMPAT" = Xyes; then
+ at BUILD_BRCOMPAT@        set ovs-brcompatd
+ at BUILD_BRCOMPAT@	set "$@" -vANY:CONSOLE:EMER -vANY:SYSLOG:ERR -vANY:FILE:INFO
+ at BUILD_BRCOMPAT@	start_daemon "$OVS_BRCOMPATD_PRIORITY" "$@"
+ at BUILD_BRCOMPAT@    fi
 }
 
 ## ---- ##
@@ -231,7 +231,7 @@ start () {
 ## ---- ##
 
 stop () {
-    stop_daemon ovs-brcompatd
+ at BUILD_BRCOMPAT@    stop_daemon ovs-brcompatd
     stop_daemon ovs-vswitchd
     stop_daemon ovsdb-server
 }
@@ -286,9 +286,9 @@ force_reload_kmod () {
         action "Removing datapath: $dp" ovs-dpctl del-dp "$dp"
     done
 
-    if test -e /sys/module/brcompat_mod; then
-        action "Removing brcompat module" rmmod brcompat_mod
-    fi
+ at BUILD_BRCOMPAT@    if test -e /sys/module/brcompat_mod; then
+ at BUILD_BRCOMPAT@        action "Removing brcompat module" rmmod brcompat_mod
+ at BUILD_BRCOMPAT@    fi
     if test -e /sys/module/@OVSKMOD@; then
         action "Removing openvswitch module" rmmod @OVSKMOD@
     fi
@@ -361,14 +361,14 @@ set_defaults () {
     SYSTEM_ID=
 
     DELETE_BRIDGES=no
-    BRCOMPAT=no
+ at BUILD_BRCOMPAT@    BRCOMPAT=no
 
     DAEMON_CWD=/
     FORCE_COREFILES=yes
     MLOCKALL=yes
     OVSDB_SERVER_PRIORITY=-10
     OVS_VSWITCHD_PRIORITY=-10
-    OVS_BRCOMPATD_PRIORITY=-10
+ at BUILD_BRCOMPAT@    OVS_BRCOMPATD_PRIORITY=-10
 
     DB_FILE=$etcdir/conf.db
     DB_SOCK=$rundir/db.sock
@@ -432,10 +432,10 @@ Less important options for "start" and "force-reload-kmod":
   --no-mlockall                  do not lock all of ovs-vswitchd into memory
   --ovsdb-server-priority=NICE   set ovsdb-server's niceness (default: $OVSDB_SERVER_PRIORITY)
   --ovs-vswitchd-priority=NICE   set ovs-vswitchd's niceness (default: $OVS_VSWITCHD_PRIORITY)
-  --ovs-brcompatd-priority=NICE  set ovs-brcompatd's niceness (default: $OVS_BRCOMPATD_PRIORITY)
+ at BUILD_BRCOMPAT@  --ovs-brcompatd-priority=NICE  set ovs-brcompatd's niceness (default: $OVS_BRCOMPATD_PRIORITY)
 
 Options for "start", "force-reload-kmod", "load-kmod", "status", and "version":
-  --brcompat         enable Linux bridge compatibility module and daemon
+ at BUILD_BRCOMPAT@  --brcompat         enable Linux bridge compatibility module and daemon
 
 File location options:
   --db-file=FILE     database file name (default: $DB_FILE)
@@ -480,9 +480,9 @@ set_option () {
 
 daemons () {
     echo ovsdb-server ovs-vswitchd
-    if test X"$BRCOMPAT" = Xyes; then
-        echo ovs-brcompatd
-    fi
+ at BUILD_BRCOMPAT@    if test X"$BRCOMPAT" = Xyes; then
+ at BUILD_BRCOMPAT@        echo ovs-brcompatd
+ at BUILD_BRCOMPAT@    fi
 }
 
 set_defaults
diff --git a/vswitchd/automake.mk b/vswitchd/automake.mk
index 8319c93..a8aadd2 100644
--- a/vswitchd/automake.mk
+++ b/vswitchd/automake.mk
@@ -1,10 +1,13 @@
 sbin_PROGRAMS += vswitchd/ovs-vswitchd
+if BUILD_BRCOMPAT
+  ovs_brcompatd_8 = vswitchd/ovs-brcompatd.8
+endif
 man_MANS += \
 	vswitchd/ovs-vswitchd.8 \
-	vswitchd/ovs-brcompatd.8
+	$(ovs_brcompatd_8)
 DISTCLEANFILES += \
 	vswitchd/ovs-vswitchd.8 \
-	vswitchd/ovs-brcompatd.8
+	$(ovs_brcompatd_8)
 
 vswitchd_ovs_vswitchd_SOURCES = \
 	vswitchd/bridge.c \
@@ -24,6 +27,7 @@ vswitchd_ovs_vswitchd_LDADD = \
 EXTRA_DIST += vswitchd/INTERNALS
 MAN_ROOTS += vswitchd/ovs-vswitchd.8.in
 
+if BUILD_BRCOMPAT
 if HAVE_NETLINK
 sbin_PROGRAMS += vswitchd/ovs-brcompatd
 vswitchd_ovs_brcompatd_SOURCES = \
@@ -33,6 +37,7 @@ vswitchd_ovs_brcompatd_SOURCES = \
 vswitchd_ovs_brcompatd_LDADD = lib/libopenvswitch.a $(SSL_LIBS)
 endif
 MAN_ROOTS += vswitchd/ovs-brcompatd.8.in
+endif
 
 # vswitch schema and IDL
 OVSIDL_BUILT += \



More information about the dev mailing list