mirror of
https://github.com/vishvananda/netlink
synced 2025-04-09 11:01:39 +00:00
Add LinkSetName
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
This commit is contained in:
parent
7663a3b4b6
commit
085dc47dcc
@ -80,6 +80,27 @@ func LinkSetMTU(link Link, mtu int) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LinkSetName sets the name of the link device.
|
||||||
|
// Equivalent to: `ip link set $link name $name`
|
||||||
|
func LinkSetName(link Link, name string) error {
|
||||||
|
base := link.Attrs()
|
||||||
|
ensureIndex(base)
|
||||||
|
req := nl.NewNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
|
||||||
|
|
||||||
|
msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
|
||||||
|
msg.Type = syscall.RTM_SETLINK
|
||||||
|
msg.Flags = syscall.NLM_F_REQUEST
|
||||||
|
msg.Index = int32(base.Index)
|
||||||
|
msg.Change = nl.DEFAULT_CHANGE
|
||||||
|
req.AddData(msg)
|
||||||
|
|
||||||
|
data := nl.NewRtAttr(syscall.IFLA_IFNAME, []byte(name))
|
||||||
|
req.AddData(data)
|
||||||
|
|
||||||
|
_, err := req.Execute(syscall.NETLINK_ROUTE, 0)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// LinkSetMaster sets the master of the link device.
|
// LinkSetMaster sets the master of the link device.
|
||||||
// Equivalent to: `ip link set $link master $master`
|
// Equivalent to: `ip link set $link master $master`
|
||||||
func LinkSetMaster(link Link, master *Bridge) error {
|
func LinkSetMaster(link Link, master *Bridge) error {
|
||||||
|
39
link_test.go
39
link_test.go
@ -399,3 +399,42 @@ func TestLinkByIndex(t *testing.T) {
|
|||||||
t.Fatalf("LinkByIndex(%v) found deleted link", err)
|
t.Fatalf("LinkByIndex(%v) found deleted link", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLinkSet(t *testing.T) {
|
||||||
|
tearDown := setUpNetlinkTest(t)
|
||||||
|
defer tearDown()
|
||||||
|
|
||||||
|
iface := &Dummy{LinkAttrs{Name: "foo"}}
|
||||||
|
if err := LinkAdd(iface); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
link, err := LinkByName("foo")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = LinkSetName(link, "bar")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Could not change interface name: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
link, err = LinkByName("bar")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Interface name not changed: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = LinkSetMTU(link, 1400)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Could not set MTU: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
link, err = LinkByName("bar")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if link.Attrs().MTU != 1400 {
|
||||||
|
t.Fatal("MTU not changed!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user