github.com/vishvananda/netlink@v1.3.1/nl/link_linux.go (about) 1 package nl 2 3 import ( 4 "bytes" 5 "encoding/binary" 6 "fmt" 7 "unsafe" 8 ) 9 10 const ( 11 DEFAULT_CHANGE = 0xFFFFFFFF 12 ) 13 14 const ( 15 IFLA_INFO_UNSPEC = iota 16 IFLA_INFO_KIND 17 IFLA_INFO_DATA 18 IFLA_INFO_XSTATS 19 IFLA_INFO_SLAVE_KIND 20 IFLA_INFO_SLAVE_DATA 21 IFLA_INFO_MAX = IFLA_INFO_SLAVE_DATA 22 ) 23 24 const ( 25 IFLA_VLAN_UNSPEC = iota 26 IFLA_VLAN_ID 27 IFLA_VLAN_FLAGS 28 IFLA_VLAN_EGRESS_QOS 29 IFLA_VLAN_INGRESS_QOS 30 IFLA_VLAN_PROTOCOL 31 IFLA_VLAN_MAX = IFLA_VLAN_PROTOCOL 32 ) 33 34 const ( 35 IFLA_VLAN_QOS_UNSPEC = iota 36 IFLA_VLAN_QOS_MAPPING 37 IFLA_VLAN_QOS_MAX = IFLA_VLAN_QOS_MAPPING 38 ) 39 40 const ( 41 VLAN_FLAG_REORDER_HDR = 1 << iota 42 VLAN_FLAG_GVRP 43 VLAN_FLAG_LOOSE_BINDING 44 VLAN_FLAG_MVRP 45 VLAN_FLAG_BRIDGE_BINDING 46 ) 47 48 const ( 49 IFLA_NETKIT_UNSPEC = iota 50 IFLA_NETKIT_PEER_INFO 51 IFLA_NETKIT_PRIMARY 52 IFLA_NETKIT_POLICY 53 IFLA_NETKIT_PEER_POLICY 54 IFLA_NETKIT_MODE 55 IFLA_NETKIT_SCRUB 56 IFLA_NETKIT_PEER_SCRUB 57 IFLA_NETKIT_MAX = IFLA_NETKIT_MODE 58 ) 59 60 const ( 61 VETH_INFO_UNSPEC = iota 62 VETH_INFO_PEER 63 VETH_INFO_MAX = VETH_INFO_PEER 64 ) 65 66 const ( 67 IFLA_VXLAN_UNSPEC = iota 68 IFLA_VXLAN_ID 69 IFLA_VXLAN_GROUP 70 IFLA_VXLAN_LINK 71 IFLA_VXLAN_LOCAL 72 IFLA_VXLAN_TTL 73 IFLA_VXLAN_TOS 74 IFLA_VXLAN_LEARNING 75 IFLA_VXLAN_AGEING 76 IFLA_VXLAN_LIMIT 77 IFLA_VXLAN_PORT_RANGE 78 IFLA_VXLAN_PROXY 79 IFLA_VXLAN_RSC 80 IFLA_VXLAN_L2MISS 81 IFLA_VXLAN_L3MISS 82 IFLA_VXLAN_PORT 83 IFLA_VXLAN_GROUP6 84 IFLA_VXLAN_LOCAL6 85 IFLA_VXLAN_UDP_CSUM 86 IFLA_VXLAN_UDP_ZERO_CSUM6_TX 87 IFLA_VXLAN_UDP_ZERO_CSUM6_RX 88 IFLA_VXLAN_REMCSUM_TX 89 IFLA_VXLAN_REMCSUM_RX 90 IFLA_VXLAN_GBP 91 IFLA_VXLAN_REMCSUM_NOPARTIAL 92 IFLA_VXLAN_FLOWBASED 93 IFLA_VXLAN_MAX = IFLA_VXLAN_FLOWBASED 94 ) 95 96 const ( 97 BRIDGE_MODE_UNSPEC = iota 98 BRIDGE_MODE_HAIRPIN 99 ) 100 101 const ( 102 IFLA_BRPORT_UNSPEC = iota 103 IFLA_BRPORT_STATE 104 IFLA_BRPORT_PRIORITY 105 IFLA_BRPORT_COST 106 IFLA_BRPORT_MODE 107 IFLA_BRPORT_GUARD 108 IFLA_BRPORT_PROTECT 109 IFLA_BRPORT_FAST_LEAVE 110 IFLA_BRPORT_LEARNING 111 IFLA_BRPORT_UNICAST_FLOOD 112 IFLA_BRPORT_PROXYARP 113 IFLA_BRPORT_LEARNING_SYNC 114 IFLA_BRPORT_PROXYARP_WIFI 115 IFLA_BRPORT_ROOT_ID 116 IFLA_BRPORT_BRIDGE_ID 117 IFLA_BRPORT_DESIGNATED_PORT 118 IFLA_BRPORT_DESIGNATED_COST 119 IFLA_BRPORT_ID 120 IFLA_BRPORT_NO 121 IFLA_BRPORT_TOPOLOGY_CHANGE_ACK 122 IFLA_BRPORT_CONFIG_PENDING 123 IFLA_BRPORT_MESSAGE_AGE_TIMER 124 IFLA_BRPORT_FORWARD_DELAY_TIMER 125 IFLA_BRPORT_HOLD_TIMER 126 IFLA_BRPORT_FLUSH 127 IFLA_BRPORT_MULTICAST_ROUTER 128 IFLA_BRPORT_PAD 129 IFLA_BRPORT_MCAST_FLOOD 130 IFLA_BRPORT_MCAST_TO_UCAST 131 IFLA_BRPORT_VLAN_TUNNEL 132 IFLA_BRPORT_BCAST_FLOOD 133 IFLA_BRPORT_GROUP_FWD_MASK 134 IFLA_BRPORT_NEIGH_SUPPRESS 135 IFLA_BRPORT_ISOLATED 136 IFLA_BRPORT_BACKUP_PORT 137 IFLA_BRPORT_MRP_RING_OPEN 138 IFLA_BRPORT_MRP_IN_OPEN 139 IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT 140 IFLA_BRPORT_MCAST_EHT_HOSTS_CNT 141 IFLA_BRPORT_LOCKED 142 IFLA_BRPORT_MAB 143 IFLA_BRPORT_MCAST_N_GROUPS 144 IFLA_BRPORT_MCAST_MAX_GROUPS 145 IFLA_BRPORT_MAX = IFLA_BRPORT_MCAST_MAX_GROUPS 146 ) 147 148 const ( 149 IFLA_IPVLAN_UNSPEC = iota 150 IFLA_IPVLAN_MODE 151 IFLA_IPVLAN_FLAG 152 IFLA_IPVLAN_MAX = IFLA_IPVLAN_FLAG 153 ) 154 155 const ( 156 IFLA_MACVLAN_UNSPEC = iota 157 IFLA_MACVLAN_MODE 158 IFLA_MACVLAN_FLAGS 159 IFLA_MACVLAN_MACADDR_MODE 160 IFLA_MACVLAN_MACADDR 161 IFLA_MACVLAN_MACADDR_DATA 162 IFLA_MACVLAN_MACADDR_COUNT 163 IFLA_MACVLAN_BC_QUEUE_LEN 164 IFLA_MACVLAN_BC_QUEUE_LEN_USED 165 IFLA_MACVLAN_MAX = IFLA_MACVLAN_BC_QUEUE_LEN_USED 166 ) 167 168 const ( 169 MACVLAN_MODE_PRIVATE = 1 170 MACVLAN_MODE_VEPA = 2 171 MACVLAN_MODE_BRIDGE = 4 172 MACVLAN_MODE_PASSTHRU = 8 173 MACVLAN_MODE_SOURCE = 16 174 ) 175 176 const ( 177 MACVLAN_MACADDR_ADD = iota 178 MACVLAN_MACADDR_DEL 179 MACVLAN_MACADDR_FLUSH 180 MACVLAN_MACADDR_SET 181 ) 182 183 const ( 184 IFLA_BOND_UNSPEC = iota 185 IFLA_BOND_MODE 186 IFLA_BOND_ACTIVE_SLAVE 187 IFLA_BOND_MIIMON 188 IFLA_BOND_UPDELAY 189 IFLA_BOND_DOWNDELAY 190 IFLA_BOND_USE_CARRIER 191 IFLA_BOND_ARP_INTERVAL 192 IFLA_BOND_ARP_IP_TARGET 193 IFLA_BOND_ARP_VALIDATE 194 IFLA_BOND_ARP_ALL_TARGETS 195 IFLA_BOND_PRIMARY 196 IFLA_BOND_PRIMARY_RESELECT 197 IFLA_BOND_FAIL_OVER_MAC 198 IFLA_BOND_XMIT_HASH_POLICY 199 IFLA_BOND_RESEND_IGMP 200 IFLA_BOND_NUM_PEER_NOTIF 201 IFLA_BOND_ALL_SLAVES_ACTIVE 202 IFLA_BOND_MIN_LINKS 203 IFLA_BOND_LP_INTERVAL 204 IFLA_BOND_PACKETS_PER_SLAVE 205 IFLA_BOND_AD_LACP_RATE 206 IFLA_BOND_AD_SELECT 207 IFLA_BOND_AD_INFO 208 IFLA_BOND_AD_ACTOR_SYS_PRIO 209 IFLA_BOND_AD_USER_PORT_KEY 210 IFLA_BOND_AD_ACTOR_SYSTEM 211 IFLA_BOND_TLB_DYNAMIC_LB 212 ) 213 214 const ( 215 IFLA_BOND_AD_INFO_UNSPEC = iota 216 IFLA_BOND_AD_INFO_AGGREGATOR 217 IFLA_BOND_AD_INFO_NUM_PORTS 218 IFLA_BOND_AD_INFO_ACTOR_KEY 219 IFLA_BOND_AD_INFO_PARTNER_KEY 220 IFLA_BOND_AD_INFO_PARTNER_MAC 221 ) 222 223 const ( 224 IFLA_BOND_SLAVE_UNSPEC = iota 225 IFLA_BOND_SLAVE_STATE 226 IFLA_BOND_SLAVE_MII_STATUS 227 IFLA_BOND_SLAVE_LINK_FAILURE_COUNT 228 IFLA_BOND_SLAVE_PERM_HWADDR 229 IFLA_BOND_SLAVE_QUEUE_ID 230 IFLA_BOND_SLAVE_AD_AGGREGATOR_ID 231 IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE 232 IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE 233 ) 234 235 const ( 236 IFLA_GENEVE_UNSPEC = iota 237 IFLA_GENEVE_ID // vni 238 IFLA_GENEVE_REMOTE 239 IFLA_GENEVE_TTL 240 IFLA_GENEVE_TOS 241 IFLA_GENEVE_PORT // destination port 242 IFLA_GENEVE_COLLECT_METADATA 243 IFLA_GENEVE_REMOTE6 244 IFLA_GENEVE_UDP_CSUM 245 IFLA_GENEVE_UDP_ZERO_CSUM6_TX 246 IFLA_GENEVE_UDP_ZERO_CSUM6_RX 247 IFLA_GENEVE_LABEL 248 IFLA_GENEVE_TTL_INHERIT 249 IFLA_GENEVE_DF 250 IFLA_GENEVE_INNER_PROTO_INHERIT 251 IFLA_GENEVE_PORT_RANGE 252 IFLA_GENEVE_MAX = IFLA_GENEVE_INNER_PROTO_INHERIT 253 ) 254 255 const ( 256 IFLA_GRE_UNSPEC = iota 257 IFLA_GRE_LINK 258 IFLA_GRE_IFLAGS 259 IFLA_GRE_OFLAGS 260 IFLA_GRE_IKEY 261 IFLA_GRE_OKEY 262 IFLA_GRE_LOCAL 263 IFLA_GRE_REMOTE 264 IFLA_GRE_TTL 265 IFLA_GRE_TOS 266 IFLA_GRE_PMTUDISC 267 IFLA_GRE_ENCAP_LIMIT 268 IFLA_GRE_FLOWINFO 269 IFLA_GRE_FLAGS 270 IFLA_GRE_ENCAP_TYPE 271 IFLA_GRE_ENCAP_FLAGS 272 IFLA_GRE_ENCAP_SPORT 273 IFLA_GRE_ENCAP_DPORT 274 IFLA_GRE_COLLECT_METADATA 275 IFLA_GRE_MAX = IFLA_GRE_COLLECT_METADATA 276 ) 277 278 const ( 279 GRE_CSUM = 0x8000 280 GRE_ROUTING = 0x4000 281 GRE_KEY = 0x2000 282 GRE_SEQ = 0x1000 283 GRE_STRICT = 0x0800 284 GRE_REC = 0x0700 285 GRE_FLAGS = 0x00F8 286 GRE_VERSION = 0x0007 287 ) 288 289 const ( 290 IFLA_VF_INFO_UNSPEC = iota 291 IFLA_VF_INFO 292 IFLA_VF_INFO_MAX = IFLA_VF_INFO 293 ) 294 295 const ( 296 IFLA_VF_UNSPEC = iota 297 IFLA_VF_MAC /* Hardware queue specific attributes */ 298 IFLA_VF_VLAN 299 IFLA_VF_TX_RATE /* Max TX Bandwidth Allocation */ 300 IFLA_VF_SPOOFCHK /* Spoof Checking on/off switch */ 301 IFLA_VF_LINK_STATE /* link state enable/disable/auto switch */ 302 IFLA_VF_RATE /* Min and Max TX Bandwidth Allocation */ 303 IFLA_VF_RSS_QUERY_EN /* RSS Redirection Table and Hash Key query 304 * on/off switch 305 */ 306 IFLA_VF_STATS /* network device statistics */ 307 IFLA_VF_TRUST /* Trust state of VF */ 308 IFLA_VF_IB_NODE_GUID /* VF Infiniband node GUID */ 309 IFLA_VF_IB_PORT_GUID /* VF Infiniband port GUID */ 310 IFLA_VF_VLAN_LIST /* nested list of vlans, option for QinQ */ 311 312 IFLA_VF_MAX = IFLA_VF_IB_PORT_GUID 313 ) 314 315 const ( 316 IFLA_VF_VLAN_INFO_UNSPEC = iota 317 IFLA_VF_VLAN_INFO /* VLAN ID, QoS and VLAN protocol */ 318 __IFLA_VF_VLAN_INFO_MAX 319 ) 320 321 const ( 322 IFLA_VF_LINK_STATE_AUTO = iota /* link state of the uplink */ 323 IFLA_VF_LINK_STATE_ENABLE /* link always up */ 324 IFLA_VF_LINK_STATE_DISABLE /* link always down */ 325 IFLA_VF_LINK_STATE_MAX = IFLA_VF_LINK_STATE_DISABLE 326 ) 327 328 const ( 329 IFLA_VF_STATS_RX_PACKETS = iota 330 IFLA_VF_STATS_TX_PACKETS 331 IFLA_VF_STATS_RX_BYTES 332 IFLA_VF_STATS_TX_BYTES 333 IFLA_VF_STATS_BROADCAST 334 IFLA_VF_STATS_MULTICAST 335 IFLA_VF_STATS_RX_DROPPED 336 IFLA_VF_STATS_TX_DROPPED 337 IFLA_VF_STATS_MAX = IFLA_VF_STATS_TX_DROPPED 338 ) 339 340 const ( 341 SizeofVfMac = 0x24 342 SizeofVfVlan = 0x0c 343 SizeofVfVlanInfo = 0x10 344 SizeofVfTxRate = 0x08 345 SizeofVfRate = 0x0c 346 SizeofVfSpoofchk = 0x08 347 SizeofVfLinkState = 0x08 348 SizeofVfRssQueryEn = 0x08 349 SizeofVfTrust = 0x08 350 SizeofVfGUID = 0x10 351 ) 352 353 // struct ifla_vf_mac { 354 // __u32 vf; 355 // __u8 mac[32]; /* MAX_ADDR_LEN */ 356 // }; 357 358 type VfMac struct { 359 Vf uint32 360 Mac [32]byte 361 } 362 363 func (msg *VfMac) Len() int { 364 return SizeofVfMac 365 } 366 367 func DeserializeVfMac(b []byte) *VfMac { 368 return (*VfMac)(unsafe.Pointer(&b[0:SizeofVfMac][0])) 369 } 370 371 func (msg *VfMac) Serialize() []byte { 372 return (*(*[SizeofVfMac]byte)(unsafe.Pointer(msg)))[:] 373 } 374 375 // struct ifla_vf_vlan { 376 // __u32 vf; 377 // __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */ 378 // __u32 qos; 379 // }; 380 381 type VfVlan struct { 382 Vf uint32 383 Vlan uint32 384 Qos uint32 385 } 386 387 func (msg *VfVlan) Len() int { 388 return SizeofVfVlan 389 } 390 391 func DeserializeVfVlan(b []byte) *VfVlan { 392 return (*VfVlan)(unsafe.Pointer(&b[0:SizeofVfVlan][0])) 393 } 394 395 func (msg *VfVlan) Serialize() []byte { 396 return (*(*[SizeofVfVlan]byte)(unsafe.Pointer(msg)))[:] 397 } 398 399 func DeserializeVfVlanList(b []byte) ([]*VfVlanInfo, error) { 400 var vfVlanInfoList []*VfVlanInfo 401 attrs, err := ParseRouteAttr(b) 402 if err != nil { 403 return nil, err 404 } 405 406 for _, element := range attrs { 407 if element.Attr.Type == IFLA_VF_VLAN_INFO { 408 vfVlanInfoList = append(vfVlanInfoList, DeserializeVfVlanInfo(element.Value)) 409 } 410 } 411 412 if len(vfVlanInfoList) == 0 { 413 return nil, fmt.Errorf("VF vlan list is defined but no vf vlan info elements were found") 414 } 415 416 return vfVlanInfoList, nil 417 } 418 419 // struct ifla_vf_vlan_info { 420 // __u32 vf; 421 // __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */ 422 // __u32 qos; 423 // __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */ 424 // }; 425 426 type VfVlanInfo struct { 427 VfVlan 428 VlanProto uint16 429 } 430 431 func DeserializeVfVlanInfo(b []byte) *VfVlanInfo { 432 return &VfVlanInfo{ 433 *(*VfVlan)(unsafe.Pointer(&b[0:SizeofVfVlan][0])), 434 binary.BigEndian.Uint16(b[SizeofVfVlan:SizeofVfVlanInfo]), 435 } 436 } 437 438 func (msg *VfVlanInfo) Serialize() []byte { 439 return (*(*[SizeofVfVlanInfo]byte)(unsafe.Pointer(msg)))[:] 440 } 441 442 // struct ifla_vf_tx_rate { 443 // __u32 vf; 444 // __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ 445 // }; 446 447 type VfTxRate struct { 448 Vf uint32 449 Rate uint32 450 } 451 452 func (msg *VfTxRate) Len() int { 453 return SizeofVfTxRate 454 } 455 456 func DeserializeVfTxRate(b []byte) *VfTxRate { 457 return (*VfTxRate)(unsafe.Pointer(&b[0:SizeofVfTxRate][0])) 458 } 459 460 func (msg *VfTxRate) Serialize() []byte { 461 return (*(*[SizeofVfTxRate]byte)(unsafe.Pointer(msg)))[:] 462 } 463 464 //struct ifla_vf_stats { 465 // __u64 rx_packets; 466 // __u64 tx_packets; 467 // __u64 rx_bytes; 468 // __u64 tx_bytes; 469 // __u64 broadcast; 470 // __u64 multicast; 471 //}; 472 473 type VfStats struct { 474 RxPackets uint64 475 TxPackets uint64 476 RxBytes uint64 477 TxBytes uint64 478 Multicast uint64 479 Broadcast uint64 480 RxDropped uint64 481 TxDropped uint64 482 } 483 484 func DeserializeVfStats(b []byte) VfStats { 485 var vfstat VfStats 486 stats, err := ParseRouteAttr(b) 487 if err != nil { 488 return vfstat 489 } 490 var valueVar uint64 491 for _, stat := range stats { 492 if err := binary.Read(bytes.NewBuffer(stat.Value), NativeEndian(), &valueVar); err != nil { 493 break 494 } 495 switch stat.Attr.Type { 496 case IFLA_VF_STATS_RX_PACKETS: 497 vfstat.RxPackets = valueVar 498 case IFLA_VF_STATS_TX_PACKETS: 499 vfstat.TxPackets = valueVar 500 case IFLA_VF_STATS_RX_BYTES: 501 vfstat.RxBytes = valueVar 502 case IFLA_VF_STATS_TX_BYTES: 503 vfstat.TxBytes = valueVar 504 case IFLA_VF_STATS_MULTICAST: 505 vfstat.Multicast = valueVar 506 case IFLA_VF_STATS_BROADCAST: 507 vfstat.Broadcast = valueVar 508 case IFLA_VF_STATS_RX_DROPPED: 509 vfstat.RxDropped = valueVar 510 case IFLA_VF_STATS_TX_DROPPED: 511 vfstat.TxDropped = valueVar 512 } 513 } 514 return vfstat 515 } 516 517 // struct ifla_vf_rate { 518 // __u32 vf; 519 // __u32 min_tx_rate; /* Min Bandwidth in Mbps */ 520 // __u32 max_tx_rate; /* Max Bandwidth in Mbps */ 521 // }; 522 523 type VfRate struct { 524 Vf uint32 525 MinTxRate uint32 526 MaxTxRate uint32 527 } 528 529 func (msg *VfRate) Len() int { 530 return SizeofVfRate 531 } 532 533 func DeserializeVfRate(b []byte) *VfRate { 534 return (*VfRate)(unsafe.Pointer(&b[0:SizeofVfRate][0])) 535 } 536 537 func (msg *VfRate) Serialize() []byte { 538 return (*(*[SizeofVfRate]byte)(unsafe.Pointer(msg)))[:] 539 } 540 541 // struct ifla_vf_spoofchk { 542 // __u32 vf; 543 // __u32 setting; 544 // }; 545 546 type VfSpoofchk struct { 547 Vf uint32 548 Setting uint32 549 } 550 551 func (msg *VfSpoofchk) Len() int { 552 return SizeofVfSpoofchk 553 } 554 555 func DeserializeVfSpoofchk(b []byte) *VfSpoofchk { 556 return (*VfSpoofchk)(unsafe.Pointer(&b[0:SizeofVfSpoofchk][0])) 557 } 558 559 func (msg *VfSpoofchk) Serialize() []byte { 560 return (*(*[SizeofVfSpoofchk]byte)(unsafe.Pointer(msg)))[:] 561 } 562 563 // struct ifla_vf_link_state { 564 // __u32 vf; 565 // __u32 link_state; 566 // }; 567 568 type VfLinkState struct { 569 Vf uint32 570 LinkState uint32 571 } 572 573 func (msg *VfLinkState) Len() int { 574 return SizeofVfLinkState 575 } 576 577 func DeserializeVfLinkState(b []byte) *VfLinkState { 578 return (*VfLinkState)(unsafe.Pointer(&b[0:SizeofVfLinkState][0])) 579 } 580 581 func (msg *VfLinkState) Serialize() []byte { 582 return (*(*[SizeofVfLinkState]byte)(unsafe.Pointer(msg)))[:] 583 } 584 585 // struct ifla_vf_rss_query_en { 586 // __u32 vf; 587 // __u32 setting; 588 // }; 589 590 type VfRssQueryEn struct { 591 Vf uint32 592 Setting uint32 593 } 594 595 func (msg *VfRssQueryEn) Len() int { 596 return SizeofVfRssQueryEn 597 } 598 599 func DeserializeVfRssQueryEn(b []byte) *VfRssQueryEn { 600 return (*VfRssQueryEn)(unsafe.Pointer(&b[0:SizeofVfRssQueryEn][0])) 601 } 602 603 func (msg *VfRssQueryEn) Serialize() []byte { 604 return (*(*[SizeofVfRssQueryEn]byte)(unsafe.Pointer(msg)))[:] 605 } 606 607 // struct ifla_vf_trust { 608 // __u32 vf; 609 // __u32 setting; 610 // }; 611 612 type VfTrust struct { 613 Vf uint32 614 Setting uint32 615 } 616 617 func (msg *VfTrust) Len() int { 618 return SizeofVfTrust 619 } 620 621 func DeserializeVfTrust(b []byte) *VfTrust { 622 return (*VfTrust)(unsafe.Pointer(&b[0:SizeofVfTrust][0])) 623 } 624 625 func (msg *VfTrust) Serialize() []byte { 626 return (*(*[SizeofVfTrust]byte)(unsafe.Pointer(msg)))[:] 627 } 628 629 // struct ifla_vf_guid { 630 // __u32 vf; 631 // __u32 rsvd; 632 // __u64 guid; 633 // }; 634 635 type VfGUID struct { 636 Vf uint32 637 Rsvd uint32 638 GUID uint64 639 } 640 641 func (msg *VfGUID) Len() int { 642 return SizeofVfGUID 643 } 644 645 func DeserializeVfGUID(b []byte) *VfGUID { 646 return (*VfGUID)(unsafe.Pointer(&b[0:SizeofVfGUID][0])) 647 } 648 649 func (msg *VfGUID) Serialize() []byte { 650 return (*(*[SizeofVfGUID]byte)(unsafe.Pointer(msg)))[:] 651 } 652 653 const ( 654 XDP_FLAGS_UPDATE_IF_NOEXIST = 1 << iota 655 XDP_FLAGS_SKB_MODE 656 XDP_FLAGS_DRV_MODE 657 XDP_FLAGS_MASK = XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE 658 ) 659 660 const ( 661 IFLA_XDP_UNSPEC = iota 662 IFLA_XDP_FD /* fd of xdp program to attach, or -1 to remove */ 663 IFLA_XDP_ATTACHED /* read-only bool indicating if prog is attached */ 664 IFLA_XDP_FLAGS /* xdp prog related flags */ 665 IFLA_XDP_PROG_ID /* xdp prog id */ 666 IFLA_XDP_MAX = IFLA_XDP_PROG_ID 667 ) 668 669 // XDP program attach mode (used as dump value for IFLA_XDP_ATTACHED) 670 const ( 671 XDP_ATTACHED_NONE = iota 672 XDP_ATTACHED_DRV 673 XDP_ATTACHED_SKB 674 XDP_ATTACHED_HW 675 ) 676 677 const ( 678 IFLA_IPTUN_UNSPEC = iota 679 IFLA_IPTUN_LINK 680 IFLA_IPTUN_LOCAL 681 IFLA_IPTUN_REMOTE 682 IFLA_IPTUN_TTL 683 IFLA_IPTUN_TOS 684 IFLA_IPTUN_ENCAP_LIMIT 685 IFLA_IPTUN_FLOWINFO 686 IFLA_IPTUN_FLAGS 687 IFLA_IPTUN_PROTO 688 IFLA_IPTUN_PMTUDISC 689 IFLA_IPTUN_6RD_PREFIX 690 IFLA_IPTUN_6RD_RELAY_PREFIX 691 IFLA_IPTUN_6RD_PREFIXLEN 692 IFLA_IPTUN_6RD_RELAY_PREFIXLEN 693 IFLA_IPTUN_ENCAP_TYPE 694 IFLA_IPTUN_ENCAP_FLAGS 695 IFLA_IPTUN_ENCAP_SPORT 696 IFLA_IPTUN_ENCAP_DPORT 697 IFLA_IPTUN_COLLECT_METADATA 698 IFLA_IPTUN_MAX = IFLA_IPTUN_COLLECT_METADATA 699 ) 700 701 const ( 702 IFLA_VTI_UNSPEC = iota 703 IFLA_VTI_LINK 704 IFLA_VTI_IKEY 705 IFLA_VTI_OKEY 706 IFLA_VTI_LOCAL 707 IFLA_VTI_REMOTE 708 IFLA_VTI_MAX = IFLA_VTI_REMOTE 709 ) 710 711 const ( 712 IFLA_VRF_UNSPEC = iota 713 IFLA_VRF_TABLE 714 ) 715 716 const ( 717 IFLA_BR_UNSPEC = iota 718 IFLA_BR_FORWARD_DELAY 719 IFLA_BR_HELLO_TIME 720 IFLA_BR_MAX_AGE 721 IFLA_BR_AGEING_TIME 722 IFLA_BR_STP_STATE 723 IFLA_BR_PRIORITY 724 IFLA_BR_VLAN_FILTERING 725 IFLA_BR_VLAN_PROTOCOL 726 IFLA_BR_GROUP_FWD_MASK 727 IFLA_BR_ROOT_ID 728 IFLA_BR_BRIDGE_ID 729 IFLA_BR_ROOT_PORT 730 IFLA_BR_ROOT_PATH_COST 731 IFLA_BR_TOPOLOGY_CHANGE 732 IFLA_BR_TOPOLOGY_CHANGE_DETECTED 733 IFLA_BR_HELLO_TIMER 734 IFLA_BR_TCN_TIMER 735 IFLA_BR_TOPOLOGY_CHANGE_TIMER 736 IFLA_BR_GC_TIMER 737 IFLA_BR_GROUP_ADDR 738 IFLA_BR_FDB_FLUSH 739 IFLA_BR_MCAST_ROUTER 740 IFLA_BR_MCAST_SNOOPING 741 IFLA_BR_MCAST_QUERY_USE_IFADDR 742 IFLA_BR_MCAST_QUERIER 743 IFLA_BR_MCAST_HASH_ELASTICITY 744 IFLA_BR_MCAST_HASH_MAX 745 IFLA_BR_MCAST_LAST_MEMBER_CNT 746 IFLA_BR_MCAST_STARTUP_QUERY_CNT 747 IFLA_BR_MCAST_LAST_MEMBER_INTVL 748 IFLA_BR_MCAST_MEMBERSHIP_INTVL 749 IFLA_BR_MCAST_QUERIER_INTVL 750 IFLA_BR_MCAST_QUERY_INTVL 751 IFLA_BR_MCAST_QUERY_RESPONSE_INTVL 752 IFLA_BR_MCAST_STARTUP_QUERY_INTVL 753 IFLA_BR_NF_CALL_IPTABLES 754 IFLA_BR_NF_CALL_IP6TABLES 755 IFLA_BR_NF_CALL_ARPTABLES 756 IFLA_BR_VLAN_DEFAULT_PVID 757 IFLA_BR_PAD 758 IFLA_BR_VLAN_STATS_ENABLED 759 IFLA_BR_MCAST_STATS_ENABLED 760 IFLA_BR_MCAST_IGMP_VERSION 761 IFLA_BR_MCAST_MLD_VERSION 762 IFLA_BR_MAX = IFLA_BR_MCAST_MLD_VERSION 763 ) 764 765 const ( 766 IFLA_GTP_UNSPEC = iota 767 IFLA_GTP_FD0 768 IFLA_GTP_FD1 769 IFLA_GTP_PDP_HASHSIZE 770 IFLA_GTP_ROLE 771 ) 772 773 const ( 774 GTP_ROLE_GGSN = iota 775 GTP_ROLE_SGSN 776 ) 777 778 const ( 779 IFLA_XFRM_UNSPEC = iota 780 IFLA_XFRM_LINK 781 IFLA_XFRM_IF_ID 782 783 IFLA_XFRM_MAX = iota - 1 784 ) 785 786 const ( 787 IFLA_TUN_UNSPEC = iota 788 IFLA_TUN_OWNER 789 IFLA_TUN_GROUP 790 IFLA_TUN_TYPE 791 IFLA_TUN_PI 792 IFLA_TUN_VNET_HDR 793 IFLA_TUN_PERSIST 794 IFLA_TUN_MULTI_QUEUE 795 IFLA_TUN_NUM_QUEUES 796 IFLA_TUN_NUM_DISABLED_QUEUES 797 IFLA_TUN_MAX = IFLA_TUN_NUM_DISABLED_QUEUES 798 ) 799 800 const ( 801 IFLA_IPOIB_UNSPEC = iota 802 IFLA_IPOIB_PKEY 803 IFLA_IPOIB_MODE 804 IFLA_IPOIB_UMCAST 805 IFLA_IPOIB_MAX = IFLA_IPOIB_UMCAST 806 ) 807 808 const ( 809 IFLA_CAN_UNSPEC = iota 810 IFLA_CAN_BITTIMING 811 IFLA_CAN_BITTIMING_CONST 812 IFLA_CAN_CLOCK 813 IFLA_CAN_STATE 814 IFLA_CAN_CTRLMODE 815 IFLA_CAN_RESTART_MS 816 IFLA_CAN_RESTART 817 IFLA_CAN_BERR_COUNTER 818 IFLA_CAN_DATA_BITTIMING 819 IFLA_CAN_DATA_BITTIMING_CONST 820 IFLA_CAN_TERMINATION 821 IFLA_CAN_TERMINATION_CONST 822 IFLA_CAN_BITRATE_CONST 823 IFLA_CAN_DATA_BITRATE_CONST 824 IFLA_CAN_BITRATE_MAX 825 IFLA_CAN_MAX = IFLA_CAN_BITRATE_MAX 826 ) 827 828 const ( 829 IFLA_BAREUDP_UNSPEC = iota 830 IFLA_BAREUDP_PORT 831 IFLA_BAREUDP_ETHERTYPE 832 IFLA_BAREUDP_SRCPORT_MIN 833 IFLA_BAREUDP_MULTIPROTO_MODE 834 IFLA_BAREUDP_MAX = IFLA_BAREUDP_MULTIPROTO_MODE 835 ) 836 837 const ( 838 IN6_ADDR_GEN_MODE_EUI64 = iota 839 IN6_ADDR_GEN_MODE_NONE 840 IN6_ADDR_GEN_MODE_STABLE_PRIVACY 841 IN6_ADDR_GEN_MODE_RANDOM 842 )