...
1 package netplan
2
3 import (
4 "net"
5
6 v1ien "edge-infra.dev/pkg/sds/ien/k8s/apis/v1"
7 )
8
9
10
11 func staticRoutes(iface v1ien.Network) ([]Route, error) {
12 gwRoute, err := defaultGatewayRoute(iface)
13 if err != nil {
14 return nil, err
15 }
16 return []Route{gwRoute}, nil
17 }
18
19
20
21 func defaultGatewayRoute(iface v1ien.Network) (Route, error) {
22 route := Route{To: "default", Via: iface.Gateway4}
23 gateway4IP := net.ParseIP(iface.Gateway4)
24
25 match := false
26 for _, address := range iface.Addresses {
27 _, addressCIDR, err := net.ParseCIDR(address)
28 if err != nil {
29 return Route{}, err
30 }
31 if addressCIDR.Contains(gateway4IP) {
32 match = true
33 break
34 }
35 }
36
37
38 if !match {
39 route.OnLink = true
40 }
41 return route, nil
42 }
43
View as plain text