@@ -744,30 +744,36 @@ func writeMatchStrings(k *KernelSelectorState, values []string, ty uint32) error
744744 return nil
745745}
746746
747- func writePrefix (k * KernelSelectorState , values []string ) (uint32 , error ) {
747+ func writePrefix (k * KernelSelectorState , values []string , selector string ) (uint32 , error ) {
748748 mid , m := k .newStringPrefixMap ()
749749 for _ , v := range values {
750750 value , size := ArgSelectorValue (v )
751751 if size > StringPrefixMaxLength {
752- return 0 , fmt .Errorf ("value %s invalid: string is longer than %d characters" , v , StringPrefixMaxLength )
752+ return 0 , fmt .Errorf ("%s value %s invalid: string is longer than %d characters" , selector , v , StringPrefixMaxLength )
753753 }
754754 val := KernelLPMTrieStringPrefix {prefixLen : size * 8 } // prefix is in bits, but size is in bytes
755755 copy (val .data [:], value )
756756 m [val ] = struct {}{}
757757 }
758758 return mid , nil
759+ // write the map id into the selector
760+
761+ }
762+
763+ func writePrefixBinaries (k * KernelSelectorState , values []string ) (uint32 , error ) {
764+ return writePrefix (k , values , "MatchBinaries" )
759765}
760766
761767func writePrefixStrings (k * KernelSelectorState , values []string ) error {
762- mid , err := writePrefix (k , values )
768+ mid , err := writePrefix (k , values , "MatchArgs" )
763769 if err != nil {
764770 return err
765771 }
766772 WriteSelectorUint32 (& k .data , mid )
767773 return nil
768774}
769775
770- func writePostfix (k * KernelSelectorState , values []string , ty uint32 ) (uint32 , error ) {
776+ func writePostfix (k * KernelSelectorState , values []string , ty uint32 , selector string ) (uint32 , error ) {
771777 mid , m := k .newStringPostfixMap ()
772778 for _ , v := range values {
773779 var value []byte
@@ -780,7 +786,7 @@ func writePostfix(k *KernelSelectorState, values []string, ty uint32) (uint32, e
780786 // Due to the constraints of the reverse copy in BPF, we will not be able to match a postfix
781787 // longer than 127 characters, so throw an error if the user specified one.
782788 if size >= StringPostfixMaxLength {
783- return 0 , fmt .Errorf ("value %s invalid: string is longer than %d characters" , v , StringPostfixMaxLength - 1 )
789+ return 0 , fmt .Errorf ("%s value %s invalid: string is longer than %d characters" , selector , v , StringPostfixMaxLength - 1 )
784790 }
785791 val := KernelLPMTrieStringPostfix {prefixLen : size * 8 } // postfix is in bits, but size is in bytes
786792 // Copy postfix in reverse order, so that it can be used in LPM map
@@ -792,8 +798,12 @@ func writePostfix(k *KernelSelectorState, values []string, ty uint32) (uint32, e
792798 return mid , nil
793799}
794800
801+ func writePostfixBinaries (k * KernelSelectorState , values []string ) (uint32 , error ) {
802+ return writePostfix (k , values , gt .GenericCharBuffer , "MatchBinaries" )
803+ }
804+
795805func writePostfixStrings (k * KernelSelectorState , values []string , ty uint32 ) error {
796- mid , err := writePostfix (k , values , ty )
806+ mid , err := writePostfix (k , values , ty , "MatchArgs" )
797807 if err != nil {
798808 return err
799809 }
@@ -1427,15 +1437,15 @@ func ParseMatchBinary(k *KernelSelectorState, b *v1alpha1.BinarySelector, selIdx
14271437 if ! config .EnableLargeProgs () {
14281438 return fmt .Errorf ("%s error: \" Prefix\" and \" NotPrefix\" operators need large BPF progs (kernel>5.3)" , selectorType )
14291439 }
1430- sel .MapID , err = writePrefix (k , b .Values )
1440+ sel .MapID , err = writePrefixBinaries (k , b .Values )
14311441 if err != nil {
14321442 return fmt .Errorf ("failed to write the prefix operator for the %s selector: %w" , selectorType , err )
14331443 }
14341444 case SelectorOpPostfix , SelectorOpNotPostfix :
14351445 if ! config .EnableLargeProgs () {
14361446 return fmt .Errorf ("%s error: \" Postfix\" and \" NotPostfix\" operators need large BPF progs (kernel>5.3)" , selectorType )
14371447 }
1438- sel .MapID , err = writePostfix (k , b .Values , gt . GenericCharBuffer )
1448+ sel .MapID , err = writePostfixBinaries (k , b .Values )
14391449 if err != nil {
14401450 return fmt .Errorf ("failed to write the prefix operator for the %s selector: %w" , selectorType , err )
14411451 }
0 commit comments