...
1
2
3
4 package netlink
5
6 import (
7 "testing"
8 )
9
10 func TestChainAddDel(t *testing.T) {
11 tearDown := setUpNetlinkTest(t)
12 defer tearDown()
13 if err := LinkAdd(&Ifb{LinkAttrs{Name: "foo"}}); err != nil {
14 t.Fatal(err)
15 }
16 if err := LinkAdd(&Ifb{LinkAttrs{Name: "bar"}}); err != nil {
17 t.Fatal(err)
18 }
19 link, err := LinkByName("foo")
20 if err != nil {
21 t.Fatal(err)
22 }
23 if err := LinkSetUp(link); err != nil {
24 t.Fatal(err)
25 }
26 qdisc := &Ingress{
27 QdiscAttrs: QdiscAttrs{
28 LinkIndex: link.Attrs().Index,
29 Handle: MakeHandle(0xffff, 0),
30 Parent: HANDLE_INGRESS,
31 },
32 }
33 if err := QdiscAdd(qdisc); err != nil {
34 t.Fatal(err)
35 }
36 qdiscs, err := SafeQdiscList(link)
37 if err != nil {
38 t.Fatal(err)
39 }
40 if len(qdiscs) != 1 {
41 t.Fatal("Failed to add qdisc")
42 }
43 _, ok := qdiscs[0].(*Ingress)
44 if !ok {
45 t.Fatal("Qdisc is the wrong type")
46 }
47 chainVal := new(uint32)
48 *chainVal = 20
49 chain := NewChain(HANDLE_INGRESS, *chainVal)
50 err = ChainAdd(link, chain)
51 if err != nil {
52 t.Fatal(err)
53 }
54 chains, err := ChainList(link, HANDLE_INGRESS)
55 if err != nil {
56 t.Fatal(err)
57 }
58 if len(chains) != 1 {
59 t.Fatal("Failed to add chain")
60 }
61 if chains[0].Chain != *chainVal {
62 t.Fatal("Incorrect chain added")
63 }
64 if chains[0].Parent != HANDLE_INGRESS {
65 t.Fatal("Incorrect chain parent")
66 }
67 if err := ChainDel(link, chain); err != nil {
68 t.Fatal(err)
69 }
70 chains, err = ChainList(link, HANDLE_INGRESS)
71 if err != nil {
72 t.Fatal(err)
73 }
74 if len(chains) != 0 {
75 t.Fatal("Failed to remove chain")
76 }
77 }
78
View as plain text