@@ -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
266274if __name__ == "__main__" :
267275 NAMED_PIPE_FILENAME = os .environ .get ('NAMED_PIPE_FILENAME' , None )
0 commit comments