mirror of
https://github.com/vishvananda/netlink.git
synced 2025-11-03 10:01:08 +08:00
Add "default" dst while no DST attr responsed from nl
Signed-off-by: Li Chun <chun2.li@intel.com>
This commit is contained in:
178
route_test.go
178
route_test.go
@@ -77,6 +77,80 @@ func TestRouteAddDel(t *testing.T) {
|
||||
t.Fatal("Route not removed properly")
|
||||
}
|
||||
|
||||
// add default route test
|
||||
// equiv: default dev lo
|
||||
_, defaultDst, _ := net.ParseCIDR("0.0.0.0/0")
|
||||
route = Route{Dst: defaultDst, LinkIndex: link.Attrs().Index}
|
||||
if err := RouteAdd(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(link, FAMILY_V4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != 1 {
|
||||
t.Fatal("Dev default route not listed properly")
|
||||
}
|
||||
if err := RouteDel(&routes[0]); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(link, FAMILY_V4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != 0 {
|
||||
t.Fatal("Dev default route not removed properly")
|
||||
}
|
||||
|
||||
// equiv: blackhole default
|
||||
route = Route{Dst: defaultDst, Type: unix.RTN_BLACKHOLE, Family: FAMILY_V4}
|
||||
if err := RouteAdd(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Logf("%+v", routes)
|
||||
|
||||
if len(routes) != 1 {
|
||||
t.Fatal("Blackhole default route not listed properly")
|
||||
}
|
||||
|
||||
if err := RouteDel(&routes[0]); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != 0 {
|
||||
t.Fatal("Blackhole default route not removed properly")
|
||||
}
|
||||
|
||||
// equiv: prohibit default
|
||||
route = Route{Dst: defaultDst, Type: unix.RTN_PROHIBIT}
|
||||
if err := RouteAdd(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != 1 {
|
||||
t.Fatal("Prohibit default route not listed properly")
|
||||
}
|
||||
|
||||
if err := RouteDel(&routes[0]); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != 0 {
|
||||
t.Fatal("Prohibit default route not removed properly")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRoute6AddDel(t *testing.T) {
|
||||
@@ -135,7 +209,7 @@ func TestRoute6AddDel(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// cleanup route and dummy interface created for the test
|
||||
// cleanup route
|
||||
if len(routeToDstIP) == 0 {
|
||||
t.Fatal("Route not present")
|
||||
}
|
||||
@@ -149,6 +223,108 @@ func TestRoute6AddDel(t *testing.T) {
|
||||
if len(routes) != nroutes {
|
||||
t.Fatal("Route not removed properly")
|
||||
}
|
||||
|
||||
// add a default link route
|
||||
_, defaultDst, _ := net.ParseCIDR("::/0")
|
||||
route = Route{LinkIndex: link.Attrs().Index, Dst: defaultDst}
|
||||
if err := RouteAdd(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(link, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != nroutes+1 {
|
||||
t.Fatal("Default route not added properly")
|
||||
}
|
||||
|
||||
// add a default link route
|
||||
for _, route := range routes {
|
||||
if route.Dst.String() == defaultDst.String() {
|
||||
if err := RouteDel(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
routes, err = RouteList(link, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != nroutes {
|
||||
t.Fatal("Default route not removed properly")
|
||||
}
|
||||
|
||||
// add blackhole default link route
|
||||
routes, err = RouteList(nil, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
nroutes = len(routes)
|
||||
|
||||
route = Route{Type: unix.RTN_BLACKHOLE, Dst: defaultDst}
|
||||
if err := RouteAdd(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != nroutes+1 {
|
||||
t.Fatal("Blackhole default route not added properly")
|
||||
}
|
||||
|
||||
// add blackhole default link route
|
||||
for _, route := range routes {
|
||||
if ipNetEqual(route.Dst, defaultDst) {
|
||||
if err := RouteDel(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != nroutes {
|
||||
t.Fatal("Blackhole default route not removed properly")
|
||||
}
|
||||
|
||||
// add prohibit default link route
|
||||
routes, err = RouteList(nil, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
nroutes = len(routes)
|
||||
|
||||
route = Route{Type: unix.RTN_BLACKHOLE, Dst: defaultDst}
|
||||
if err := RouteAdd(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != nroutes+1 {
|
||||
t.Fatal("Prohibit default route not added properly")
|
||||
}
|
||||
|
||||
// add prohibit default link route
|
||||
for _, route := range routes {
|
||||
if ipNetEqual(route.Dst, defaultDst) {
|
||||
if err := RouteDel(&route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
routes, err = RouteList(nil, FAMILY_V6)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(routes) != nroutes {
|
||||
t.Fatal("Prohibit default route not removed properly")
|
||||
}
|
||||
|
||||
// cleanup dummy interface created for the test
|
||||
if err := LinkDel(link); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user