func applyFilter()

in tcpdumpw/pkg/filter/filter_provider.go [34:62]


func applyFilter(
	ctx context.Context,
	srcFilter *string,
	provider pcap.PcapFilterProvider,
	mode pcap.PcapFilterMode,
) *string {
	if provider == nil {
		return srcFilter
	}

	filter, ok := provider.Get(ctx)
	if !ok || filter == nil || *filter == "" {
		return srcFilter
	}

	if srcFilter == nil || *srcFilter == "" {
		*filter = stringFormatter.Format("({0})", *filter)
		return filter
	}

	switch mode {
	case pcap.PCAP_FILTER_MODE_AND:
		*filter = stringFormatter.Format("{0} and ({1})", *srcFilter, *filter)
	case pcap.PCAP_FILTER_MODE_OR:
		*filter = stringFormatter.Format("{0} or ({1})", *srcFilter, *filter)
	}

	return filter
}