add bsn_udf extension
diff --git a/openflow_input/bsn_udf b/openflow_input/bsn_udf
new file mode 100644
index 0000000..f7ce9a6
--- /dev/null
+++ b/openflow_input/bsn_udf
@@ -0,0 +1,124 @@
+// Copyright 2014, Big Switch Networks, Inc.
+//
+// LoxiGen is licensed under the Eclipse Public License,
+// version 1.0 (EPL), with the following special exception:
+//
+// LOXI Exception
+//
+// As a special exception to the terms of the EPL, you may
+// distribute libraries generated by LoxiGen (LoxiGen Libraries)
+// under the terms of your choice, provided that copyright and
+// licensing notices generated by LoxiGen are not altered or removed
+// from the LoxiGen Libraries and the notice provided below is (i)
+// included in the LoxiGen Libraries, if distributed in source code
+// form and (ii) included in any documentation for the LoxiGen
+// Libraries, if distributed in binary form.
+//
+// Notice: "Copyright 2014, Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler."
+//
+// You may not use this file except in compliance with the EPL or
+// LOXI Exception. You may obtain a copy of the EPL at:
+//
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an "AS
+// IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+// express or implied. See the EPL for the specific language
+// governing permissions and limitations under the EPL.
+
+#version 3
+#version 4
+
+/*
+ * User Defined Fields
+ */
+
+struct of_oxm_bsn_udf0 : of_oxm {
+    uint32_t type_len == 0x00031004;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf0_masked : of_oxm {
+    uint32_t type_len == 0x00031108;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf1 : of_oxm {
+    uint32_t type_len == 0x00031204;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf1_masked : of_oxm {
+    uint32_t type_len == 0x00031308;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf2 : of_oxm {
+    uint32_t type_len == 0x00031404;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf2_masked : of_oxm {
+    uint32_t type_len == 0x00031508;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf3 : of_oxm {
+    uint32_t type_len == 0x00031604;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf3_masked : of_oxm {
+    uint32_t type_len == 0x00031708;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf4 : of_oxm {
+    uint32_t type_len == 0x00031804;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf4_masked : of_oxm {
+    uint32_t type_len == 0x00031908;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf5 : of_oxm {
+    uint32_t type_len == 0x00031a04;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf5_masked : of_oxm {
+    uint32_t type_len == 0x00031b08;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf6 : of_oxm {
+    uint32_t type_len == 0x00031c04;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf6_masked : of_oxm {
+    uint32_t type_len == 0x00031d08;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+struct of_oxm_bsn_udf7 : of_oxm {
+    uint32_t type_len == 0x00031e04;
+    uint32_t value;
+};
+
+struct of_oxm_bsn_udf7_masked : of_oxm {
+    uint32_t type_len == 0x00031f08;
+    uint32_t value;
+    uint32_t value_mask;
+};