package util import ( "flag" "fmt" "net" "strings" ) type ipList []net.IP func (l *ipList) String() string { var sl []string for _, ip := range *l { sl = append(sl, ip.String()) } return strings.Join(sl, ",") } func (l *ipList) Set(value string) error { ip := net.ParseIP(value) if ip == nil { return fmt.Errorf("Unable to parse IP address \"%s\"", value) } *l = append(*l, ip) return nil } func IPList(name, help string) *[]net.IP { var l ipList flag.Var(&l, name, help) return (*[]net.IP)(&l) } func IPListWithDefault(l []net.IP, deflt string) []net.IP { if len(l) == 0 { return []net.IP{net.ParseIP(deflt)} } return l }