// 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
#version 5

// 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_t, 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,
    OFP_BSN_PKTIN_FLAG_INGRESS_ACL = 0x400,
    OFP_BSN_PKTIN_FLAG_SFLOW = 0x800,
    OFP_BSN_PKTIN_FLAG_ARP_CACHE = 0x1000,
    OFP_BSN_PKTIN_FLAG_ARP_TARGET = 0x2000,
};
