in tcpdumpw/pkg/filter/ports_filter_provider.go [34:65]
func (p *PortsFilterProvider) Get(ctx context.Context) (*string, bool) {
if *p.Raw == "" {
return nil, false
}
ports := strings.Split(strings.ToLower(*p.Raw), ",")
if len(ports) == 0 || (len(ports) == 1 && ports[0] == "") {
return nil, false
}
portSet := mapset.NewThreadUnsafeSet(ports...)
portSet.Each(func(portStr string) bool {
if portStr == "" || strings.EqualFold(portStr, "ALL") || strings.EqualFold(portStr, "ANY") {
portSet.Remove(portStr)
} else if port, err := strconv.ParseUint(portStr, 10, 16); err != nil || port <= 0xFFFF {
p.AddPort(uint16(port))
} else {
// a PORT must be a number not greater than 65535
portSet.Remove(portStr)
}
return false
})
if portSet.IsEmpty() {
return nil, false
}
filter := stringFormatter.Format("port {0}",
strings.Join(portSet.ToSlice(), " or port "))
return &filter, true
}