+/**
+ * Identifier resource types
+ */
+enum tf_identifier_type {
+ /**
+ * The L2 Context is returned from the L2 Ctxt TCAM lookup
+ * and can be used in WC TCAM or EM keys to virtualize further
+ * lookups.
+ */
+ TF_IDENT_TYPE_L2_CTXT,
+ /**
+ * The WC profile func is returned from the L2 Ctxt TCAM lookup
+ * to enable virtualization of the profile TCAM.
+ */
+ TF_IDENT_TYPE_PROF_FUNC,
+ /**
+ * The WC profile ID is included in the WC lookup key
+ * to enable virtualization of the WC TCAM hardware.
+ */
+ TF_IDENT_TYPE_WC_PROF,
+ /**
+ * The EM profile ID is included in the EM lookup key
+ * to enable virtualization of the EM hardware. (not required for SR2
+ * as it has table scope)
+ */
+ TF_IDENT_TYPE_EM_PROF,
+ /**
+ * The L2 func is included in the ILT result and from recycling to
+ * enable virtualization of further lookups.
+ */
+ TF_IDENT_TYPE_L2_FUNC,
+ TF_IDENT_TYPE_MAX
+};
+
+/**
+ * Enumeration of TruFlow table types. A table type is used to identify a
+ * resource object.
+ *
+ * NOTE: The table type TF_TBL_TYPE_EXT is unique in that it is
+ * the only table type that is connected with a table scope.
+ */
+enum tf_tbl_type {
+ /* Internal */
+
+ /** Wh+/SR Action Record */
+ TF_TBL_TYPE_FULL_ACT_RECORD,
+ /** Wh+/SR/Th Multicast Groups */
+ TF_TBL_TYPE_MCAST_GROUPS,
+ /** Wh+/SR Action Encap 8 Bytes */
+ TF_TBL_TYPE_ACT_ENCAP_8B,
+ /** Wh+/SR Action Encap 16 Bytes */
+ TF_TBL_TYPE_ACT_ENCAP_16B,
+ /** Action Encap 32 Bytes */
+ TF_TBL_TYPE_ACT_ENCAP_32B,
+ /** Wh+/SR Action Encap 64 Bytes */
+ TF_TBL_TYPE_ACT_ENCAP_64B,
+ /** Action Source Properties SMAC */
+ TF_TBL_TYPE_ACT_SP_SMAC,
+ /** Wh+/SR Action Source Properties SMAC IPv4 */
+ TF_TBL_TYPE_ACT_SP_SMAC_IPV4,
+ /** Action Source Properties SMAC IPv6 */
+ TF_TBL_TYPE_ACT_SP_SMAC_IPV6,
+ /** Wh+/SR Action Statistics 64 Bits */
+ TF_TBL_TYPE_ACT_STATS_64,
+ /** Wh+/SR Action Modify L4 Src Port */
+ TF_TBL_TYPE_ACT_MODIFY_SPORT,
+ /** Wh+/SR Action Modify L4 Dest Port */
+ TF_TBL_TYPE_ACT_MODIFY_DPORT,
+ /** Wh+/SR Action Modify IPv4 Source */
+ TF_TBL_TYPE_ACT_MODIFY_IPV4_SRC,
+ /** Wh+/SR Action _Modify L4 Dest Port */
+ TF_TBL_TYPE_ACT_MODIFY_IPV4_DEST,
+ /** Action Modify IPv6 Source */
+ TF_TBL_TYPE_ACT_MODIFY_IPV6_SRC,
+ /** Action Modify IPv6 Destination */
+ TF_TBL_TYPE_ACT_MODIFY_IPV6_DEST,
+ /** Meter Profiles */
+ TF_TBL_TYPE_METER_PROF,
+ /** Meter Instance */
+ TF_TBL_TYPE_METER_INST,
+ /** Mirror Config */
+ TF_TBL_TYPE_MIRROR_CONFIG,
+ /** UPAR */
+ TF_TBL_TYPE_UPAR,
+ /** SR2 Epoch 0 table */
+ TF_TBL_TYPE_EPOCH0,
+ /** SR2 Epoch 1 table */
+ TF_TBL_TYPE_EPOCH1,
+ /** SR2 Metadata */
+ TF_TBL_TYPE_METADATA,
+ /** SR2 CT State */
+ TF_TBL_TYPE_CT_STATE,
+ /** SR2 Range Profile */
+ TF_TBL_TYPE_RANGE_PROF,
+ /** SR2 Range Entry */
+ TF_TBL_TYPE_RANGE_ENTRY,
+ /** SR2 LAG Entry */
+ TF_TBL_TYPE_LAG,
+ /** SR2 VNIC/SVIF Table */
+ TF_TBL_TYPE_VNIC_SVIF,
+ /** Th/SR2 EM Flexible Key builder */
+ TF_TBL_TYPE_EM_FKB,
+ /** Th/SR2 WC Flexible Key builder */
+ TF_TBL_TYPE_WC_FKB,
+
+ /* External */
+
+ /**
+ * External table type - initially 1 poolsize entries.
+ * All External table types are associated with a table
+ * scope. Internal types are not.
+ */
+ TF_TBL_TYPE_EXT,
+ TF_TBL_TYPE_MAX
+};
+
+/**
+ * TCAM table type
+ */
+enum tf_tcam_tbl_type {
+ /** L2 Context TCAM */
+ TF_TCAM_TBL_TYPE_L2_CTXT_TCAM,
+ /** Profile TCAM */
+ TF_TCAM_TBL_TYPE_PROF_TCAM,
+ /** Wildcard TCAM */
+ TF_TCAM_TBL_TYPE_WC_TCAM,
+ /** Source Properties TCAM */
+ TF_TCAM_TBL_TYPE_SP_TCAM,
+ /** Connection Tracking Rule TCAM */
+ TF_TCAM_TBL_TYPE_CT_RULE_TCAM,
+ /** Virtual Edge Bridge TCAM */
+ TF_TCAM_TBL_TYPE_VEB_TCAM,
+ TF_TCAM_TBL_TYPE_MAX
+};
+
+/**
+ * EM Resources
+ * These defines are provisioned during
+ * tf_open_session()
+ */
+enum tf_em_tbl_type {
+ /** The number of internal EM records for the session */
+ TF_EM_TBL_TYPE_EM_RECORD,
+ /** The number of table scopes reequested */
+ TF_EM_TBL_TYPE_TBL_SCOPE,
+ TF_EM_TBL_TYPE_MAX
+};
+
+/**
+ * TruFlow Session Information