Merge into master from pull request #371:
openflow_input: add bsn_lua extension (https://github.com/floodlight/loxigen/pull/371)
diff --git a/openflow_input/bsn_lua b/openflow_input/bsn_lua
new file mode 100644
index 0000000..9b6438e
--- /dev/null
+++ b/openflow_input/bsn_lua
@@ -0,0 +1,68 @@
+// Copyright 2015, 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 2013, 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.
+
+// IVS supports running sandboxed Lua code as the forwarding pipeline.
+// This extension allows the controller to upload the Lua code.
+
+#version 4
+#version 5
+
+// Upload chunks of Lua code to the switch
+//
+// If the MORE flag is not set, the old VM will be cleaned up and
+// a new VM will be initialized with the uploaded code. Each chunk
+// of code is executed in the VM in the order it was received.
+//
+// If the FORCE flag is not set, the switch will check to see if the
+// old and new code is identical. If they are identical the message
+// will be ignored.
+//
+// As part of the VM cleanup, all gentables registered by Lua code
+// will be unregistered.
+//
+// Consecutive messages with the same filename are concatenated,
+// to support chunks larger than 64K.
+
+enum ofp_bsn_lua_upload_flags(wire_type=uint16_t, bitmask=True) {
+    OFP_BSN_LUA_UPLOAD_MORE = 0x1,
+    OFP_BSN_LUA_UPLOAD_FORCE = 0x2,
+};
+
+struct of_bsn_lua_upload : of_bsn_header {
+    uint8_t version;
+    uint8_t type == 4;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 64;
+    enum ofp_bsn_lua_upload_flags flags;
+    of_str64_t filename;
+    of_octets_t data;
+};