mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
fix(deps): update github.com/vishvananda/netlink digest to 7c2350b
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This commit is contained in:
2
go.mod
2
go.mod
@ -69,7 +69,7 @@ require (
|
||||
github.com/spf13/pflag v1.0.6
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/vbauerster/mpb/v8 v8.9.1
|
||||
github.com/vishvananda/netlink v1.3.1-0.20240922070040-084abd93d350
|
||||
github.com/vishvananda/netlink v1.3.1-0.20250128002108-7c2350bd140f
|
||||
go.etcd.io/bbolt v1.3.11
|
||||
golang.org/x/crypto v0.32.0
|
||||
golang.org/x/exp v0.0.0-20250103183323-7d7fa50e5329
|
||||
|
4
go.sum
4
go.sum
@ -518,8 +518,8 @@ github.com/vbatts/tar-split v0.11.7 h1:ixZ93pO/GmvaZw4Vq9OwmfZK/kc2zKdPfu0B+gYqs
|
||||
github.com/vbatts/tar-split v0.11.7/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
|
||||
github.com/vbauerster/mpb/v8 v8.9.1 h1:LH5R3lXPfE2e3lIGxN7WNWv3Hl5nWO6LRi2B0L0ERHw=
|
||||
github.com/vbauerster/mpb/v8 v8.9.1/go.mod h1:4XMvznPh8nfe2NpnDo1QTPvW9MVkUhbG90mPWvmOzcQ=
|
||||
github.com/vishvananda/netlink v1.3.1-0.20240922070040-084abd93d350 h1:w5OI+kArIBVksl8UGn6ARQshtPCQvDsbuA9NQie3GIg=
|
||||
github.com/vishvananda/netlink v1.3.1-0.20240922070040-084abd93d350/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs=
|
||||
github.com/vishvananda/netlink v1.3.1-0.20250128002108-7c2350bd140f h1:G5t3qYQ3YL2zMn2kFzRYIPk1EvDvMNV9pP+w+39VtzI=
|
||||
github.com/vishvananda/netlink v1.3.1-0.20250128002108-7c2350bd140f/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs=
|
||||
github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
|
||||
github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
|
||||
|
15
vendor/github.com/vishvananda/netlink/addr_linux.go
generated
vendored
15
vendor/github.com/vishvananda/netlink/addr_linux.go
generated
vendored
@ -18,6 +18,7 @@ import (
|
||||
//
|
||||
// If `addr` is an IPv4 address and the broadcast address is not given, it
|
||||
// will be automatically computed based on the IP mask if /30 or larger.
|
||||
// If `net.IPv4zero` is given as the broadcast address, broadcast is disabled.
|
||||
func AddrAdd(link Link, addr *Addr) error {
|
||||
return pkgHandle.AddrAdd(link, addr)
|
||||
}
|
||||
@ -28,6 +29,7 @@ func AddrAdd(link Link, addr *Addr) error {
|
||||
//
|
||||
// If `addr` is an IPv4 address and the broadcast address is not given, it
|
||||
// will be automatically computed based on the IP mask if /30 or larger.
|
||||
// If `net.IPv4zero` is given as the broadcast address, broadcast is disabled.
|
||||
func (h *Handle) AddrAdd(link Link, addr *Addr) error {
|
||||
req := h.newNetlinkRequest(unix.RTM_NEWADDR, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
|
||||
return h.addrHandle(link, addr, req)
|
||||
@ -39,6 +41,7 @@ func (h *Handle) AddrAdd(link Link, addr *Addr) error {
|
||||
//
|
||||
// If `addr` is an IPv4 address and the broadcast address is not given, it
|
||||
// will be automatically computed based on the IP mask if /30 or larger.
|
||||
// If `net.IPv4zero` is given as the broadcast address, broadcast is disabled.
|
||||
func AddrReplace(link Link, addr *Addr) error {
|
||||
return pkgHandle.AddrReplace(link, addr)
|
||||
}
|
||||
@ -49,6 +52,7 @@ func AddrReplace(link Link, addr *Addr) error {
|
||||
//
|
||||
// If `addr` is an IPv4 address and the broadcast address is not given, it
|
||||
// will be automatically computed based on the IP mask if /30 or larger.
|
||||
// If `net.IPv4zero` is given as the broadcast address, broadcast is disabled.
|
||||
func (h *Handle) AddrReplace(link Link, addr *Addr) error {
|
||||
req := h.newNetlinkRequest(unix.RTM_NEWADDR, unix.NLM_F_CREATE|unix.NLM_F_REPLACE|unix.NLM_F_ACK)
|
||||
return h.addrHandle(link, addr, req)
|
||||
@ -57,18 +61,13 @@ func (h *Handle) AddrReplace(link Link, addr *Addr) error {
|
||||
// AddrDel will delete an IP address from a link device.
|
||||
//
|
||||
// Equivalent to: `ip addr del $addr dev $link`
|
||||
//
|
||||
// If `addr` is an IPv4 address and the broadcast address is not given, it
|
||||
// will be automatically computed based on the IP mask if /30 or larger.
|
||||
func AddrDel(link Link, addr *Addr) error {
|
||||
return pkgHandle.AddrDel(link, addr)
|
||||
}
|
||||
|
||||
// AddrDel will delete an IP address from a link device.
|
||||
// Equivalent to: `ip addr del $addr dev $link`
|
||||
//
|
||||
// If `addr` is an IPv4 address and the broadcast address is not given, it
|
||||
// will be automatically computed based on the IP mask if /30 or larger.
|
||||
// Equivalent to: `ip addr del $addr dev $link`
|
||||
func (h *Handle) AddrDel(link Link, addr *Addr) error {
|
||||
req := h.newNetlinkRequest(unix.RTM_DELADDR, unix.NLM_F_ACK)
|
||||
return h.addrHandle(link, addr, req)
|
||||
@ -142,6 +141,10 @@ func (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error
|
||||
addr.Broadcast = calcBroadcast
|
||||
}
|
||||
|
||||
if net.IPv4zero.Equal(addr.Broadcast) {
|
||||
addr.Broadcast = nil
|
||||
}
|
||||
|
||||
if addr.Broadcast != nil {
|
||||
req.AddData(nl.NewRtAttr(unix.IFA_BROADCAST, addr.Broadcast))
|
||||
}
|
||||
|
7
vendor/github.com/vishvananda/netlink/conntrack_linux.go
generated
vendored
7
vendor/github.com/vishvananda/netlink/conntrack_linux.go
generated
vendored
@ -159,13 +159,18 @@ func (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFami
|
||||
// ConntrackDeleteFilters deletes entries on the specified table matching any of the specified filters using the netlink handle passed
|
||||
// conntrack -D [table] parameters Delete conntrack or expectation
|
||||
func (h *Handle) ConntrackDeleteFilters(table ConntrackTableType, family InetFamily, filters ...CustomConntrackFilter) (uint, error) {
|
||||
var errMsgs []string
|
||||
res, err := h.dumpConntrackTable(table, family)
|
||||
if err != nil {
|
||||
if !errors.Is(err, ErrDumpInterrupted) {
|
||||
return 0, err
|
||||
}
|
||||
// This allows us to at least do a best effort to try to clean the
|
||||
// entries matching the filter.
|
||||
errMsgs = append(errMsgs, err.Error())
|
||||
}
|
||||
|
||||
var matched uint
|
||||
var errMsgs []string
|
||||
for _, dataRaw := range res {
|
||||
flow := parseRawData(dataRaw)
|
||||
for _, filter := range filters {
|
||||
|
29
vendor/github.com/vishvananda/netlink/filter.go
generated
vendored
29
vendor/github.com/vishvananda/netlink/filter.go
generated
vendored
@ -231,6 +231,35 @@ func NewCsumAction() *CsumAction {
|
||||
}
|
||||
}
|
||||
|
||||
type VlanAct int8
|
||||
|
||||
type VlanAction struct {
|
||||
ActionAttrs
|
||||
Action VlanAct
|
||||
VlanID uint16
|
||||
}
|
||||
|
||||
const (
|
||||
TCA_VLAN_ACT_POP VlanAct = 1
|
||||
TCA_VLAN_ACT_PUSH VlanAct = 2
|
||||
)
|
||||
|
||||
func (action *VlanAction) Type() string {
|
||||
return "vlan"
|
||||
}
|
||||
|
||||
func (action *VlanAction) Attrs() *ActionAttrs {
|
||||
return &action.ActionAttrs
|
||||
}
|
||||
|
||||
func NewVlanAction() *VlanAction {
|
||||
return &VlanAction{
|
||||
ActionAttrs: ActionAttrs{
|
||||
Action: TC_ACT_PIPE,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
type MirredAct uint8
|
||||
|
||||
func (a MirredAct) String() string {
|
||||
|
49
vendor/github.com/vishvananda/netlink/filter_linux.go
generated
vendored
49
vendor/github.com/vishvananda/netlink/filter_linux.go
generated
vendored
@ -65,6 +65,9 @@ type Flower struct {
|
||||
EncSrcIPMask net.IPMask
|
||||
EncDestPort uint16
|
||||
EncKeyId uint32
|
||||
SrcMac net.HardwareAddr
|
||||
DestMac net.HardwareAddr
|
||||
VlanId uint16
|
||||
SkipHw bool
|
||||
SkipSw bool
|
||||
IPProto *nl.IPProto
|
||||
@ -135,6 +138,15 @@ func (filter *Flower) encode(parent *nl.RtAttr) error {
|
||||
if filter.EncKeyId != 0 {
|
||||
parent.AddRtAttr(nl.TCA_FLOWER_KEY_ENC_KEY_ID, htonl(filter.EncKeyId))
|
||||
}
|
||||
if filter.SrcMac != nil {
|
||||
parent.AddRtAttr(nl.TCA_FLOWER_KEY_ETH_SRC, filter.SrcMac)
|
||||
}
|
||||
if filter.DestMac != nil {
|
||||
parent.AddRtAttr(nl.TCA_FLOWER_KEY_ETH_DST, filter.DestMac)
|
||||
}
|
||||
if filter.VlanId != 0 {
|
||||
parent.AddRtAttr(nl.TCA_FLOWER_KEY_VLAN_ID, nl.Uint16Attr(filter.VlanId))
|
||||
}
|
||||
if filter.IPProto != nil {
|
||||
ipproto := *filter.IPProto
|
||||
parent.AddRtAttr(nl.TCA_FLOWER_KEY_IP_PROTO, ipproto.Serialize())
|
||||
@ -201,6 +213,13 @@ func (filter *Flower) decode(data []syscall.NetlinkRouteAttr) error {
|
||||
filter.EncDestPort = ntohs(datum.Value)
|
||||
case nl.TCA_FLOWER_KEY_ENC_KEY_ID:
|
||||
filter.EncKeyId = ntohl(datum.Value)
|
||||
case nl.TCA_FLOWER_KEY_ETH_SRC:
|
||||
filter.SrcMac = datum.Value
|
||||
case nl.TCA_FLOWER_KEY_ETH_DST:
|
||||
filter.DestMac = datum.Value
|
||||
case nl.TCA_FLOWER_KEY_VLAN_ID:
|
||||
filter.VlanId = native.Uint16(datum.Value[0:2])
|
||||
filter.EthType = unix.ETH_P_8021Q
|
||||
case nl.TCA_FLOWER_KEY_IP_PROTO:
|
||||
val := new(nl.IPProto)
|
||||
*val = nl.IPProto(datum.Value[0])
|
||||
@ -622,6 +641,22 @@ func EncodeActions(attr *nl.RtAttr, actions []Action) error {
|
||||
}
|
||||
toTcGen(action.Attrs(), &mirred.TcGen)
|
||||
aopts.AddRtAttr(nl.TCA_MIRRED_PARMS, mirred.Serialize())
|
||||
case *VlanAction:
|
||||
table := attr.AddRtAttr(tabIndex, nil)
|
||||
tabIndex++
|
||||
table.AddRtAttr(nl.TCA_ACT_KIND, nl.ZeroTerminated("vlan"))
|
||||
aopts := table.AddRtAttr(nl.TCA_ACT_OPTIONS, nil)
|
||||
vlan := nl.TcVlan{
|
||||
Action: int32(action.Action),
|
||||
}
|
||||
toTcGen(action.Attrs(), &vlan.TcGen)
|
||||
aopts.AddRtAttr(nl.TCA_VLAN_PARMS, vlan.Serialize())
|
||||
if action.Action == TCA_VLAN_ACT_PUSH && action.VlanID == 0 {
|
||||
return fmt.Errorf("vlan id is required for push action")
|
||||
}
|
||||
if action.VlanID != 0 {
|
||||
aopts.AddRtAttr(nl.TCA_VLAN_PUSH_VLAN_ID, nl.Uint16Attr(action.VlanID))
|
||||
}
|
||||
case *TunnelKeyAction:
|
||||
table := attr.AddRtAttr(tabIndex, nil)
|
||||
tabIndex++
|
||||
@ -792,6 +827,8 @@ func parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {
|
||||
action = &CsumAction{}
|
||||
case "gact":
|
||||
action = &GenericAction{}
|
||||
case "vlan":
|
||||
action = &VlanAction{}
|
||||
case "tunnel_key":
|
||||
action = &TunnelKeyAction{}
|
||||
case "skbedit":
|
||||
@ -822,7 +859,17 @@ func parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {
|
||||
tcTs := nl.DeserializeTcf(adatum.Value)
|
||||
actionTimestamp = toTimeStamp(tcTs)
|
||||
}
|
||||
|
||||
case "vlan":
|
||||
switch adatum.Attr.Type {
|
||||
case nl.TCA_VLAN_PARMS:
|
||||
vlan := *nl.DeserializeTcVlan(adatum.Value)
|
||||
action.(*VlanAction).ActionAttrs = ActionAttrs{}
|
||||
toAttrs(&vlan.TcGen, action.Attrs())
|
||||
action.(*VlanAction).Action = VlanAct(vlan.Action)
|
||||
case nl.TCA_VLAN_PUSH_VLAN_ID:
|
||||
vlanId := native.Uint16(adatum.Value[0:2])
|
||||
action.(*VlanAction).VlanID = vlanId
|
||||
}
|
||||
case "tunnel_key":
|
||||
switch adatum.Attr.Type {
|
||||
case nl.TCA_TUNNEL_KEY_PARMS:
|
||||
|
16
vendor/github.com/vishvananda/netlink/link.go
generated
vendored
16
vendor/github.com/vishvananda/netlink/link.go
generated
vendored
@ -56,6 +56,8 @@ type LinkAttrs struct {
|
||||
Vfs []VfInfo // virtual functions available on link
|
||||
Group uint32
|
||||
PermHWAddr net.HardwareAddr
|
||||
ParentDev string
|
||||
ParentDevBus string
|
||||
Slave LinkSlave
|
||||
}
|
||||
|
||||
@ -377,6 +379,13 @@ const (
|
||||
NETKIT_POLICY_BLACKHOLE NetkitPolicy = 2
|
||||
)
|
||||
|
||||
type NetkitScrub int
|
||||
|
||||
const (
|
||||
NETKIT_SCRUB_NONE NetkitScrub = 0
|
||||
NETKIT_SCRUB_DEFAULT NetkitScrub = 1
|
||||
)
|
||||
|
||||
func (n *Netkit) IsPrimary() bool {
|
||||
return n.isPrimary
|
||||
}
|
||||
@ -391,6 +400,9 @@ type Netkit struct {
|
||||
Mode NetkitMode
|
||||
Policy NetkitPolicy
|
||||
PeerPolicy NetkitPolicy
|
||||
Scrub NetkitScrub
|
||||
PeerScrub NetkitScrub
|
||||
supportsScrub bool
|
||||
isPrimary bool
|
||||
peerLinkAttrs LinkAttrs
|
||||
}
|
||||
@ -403,6 +415,10 @@ func (n *Netkit) Type() string {
|
||||
return "netkit"
|
||||
}
|
||||
|
||||
func (n *Netkit) SupportsScrub() bool {
|
||||
return n.supportsScrub
|
||||
}
|
||||
|
||||
// Veth devices must specify PeerName on create
|
||||
type Veth struct {
|
||||
LinkAttrs
|
||||
|
16
vendor/github.com/vishvananda/netlink/link_linux.go
generated
vendored
16
vendor/github.com/vishvananda/netlink/link_linux.go
generated
vendored
@ -2263,6 +2263,10 @@ func LinkDeserialize(hdr *unix.NlMsghdr, m []byte) (Link, error) {
|
||||
break
|
||||
}
|
||||
}
|
||||
case unix.IFLA_PARENT_DEV_NAME:
|
||||
base.ParentDev = string(attr.Value[:len(attr.Value)-1])
|
||||
case unix.IFLA_PARENT_DEV_BUS_NAME:
|
||||
base.ParentDevBus = string(attr.Value[:len(attr.Value)-1])
|
||||
}
|
||||
}
|
||||
|
||||
@ -2676,6 +2680,8 @@ func addNetkitAttrs(nk *Netkit, linkInfo *nl.RtAttr, flag int) error {
|
||||
data.AddRtAttr(nl.IFLA_NETKIT_MODE, nl.Uint32Attr(uint32(nk.Mode)))
|
||||
data.AddRtAttr(nl.IFLA_NETKIT_POLICY, nl.Uint32Attr(uint32(nk.Policy)))
|
||||
data.AddRtAttr(nl.IFLA_NETKIT_PEER_POLICY, nl.Uint32Attr(uint32(nk.PeerPolicy)))
|
||||
data.AddRtAttr(nl.IFLA_NETKIT_SCRUB, nl.Uint32Attr(uint32(nk.Scrub)))
|
||||
data.AddRtAttr(nl.IFLA_NETKIT_PEER_SCRUB, nl.Uint32Attr(uint32(nk.PeerScrub)))
|
||||
|
||||
if (flag & unix.NLM_F_EXCL) == 0 {
|
||||
// Modifying peer link attributes will not take effect
|
||||
@ -2736,6 +2742,12 @@ func parseNetkitData(link Link, data []syscall.NetlinkRouteAttr) {
|
||||
netkit.Policy = NetkitPolicy(native.Uint32(datum.Value[0:4]))
|
||||
case nl.IFLA_NETKIT_PEER_POLICY:
|
||||
netkit.PeerPolicy = NetkitPolicy(native.Uint32(datum.Value[0:4]))
|
||||
case nl.IFLA_NETKIT_SCRUB:
|
||||
netkit.supportsScrub = true
|
||||
netkit.Scrub = NetkitScrub(native.Uint32(datum.Value[0:4]))
|
||||
case nl.IFLA_NETKIT_PEER_SCRUB:
|
||||
netkit.supportsScrub = true
|
||||
netkit.PeerScrub = NetkitScrub(native.Uint32(datum.Value[0:4]))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3033,7 +3045,6 @@ func parseMacvlanData(link Link, data []syscall.NetlinkRouteAttr) {
|
||||
}
|
||||
}
|
||||
|
||||
// copied from pkg/net_linux.go
|
||||
func linkFlags(rawFlags uint32) net.Flags {
|
||||
var f net.Flags
|
||||
if rawFlags&unix.IFF_UP != 0 {
|
||||
@ -3051,6 +3062,9 @@ func linkFlags(rawFlags uint32) net.Flags {
|
||||
if rawFlags&unix.IFF_MULTICAST != 0 {
|
||||
f |= net.FlagMulticast
|
||||
}
|
||||
if rawFlags&unix.IFF_RUNNING != 0 {
|
||||
f |= net.FlagRunning
|
||||
}
|
||||
return f
|
||||
}
|
||||
|
||||
|
2
vendor/github.com/vishvananda/netlink/nl/link_linux.go
generated
vendored
2
vendor/github.com/vishvananda/netlink/nl/link_linux.go
generated
vendored
@ -38,6 +38,8 @@ const (
|
||||
IFLA_NETKIT_POLICY
|
||||
IFLA_NETKIT_PEER_POLICY
|
||||
IFLA_NETKIT_MODE
|
||||
IFLA_NETKIT_SCRUB
|
||||
IFLA_NETKIT_PEER_SCRUB
|
||||
IFLA_NETKIT_MAX = IFLA_NETKIT_MODE
|
||||
)
|
||||
|
||||
|
38
vendor/github.com/vishvananda/netlink/nl/tc_linux.go
generated
vendored
38
vendor/github.com/vishvananda/netlink/nl/tc_linux.go
generated
vendored
@ -115,6 +115,7 @@ const (
|
||||
SizeofTcConnmark = SizeofTcGen + 0x04
|
||||
SizeofTcCsum = SizeofTcGen + 0x04
|
||||
SizeofTcMirred = SizeofTcGen + 0x08
|
||||
SizeofTcVlan = SizeofTcGen + 0x04
|
||||
SizeofTcTunnelKey = SizeofTcGen + 0x04
|
||||
SizeofTcSkbEdit = SizeofTcGen
|
||||
SizeofTcPolice = 2*SizeofTcRateSpec + 0x20
|
||||
@ -816,6 +817,41 @@ func (x *TcMirred) Serialize() []byte {
|
||||
return (*(*[SizeofTcMirred]byte)(unsafe.Pointer(x)))[:]
|
||||
}
|
||||
|
||||
const (
|
||||
TCA_VLAN_UNSPEC = iota
|
||||
TCA_VLAN_TM
|
||||
TCA_VLAN_PARMS
|
||||
TCA_VLAN_PUSH_VLAN_ID
|
||||
TCA_VLAN_PUSH_VLAN_PROTOCOL
|
||||
TCA_VLAN_PAD
|
||||
TCA_VLAN_PUSH_VLAN_PRIORITY
|
||||
TCA_VLAN_PUSH_ETH_DST
|
||||
TCA_VLAN_PUSH_ETH_SRC
|
||||
TCA_VLAN_MAX
|
||||
)
|
||||
|
||||
//struct tc_vlan {
|
||||
// tc_gen;
|
||||
// int v_action;
|
||||
//};
|
||||
|
||||
type TcVlan struct {
|
||||
TcGen
|
||||
Action int32
|
||||
}
|
||||
|
||||
func (msg *TcVlan) Len() int {
|
||||
return SizeofTcVlan
|
||||
}
|
||||
|
||||
func DeserializeTcVlan(b []byte) *TcVlan {
|
||||
return (*TcVlan)(unsafe.Pointer(&b[0:SizeofTcVlan][0]))
|
||||
}
|
||||
|
||||
func (x *TcVlan) Serialize() []byte {
|
||||
return (*(*[SizeofTcVlan]byte)(unsafe.Pointer(x)))[:]
|
||||
}
|
||||
|
||||
const (
|
||||
TCA_TUNNEL_KEY_UNSPEC = iota
|
||||
TCA_TUNNEL_KEY_TM
|
||||
@ -1239,7 +1275,7 @@ const (
|
||||
)
|
||||
|
||||
// /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
|
||||
// * means no specific header type - offset is relative to the network layer
|
||||
// - means no specific header type - offset is relative to the network layer
|
||||
// */
|
||||
type PeditHeaderType uint16
|
||||
|
||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -1116,7 +1116,7 @@ github.com/vbauerster/mpb/v8
|
||||
github.com/vbauerster/mpb/v8/cwriter
|
||||
github.com/vbauerster/mpb/v8/decor
|
||||
github.com/vbauerster/mpb/v8/internal
|
||||
# github.com/vishvananda/netlink v1.3.1-0.20240922070040-084abd93d350
|
||||
# github.com/vishvananda/netlink v1.3.1-0.20250128002108-7c2350bd140f
|
||||
## explicit; go 1.12
|
||||
github.com/vishvananda/netlink
|
||||
github.com/vishvananda/netlink/nl
|
||||
|
Reference in New Issue
Block a user