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