github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/pkg/capabilities/caps.go (about) 1 // Package capabilities allows to generically handle capabilities. 2 package capabilities // import "github.com/demonoid81/moby/pkg/capabilities" 3 4 // Set represents a set of capabilities. 5 type Set map[string]struct{} 6 7 // Match tries to match set with caps, which is an OR list of AND lists of capabilities. 8 // The matched AND list of capabilities is returned; or nil if none are matched. 9 func (set Set) Match(caps [][]string) []string { 10 if set == nil { 11 return nil 12 } 13 anyof: 14 for _, andList := range caps { 15 for _, cap := range andList { 16 if _, ok := set[cap]; !ok { 17 continue anyof 18 } 19 } 20 return andList 21 } 22 // match anything 23 return nil 24 }