123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package nl
- import (
- "fmt"
- "unsafe"
- )
- const (
- SizeofBridgeVlanInfo = 0x04
- )
- /* Bridge Flags */
- const (
- BRIDGE_FLAGS_MASTER = iota /* Bridge command to/from master */
- BRIDGE_FLAGS_SELF /* Bridge command to/from lowerdev */
- )
- /* Bridge management nested attributes
- * [IFLA_AF_SPEC] = {
- * [IFLA_BRIDGE_FLAGS]
- * [IFLA_BRIDGE_MODE]
- * [IFLA_BRIDGE_VLAN_INFO]
- * }
- */
- const (
- IFLA_BRIDGE_FLAGS = iota
- IFLA_BRIDGE_MODE
- IFLA_BRIDGE_VLAN_INFO
- )
- const (
- BRIDGE_VLAN_INFO_MASTER = 1 << iota
- BRIDGE_VLAN_INFO_PVID
- BRIDGE_VLAN_INFO_UNTAGGED
- BRIDGE_VLAN_INFO_RANGE_BEGIN
- BRIDGE_VLAN_INFO_RANGE_END
- )
- // struct bridge_vlan_info {
- // __u16 flags;
- // __u16 vid;
- // };
- type BridgeVlanInfo struct {
- Flags uint16
- Vid uint16
- }
- func (b *BridgeVlanInfo) Serialize() []byte {
- return (*(*[SizeofBridgeVlanInfo]byte)(unsafe.Pointer(b)))[:]
- }
- func DeserializeBridgeVlanInfo(b []byte) *BridgeVlanInfo {
- return (*BridgeVlanInfo)(unsafe.Pointer(&b[0:SizeofBridgeVlanInfo][0]))
- }
- func (b *BridgeVlanInfo) PortVID() bool {
- return b.Flags&BRIDGE_VLAN_INFO_PVID > 0
- }
- func (b *BridgeVlanInfo) EngressUntag() bool {
- return b.Flags&BRIDGE_VLAN_INFO_UNTAGGED > 0
- }
- func (b *BridgeVlanInfo) String() string {
- return fmt.Sprintf("%+v", *b)
- }
- /* New extended info filters for IFLA_EXT_MASK */
- const (
- RTEXT_FILTER_VF = 1 << iota
- RTEXT_FILTER_BRVLAN
- RTEXT_FILTER_BRVLAN_COMPRESSED
- )
|