github.com/openshift/dpu-operator@v0.0.0-20240502153209-3af840d137c2/dpu-cni/pkgs/sriovutils/netlink_manager.go (about)

     1  package sriovutils
     2  
     3  import (
     4  	"net"
     5  
     6  	"github.com/vishvananda/netlink"
     7  )
     8  
     9  // Mocked netlink interface, this is required for unit tests
    10  
    11  // NetlinkManager is an interface to mock nelink library
    12  type NetlinkManager interface {
    13  	LinkByName(string) (netlink.Link, error)
    14  	LinkSetVfVlanQosProto(netlink.Link, int, int, int, int) error
    15  	LinkSetVfHardwareAddr(netlink.Link, int, net.HardwareAddr) error
    16  	LinkSetHardwareAddr(netlink.Link, net.HardwareAddr) error
    17  	LinkSetUp(netlink.Link) error
    18  	LinkSetDown(netlink.Link) error
    19  	LinkSetNsFd(netlink.Link, int) error
    20  	LinkSetName(netlink.Link, string) error
    21  	LinkSetVfRate(netlink.Link, int, int, int) error
    22  	LinkSetVfSpoofchk(netlink.Link, int, bool) error
    23  	LinkSetVfTrust(netlink.Link, int, bool) error
    24  	LinkSetVfState(netlink.Link, int, uint32) error
    25  }
    26  
    27  // MyNetlink NetlinkManager
    28  type MyNetlink struct {
    29  	NetlinkManager
    30  }
    31  
    32  // LinkByName implements NetlinkManager
    33  func (n *MyNetlink) LinkByName(name string) (netlink.Link, error) {
    34  	return netlink.LinkByName(name)
    35  }
    36  
    37  // LinkSetVfVlanQosProto sets VLAN ID, QoS and Proto field for given VF using NetlinkManager
    38  func (n *MyNetlink) LinkSetVfVlanQosProto(link netlink.Link, vf, vlan, qos, proto int) error {
    39  	return netlink.LinkSetVfVlanQosProto(link, vf, vlan, qos, proto)
    40  }
    41  
    42  // LinkSetVfHardwareAddr using NetlinkManager
    43  func (n *MyNetlink) LinkSetVfHardwareAddr(link netlink.Link, vf int, hwaddr net.HardwareAddr) error {
    44  	return netlink.LinkSetVfHardwareAddr(link, vf, hwaddr)
    45  }
    46  
    47  // LinkSetHardwareAddr using NetlinkManager
    48  func (n *MyNetlink) LinkSetHardwareAddr(link netlink.Link, hwaddr net.HardwareAddr) error {
    49  	return netlink.LinkSetHardwareAddr(link, hwaddr)
    50  }
    51  
    52  // LinkSetUp using NetlinkManager
    53  func (n *MyNetlink) LinkSetUp(link netlink.Link) error {
    54  	return netlink.LinkSetUp(link)
    55  }
    56  
    57  // LinkSetDown using NetlinkManager
    58  func (n *MyNetlink) LinkSetDown(link netlink.Link) error {
    59  	return netlink.LinkSetDown(link)
    60  }
    61  
    62  // LinkSetNsFd using NetlinkManager
    63  func (n *MyNetlink) LinkSetNsFd(link netlink.Link, fd int) error {
    64  	return netlink.LinkSetNsFd(link, fd)
    65  }
    66  
    67  // LinkSetName using NetlinkManager
    68  func (n *MyNetlink) LinkSetName(link netlink.Link, name string) error {
    69  	return netlink.LinkSetName(link, name)
    70  }
    71  
    72  // LinkSetVfRate using NetlinkManager
    73  func (n *MyNetlink) LinkSetVfRate(link netlink.Link, vf int, minRate int, maxRate int) error {
    74  	return netlink.LinkSetVfRate(link, vf, minRate, maxRate)
    75  }
    76  
    77  // LinkSetVfSpoofchk using NetlinkManager
    78  func (n *MyNetlink) LinkSetVfSpoofchk(link netlink.Link, vf int, check bool) error {
    79  	return netlink.LinkSetVfSpoofchk(link, vf, check)
    80  }
    81  
    82  // LinkSetVfTrust using NetlinkManager
    83  func (n *MyNetlink) LinkSetVfTrust(link netlink.Link, vf int, state bool) error {
    84  	return netlink.LinkSetVfTrust(link, vf, state)
    85  }
    86  
    87  // LinkSetVfState using NetlinkManager
    88  func (n *MyNetlink) LinkSetVfState(link netlink.Link, vf int, state uint32) error {
    89  	return netlink.LinkSetVfState(link, vf, state)
    90  }