tetragon
1// SPDX-License-Identifier: Apache-2.0
2// Copyright Authors of Tetragon
3
4package filters
5
6import (
7"context"
8
9v1 "github.com/cilium/cilium/pkg/hubble/api/v1"
10hubbleFilters "github.com/cilium/cilium/pkg/hubble/filters"
11"github.com/cilium/tetragon/api/v1/tetragon"
12)
13
14// filterByPolicyName returns a FilterFunc. The FilterFunc returns true if and only if any of the
15// specified policy names select the event.
16func filterByPolicyName(values []string) hubbleFilters.FilterFunc {
17return func(ev *v1.Event) bool {
18policyName := GetPolicyName(ev)
19if policyName == "" {
20return false
21}
22for _, v := range values {
23if policyName == v {
24return true
25}
26}
27return false
28}
29}
30
31// PolicyNamesFilter implements filtering based on Tetragon policy names
32type PolicyNamesFilter struct{}
33
34// OnBuildFilter builds a Tetragon policy name filter
35func (f *PolicyNamesFilter) OnBuildFilter(_ context.Context, filter *tetragon.Filter) ([]hubbleFilters.FilterFunc, error) {
36var fs []hubbleFilters.FilterFunc
37
38if filter.PolicyNames != nil {
39fs = append(fs, filterByPolicyName(filter.PolicyNames))
40}
41return fs, nil
42}
43