123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package netlink
- import (
- "net"
- "syscall"
- "testing"
- )
- func TestRuleAddDel(t *testing.T) {
- srcNet := &net.IPNet{IP: net.IPv4(172, 16, 0, 1), Mask: net.CIDRMask(16, 32)}
- dstNet := &net.IPNet{IP: net.IPv4(172, 16, 1, 1), Mask: net.CIDRMask(24, 32)}
- rulesBegin, err := RuleList(syscall.AF_INET)
- if err != nil {
- t.Fatal(err)
- }
- rule := NewRule()
- rule.Table = syscall.RT_TABLE_MAIN
- rule.Src = srcNet
- rule.Dst = dstNet
- rule.Priority = 5
- rule.OifName = "lo"
- rule.IifName = "lo"
- if err := RuleAdd(rule); err != nil {
- t.Fatal(err)
- }
- rules, err := RuleList(syscall.AF_INET)
- if err != nil {
- t.Fatal(err)
- }
- if len(rules) != len(rulesBegin)+1 {
- t.Fatal("Rule not added properly")
- }
- // find this rule
- var found bool
- for i := range rules {
- if rules[i].Table == rule.Table &&
- rules[i].Src != nil && rules[i].Src.String() == srcNet.String() &&
- rules[i].Dst != nil && rules[i].Dst.String() == dstNet.String() &&
- rules[i].OifName == rule.OifName &&
- rules[i].Priority == rule.Priority &&
- rules[i].IifName == rule.IifName {
- found = true
- }
- }
- if !found {
- t.Fatal("Rule has diffrent options than one added")
- }
- if err := RuleDel(rule); err != nil {
- t.Fatal(err)
- }
- rulesEnd, err := RuleList(syscall.AF_INET)
- if err != nil {
- t.Fatal(err)
- }
- if len(rulesEnd) != len(rulesBegin) {
- t.Fatal("Rule not removed properly")
- }
- }
|