@@ -194,13 +194,18 @@ def write_buffer(buffer, partition_no):
194
194
195
195
196
196
log .debug (f"Writing { len (buffer )} records to DB, partition { partition_no } " )
197
+ ipv6_ignored_records = 0 # we don't support IPv6 yet
197
198
# save each of the flows within the record, but use execute_values() to perform bulk insert:
198
199
def _get_data (buffer ):
199
200
for ts , client_ip , export in buffer :
200
201
netflow_version , flows = export .header .version , export .flows
201
202
if netflow_version == 9 :
202
203
for f in flows :
203
204
try :
205
+ if f .data .get ("IP_PROTOCOL_VERSION" , 4 ) == 6 :
206
+ ipv6_ignored_records += 1
207
+ continue
208
+
204
209
yield (
205
210
ts ,
206
211
client_ip ,
@@ -224,7 +229,7 @@ def _get_data(buffer):
224
229
socket .inet_aton (f .data ["IPV4_SRC_ADDR" ]),
225
230
)
226
231
except KeyError :
227
- log .exception (f"[{ client_ip } ] Error decoding v9 flow, some data was missing . Contents: { repr (f .data )} " )
232
+ log .exception (f"[{ client_ip } ] Error decoding v9 flow. Contents: { repr (f .data )} " )
228
233
elif netflow_version == 5 :
229
234
for f in flows :
230
235
try :
@@ -253,7 +258,7 @@ def _get_data(buffer):
253
258
struct .pack ('!I' , f .data ["IPV4_SRC_ADDR" ]),
254
259
)
255
260
except KeyError :
256
- log .exception (f"[{ client_ip } ] Error decoding v5 flow, some data was missing . Contents: { repr (f .data )} " )
261
+ log .exception (f"[{ client_ip } ] Error decoding v5 flow. Contents: { repr (f .data )} " )
257
262
else :
258
263
log .error (f"[{ client_ip } ] Only Netflow v5 and v9 currently supported, ignoring record (version: [{ export .header .version } ])" )
259
264
@@ -262,6 +267,9 @@ def _get_data(buffer):
262
267
_pgwriter_write (pgwriter , * data )
263
268
_pgwriter_finish (pgwriter )
264
269
270
+ if ipv6_ignored_records > 0 :
271
+ log .error (f"We do not support IPv6 (yet), some IPv6 flow records were ignored: { ipv6_ignored_records } " )
272
+
265
273
266
274
if __name__ == "__main__" :
267
275
NAMED_PIPE_FILENAME = os .environ .get ('NAMED_PIPE_FILENAME' , None )
0 commit comments