github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/cidr_range.go (about)

     1  package api
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  )
     7  
     8  // CIDRRanges represents IP network ranges in CIDR notation
     9  type CIDRRanges []CIDRRange
    10  
    11  // CIDRRange represents an IP network range in CIDR notation
    12  // See http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-cidrip
    13  type CIDRRange struct {
    14  	str string
    15  }
    16  
    17  func DefaultCIDRRanges() CIDRRanges {
    18  	return CIDRRanges{
    19  		{"0.0.0.0/0"},
    20  	}
    21  }
    22  
    23  func (c *CIDRRange) UnmarshalYAML(unmarshal func(interface{}) error) error {
    24  	var cidr string
    25  	if err := unmarshal(&cidr); err != nil {
    26  		return fmt.Errorf("failed to parse CIDR range: %v", err)
    27  	}
    28  
    29  	_, _, err := net.ParseCIDR(cidr)
    30  	if err != nil {
    31  		return fmt.Errorf("failed to parse CIDR range: %v", err)
    32  	}
    33  
    34  	*c = CIDRRange{str: cidr}
    35  
    36  	return nil
    37  }
    38  
    39  // String returns the string representation of this CIDR range
    40  func (c CIDRRange) String() string {
    41  	return c.str
    42  }