First commit
diff --git a/util/openflow-patches/README b/util/openflow-patches/README
new file mode 100644
index 0000000..36f19ad
--- /dev/null
+++ b/util/openflow-patches/README
@@ -0,0 +1,5 @@
+Patches for OpenFlow Reference Implementation
+
+controller.patch: patch controller to support up to 4096 switches (up from 16!)
+
+datapath.patch: patch to kernel datapath to compile with CONFIG_NET_NS=y
diff --git a/util/openflow-patches/controller.patch b/util/openflow-patches/controller.patch
new file mode 100644
index 0000000..c392fae
--- /dev/null
+++ b/util/openflow-patches/controller.patch
@@ -0,0 +1,15 @@
+diff --git a/controller/controller.c b/controller/controller.c
+index 41f2547..6eec590 100644
+--- a/controller/controller.c
++++ b/controller/controller.c
+@@ -58,8 +58,8 @@
+ #include "vlog.h"
+ #define THIS_MODULE VLM_controller
+ 
+-#define MAX_SWITCHES 16
+-#define MAX_LISTENERS 16
++#define MAX_SWITCHES 4096
++#define MAX_LISTENERS 4096
+ 
+ struct switch_ {
+     struct lswitch *lswitch;
diff --git a/util/openflow-patches/datapath.patch b/util/openflow-patches/datapath.patch
new file mode 100644
index 0000000..13c9df7
--- /dev/null
+++ b/util/openflow-patches/datapath.patch
@@ -0,0 +1,26 @@
+diff --git a/datapath/datapath.c b/datapath/datapath.c
+index 4a4d3a2..365aa25 100644
+--- a/datapath/datapath.c
++++ b/datapath/datapath.c
+@@ -47,6 +47,9 @@
+ 
+ #include "compat.h"
+ 
++#ifdef CONFIG_NET_NS
++#include <net/net_namespace.h>
++#endif
+ 
+ /* Strings to describe the manufacturer, hardware, and software.  This data
+  * is queriable through the switch description stats message. */
+@@ -259,6 +262,10 @@ send_openflow_skb(const struct datapath *dp,
+                  struct sk_buff *skb, const struct sender *sender)
+ {
+        return (sender
+-               ? genlmsg_unicast(skb, sender->pid)
++#ifdef CONFIG_NET_NS
++               ? genlmsg_unicast(&init_net, skb, sender->pid)
++#else
++               ? genlmsg_unicast(skb, sender->pid)
++#endif
+                : genlmsg_multicast(skb, 0, dp_mc_group(dp), GFP_ATOMIC));
+ }