// 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 4

// In a realistic switch pipeline there are multiple reasons a given packet
// should be sent to the controller. The packet-in reason field is only 8 bits,
// so we use the metadata OXM to carry this information.

enum ofp_bsn_pktin_flag(wire_type=uint64, bitmask=True) {
    OFP_BSN_PKTIN_FLAG_PDU = 0x1,
    OFP_BSN_PKTIN_FLAG_NEW_HOST = 0x2,
    OFP_BSN_PKTIN_FLAG_STATION_MOVE = 0x4,
    OFP_BSN_PKTIN_FLAG_ARP = 0x8,
    OFP_BSN_PKTIN_FLAG_DHCP = 0x10,
    OFP_BSN_PKTIN_FLAG_L2_CPU = 0x20,
    OFP_BSN_PKTIN_FLAG_DEBUG = 0x40,
    OFP_BSN_PKTIN_FLAG_TTL_EXPIRED = 0x80,
    OFP_BSN_PKTIN_FLAG_L3_MISS = 0x100,
    OFP_BSN_PKTIN_FLAG_L3_CPU = 0x200,
};
