code: func GetLoadBalancerSourceRanges(service *api.Service) (utilnet.IPNetSet, error) {
  	var ipnets utilnet.IPNetSet
  	var err error
  	// if SourceRange field is specified, ignore sourceRange annotation
  	if len(service.Spec.LoadBalancerSourceRanges) > 0 {
  		specs := service.Spec.LoadBalancerSourceRanges
  		ipnets, err = utilnet.ParseIPNets(specs...)
  
  		if err != nil {
  			return nil, fmt.Errorf("service.Spec.LoadBalancerSourceRanges: %v is not valid. Expecting a list of IP ranges. For example, 10.0.0.0/24. Error msg: %v", specs, err)
  		}
  	} else {
  		val := service.Annotations[api.AnnotationLoadBalancerSourceRangesKey]
  		val = strings.TrimSpace(val)
  		if val == "" {
  			val = defaultLoadBalancerSourceRanges
  		}
  		specs := strings.Split(val, ",")
  		ipnets, err = utilnet.ParseIPNets(specs...)
  		if err != nil {
  			return nil, fmt.Errorf("%s: %s is not valid. Expecting a comma-separated list of source IP ranges. For example, 10.0.0.0/24,192.168.2.0/24", api.AnnotationLoadBalancerSourceRangesKey, val)
  		}
  	}
  	return ipnets, nil
  }
docs: // GetLoadBalancerSourceRanges first try to parse and verify LoadBalancerSourceRanges field from a service.
  // If the field is not specified, turn to parse and verify the AnnotationLoadBalancerSourceRangesKey annotation from a service,
  // extracting the source ranges to allow, and if not present returns a default (allow-all) value.