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 }