code: func validateDefaultAddrPool(defaultAddrPool []string, size uint32) error {
  	if defaultAddrPool == nil {
  		// defaultAddrPool is not defined
  		return nil
  	}
  	//if size is not set, then we use default value 24
  	if size == 0 {
  		size = 24
  	}
  	// We allow max value as 29. We can have 8 IP addresses for max value 29
  	// If we allow 30, then we will get only 4 IP addresses. But with latest
  	// libnetwork LB scale implementation, we use total of 4 IP addresses for internal use.
  	// Hence keeping 29 as max value, we will have 8 IP addresses. This will be
  	// smallest subnet that can be used in overlay network.
  	if size > 29 {
  		return fmt.Errorf("subnet size is out of range: %d", size)
  	}
  	for i := range defaultAddrPool {
  		// trim leading and trailing white spaces
  		defaultAddrPool[i] = strings.TrimSpace(defaultAddrPool[i])
  		_, b, err := net.ParseCIDR(defaultAddrPool[i])
  		if err != nil {
  			return fmt.Errorf("invalid base pool %s: %v", defaultAddrPool[i], err)
  		}
  		ones, _ := b.Mask.Size()
  		if size < uint32(ones) {
  			return fmt.Errorf("invalid CIDR: %q. Subnet size is too small for pool: %d", defaultAddrPool[i], size)
  		}
  	}
  
  	return nil
  }
docs: // validateDefaultAddrPool validates default address pool
  // it also strips white space from the string before validation