Skip to content

Commit 386f5de

Browse files
committed
Fix #12 and cleanup naming - breaks API calls!
1 parent 4bad58d commit 386f5de

File tree

8 files changed

+210
-126
lines changed

8 files changed

+210
-126
lines changed

README.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,25 @@ func main() {
9494
fmt.Printf("DstIP: %v\n", ipAddr.DstIP)
9595
}
9696

97-
if flowRecord.hasXlateIP {
98-
fmt.Sprintf(" SrcXlateIP : %v\n", flowRecord.srcXlateIP)
99-
fmt.Sprintf(" DstXlateIP : %v\n", flowRecord.dstXlateIP)
97+
// get NAT xlate IP adresses
98+
if natXlateIP = flowRecord.NatXlateIP(); natXlateIP != nil {
99+
fmt.Sprintf(" SrcXlateIP : %v\n", natXlateIP.SrcXIP)
100+
fmt.Sprintf(" DstXlateIP : %v\n", natXlateIP.DstXIP)
100101
}
101102

102-
// get xlate ports and print
103-
if xlatePort := flowRecord.XlatePort(); xlatePort == nil {
104-
fmt.Printf(" Src X-Port : %d\n", xlatePort.XlateSrcPort)
105-
fmt.Printf(" Dst X-Port : %d\n", xlatePort.XlateDstPort)
103+
// get NAT xlate ports
104+
if natXlatePort := flowRecord.NatXlatePort(); natXlatePort == nil {
105+
fmt.Printf(" Src X-Port : %d\n", natXlatePort.XlateSrcPort)
106+
fmt.Printf(" Dst X-Port : %d\n", natXlatePort.XlateDstPort)
106107
}
108+
109+
// get nat port block and print
110+
if natPortBlock := flowRecord.NatPortBlock(); natPortBlock == nil {
111+
fmt.Printf(" NAT pstart : %d\n", natPortBlock.BlockStart)
112+
fmt.Printf(" NAT pend : %d\n", natPortBlock.BlockEnd)
113+
fmt.Printf(" NAT pstep : %d\n", natPortBlock.BlockStep)
114+
fmt.Printf(" NAT psize : %d\n", natPortBlock.BlockSize)
115+
}
107116

108117
/*
109118
// other extension

defs.go

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,27 @@ import (
2121
)
2222

2323
const (
24-
EXnull = uint(C.EXnull)
25-
EXgenericFlowID = uint16(C.EXgenericFlowID)
26-
EXipv4FlowID = uint16(C.EXipv4FlowID)
27-
EXipv6FlowID = uint16(C.EXipv6FlowID)
28-
EXflowMiscID = uint16(C.EXflowMiscID)
29-
EXcntFlowID = uint16(C.EXcntFlowID)
30-
EXvLanID = uint16(C.EXvLanID)
31-
EXasRoutingID = uint16(C.EXasRoutingID)
32-
EXbgpNextHopV4ID = uint16(C.EXbgpNextHopV4ID)
33-
EXbgpNextHopV6ID = uint16(C.EXbgpNextHopV6ID)
34-
EXipNextHopV4ID = uint16(C.EXipNextHopV4ID)
35-
EXipNextHopV6ID = uint16(C.EXipNextHopV6ID)
36-
EXipReceivedV4ID = uint16(C.EXipReceivedV4ID)
37-
EXipReceivedV6ID = uint16(C.EXipReceivedV6ID)
38-
EXsamplerInfoID = uint16(C.EXsamplerInfoID)
39-
EXinPayloadID = uint16(C.EXinPayloadID)
40-
EXnselXlateIPv4ID = uint16(C.EXnselXlateIPv4ID)
41-
EXnselXlateIPv6ID = uint16(C.EXnselXlateIPv6ID)
42-
EXnselXlatePortID = uint16(C.EXnselXlatePortID)
24+
EXnull = uint(C.EXnull)
25+
EXgenericFlowID = uint16(C.EXgenericFlowID)
26+
EXipv4FlowID = uint16(C.EXipv4FlowID)
27+
EXipv6FlowID = uint16(C.EXipv6FlowID)
28+
EXflowMiscID = uint16(C.EXflowMiscID)
29+
EXcntFlowID = uint16(C.EXcntFlowID)
30+
EXvLanID = uint16(C.EXvLanID)
31+
EXasRoutingID = uint16(C.EXasRoutingID)
32+
EXbgpNextHopV4ID = uint16(C.EXbgpNextHopV4ID)
33+
EXbgpNextHopV6ID = uint16(C.EXbgpNextHopV6ID)
34+
EXipNextHopV4ID = uint16(C.EXipNextHopV4ID)
35+
EXipNextHopV6ID = uint16(C.EXipNextHopV6ID)
36+
EXipReceivedV4ID = uint16(C.EXipReceivedV4ID)
37+
EXipReceivedV6ID = uint16(C.EXipReceivedV6ID)
38+
EXsamplerInfoID = uint16(C.EXsamplerInfoID)
39+
EXinPayloadID = uint16(C.EXinPayloadID)
40+
EXnatXlateIPv4ID = uint16(C.EXnatXlateIPv4ID)
41+
EXnatXlateIPv6ID = uint16(C.EXnatXlateIPv6ID)
42+
EXnatXlatePortID = uint16(C.EXnatXlatePortID)
43+
EXnatCommonID = uint16(C.EXnelCommonID)
44+
EXnatPortBlockID = uint16(C.EXnatPortBlockID)
4345
)
4446

4547
const (
@@ -66,7 +68,9 @@ type EXcntFlow C.struct_EXcntFlow_s
6668
type EXvLan C.struct_EXvLan_s
6769
type EXasRouting C.struct_EXasRouting_s
6870
type EXsamplerInfo C.struct_EXsamplerInfo_s
69-
type EXnselXlatePort C.struct_EXnselXlatePort_s
71+
type EXnatXlatePort C.struct_EXnatXlatePort_s
72+
type EXnatCommon C.struct_EXnelCommon_s
73+
type EXnatPortBlock C.struct_EXnatPortBlock_s
7074

7175
type EXbgpNextHop struct {
7276
IP net.IP
@@ -80,6 +84,11 @@ type EXipReceived struct {
8084
IP net.IP
8185
}
8286

87+
type EXnatXlateIP struct {
88+
SrcXIP net.IP
89+
DstXIP net.IP
90+
}
91+
8392
type EXinPayload []byte
8493

8594
type ExporterInfoRecord C.struct_exporter_info_record_s

example/reader/main.go

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright © 2023 Peter Haag [email protected]
1+
// Copyright © 2024 Peter Haag [email protected]
22
// All rights reserved.
33
//
44
// Use of this source code is governed by the license that can be
@@ -84,23 +84,6 @@ func main() {
8484
fmt.Printf("DstIP: %v\n", ipAddr.DstIP)
8585
}
8686

87-
// get xlate ports
88-
if xlatePort := record.XlatePort(); xlatePort != nil {
89-
fmt.Printf("SrcXlatePort: %d\n", xlatePort.XlateSrcPort)
90-
fmt.Printf("DstXlatePort: %d\n", xlatePort.XlateDstPort)
91-
}
92-
93-
// xlateIPs
94-
// can contain IPv4 or IPv6
95-
xlateIP := record.XlateIP()
96-
if xlateIP != nil {
97-
// when printing as %v, Golang takes care about proper formating
98-
// as IPv4 or IPv6
99-
// see Golang standard library net.IP for more details to process IPs
100-
fmt.Printf("SrcXlateIP: %v\n", xlateIP.SrcXIP)
101-
fmt.Printf("DstXlateIP: %v\n", xlateIP.DstXIP)
102-
}
103-
10487
// get payload extension
10588
if payload := record.Payload(); payload != nil {
10689
fmt.Printf("Payload length: %d\n", len(payload))

nffile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright © 2023 Peter Haag [email protected]
1+
// Copyright © 2024 Peter Haag [email protected]
22
// All rights reserved.
33
//
44
// Use of this source code is governed by the license that can be

nfxV3.go

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

nfxV3.h

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -428,38 +428,38 @@ typedef struct EXnselCommon_s {
428428
} EXnselCommon_t;
429429
#define EXnselCommonSize (sizeof(EXnselCommon_t) + sizeof(elementHeader_t))
430430

431-
typedef struct EXnselXlateIPv4_s {
432-
#define EXnselXlateIPv4ID 20
431+
typedef struct EXnatXlateIPv4_s {
432+
#define EXnatXlateIPv4ID 20
433433
uint32_t xlateSrcAddr; // NF_F_XLATE_SRC_ADDR_IPV4(225), NF_F_XLATE_SRC_ADDR_84(40001)
434434
uint32_t xlateDstAddr; // NF_F_XLATE_DST_ADDR_IPV4(226), NF_F_XLATE_DST_ADDR_84(40002)
435-
#define OFFxlateSrc4Addr offsetof(EXnselXlateIPv4_t, xlateSrcAddr)
436-
#define SIZExlateSrc4Addr MemberSize(EXnselXlateIPv4_t, xlateSrcAddr)
437-
#define OFFxlateDst4Addr offsetof(EXnselXlateIPv4_t, xlateDstAddr)
438-
#define SIZExlateDst4Addr MemberSize(EXnselXlateIPv4_t, xlateDstAddr)
439-
} EXnselXlateIPv4_t;
440-
#define EXnselXlateIPv4Size (sizeof(EXnselXlateIPv4_t) + sizeof(elementHeader_t))
441-
442-
typedef struct EXnselXlateIPv6_s {
443-
#define EXnselXlateIPv6ID 21
435+
#define OFFxlateSrc4Addr offsetof(EXnatXlateIPv4_t, xlateSrcAddr)
436+
#define SIZExlateSrc4Addr MemberSize(EXnatXlateIPv4_t, xlateSrcAddr)
437+
#define OFFxlateDst4Addr offsetof(EXnatXlateIPv4_t, xlateDstAddr)
438+
#define SIZExlateDst4Addr MemberSize(EXnatXlateIPv4_t, xlateDstAddr)
439+
} EXnatXlateIPv4_t;
440+
#define EXnatXlateIPv4Size (sizeof(EXnatXlateIPv4_t) + sizeof(elementHeader_t))
441+
442+
typedef struct EXnatXlateIPv6_s {
443+
#define EXnatXlateIPv6ID 21
444444
uint64_t xlateSrcAddr[2]; // NF_F_XLATE_SRC_ADDR_IPV6(281),
445445
uint64_t xlateDstAddr[2]; // NF_F_XLATE_DST_ADDR_IPV6(282),
446-
#define OFFxlateSrc6Addr offsetof(EXnselXlateIPv6_t, xlateSrcAddr)
447-
#define SIZExlateSrc6Addr MemberSize(EXnselXlateIPv6_t, xlateSrcAddr)
448-
#define OFFxlateDst6Addr offsetof(EXnselXlateIPv6_t, xlateDstAddr)
449-
#define SIZExlateDst6Addr MemberSize(EXnselXlateIPv6_t, xlateDstAddr)
450-
} EXnselXlateIPv6_t;
451-
#define EXnselXlateIPv6Size (sizeof(EXnselXlateIPv6_t) + sizeof(elementHeader_t))
452-
453-
typedef struct EXnselXlatePort_s {
454-
#define EXnselXlatePortID 22
446+
#define OFFxlateSrc6Addr offsetof(EXnatXlateIPv6_t, xlateSrcAddr)
447+
#define SIZExlateSrc6Addr MemberSize(EXnatXlateIPv6_t, xlateSrcAddr)
448+
#define OFFxlateDst6Addr offsetof(EXnatXlateIPv6_t, xlateDstAddr)
449+
#define SIZExlateDst6Addr MemberSize(EXnatXlateIPv6_t, xlateDstAddr)
450+
} EXnatXlateIPv6_t;
451+
#define EXnatXlateIPv6Size (sizeof(EXnatXlateIPv6_t) + sizeof(elementHeader_t))
452+
453+
typedef struct EXnatXlatePort_s {
454+
#define EXnatXlatePortID 22
455455
uint16_t xlateSrcPort; // NF_F_XLATE_SRC_PORT(227), NF_F_XLATE_SRC_PORT_84(40003)
456456
uint16_t xlateDstPort; // NF_F_XLATE_DST_PORT(228), NF_F_XLATE_DST_PORT_84(40004)
457-
#define OFFxlateSrcPort offsetof(EXnselXlatePort_t, xlateSrcPort)
458-
#define SIZExlateSrcPort MemberSize(EXnselXlatePort_t, xlateSrcPort)
459-
#define OFFxlateDstPort offsetof(EXnselXlatePort_t, xlateDstPort)
460-
#define SIZExlateDstPort MemberSize(EXnselXlatePort_t, xlateDstPort)
461-
} EXnselXlatePort_t;
462-
#define EXnselXlatePortSize (sizeof(EXnselXlatePort_t) + sizeof(elementHeader_t))
457+
#define OFFxlateSrcPort offsetof(EXnatXlatePort_t, xlateSrcPort)
458+
#define SIZExlateSrcPort MemberSize(EXnatXlatePort_t, xlateSrcPort)
459+
#define OFFxlateDstPort offsetof(EXnatXlatePort_t, xlateDstPort)
460+
#define SIZExlateDstPort MemberSize(EXnatXlatePort_t, xlateDstPort)
461+
} EXnatXlatePort_t;
462+
#define EXnatXlatePortSize (sizeof(EXnatXlatePort_t) + sizeof(elementHeader_t))
463463

464464
typedef struct EXnselAcl_s {
465465
#define EXnselAclID 23
@@ -511,22 +511,22 @@ typedef struct EXnelCommonCompat_s {
511511
} EXnelCommonCompat_t;
512512
#define EXnelCommonCompatSize (sizeof(EXnelCommonCompat_t) + sizeof(elementHeader_t))
513513

514-
typedef struct EXnelXlatePort_s {
515-
#define EXnelXlatePortID 26
514+
typedef struct EXnatPortBlock_s {
515+
#define EXnatPortBlockID 26
516516
uint16_t blockStart; // NF_F_XLATE_PORT_BLOCK_START(361)
517517
uint16_t blockEnd; // NF_F_XLATE_PORT_BLOCK_END(362)
518518
uint16_t blockStep; // NF_F_XLATE_PORT_BLOCK_STEP(363)
519519
uint16_t blockSize; // NF_F_XLATE_PORT_BLOCK_SIZE(364)
520-
#define OFFnelblockStart offsetof(EXnelXlatePort_t, blockStart)
521-
#define SIZEnelblockStart MemberSize(EXnelXlatePort_t, blockStart)
522-
#define OFFnelblockEnd offsetof(EXnelXlatePort_t, blockEnd)
523-
#define SIZEnelblockEnd MemberSize(EXnelXlatePort_t, blockEnd)
524-
#define OFFnelblockStep offsetof(EXnelXlatePort_t, blockStep)
525-
#define SIZEnelblockStep MemberSize(EXnelXlatePort_t, blockStep)
526-
#define OFFnelblockSize offsetof(EXnelXlatePort_t, blockSize)
527-
#define SIZEnelblockSize MemberSize(EXnelXlatePort_t, blockSize)
528-
} EXnelXlatePort_t;
529-
#define EXnelXlatePortSize (sizeof(EXnelXlatePort_t) + sizeof(elementHeader_t))
520+
#define OFFnelblockStart offsetof(EXnatPortBlock_t, blockStart)
521+
#define SIZEnelblockStart MemberSize(EXnatPortBlock_t, blockStart)
522+
#define OFFnelblockEnd offsetof(EXnatPortBlock_t, blockEnd)
523+
#define SIZEnelblockEnd MemberSize(EXnatPortBlock_t, blockEnd)
524+
#define OFFnelblockStep offsetof(EXnatPortBlock_t, blockStep)
525+
#define SIZEnelblockStep MemberSize(EXnatPortBlock_t, blockStep)
526+
#define OFFnelblockSize offsetof(EXnatPortBlock_t, blockSize)
527+
#define SIZEnelblockSize MemberSize(EXnatPortBlock_t, blockSize)
528+
} EXnatPortBlock_t;
529+
#define EXnatPortBlockSize (sizeof(EXnatPortBlock_t) + sizeof(elementHeader_t))
530530

531531
typedef struct EXnbarApp_s {
532532
#define EXnbarAppID 27
@@ -734,14 +734,14 @@ static const struct extensionTable_s {
734734
uint32_t size; // number of bytes incl. header, 0xFFFF for dyn length
735735
char *name; // name of extension
736736
} extensionTable[] = {
737-
{0, 0, "ExNull"}, EXTENSION(EXgenericFlow), EXTENSION(EXipv4Flow), EXTENSION(EXipv6Flow), EXTENSION(EXflowMisc),
738-
EXTENSION(EXcntFlow), EXTENSION(EXvLan), EXTENSION(EXasRouting), EXTENSION(EXbgpNextHopV4), EXTENSION(EXbgpNextHopV6),
739-
EXTENSION(EXipNextHopV4), EXTENSION(EXipNextHopV6), EXTENSION(EXipReceivedV4), EXTENSION(EXipReceivedV6), EXTENSION(EXmplsLabel),
740-
EXTENSION(EXmacAddr), EXTENSION(EXasAdjacent), EXTENSION(EXlatency), EXTENSION(EXsamplerInfo), EXTENSION(EXnselCommon),
741-
EXTENSION(EXnselXlateIPv4), EXTENSION(EXnselXlateIPv6), EXTENSION(EXnselXlatePort), EXTENSION(EXnselAcl), EXTENSION(EXnselUser),
742-
EXTENSION(EXnelCommon), EXTENSION(EXnelXlatePort), EXTENSION(EXnbarApp), EXTENSION(EXlabel), EXTENSION(EXinPayload),
743-
EXTENSION(EXoutPayload), EXTENSION(EXtunIPv4), EXTENSION(EXtunIPv6), EXTENSION(EXobservation), EXTENSION(EXinmonMeta),
744-
EXTENSION(EXinmonFrame), EXTENSION(EXvrf), EXTENSION(EXpfinfo), EXTENSION(EXlayer2)};
737+
{0, 0, "ExNull"}, EXTENSION(EXgenericFlow), EXTENSION(EXipv4Flow), EXTENSION(EXipv6Flow), EXTENSION(EXflowMisc),
738+
EXTENSION(EXcntFlow), EXTENSION(EXvLan), EXTENSION(EXasRouting), EXTENSION(EXbgpNextHopV4), EXTENSION(EXbgpNextHopV6),
739+
EXTENSION(EXipNextHopV4), EXTENSION(EXipNextHopV6), EXTENSION(EXipReceivedV4), EXTENSION(EXipReceivedV6), EXTENSION(EXmplsLabel),
740+
EXTENSION(EXmacAddr), EXTENSION(EXasAdjacent), EXTENSION(EXlatency), EXTENSION(EXsamplerInfo), EXTENSION(EXnselCommon),
741+
EXTENSION(EXnatXlateIPv4), EXTENSION(EXnatXlateIPv6), EXTENSION(EXnatXlatePort), EXTENSION(EXnselAcl), EXTENSION(EXnselUser),
742+
EXTENSION(EXnelCommon), EXTENSION(EXnatPortBlock), EXTENSION(EXnbarApp), EXTENSION(EXlabel), EXTENSION(EXinPayload),
743+
EXTENSION(EXoutPayload), EXTENSION(EXtunIPv4), EXTENSION(EXtunIPv6), EXTENSION(EXobservation), EXTENSION(EXinmonMeta),
744+
EXTENSION(EXinmonFrame), EXTENSION(EXvrf), EXTENSION(EXpfinfo), EXTENSION(EXlayer2)};
745745

746746
typedef struct record_map_s {
747747
recordHeaderV3_t *recordHeader;

0 commit comments

Comments
 (0)