Update github.com/vishvananda/netlink to v1.2.0-beta
Latest version fixes a segfault when used on some ppp setup Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
This commit is contained in:
1
vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go
generated
vendored
1
vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go
generated
vendored
@ -44,6 +44,7 @@ const (
|
||||
NLA_F_NESTED uint16 = (1 << 15) // #define NLA_F_NESTED (1 << 15)
|
||||
NLA_F_NET_BYTEORDER uint16 = (1 << 14) // #define NLA_F_NESTED (1 << 14)
|
||||
NLA_TYPE_MASK = ^(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
|
||||
NLA_ALIGNTO uint16 = 4 // #define NLA_ALIGNTO 4
|
||||
)
|
||||
|
||||
// enum ctattr_type {
|
||||
|
55
vendor/github.com/vishvananda/netlink/nl/devlink_linux.go
generated
vendored
55
vendor/github.com/vishvananda/netlink/nl/devlink_linux.go
generated
vendored
@ -11,22 +11,37 @@ const (
|
||||
const (
|
||||
DEVLINK_CMD_GET = 1
|
||||
DEVLINK_CMD_PORT_GET = 5
|
||||
DEVLINK_CMD_PORT_SET = 6
|
||||
DEVLINK_CMD_PORT_NEW = 7
|
||||
DEVLINK_CMD_PORT_DEL = 8
|
||||
DEVLINK_CMD_ESWITCH_GET = 29
|
||||
DEVLINK_CMD_ESWITCH_SET = 30
|
||||
DEVLINK_CMD_INFO_GET = 51
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_ATTR_BUS_NAME = 1
|
||||
DEVLINK_ATTR_DEV_NAME = 2
|
||||
DEVLINK_ATTR_PORT_INDEX = 3
|
||||
DEVLINK_ATTR_PORT_TYPE = 4
|
||||
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 6
|
||||
DEVLINK_ATTR_PORT_NETDEV_NAME = 7
|
||||
DEVLINK_ATTR_PORT_IBDEV_NAME = 8
|
||||
DEVLINK_ATTR_ESWITCH_MODE = 25
|
||||
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 26
|
||||
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 62
|
||||
DEVLINK_ATTR_PORT_FLAVOUR = 77
|
||||
DEVLINK_ATTR_BUS_NAME = 1
|
||||
DEVLINK_ATTR_DEV_NAME = 2
|
||||
DEVLINK_ATTR_PORT_INDEX = 3
|
||||
DEVLINK_ATTR_PORT_TYPE = 4
|
||||
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 6
|
||||
DEVLINK_ATTR_PORT_NETDEV_NAME = 7
|
||||
DEVLINK_ATTR_PORT_IBDEV_NAME = 8
|
||||
DEVLINK_ATTR_ESWITCH_MODE = 25
|
||||
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 26
|
||||
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 62
|
||||
DEVLINK_ATTR_PORT_FLAVOUR = 77
|
||||
DEVLINK_ATTR_INFO_DRIVER_NAME = 98
|
||||
DEVLINK_ATTR_INFO_SERIAL_NUMBER = 99
|
||||
DEVLINK_ATTR_INFO_VERSION_FIXED = 100
|
||||
DEVLINK_ATTR_INFO_VERSION_RUNNING = 101
|
||||
DEVLINK_ATTR_INFO_VERSION_STORED = 102
|
||||
DEVLINK_ATTR_INFO_VERSION_NAME = 103
|
||||
DEVLINK_ATTR_INFO_VERSION_VALUE = 104
|
||||
DEVLINK_ATTR_PORT_PCI_PF_NUMBER = 127
|
||||
DEVLINK_ATTR_PORT_FUNCTION = 145
|
||||
DEVLINK_ATTR_PORT_CONTROLLER_NUMBER = 150
|
||||
DEVLINK_ATTR_PORT_PCI_SF_NUMBER = 164
|
||||
)
|
||||
|
||||
const (
|
||||
@ -53,6 +68,8 @@ const (
|
||||
DEVLINK_PORT_FLAVOUR_PCI_PF = 3
|
||||
DEVLINK_PORT_FLAVOUR_PCI_VF = 4
|
||||
DEVLINK_PORT_FLAVOUR_VIRTUAL = 5
|
||||
DEVLINK_PORT_FLAVOUR_UNUSED = 6
|
||||
DEVLINK_PORT_FLAVOUR_PCI_SF = 7
|
||||
)
|
||||
|
||||
const (
|
||||
@ -61,3 +78,19 @@ const (
|
||||
DEVLINK_PORT_TYPE_ETH = 2
|
||||
DEVLINK_PORT_TYPE_IB = 3
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 1
|
||||
DEVLINK_PORT_FN_ATTR_STATE = 2
|
||||
DEVLINK_PORT_FN_ATTR_OPSTATE = 3
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_PORT_FN_STATE_INACTIVE = 0
|
||||
DEVLINK_PORT_FN_STATE_ACTIVE = 1
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_PORT_FN_OPSTATE_DETACHED = 0
|
||||
DEVLINK_PORT_FN_OPSTATE_ATTACHED = 1
|
||||
)
|
||||
|
9
vendor/github.com/vishvananda/netlink/nl/link_linux.go
generated
vendored
9
vendor/github.com/vishvananda/netlink/nl/link_linux.go
generated
vendored
@ -709,3 +709,12 @@ const (
|
||||
IFLA_CAN_BITRATE_MAX
|
||||
IFLA_CAN_MAX = IFLA_CAN_BITRATE_MAX
|
||||
)
|
||||
|
||||
const (
|
||||
IFLA_BAREUDP_UNSPEC = iota
|
||||
IFLA_BAREUDP_PORT
|
||||
IFLA_BAREUDP_ETHERTYPE
|
||||
IFLA_BAREUDP_SRCPORT_MIN
|
||||
IFLA_BAREUDP_MULTIPROTO_MODE
|
||||
IFLA_BAREUDP_MAX = IFLA_BAREUDP_MULTIPROTO_MODE
|
||||
)
|
||||
|
29
vendor/github.com/vishvananda/netlink/nl/lwt_linux.go
generated
vendored
Normal file
29
vendor/github.com/vishvananda/netlink/nl/lwt_linux.go
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
package nl
|
||||
|
||||
const (
|
||||
LWT_BPF_PROG_UNSPEC = iota
|
||||
LWT_BPF_PROG_FD
|
||||
LWT_BPF_PROG_NAME
|
||||
__LWT_BPF_PROG_MAX
|
||||
)
|
||||
|
||||
const (
|
||||
LWT_BPF_PROG_MAX = __LWT_BPF_PROG_MAX - 1
|
||||
)
|
||||
|
||||
const (
|
||||
LWT_BPF_UNSPEC = iota
|
||||
LWT_BPF_IN
|
||||
LWT_BPF_OUT
|
||||
LWT_BPF_XMIT
|
||||
LWT_BPF_XMIT_HEADROOM
|
||||
__LWT_BPF_MAX
|
||||
)
|
||||
|
||||
const (
|
||||
LWT_BPF_MAX = __LWT_BPF_MAX - 1
|
||||
)
|
||||
|
||||
const (
|
||||
LWT_BPF_MAX_HEADROOM = 256
|
||||
)
|
115
vendor/github.com/vishvananda/netlink/nl/nl_linux.go
generated
vendored
115
vendor/github.com/vishvananda/netlink/nl/nl_linux.go
generated
vendored
@ -27,7 +27,8 @@ const (
|
||||
// tc rules or filters, or other more memory requiring data.
|
||||
RECEIVE_BUFFER_SIZE = 65536
|
||||
// Kernel netlink pid
|
||||
PidKernel uint32 = 0
|
||||
PidKernel uint32 = 0
|
||||
SizeofCnMsgOp = 0x18
|
||||
)
|
||||
|
||||
// SupportedNlFamilies contains the list of netlink families this netlink package supports
|
||||
@ -38,6 +39,9 @@ var nextSeqNr uint32
|
||||
// Default netlink socket timeout, 60s
|
||||
var SocketTimeoutTv = unix.Timeval{Sec: 60, Usec: 0}
|
||||
|
||||
// ErrorMessageReporting is the default error message reporting configuration for the new netlink sockets
|
||||
var EnableErrorMessageReporting bool = false
|
||||
|
||||
// GetIPFamily returns the family type of a net.IP.
|
||||
func GetIPFamily(ip net.IP) int {
|
||||
if len(ip) <= net.IPv4len {
|
||||
@ -80,11 +84,69 @@ func Swap32(i uint32) uint32 {
|
||||
return (i&0xff000000)>>24 | (i&0xff0000)>>8 | (i&0xff00)<<8 | (i&0xff)<<24
|
||||
}
|
||||
|
||||
const (
|
||||
NLMSGERR_ATTR_UNUSED = 0
|
||||
NLMSGERR_ATTR_MSG = 1
|
||||
NLMSGERR_ATTR_OFFS = 2
|
||||
NLMSGERR_ATTR_COOKIE = 3
|
||||
NLMSGERR_ATTR_POLICY = 4
|
||||
)
|
||||
|
||||
type NetlinkRequestData interface {
|
||||
Len() int
|
||||
Serialize() []byte
|
||||
}
|
||||
|
||||
const (
|
||||
PROC_CN_MCAST_LISTEN = 1
|
||||
PROC_CN_MCAST_IGNORE
|
||||
)
|
||||
|
||||
type CbID struct {
|
||||
Idx uint32
|
||||
Val uint32
|
||||
}
|
||||
|
||||
type CnMsg struct {
|
||||
ID CbID
|
||||
Seq uint32
|
||||
Ack uint32
|
||||
Length uint16
|
||||
Flags uint16
|
||||
}
|
||||
|
||||
type CnMsgOp struct {
|
||||
CnMsg
|
||||
// here we differ from the C header
|
||||
Op uint32
|
||||
}
|
||||
|
||||
func NewCnMsg(idx, val, op uint32) *CnMsgOp {
|
||||
var cm CnMsgOp
|
||||
|
||||
cm.ID.Idx = idx
|
||||
cm.ID.Val = val
|
||||
|
||||
cm.Ack = 0
|
||||
cm.Seq = 1
|
||||
cm.Length = uint16(binary.Size(op))
|
||||
cm.Op = op
|
||||
|
||||
return &cm
|
||||
}
|
||||
|
||||
func (msg *CnMsgOp) Serialize() []byte {
|
||||
return (*(*[SizeofCnMsgOp]byte)(unsafe.Pointer(msg)))[:]
|
||||
}
|
||||
|
||||
func DeserializeCnMsgOp(b []byte) *CnMsgOp {
|
||||
return (*CnMsgOp)(unsafe.Pointer(&b[0:SizeofCnMsgOp][0]))
|
||||
}
|
||||
|
||||
func (msg *CnMsgOp) Len() int {
|
||||
return SizeofCnMsgOp
|
||||
}
|
||||
|
||||
// IfInfomsg is related to links, but it is used for list requests as well
|
||||
type IfInfomsg struct {
|
||||
unix.IfInfomsg
|
||||
@ -252,6 +314,12 @@ func (msg *IfInfomsg) EncapType() string {
|
||||
return fmt.Sprintf("unknown%d", msg.Type)
|
||||
}
|
||||
|
||||
// Round the length of a netlink message up to align it properly.
|
||||
// Taken from syscall/netlink_linux.go by The Go Authors under BSD-style license.
|
||||
func nlmAlignOf(msglen int) int {
|
||||
return (msglen + syscall.NLMSG_ALIGNTO - 1) & ^(syscall.NLMSG_ALIGNTO - 1)
|
||||
}
|
||||
|
||||
func rtaAlignOf(attrlen int) int {
|
||||
return (attrlen + unix.RTA_ALIGNTO - 1) & ^(unix.RTA_ALIGNTO - 1)
|
||||
}
|
||||
@ -436,6 +504,9 @@ func (req *NetlinkRequest) Execute(sockType int, resType uint16) ([][]byte, erro
|
||||
if err := s.SetReceiveTimeout(&SocketTimeoutTv); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := s.SetExtAck(EnableErrorMessageReporting); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer s.Close()
|
||||
} else {
|
||||
@ -475,11 +546,37 @@ done:
|
||||
}
|
||||
if m.Header.Type == unix.NLMSG_DONE || m.Header.Type == unix.NLMSG_ERROR {
|
||||
native := NativeEndian()
|
||||
error := int32(native.Uint32(m.Data[0:4]))
|
||||
if error == 0 {
|
||||
errno := int32(native.Uint32(m.Data[0:4]))
|
||||
if errno == 0 {
|
||||
break done
|
||||
}
|
||||
return nil, syscall.Errno(-error)
|
||||
var err error
|
||||
err = syscall.Errno(-errno)
|
||||
|
||||
unreadData := m.Data[4:]
|
||||
if m.Header.Flags|unix.NLM_F_ACK_TLVS != 0 && len(unreadData) > syscall.SizeofNlMsghdr {
|
||||
// Skip the echoed request message.
|
||||
echoReqH := (*syscall.NlMsghdr)(unsafe.Pointer(&unreadData[0]))
|
||||
unreadData = unreadData[nlmAlignOf(int(echoReqH.Len)):]
|
||||
|
||||
// Annotate `err` using nlmsgerr attributes.
|
||||
for len(unreadData) >= syscall.SizeofRtAttr {
|
||||
attr := (*syscall.RtAttr)(unsafe.Pointer(&unreadData[0]))
|
||||
attrData := unreadData[syscall.SizeofRtAttr:attr.Len]
|
||||
|
||||
switch attr.Type {
|
||||
case NLMSGERR_ATTR_MSG:
|
||||
err = fmt.Errorf("%w: %s", err, string(attrData))
|
||||
|
||||
default:
|
||||
// TODO: handle other NLMSGERR_ATTR types
|
||||
}
|
||||
|
||||
unreadData = unreadData[rtaAlignOf(int(attr.Len)):]
|
||||
}
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
if resType != 0 && m.Header.Type != resType {
|
||||
continue
|
||||
@ -694,6 +791,16 @@ func (s *NetlinkSocket) SetReceiveTimeout(timeout *unix.Timeval) error {
|
||||
return unix.SetsockoptTimeval(int(s.fd), unix.SOL_SOCKET, unix.SO_RCVTIMEO, timeout)
|
||||
}
|
||||
|
||||
// SetExtAck requests error messages to be reported on the socket
|
||||
func (s *NetlinkSocket) SetExtAck(enable bool) error {
|
||||
var enableN int
|
||||
if enable {
|
||||
enableN = 1
|
||||
}
|
||||
|
||||
return unix.SetsockoptInt(int(s.fd), unix.SOL_NETLINK, unix.NETLINK_EXT_ACK, enableN)
|
||||
}
|
||||
|
||||
func (s *NetlinkSocket) GetPid() (uint32, error) {
|
||||
fd := int(atomic.LoadInt32(&s.fd))
|
||||
lsa, err := unix.Getsockname(fd)
|
||||
|
4
vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go
generated
vendored
4
vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go
generated
vendored
@ -11,6 +11,8 @@ const (
|
||||
const (
|
||||
RDMA_NLDEV_CMD_GET = 1
|
||||
RDMA_NLDEV_CMD_SET = 2
|
||||
RDMA_NLDEV_CMD_NEWLINK = 3
|
||||
RDMA_NLDEV_CMD_DELLINK = 4
|
||||
RDMA_NLDEV_CMD_SYS_GET = 6
|
||||
RDMA_NLDEV_CMD_SYS_SET = 7
|
||||
)
|
||||
@ -30,6 +32,8 @@ const (
|
||||
RDMA_NLDEV_ATTR_PORT_STATE = 12
|
||||
RDMA_NLDEV_ATTR_PORT_PHYS_STATE = 13
|
||||
RDMA_NLDEV_ATTR_DEV_NODE_TYPE = 14
|
||||
RDMA_NLDEV_ATTR_NDEV_NAME = 51
|
||||
RDMA_NLDEV_ATTR_LINK_TYPE = 65
|
||||
RDMA_NLDEV_SYS_ATTR_NETNS_MODE = 66
|
||||
RDMA_NLDEV_NET_NS_FD = 68
|
||||
)
|
||||
|
4
vendor/github.com/vishvananda/netlink/nl/seg6_linux.go
generated
vendored
4
vendor/github.com/vishvananda/netlink/nl/seg6_linux.go
generated
vendored
@ -23,7 +23,7 @@ func (s1 *IPv6SrHdr) Equal(s2 IPv6SrHdr) bool {
|
||||
return false
|
||||
}
|
||||
for i := range s1.Segments {
|
||||
if s1.Segments[i].Equal(s2.Segments[i]) != true {
|
||||
if !s1.Segments[i].Equal(s2.Segments[i]) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
@ -89,7 +89,7 @@ func DecodeSEG6Encap(buf []byte) (int, []net.IP, error) {
|
||||
}
|
||||
buf = buf[12:]
|
||||
if len(buf)%16 != 0 {
|
||||
err := fmt.Errorf("DecodeSEG6Encap: error parsing Segment List (buf len: %d)\n", len(buf))
|
||||
err := fmt.Errorf("DecodeSEG6Encap: error parsing Segment List (buf len: %d)", len(buf))
|
||||
return mode, nil, err
|
||||
}
|
||||
for len(buf) > 0 {
|
||||
|
2
vendor/github.com/vishvananda/netlink/nl/syscall.go
generated
vendored
2
vendor/github.com/vishvananda/netlink/nl/syscall.go
generated
vendored
@ -1,6 +1,6 @@
|
||||
package nl
|
||||
|
||||
// syscall package lack of rule atributes type.
|
||||
// syscall package lack of rule attributes type.
|
||||
// Thus there are defined below
|
||||
const (
|
||||
FRA_UNSPEC = iota
|
||||
|
105
vendor/github.com/vishvananda/netlink/nl/tc_linux.go
generated
vendored
105
vendor/github.com/vishvananda/netlink/nl/tc_linux.go
generated
vendored
@ -882,6 +882,111 @@ const (
|
||||
TCA_HFSC_USC
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_FLOWER_UNSPEC = iota
|
||||
TCA_FLOWER_CLASSID
|
||||
TCA_FLOWER_INDEV
|
||||
TCA_FLOWER_ACT
|
||||
TCA_FLOWER_KEY_ETH_DST /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_DST_MASK /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_SRC /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_SRC_MASK /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_TYPE /* be16 */
|
||||
TCA_FLOWER_KEY_IP_PROTO /* u8 */
|
||||
TCA_FLOWER_KEY_IPV4_SRC /* be32 */
|
||||
TCA_FLOWER_KEY_IPV4_SRC_MASK /* be32 */
|
||||
TCA_FLOWER_KEY_IPV4_DST /* be32 */
|
||||
TCA_FLOWER_KEY_IPV4_DST_MASK /* be32 */
|
||||
TCA_FLOWER_KEY_IPV6_SRC /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_IPV6_SRC_MASK /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_IPV6_DST /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_IPV6_DST_MASK /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_TCP_SRC /* be16 */
|
||||
TCA_FLOWER_KEY_TCP_DST /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_SRC /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_DST /* be16 */
|
||||
|
||||
TCA_FLOWER_FLAGS
|
||||
TCA_FLOWER_KEY_VLAN_ID /* be16 */
|
||||
TCA_FLOWER_KEY_VLAN_PRIO /* u8 */
|
||||
TCA_FLOWER_KEY_VLAN_ETH_TYPE /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_KEY_ID /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_SRC /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_DST /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_DST_MASK /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_SRC /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_DST /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_DST_MASK /* struct in6_addr */
|
||||
|
||||
TCA_FLOWER_KEY_TCP_SRC_MASK /* be16 */
|
||||
TCA_FLOWER_KEY_TCP_DST_MASK /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_SRC_MASK /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_DST_MASK /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_SRC_MASK /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_DST_MASK /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_SCTP_SRC /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_DST /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_UDP_SRC_PORT /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_DST_PORT /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_FLAGS /* be32 */
|
||||
TCA_FLOWER_KEY_FLAGS_MASK /* be32 */
|
||||
|
||||
TCA_FLOWER_KEY_ICMPV4_CODE /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV4_CODE_MASK /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV4_TYPE /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV4_TYPE_MASK /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_CODE /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_CODE_MASK /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_TYPE /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_TYPE_MASK /* u8 */
|
||||
|
||||
TCA_FLOWER_KEY_ARP_SIP /* be32 */
|
||||
TCA_FLOWER_KEY_ARP_SIP_MASK /* be32 */
|
||||
TCA_FLOWER_KEY_ARP_TIP /* be32 */
|
||||
TCA_FLOWER_KEY_ARP_TIP_MASK /* be32 */
|
||||
TCA_FLOWER_KEY_ARP_OP /* u8 */
|
||||
TCA_FLOWER_KEY_ARP_OP_MASK /* u8 */
|
||||
TCA_FLOWER_KEY_ARP_SHA /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ARP_SHA_MASK /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ARP_THA /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ARP_THA_MASK /* ETH_ALEN */
|
||||
|
||||
TCA_FLOWER_KEY_MPLS_TTL /* u8 - 8 bits */
|
||||
TCA_FLOWER_KEY_MPLS_BOS /* u8 - 1 bit */
|
||||
TCA_FLOWER_KEY_MPLS_TC /* u8 - 3 bits */
|
||||
TCA_FLOWER_KEY_MPLS_LABEL /* be32 - 20 bits */
|
||||
|
||||
TCA_FLOWER_KEY_TCP_FLAGS /* be16 */
|
||||
TCA_FLOWER_KEY_TCP_FLAGS_MASK /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_IP_TOS /* u8 */
|
||||
TCA_FLOWER_KEY_IP_TOS_MASK /* u8 */
|
||||
TCA_FLOWER_KEY_IP_TTL /* u8 */
|
||||
TCA_FLOWER_KEY_IP_TTL_MASK /* u8 */
|
||||
|
||||
TCA_FLOWER_KEY_CVLAN_ID /* be16 */
|
||||
TCA_FLOWER_KEY_CVLAN_PRIO /* u8 */
|
||||
TCA_FLOWER_KEY_CVLAN_ETH_TYPE /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_IP_TOS /* u8 */
|
||||
TCA_FLOWER_KEY_ENC_IP_TOS_MASK /* u8 */
|
||||
TCA_FLOWER_KEY_ENC_IP_TTL /* u8 */
|
||||
TCA_FLOWER_KEY_ENC_IP_TTL_MASK /* u8 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_OPTS
|
||||
TCA_FLOWER_KEY_ENC_OPTS_MASK
|
||||
|
||||
__TCA_FLOWER_MAX
|
||||
)
|
||||
|
||||
// struct tc_sfq_qopt {
|
||||
// unsigned quantum; /* Bytes per round allocated to flow */
|
||||
// int perturb_period; /* Period of hash perturbation */
|
||||
|
Reference in New Issue
Block a user