Skip to content

Commit afb61f9

Browse files
committed
Improve logging of IPv6 flow records
1 parent c266bf2 commit afb61f9

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

netflowwriter.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,18 @@ def write_buffer(buffer, partition_no):
194194

195195

196196
log.debug(f"Writing {len(buffer)} records to DB, partition {partition_no}")
197+
ipv6_ignored_records = 0 # we don't support IPv6 yet
197198
# save each of the flows within the record, but use execute_values() to perform bulk insert:
198199
def _get_data(buffer):
199200
for ts, client_ip, export in buffer:
200201
netflow_version, flows = export.header.version, export.flows
201202
if netflow_version == 9:
202203
for f in flows:
203204
try:
205+
if f.data.get("IP_PROTOCOL_VERSION", 4) == 6:
206+
ipv6_ignored_records += 1
207+
continue
208+
204209
yield (
205210
ts,
206211
client_ip,
@@ -224,7 +229,7 @@ def _get_data(buffer):
224229
socket.inet_aton(f.data["IPV4_SRC_ADDR"]),
225230
)
226231
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)}")
228233
elif netflow_version == 5:
229234
for f in flows:
230235
try:
@@ -253,7 +258,7 @@ def _get_data(buffer):
253258
struct.pack('!I', f.data["IPV4_SRC_ADDR"]),
254259
)
255260
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)}")
257262
else:
258263
log.error(f"[{client_ip}] Only Netflow v5 and v9 currently supported, ignoring record (version: [{export.header.version}])")
259264

@@ -262,6 +267,9 @@ def _get_data(buffer):
262267
_pgwriter_write(pgwriter, *data)
263268
_pgwriter_finish(pgwriter)
264269

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+
265273

266274
if __name__ == "__main__":
267275
NAMED_PIPE_FILENAME = os.environ.get('NAMED_PIPE_FILENAME', None)

0 commit comments

Comments
 (0)