Skip to content

Commit 6fc0880

Browse files
committed
v5 template
1 parent 523cf1b commit 6fc0880

File tree

1 file changed

+19
-20
lines changed

1 file changed

+19
-20
lines changed

lib/ipflow/flow.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import struct
22
from ipaddress import IPv4Address, IPv4Network, IPv6Address, IPv6Network
33
from typing import Iterator, Union, Any
4+
from .field import Field
45
from .field_type import FIELD_TYPE_FUNC
56
from .field_type import FieldType
67
from .template import DataTemplate
@@ -9,32 +10,30 @@
910
V5_TEMPLATE_KEY = None, None, None
1011
V5_TEMPLATE_FMT = '>4s4s4sHHLLLLHH2sBBB3s4s'
1112
V5_TEMPLATE_SIZE = struct.calcsize(V5_TEMPLATE_FMT)
13+
V5_FIELDS = [
14+
Field(FieldType.IPV4_SRC_ADDR.value, 4),
15+
Field(FieldType.IPV4_DST_ADDR.value, 4),
16+
Field(FieldType.IPV4_NEXT_HOP.value, 4),
17+
Field(FieldType.INPUT_SNMP.value, 2),
18+
Field(FieldType.OUTPUT_SNMP.value, 2),
19+
Field(FieldType.IN_PKTS.value, 4),
20+
Field(FieldType.IN_BYTES.value, 4),
21+
Field(FieldType.FIRST_SWITCHED.value, 4),
22+
Field(FieldType.LAST_SWITCHED.value, 4),
23+
Field(FieldType.L4_SRC_PORT.value, 2),
24+
Field(FieldType.L4_DST_PORT.value, 2),
25+
Field(FieldType.PROTOCOL.value, 1),
26+
Field(FieldType.TOS.value, 1),
27+
Field(FieldType.TCP_FLAGS.value, 1),
28+
]
1229

1330
DataTemplateKey = Any # TODO v5 key should should be also tuple[str, int, int]
1431
flowset_templates: dict[DataTemplateKey, DataTemplate] = {
1532
V5_TEMPLATE_KEY: DataTemplate(
1633
V5_TEMPLATE_FMT,
1734
V5_TEMPLATE_SIZE,
18-
[],
19-
[
20-
FieldType.IPV4_SRC_ADDR,
21-
FieldType.IPV4_DST_ADDR,
22-
FieldType.IPV4_NEXT_HOP,
23-
FieldType.INPUT_SNMP,
24-
FieldType.OUTPUT_SNMP,
25-
FieldType.IN_PKTS,
26-
FieldType.IN_BYTES,
27-
FieldType.FIRST_SWITCHED,
28-
FieldType.LAST_SWITCHED,
29-
FieldType.L4_SRC_PORT,
30-
FieldType.L4_DST_PORT,
31-
None, # 1 byte padding
32-
FieldType.PROTOCOL,
33-
FieldType.TOS,
34-
FieldType.TCP_FLAGS,
35-
None, # 3 byte padding
36-
None, # reserved
37-
],
35+
V5_FIELDS,
36+
[f.id for f in V5_FIELDS],
3837
0, # uptime not used for v5 packets
3938
)
4039
}

0 commit comments

Comments
 (0)