mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-22 12:58:37 +00:00
cmd/tailscale: support IPs or CIDRs in -advertise-routes.
Fixes #370. Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
parent
21ac65d3da
commit
ad1cfe8bbe
@ -105,6 +105,29 @@ var upArgs struct {
|
|||||||
authKey string
|
authKey string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// parseIPOrCIDR parses an IP address or a CIDR prefix. If the input
|
||||||
|
// is an IP address, it is returned in CIDR form with a /32 mask for
|
||||||
|
// IPv4 or a /128 mask for IPv6.
|
||||||
|
func parseIPOrCIDR(s string) (wgcfg.CIDR, bool) {
|
||||||
|
if strings.Contains(s, "/") {
|
||||||
|
ret, err := wgcfg.ParseCIDR(s)
|
||||||
|
if err != nil {
|
||||||
|
return wgcfg.CIDR{}, false
|
||||||
|
}
|
||||||
|
return ret, true
|
||||||
|
}
|
||||||
|
|
||||||
|
ip, ok := wgcfg.ParseIP(s)
|
||||||
|
if !ok {
|
||||||
|
return wgcfg.CIDR{}, false
|
||||||
|
}
|
||||||
|
if ip.Is4() {
|
||||||
|
return wgcfg.CIDR{ip, 32}, true
|
||||||
|
} else {
|
||||||
|
return wgcfg.CIDR{ip, 128}, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func runUp(ctx context.Context, args []string) error {
|
func runUp(ctx context.Context, args []string) error {
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
log.Fatalf("too many non-flag arguments: %q", args)
|
log.Fatalf("too many non-flag arguments: %q", args)
|
||||||
@ -114,9 +137,9 @@ func runUp(ctx context.Context, args []string) error {
|
|||||||
if upArgs.advertiseRoutes != "" {
|
if upArgs.advertiseRoutes != "" {
|
||||||
advroutes := strings.Split(upArgs.advertiseRoutes, ",")
|
advroutes := strings.Split(upArgs.advertiseRoutes, ",")
|
||||||
for _, s := range advroutes {
|
for _, s := range advroutes {
|
||||||
cidr, err := wgcfg.ParseCIDR(s)
|
cidr, ok := parseIPOrCIDR(s)
|
||||||
if err != nil {
|
if !ok {
|
||||||
log.Fatalf("%q is not a valid CIDR prefix: %v", s, err)
|
log.Fatalf("%q is not a valid IP address or CIDR prefix", s)
|
||||||
}
|
}
|
||||||
routes = append(routes, cidr)
|
routes = append(routes, cidr)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user