mirror of
https://github.com/vishvananda/netlink
synced 2025-03-21 10:38:04 +00:00
Link: Fix LinkByName with long (>15 char) name by using altnames
This commit is contained in:
parent
124bb8e721
commit
8ac83962db
@ -1867,6 +1867,9 @@ func (h *Handle) LinkByName(name string) (Link, error) {
|
||||
req.AddData(attr)
|
||||
|
||||
nameData := nl.NewRtAttr(unix.IFLA_IFNAME, nl.ZeroTerminated(name))
|
||||
if len(name) > 15 {
|
||||
nameData = nl.NewRtAttr(unix.IFLA_ALT_IFNAME, nl.ZeroTerminated(name))
|
||||
}
|
||||
req.AddData(nameData)
|
||||
|
||||
link, err := execGetLink(req)
|
||||
|
60
link_test.go
60
link_test.go
@ -10,6 +10,8 @@ import (
|
||||
"net"
|
||||
"os"
|
||||
"os/exec"
|
||||
"sort"
|
||||
"strings"
|
||||
"syscall"
|
||||
"testing"
|
||||
"time"
|
||||
@ -1899,14 +1901,15 @@ func TestLinkAltName(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = LinkAddAltName(link, "altname")
|
||||
if err != nil {
|
||||
t.Fatalf("Could not add altname: %v", err)
|
||||
}
|
||||
altNames := []string{"altname", "altname2", "some_longer_altname"}
|
||||
sort.Strings(altNames)
|
||||
altNamesStr := strings.Join(altNames, ",")
|
||||
|
||||
err = LinkAddAltName(link, "altname2")
|
||||
for _, altname := range altNames {
|
||||
err = LinkAddAltName(link, altname)
|
||||
if err != nil {
|
||||
t.Fatalf("Could not add altname: %v", err)
|
||||
t.Fatalf("Could not add %s: %v", altname, err)
|
||||
}
|
||||
}
|
||||
|
||||
link, err = LinkByName("bar")
|
||||
@ -1914,32 +1917,24 @@ func TestLinkAltName(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
altNameExist := false
|
||||
altName2Exist := false
|
||||
for _, altName := range link.Attrs().AltNames {
|
||||
if altName == "altname" {
|
||||
altNameExist = true
|
||||
} else if altName == "altname2" {
|
||||
altName2Exist = true
|
||||
sort.Strings(link.Attrs().AltNames)
|
||||
linkAltNamesStr := strings.Join(link.Attrs().AltNames, ",")
|
||||
|
||||
if altNamesStr != linkAltNamesStr {
|
||||
t.Fatalf("Expected %s AltNames, got %s", altNamesStr, linkAltNamesStr)
|
||||
}
|
||||
|
||||
}
|
||||
if !altNameExist {
|
||||
t.Fatal("Could not find altname")
|
||||
}
|
||||
|
||||
if !altName2Exist {
|
||||
t.Fatal("Could not find altname2")
|
||||
}
|
||||
|
||||
link, err = LinkByName("altname")
|
||||
for _, altname := range altNames {
|
||||
link, err = LinkByName(altname)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
err = LinkDelAltName(link, "altname")
|
||||
for idx, altName := range altNames {
|
||||
err = LinkDelAltName(link, altName)
|
||||
if err != nil {
|
||||
t.Fatalf("Could not delete altname: %v", err)
|
||||
t.Fatalf("Could not delete %s: %v", altName, err)
|
||||
}
|
||||
|
||||
link, err = LinkByName("bar")
|
||||
@ -1947,16 +1942,15 @@ func TestLinkAltName(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
altNameExist = false
|
||||
for _, altName := range link.Attrs().AltNames {
|
||||
if altName == "altname" {
|
||||
altNameExist = true
|
||||
break
|
||||
sort.Strings(link.Attrs().AltNames)
|
||||
linkAltNamesStr := strings.Join(link.Attrs().AltNames, ",")
|
||||
altNamesStr := strings.Join(altNames[idx+1:], ",")
|
||||
|
||||
if linkAltNamesStr != altNamesStr {
|
||||
t.Fatalf("Expected %s AltNames, got %s", altNamesStr, linkAltNamesStr)
|
||||
}
|
||||
}
|
||||
if altNameExist {
|
||||
t.Fatal("altname still exist")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestLinkSetARP(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user