github.com/cilium/cilium@v1.16.2/pkg/datapath/linux/ethtool/ethtool_linux.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package ethtool
     5  
     6  import (
     7  	"bytes"
     8  
     9  	"golang.org/x/sys/unix"
    10  )
    11  
    12  func IsVirtualDriver(iface string) (bool, error) {
    13  	fd, err := unix.Socket(unix.AF_INET, unix.SOCK_DGRAM, unix.IPPROTO_IP)
    14  	if err != nil {
    15  		return false, err
    16  	}
    17  	defer unix.Close(fd)
    18  
    19  	info, err := unix.IoctlGetEthtoolDrvinfo(fd, iface)
    20  	if err != nil {
    21  		return false, err
    22  	}
    23  	return string(bytes.TrimRight(info.Driver[:], "\x00")) == "veth", nil
    24  }