1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package netlink
- import "testing"
- func TestProtinfo(t *testing.T) {
- tearDown := setUpNetlinkTest(t)
- defer tearDown()
- master := &Bridge{LinkAttrs{Name: "foo"}}
- if err := LinkAdd(master); err != nil {
- t.Fatal(err)
- }
- iface1 := &Dummy{LinkAttrs{Name: "bar1", MasterIndex: master.Index}}
- iface2 := &Dummy{LinkAttrs{Name: "bar2", MasterIndex: master.Index}}
- iface3 := &Dummy{LinkAttrs{Name: "bar3"}}
- if err := LinkAdd(iface1); err != nil {
- t.Fatal(err)
- }
- if err := LinkAdd(iface2); err != nil {
- t.Fatal(err)
- }
- if err := LinkAdd(iface3); err != nil {
- t.Fatal(err)
- }
- oldpi1, err := LinkGetProtinfo(iface1)
- if err != nil {
- t.Fatal(err)
- }
- oldpi2, err := LinkGetProtinfo(iface2)
- if err != nil {
- t.Fatal(err)
- }
- if err := LinkSetHairpin(iface1, true); err != nil {
- t.Fatal(err)
- }
- if err := LinkSetRootBlock(iface1, true); err != nil {
- t.Fatal(err)
- }
- pi1, err := LinkGetProtinfo(iface1)
- if err != nil {
- t.Fatal(err)
- }
- if !pi1.Hairpin {
- t.Fatalf("Hairpin mode is not enabled for %s, but should", iface1.Name)
- }
- if !pi1.RootBlock {
- t.Fatalf("RootBlock is not enabled for %s, but should", iface1.Name)
- }
- if pi1.Guard != oldpi1.Guard {
- t.Fatalf("Guard field was changed for %s but shouldn't", iface1.Name)
- }
- if pi1.FastLeave != oldpi1.FastLeave {
- t.Fatalf("FastLeave field was changed for %s but shouldn't", iface1.Name)
- }
- if pi1.Learning != oldpi1.Learning {
- t.Fatalf("Learning field was changed for %s but shouldn't", iface1.Name)
- }
- if pi1.Flood != oldpi1.Flood {
- t.Fatalf("Flood field was changed for %s but shouldn't", iface1.Name)
- }
- if err := LinkSetGuard(iface2, true); err != nil {
- t.Fatal(err)
- }
- if err := LinkSetLearning(iface2, false); err != nil {
- t.Fatal(err)
- }
- pi2, err := LinkGetProtinfo(iface2)
- if err != nil {
- t.Fatal(err)
- }
- if pi2.Hairpin {
- t.Fatalf("Hairpin mode is enabled for %s, but shouldn't", iface2.Name)
- }
- if !pi2.Guard {
- t.Fatalf("Guard is not enabled for %s, but should", iface2.Name)
- }
- if pi2.Learning {
- t.Fatalf("Learning is enabled for %s, but shouldn't", iface2.Name)
- }
- if pi2.RootBlock != oldpi2.RootBlock {
- t.Fatalf("RootBlock field was changed for %s but shouldn't", iface2.Name)
- }
- if pi2.FastLeave != oldpi2.FastLeave {
- t.Fatalf("FastLeave field was changed for %s but shouldn't", iface2.Name)
- }
- if pi2.Flood != oldpi2.Flood {
- t.Fatalf("Flood field was changed for %s but shouldn't", iface2.Name)
- }
- if err := LinkSetHairpin(iface3, true); err == nil || err.Error() != "operation not supported" {
- t.Fatalf("Set protinfo attrs for link without master is not supported, but err: %s", err)
- }
- }
|