mirror of
https://github.com/vishvananda/netlink
synced 2025-03-23 19:46:50 +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)
|
req.AddData(attr)
|
||||||
|
|
||||||
nameData := nl.NewRtAttr(unix.IFLA_IFNAME, nl.ZeroTerminated(name))
|
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)
|
req.AddData(nameData)
|
||||||
|
|
||||||
link, err := execGetLink(req)
|
link, err := execGetLink(req)
|
||||||
|
60
link_test.go
60
link_test.go
@ -10,6 +10,8 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -1899,14 +1901,15 @@ func TestLinkAltName(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = LinkAddAltName(link, "altname")
|
altNames := []string{"altname", "altname2", "some_longer_altname"}
|
||||||
if err != nil {
|
sort.Strings(altNames)
|
||||||
t.Fatalf("Could not add altname: %v", err)
|
altNamesStr := strings.Join(altNames, ",")
|
||||||
}
|
|
||||||
|
|
||||||
err = LinkAddAltName(link, "altname2")
|
for _, altname := range altNames {
|
||||||
|
err = LinkAddAltName(link, altname)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Could not add altname: %v", err)
|
t.Fatalf("Could not add %s: %v", altname, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link, err = LinkByName("bar")
|
link, err = LinkByName("bar")
|
||||||
@ -1914,32 +1917,24 @@ func TestLinkAltName(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
altNameExist := false
|
sort.Strings(link.Attrs().AltNames)
|
||||||
altName2Exist := false
|
linkAltNamesStr := strings.Join(link.Attrs().AltNames, ",")
|
||||||
for _, altName := range link.Attrs().AltNames {
|
|
||||||
if altName == "altname" {
|
if altNamesStr != linkAltNamesStr {
|
||||||
altNameExist = true
|
t.Fatalf("Expected %s AltNames, got %s", altNamesStr, linkAltNamesStr)
|
||||||
} else if altName == "altname2" {
|
|
||||||
altName2Exist = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
for _, altname := range altNames {
|
||||||
if !altNameExist {
|
link, err = LinkByName(altname)
|
||||||
t.Fatal("Could not find altname")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !altName2Exist {
|
|
||||||
t.Fatal("Could not find altname2")
|
|
||||||
}
|
|
||||||
|
|
||||||
link, err = LinkByName("altname")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = LinkDelAltName(link, "altname")
|
for idx, altName := range altNames {
|
||||||
|
err = LinkDelAltName(link, altName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Could not delete altname: %v", err)
|
t.Fatalf("Could not delete %s: %v", altName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
link, err = LinkByName("bar")
|
link, err = LinkByName("bar")
|
||||||
@ -1947,16 +1942,15 @@ func TestLinkAltName(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
altNameExist = false
|
sort.Strings(link.Attrs().AltNames)
|
||||||
for _, altName := range link.Attrs().AltNames {
|
linkAltNamesStr := strings.Join(link.Attrs().AltNames, ",")
|
||||||
if altName == "altname" {
|
altNamesStr := strings.Join(altNames[idx+1:], ",")
|
||||||
altNameExist = true
|
|
||||||
break
|
if linkAltNamesStr != altNamesStr {
|
||||||
|
t.Fatalf("Expected %s AltNames, got %s", altNamesStr, linkAltNamesStr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if altNameExist {
|
|
||||||
t.Fatal("altname still exist")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLinkSetARP(t *testing.T) {
|
func TestLinkSetARP(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user