// 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;
};
