code: func TransferParse(c *caddy.Controller, secondary bool) (tos, froms []string, err error) {
  	if !c.NextArg() {
  		return nil, nil, c.ArgErr()
  	}
  	value := c.Val()
  	switch value {
  	case "to":
  		tos = c.RemainingArgs()
  		for i := range tos {
  			if tos[i] != "*" {
  				normalized, err := dnsutil.ParseHostPort(tos[i], "53")
  				if err != nil {
  					return nil, nil, err
  				}
  				tos[i] = normalized
  			}
  		}
  
  	case "from":
  		if !secondary {
  			return nil, nil, fmt.Errorf("can't use `transfer from` when not being a secondary")
  		}
  		froms = c.RemainingArgs()
  		for i := range froms {
  			if froms[i] != "*" {
  				normalized, err := dnsutil.ParseHostPort(froms[i], "53")
  				if err != nil {
  					return nil, nil, err
  				}
  				froms[i] = normalized
  			} else {
  				return nil, nil, fmt.Errorf("can't use '*' in transfer from")
  			}
  		}
  	}
  	return
  }
docs: // TransferParse parses transfer statements: 'transfer to [address...]'.