|
25 | 25 | # python-netflow-v9-softflowd expects main.py to be the main entrypoint, but we only need |
26 | 26 | # parse_packet(): |
27 | 27 | sys.path.append(os.path.dirname(os.path.realpath(__file__)) + '/pynetflow') |
28 | | -from pynetflow.netflow import parse_packet, UnknownNetFlowVersion, TemplateNotRecognized |
| 28 | +from pynetflow.netflow import parse_packet |
| 29 | +from pynetflow.netflow.utils import UnknownExportVersion |
| 30 | +from pynetflow.netflow.v9 import V9TemplateNotRecognized |
29 | 31 |
|
30 | 32 |
|
31 | 33 | IS_DEBUG = os.environ.get('DEBUG', 'false') in ['true', 'yes', '1'] |
@@ -105,7 +107,7 @@ def process_named_pipe(named_pipe_filename): |
105 | 107 | if ex.errno != errno.EEXIST: |
106 | 108 | raise |
107 | 109 |
|
108 | | - templates = {} |
| 110 | + templates = {"netflow": {}, "ipfix": {}} |
109 | 111 | last_record_seqs = {} |
110 | 112 | buffer = [] # we merge together writes to DB |
111 | 113 | known_exporters = set() |
@@ -147,11 +149,13 @@ def process_named_pipe(named_pipe_filename): |
147 | 149 | if len(buffer) > MAX_BUFFER_SIZE: |
148 | 150 | write_buffer(buffer) |
149 | 151 | buffer = [] |
150 | | - except UnknownNetFlowVersion: |
| 152 | + except UnknownExportVersion: |
151 | 153 | log.warning("Unknown NetFlow version") |
152 | 154 | continue |
153 | | - except TemplateNotRecognized as ex: |
154 | | - log.warning(f"Failed to decode a v9 ExportPacket, template not recognized (if this happens at the start, it's ok). Template id: {ex.template_id}") |
| 155 | + except V9TemplateNotRecognized as ex: |
| 156 | + log.warning(f"Failed to decode a v9 ExportPacket, template not recognized (if this happens at the start, it's ok)") |
| 157 | + log.debug(f"Problematic packet data: {data_b64}") |
| 158 | + log.debug(f"Known templates until now: {templates}") |
155 | 159 | continue |
156 | 160 |
|
157 | 161 | except Exception as ex: |
|
0 commit comments