Skip to content

Commit 7b28ea1

Browse files
jotakjpinsonneau
andauthored
Do not write decoded tcp flags field when empty (#1033)
* Do not write decoded tcp flags field when empty Fixes part of #1031 * Update pkg/pipeline/transform/transform_network_test.go Co-authored-by: Julien Pinsonneau <[email protected]> --------- Co-authored-by: Julien Pinsonneau <[email protected]>
1 parent 975f771 commit 7b28ea1

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

pkg/pipeline/transform/transform_network.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,9 @@ func (n *Network) Transform(inputEntry config.GenericMap) (config.GenericMap, bo
141141
case api.NetworkDecodeTCPFlags:
142142
if anyFlags, ok := outputEntry[rule.DecodeTCPFlags.Input]; ok && anyFlags != nil {
143143
if flags, err := util.ConvertToUint(anyFlags); err == nil {
144-
flags := util.DecodeTCPFlags(flags)
145-
outputEntry[rule.DecodeTCPFlags.Output] = flags
144+
if flags := util.DecodeTCPFlags(flags); len(flags) > 0 {
145+
outputEntry[rule.DecodeTCPFlags.Output] = flags
146+
}
146147
}
147148
}
148149

pkg/pipeline/transform/transform_network_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,3 +581,46 @@ func Test_DecodeTCPFlags(t *testing.T) {
581581
"TcpFlagsU32String": []string{"SYN", "ACK"},
582582
}, output)
583583
}
584+
585+
func Test_DecodeTCPFlagsDefaultValue(t *testing.T) {
586+
dec, err := NewTransformNetwork(config.StageParam{
587+
Transform: &config.Transform{
588+
Network: &api.TransformNetwork{
589+
Rules: []api.NetworkTransformRule{
590+
{
591+
Type: "decode_tcp_flags",
592+
DecodeTCPFlags: &api.NetworkGenericRule{
593+
Input: "TcpFlags",
594+
Output: "TcpFlagsString",
595+
},
596+
},
597+
},
598+
},
599+
},
600+
}, nil)
601+
require.NoError(t, err)
602+
add, err := NewTransformFilter(config.StageParam{
603+
Transform: &config.Transform{
604+
Filter: &api.TransformFilter{
605+
Rules: []api.TransformFilterRule{
606+
{
607+
Type: "add_field_if_doesnt_exist",
608+
AddFieldIfDoesntExist: &api.TransformFilterGenericRule{
609+
Input: "TcpFlagsString",
610+
Value: "unknown",
611+
},
612+
},
613+
},
614+
},
615+
},
616+
})
617+
require.NoError(t, err)
618+
619+
var ok bool
620+
flow := config.GenericMap{"TcpFlags": uint(0)}
621+
flow, ok = dec.Transform(flow)
622+
require.True(t, ok)
623+
flow, ok = add.Transform(flow)
624+
require.True(t, ok)
625+
require.Equal(t, config.GenericMap{"TcpFlags": uint(0), "TcpFlagsString": "unknown"}, flow)
626+
}

0 commit comments

Comments
 (0)