Skip to content

Commit 4bad58d

Browse files
committed
Update nfxV3.h with nfdump master
1 parent 3f2cf79 commit 4bad58d

File tree

2 files changed

+73
-14
lines changed

2 files changed

+73
-14
lines changed

nfxV3.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nfxV3.h

Lines changed: 71 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2023, Peter Haag
2+
* Copyright (c) 2024, Peter Haag
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without
@@ -66,11 +66,18 @@ typedef struct recordHeaderV3_s {
6666
#define V3_FLAG_EVENT 1
6767
#define V3_FLAG_SAMPLED 2
6868
#define V3_FLAG_ANON 4
69+
#define V3_FLAG_PASSED 128
6970

7071
uint8_t nfversion;
7172
} recordHeaderV3_t;
7273
#define OFFtype offsetof(recordHeaderV3_t, type)
7374
#define SIZEtype MemberSize(recordHeaderV3_t, type)
75+
#define OFFengineType offsetof(recordHeaderV3_t, engineType)
76+
#define SIZEengineType MemberSize(recordHeaderV3_t, engineType)
77+
#define OFFengineID offsetof(recordHeaderV3_t, engineID)
78+
#define SIZEengineID MemberSize(recordHeaderV3_t, engineID)
79+
#define OFFexporterID offsetof(recordHeaderV3_t, exporterID)
80+
#define SIZEexporterID MemberSize(recordHeaderV3_t, exporterID)
7481

