MCPcopy Create free account
hub / github.com/rabbitstack/fibratus / narrowAccessors

Method narrowAccessors

pkg/filter/accessor.go:154–240  ·  view source on GitHub ↗

narrowAccessors dynamically disables filter accessors by walking the fields declared in the expression. The field can be expressed as a regular LHS/RHS component, used as a function parameter or referenced in the bound field.

()

Source from the content-addressed store, hash-verified

152// as a regular LHS/RHS component, used as a function parameter or
153// referenced in the bound field.
154func (f *filter) narrowAccessors() {
155 var (
156 removeEvtAccessor = true
157 removePsAccessor = true
158 removeThreadAccessor = true
159 removeModuleAccessor = true
160 removeFileAccessor = true
161 removeRegistryAccessor = true
162 removeNetworkAccessor = true
163 removeHandleAccessor = true
164 removePEAccessor = true
165 removeMemAccessor = true
166 removeDNSAccessor = true
167 removeThreadpoolAccessor = true
168 )
169
170 for _, field := range f.fields {
171 switch {
172 case field.Name.IsEvtField() || field.Name.IsKevtField():
173 removeEvtAccessor = false
174 case field.Name.IsPeField():
175 removePEAccessor = false
176 case field.Name.IsPsField():
177 removePsAccessor = false
178 case field.Name.IsThreadField():
179 removeThreadAccessor = false
180 case field.Name.IsImageField() || field.Name.IsModuleField():
181 removeModuleAccessor = false
182 case field.Name.IsFileField():
183 removeFileAccessor = false
184 case field.Name.IsRegistryField():
185 removeRegistryAccessor = false
186 case field.Name.IsNetworkField():
187 removeNetworkAccessor = false
188 case field.Name.IsHandleField():
189 removeHandleAccessor = false
190 case field.Name.IsMemField():
191 removeMemAccessor = false
192 case field.Name.IsDNSField():
193 removeDNSAccessor = false
194 case field.Name.IsThreadpoolField():
195 removeThreadpoolAccessor = false
196 }
197 }
198
199 if removeEvtAccessor {
200 f.removeAccessor(&evtAccessor{})
201 }
202 if removePsAccessor {
203 f.removeAccessor(&psAccessor{})
204 }
205 if removeThreadAccessor {
206 f.removeAccessor(&threadAccessor{})
207 }
208 if removeModuleAccessor {
209 f.removeAccessor(&moduleAccessor{})
210 }
211 if removeFileAccessor {

Callers 1

CompileMethod · 0.95

Calls 15

removeAccessorMethod · 0.95
IsEvtFieldMethod · 0.80
IsKevtFieldMethod · 0.80
IsPeFieldMethod · 0.80
IsPsFieldMethod · 0.80
IsThreadFieldMethod · 0.80
IsImageFieldMethod · 0.80
IsModuleFieldMethod · 0.80
IsFileFieldMethod · 0.80
IsRegistryFieldMethod · 0.80
IsNetworkFieldMethod · 0.80
IsHandleFieldMethod · 0.80

Tested by

no test coverage detected