130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __LINUX_TC_EM_META_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __LINUX_TC_EM_META_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/pkt_cls.h> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCA_EM_META_UNSPEC, 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCA_EM_META_HDR, 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCA_EM_META_LVALUE, 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCA_EM_META_RVALUE, 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __TCA_EM_META_MAX 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCA_EM_META_MAX (__TCA_EM_META_MAX - 1) 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct tcf_meta_val { 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 kind; 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 shift; 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 op; 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCF_META_TYPE_MASK (0xf << 12) 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCF_META_TYPE(kind) (((kind) & TCF_META_TYPE_MASK) >> 12) 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCF_META_ID_MASK 0x7ff 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCF_META_ID(kind) ((kind) & TCF_META_ID_MASK) 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_TYPE_VAR, 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_TYPE_INT, 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __TCF_META_TYPE_MAX 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCF_META_TYPE_MAX (__TCF_META_TYPE_MAX - 1) 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3430692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_VALUE, 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_RANDOM, 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_LOADAVG_0, 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_LOADAVG_1, 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_LOADAVG_2, 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_DEV, 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_PRIORITY, 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_PROTOCOL, 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_PKTTYPE, 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_PKTLEN, 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_DATALEN, 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_MACLEN, 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_NFMARK, 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_TCINDEX, 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_RTCLASSID, 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_RTIIF, 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_FAMILY, 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_STATE, 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_REUSE, 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_BOUND_IF, 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_REFCNT, 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_SHUTDOWN, 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_PROTO, 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_TYPE, 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_RCVBUF, 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_RMEM_ALLOC, 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_WMEM_ALLOC, 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_OMEM_ALLOC, 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_WMEM_QUEUED, 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_RCV_QLEN, 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_SND_QLEN, 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_ERR_QLEN, 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_FORWARD_ALLOCS, 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_SNDBUF, 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_ALLOCS, 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __TCF_META_ID_SK_ROUTE_CAPS, /* unimplemented but in ABI already */ 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_HASH, 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_LINGERTIME, 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_ACK_BACKLOG, 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_MAX_ACK_BACKLOG, 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_PRIO, 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_RCVLOWAT, 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_RCVTIMEO, 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_SNDTIMEO, 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_SENDMSG_OFF, 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_SK_WRITE_PENDING, 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_VLAN_TAG, 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng TCF_META_ID_RXHASH, 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __TCF_META_ID_MAX 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1) 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct tcf_meta_hdr { 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct tcf_meta_val left; 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct tcf_meta_val right; 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 93