package netpol import ( "fmt" "regexp" "strconv" ) func validateNodePortRange(nodePortOption string) (string, error) { nodePortValidator := regexp.MustCompile(`^([0-9]+)[:-]([0-9]+)$`) if matched := nodePortValidator.MatchString(nodePortOption); !matched { return "", fmt.Errorf("failed to parse node port range given: '%s' please see specification in help text", nodePortOption) } matches := nodePortValidator.FindStringSubmatch(nodePortOption) if len(matches) != 3 { return "", fmt.Errorf("could not parse port number from range given: '%s'", nodePortOption) } port1, err := strconv.ParseUint(matches[1], 10, 16) if err != nil { return "", fmt.Errorf("could not parse first port number from range given: '%s'", nodePortOption) } port2, err := strconv.ParseUint(matches[2], 10, 16) if err != nil { return "", fmt.Errorf("could not parse second port number from range given: '%s'", nodePortOption) } if port1 >= port2 { return "", fmt.Errorf("port 1 is greater than or equal to port 2 in range given: '%s'", nodePortOption) } return fmt.Sprintf("%d:%d", port1, port2), nil }