+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
+/*
+ * In kernels earlier than 2.6.36, Open vSwitch cannot safely coexist with
+ * the Linux bridge module on any released version of Linux, because there
+ * is only a single bridge hook function and only a single br_port member
+ * in struct net_device.
+ *
+ * Declaring and exporting this symbol enforces mutual exclusion. The bridge
+ * module also exports the same symbol, so the module loader will refuse to
+ * load both modules at the same time (e.g. "bridge: exports duplicate symbol
+ * br_should_route_hook (owned by openvswitch_mod)").
+ *
+ * The use of "typeof" here avoids the need to track changes in the type of
+ * br_should_route_hook over various kernel versions.
+ */
+typeof(br_should_route_hook) br_should_route_hook;
+EXPORT_SYMBOL(br_should_route_hook);
+#endif