You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: link_linux.go
    path of file: ./repos/podman/vendor/github.com/vishvananda/netlink/nl
    
    the code of the file until where you have to start completion: package nl

import (
	"bytes"
	"encoding/binary"
	"unsafe"
)

const (
	DEFAULT_CHANGE = 0xFFFFFFFF
)

const (
	IFLA_INFO_UNSPEC = iota
	IFLA_INFO_KIND
	IFLA_INFO_DATA
	IFLA_INFO_XSTATS
	IFLA_INFO_SLAVE_KIND
	IFLA_INFO_SLAVE_DATA
	IFLA_INFO_MAX = IFLA_INFO_SLAVE_DATA
)

const (
	IFLA_VLAN_UNSPEC = iota
	IFLA_VLAN_ID
	IFLA_VLAN_FLAGS
	IFLA_VLAN_EGRESS_QOS
	IFLA_VLAN_INGRESS_QOS
	IFLA_VLAN_PROTOCOL
	IFLA_VLAN_MAX = IFLA_VLAN_PROTOCOL
)

const (
	VETH_INFO_UNSPEC = iota
	VETH_INFO_PEER
	VETH_INFO_MAX = VETH_INFO_PEER
)

const (
	IFLA_VXLAN_UNSPEC = iota
	IFLA_VXLAN_ID
	IFLA_VXLAN_GROUP
	IFLA_VXLAN_LINK
	IFLA_VXLAN_LOCAL
	IFLA_VXLAN_TTL
	IFLA_VXLAN_TOS
	IFLA_VXLAN_LEARNING
	IFLA_VXLAN_AGEING
	IFLA_VXLAN_LIMIT
	IFLA_VXLAN_PORT_RANGE
	IFLA_VXLAN_PROXY
	IFLA_VXLAN_RSC
	IFLA_VXLAN_L2MIS
    
func DeserializeVfStats(b []byte) VfStats {
	var vfstat VfStats
	stats, err := ParseRouteAttr(b)
	if err != nil {
		return vfstat
	}
	var valueVar uint64
	for _, stat := range stats {
		if err := binary.Read(bytes.NewBuffer(stat.Value), NativeEndian(), &valueVar); err != nil {
			break
		}
		switch stat.Attr.Type {
		case IFLA_VF_STATS_RX_PACKETS:
			vfstat.RxPackets = valueVar
		case IFLA_VF_STATS_TX_PACKETS:
			vfstat.TxPackets = valueVar
		case IFLA_VF_STATS_RX_BYTES:
			vfstat.RxBytes = valueVar
		case IFLA_VF_STATS_TX_BYTES:
			vfstat.TxBytes = valueVar
		case IFLA_VF_STATS_MULTICAST:
			vfstat.Multicast = valueVar
		case IFLA_VF_STATS_BROADCAST:
			vfstat.Broadcast = valueVar
		case IFLA_VF_STATS_RX_DROPPED:
			vfstat.RxDropped = valueVar
		case IFLA_VF_STATS_TX_DROPPED:
			vfstat.TxDropped = valueVar
		}
	}
	return vfstat
}