mirror of
https://github.com/vishvananda/netlink
synced 2024-12-28 01:22:18 +00:00
378a404a26
This patch implements both tc and filter chains. We also need to align tc filter delition implementation with iprote2 to delete filters withichain by passing additional bits during filter deletion call.
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
//go:build linux
|
|
// +build linux
|
|
|
|
package netlink
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestChainAddDel(t *testing.T) {
|
|
tearDown := setUpNetlinkTest(t)
|
|
defer tearDown()
|
|
if err := LinkAdd(&Ifb{LinkAttrs{Name: "foo"}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := LinkAdd(&Ifb{LinkAttrs{Name: "bar"}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
link, err := LinkByName("foo")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := LinkSetUp(link); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
qdisc := &Ingress{
|
|
QdiscAttrs: QdiscAttrs{
|
|
LinkIndex: link.Attrs().Index,
|
|
Handle: MakeHandle(0xffff, 0),
|
|
Parent: HANDLE_INGRESS,
|
|
},
|
|
}
|
|
if err := QdiscAdd(qdisc); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
qdiscs, err := SafeQdiscList(link)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(qdiscs) != 1 {
|
|
t.Fatal("Failed to add qdisc")
|
|
}
|
|
_, ok := qdiscs[0].(*Ingress)
|
|
if !ok {
|
|
t.Fatal("Qdisc is the wrong type")
|
|
}
|
|
chainVal := new(uint32)
|
|
*chainVal = 20
|
|
chain := NewChain(HANDLE_INGRESS, *chainVal)
|
|
err = ChainAdd(link, chain)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
chains, err := ChainList(link, HANDLE_INGRESS)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(chains) != 1 {
|
|
t.Fatal("Failed to add chain")
|
|
}
|
|
if chains[0].Chain != *chainVal {
|
|
t.Fatal("Incorrect chain added")
|
|
}
|
|
if chains[0].Parent != HANDLE_INGRESS {
|
|
t.Fatal("Incorrect chain parent")
|
|
}
|
|
if err := ChainDel(link, chain); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
chains, err = ChainList(link, HANDLE_INGRESS)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(chains) != 0 {
|
|
t.Fatal("Failed to remove chain")
|
|
}
|
|
}
|