|
|
|
@ -120,6 +120,11 @@ func checkIPForwarding() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
ipv4default = netaddr.MustParseIPPrefix("0.0.0.0/0")
|
|
|
|
|
ipv6default = netaddr.MustParseIPPrefix("::/0")
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func runUp(ctx context.Context, args []string) error {
|
|
|
|
|
if len(args) > 0 {
|
|
|
|
|
log.Fatalf("too many non-flag arguments: %q", args)
|
|
|
|
@ -139,6 +144,7 @@ func runUp(ctx context.Context, args []string) error {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var routes []netaddr.IPPrefix
|
|
|
|
|
var default4, default6 bool
|
|
|
|
|
if upArgs.advertiseRoutes != "" {
|
|
|
|
|
advroutes := strings.Split(upArgs.advertiseRoutes, ",")
|
|
|
|
|
for _, s := range advroutes {
|
|
|
|
@ -149,8 +155,18 @@ func runUp(ctx context.Context, args []string) error {
|
|
|
|
|
if ipp != ipp.Masked() {
|
|
|
|
|
fatalf("%s has non-address bits set; expected %s", ipp, ipp.Masked())
|
|
|
|
|
}
|
|
|
|
|
if ipp == ipv4default {
|
|
|
|
|
default4 = true
|
|
|
|
|
} else if ipp == ipv6default {
|
|
|
|
|
default6 = true
|
|
|
|
|
}
|
|
|
|
|
routes = append(routes, ipp)
|
|
|
|
|
}
|
|
|
|
|
if default4 && !default6 {
|
|
|
|
|
fatalf("%s advertised without its IPv6 counterpart, please also advertise %s", ipv4default, ipv6default)
|
|
|
|
|
} else if default6 && !default4 {
|
|
|
|
|
fatalf("%s advertised without its IPv6 counterpart, please also advertise %s", ipv6default, ipv4default)
|
|
|
|
|
}
|
|
|
|
|
checkIPForwarding()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|