7582
#define V3HeaderRecordSize sizeof(recordHeaderV3_t)
7683
#define AddV3Header(p, h) \
@@ -151,8 +158,13 @@ typedef struct EXgenericFlow_s {
151158
union {
152159
uint16_t dstPort;
153160
struct {
161+
#ifdef WORDS_BIGENDIAN
154162
uint8_t icmpType;
155163
uint8_t icmpCode;
164+
#else
165+
uint8_t icmpCode;
166+
uint8_t icmpType;
167+
#endif
156168
};
157169
};
158170
#endif
@@ -227,9 +239,10 @@ typedef struct EXflowMisc_s {
227239
uint8_t flowEndReason;
228240
#define OFFflowEndReason offsetof(EXflowMisc_t, flowEndReason)
229241
#define SIZEflowEndReason MemberSize(EXflowMisc_t, flowEndReason)
230-
// align bytes
231242
uint8_t revTcpFlags;
232-
uint8_t fill;
243+
uint8_t fragmentFlags;
244+
#define OFFfragmentFlags offsetof(EXflowMisc_t, fragmentFlags)
245+
#define SIZEfragmentFlags MemberSize(EXflowMisc_t, fragmentFlags)
233246
} EXflowMisc_t;
234247
#define EXflowMiscSize (sizeof(EXflowMisc_t) + sizeof(elementHeader_t))
235248

@@ -288,16 +301,16 @@ typedef struct EXbgpNextHopV6_s {
288301
typedef struct EXipNextHopV4_s {
289302
#define EXipNextHopV4ID 10
290303
uint32_t ip;
291-
#define OFFNext4HopIP offsetof(EXipNextHopV4_t, ip)
292-
#define SIZENext4HopIP MemberSize(EXipNextHopV4_t, ip)
304+
#define OFFNextHopV4IP offsetof(EXipNextHopV4_t, ip)
305+
#define SIZENextHopV4IP MemberSize(EXipNextHopV4_t, ip)
293306
} EXipNextHopV4_t;
294307
#define EXipNextHopV4Size (sizeof(EXipNextHopV4_t) + sizeof(elementHeader_t))
295308

296309
typedef struct EXipNextHopV6_s {
297310
#define EXipNextHopV6ID 11
298311
uint64_t ip[2];
299-
#define OFFNext6HopIP offsetof(EXipNextHopV6_t, ip)
300-
#define SIZENext6HopIP MemberSize(EXipNextHopV6_t, ip)
312+
#define OFFNextHopV6IP offsetof(EXipNextHopV6_t, ip)
313+
#define SIZENextHopV6IP MemberSize(EXipNextHopV6_t, ip)
301314
} EXipNextHopV6_t;
302315
#define EXipNextHopV6Size (sizeof(EXipNextHopV6_t) + sizeof(elementHeader_t))
303316

@@ -527,10 +540,11 @@ typedef struct EXnbarApp_s {
527540
#define EXlabelID 28
528541
#define EXlabelSize sizeof(elementHeader_t)
529542

530-
#define EXinPayload_t elementHeader_t
543+
#define EXinPayload_t void
531544
#define EXinPayloadID 29
532545
#define EXinPayloadSize sizeof(elementHeader_t)
533546

547+
#define EXoutPayload_t void
534548
#define EXoutPayloadID 30
535549
#define EXoutPayloadSize sizeof(elementHeader_t)
536550

@@ -543,8 +557,8 @@ typedef struct EXtunIPv4_s {
543557
#define SIZEtunSrc4Addr MemberSize(EXtunIPv4_t, tunSrcAddr)
544558
#define OFFtunDst4Addr offsetof(EXtunIPv4_t, tunDstAddr)
545559
#define SIZEtunDst4Addr MemberSize(EXtunIPv4_t, tunDstAddr)
546-
#define OFFtunProto offsetof(EXtunIPv4_t, tunProto)
547-
#define SIZEtunProto MemberSize(EXtunIPv4_t, tunProto)
560+
#define OFFtunProtoV4 offsetof(EXtunIPv4_t, tunProto)
561+
#define SIZEtunProtoV4 MemberSize(EXtunIPv4_t, tunProto)
548562
} EXtunIPv4_t;
549563
#define EXtunIPv4Size (sizeof(EXtunIPv4_t) + sizeof(elementHeader_t))
550564

@@ -557,6 +571,8 @@ typedef struct EXtunIPv6_s {
557571
#define SIZEtunSrc6Addr MemberSize(EXtunIPv6_t, tunSrcAddr)
558572
#define OFFtunDst6Addr offsetof(EXtunIPv6_t, tunDstAddr)
559573
#define SIZEtunDst6Addr MemberSize(EXtunIPv6_t, tunDstAddr)
574+
#define OFFtunProtoV6 offsetof(EXtunIPv6_t, tunProto)
575+
#define SIZEtunProtoV6 MemberSize(EXtunIPv6_t, tunProto)
560576
} EXtunIPv6_t;
561577
#define EXtunIPv6Size (sizeof(EXtunIPv6_t) + sizeof(elementHeader_t))
562578

@@ -613,10 +629,51 @@ typedef struct EXpfinfo_s {
613629
uint32_t pid;
614630
char ifname[4];
615631
} EXpfinfo_t;
632+
#define OFFpfAction offsetof(EXpfinfo_t, action)
633+
#define SIZEpfAction MemberSize(EXpfinfo_t, action)
634+
#define OFFpfReason offsetof(EXpfinfo_t, reason)
635+
#define SIZEpfReason MemberSize(EXpfinfo_t, reason)
636+
#define OFFpfDir offsetof(EXpfinfo_t, dir)
637+
#define SIZEpfDir MemberSize(EXpfinfo_t, dir)
638+
#define OFFpfIfName offsetof(EXpfinfo_t, ifname)
639+
#define SIZEpfIfName MemberSize(EXpfinfo_t, ifname)
640+
#define OFFpfRuleNr offsetof(EXpfinfo_t, rulenr)
641+
#define SIZEpfRuleNr MemberSize(EXpfinfo_t, rulenr)
616642
#define EXpfinfoSize (sizeof(EXpfinfo_t) - 4 + sizeof(elementHeader_t))
617643

644+
typedef struct EXlayer2_s {
645+
#define EXlayer2ID 38
646+
uint16_t vlanID;
647+
uint16_t customerVlanId;
648+
uint16_t postVlanID;
649+
uint16_t postCustomerVlanId;
650+
#define OFFvlanID offsetof(EXlayer2_t, vlanID)
651+
#define SIZEvlanID MemberSize(EXlayer2_t, vlanID)
652+
#define OFFpostVlanID offsetof(EXlayer2_t, postVlanID)
653+
#define SIZEpostVlanID MemberSize(EXlayer2_t, postVlanID)
654+
#define OFFcustomerVlanId offsetof(EXlayer2_t, customerVlanId)
655+
#define SIZEcustomerVlanId MemberSize(EXlayer2_t, customerVlanId)
656+
#define OFFpostCustomerVlanId offsetof(EXlayer2_t, postCustomerVlanId)
657+
#define SIZEpostCustomerVlanId MemberSize(EXlayer2_t, postCustomerVlanId)
658+
uint32_t ingress;
659+
uint32_t egress;
660+
#define OFFphysIngress offsetof(EXlayer2_t, ingress)
661+
#define SIZEphysIngress MemberSize(EXlayer2_t, ingress)
662+
#define OFFphysEgress offsetof(EXlayer2_t, egress)
663+
#define SIZEphysEgress MemberSize(EXlayer2_t, egress)
664+
uint64_t vxLan;
665+
uint16_t etherType;
666+
uint8_t ipVersion;
667+
#define OFFetherType offsetof(EXlayer2_t, etherType)
668+
#define SIZEetherType MemberSize(EXlayer2_t, etherType)
669+
#define OFFipVersion offsetof(EXlayer2_t, ipVersion)
670+
#define SIZEipVersion MemberSize(EXlayer2_t, ipVersion)
671+
uint8_t fill;
672+
} EXlayer2_t;
673+
#define EXlayer2Size (sizeof(EXlayer2_t) + sizeof(elementHeader_t))
674+
618675
// max possible elements
619-
#define MAXEXTENSIONS 38
676+
#define MAXEXTENSIONS 39
620677

621678
// push a fixed length extension to the v3 record
622679
// h v3 record header
@@ -667,6 +724,8 @@ typedef struct EXpfinfo_s {
667724
h->numElements++; \
668725
h->size += s;
669726

727+
#define ExtensionLength(ext) (((elementHeader_t *)((void *)ext - sizeof(elementHeader_t)))->length - sizeof(elementHeader_t))
728+
670729
#define EXTENSION(s) \
671730
{ s##ID, s##Size, #s }
672731

@@ -682,7 +741,7 @@ static const struct extensionTable_s {
682741
EXTENSION(EXnselXlateIPv4), EXTENSION(EXnselXlateIPv6), EXTENSION(EXnselXlatePort), EXTENSION(EXnselAcl), EXTENSION(EXnselUser),
683742
EXTENSION(EXnelCommon), EXTENSION(EXnelXlatePort), EXTENSION(EXnbarApp), EXTENSION(EXlabel), EXTENSION(EXinPayload),
684743
EXTENSION(EXoutPayload), EXTENSION(EXtunIPv4), EXTENSION(EXtunIPv6), EXTENSION(EXobservation), EXTENSION(EXinmonMeta),
685-
EXTENSION(EXinmonFrame), EXTENSION(EXvrf), EXTENSION(EXpfinfo)};
744+
EXTENSION(EXinmonFrame), EXTENSION(EXvrf), EXTENSION(EXpfinfo), EXTENSION(EXlayer2)};
686745

687746
typedef struct record_map_s {
688747
recordHeaderV3_t *recordHeader;

0 commit comments

Comments
 (0)