Skip to content

Commit 3aad9a4

Browse files
authored
Merge pull request #87 from CESNET/fx-probe-interface-in
Added InterfaceIn for Flexprobe data
2 parents 5e476e9 + a85fdce commit 3aad9a4

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

include/ipfixprobe/ipfix-elements.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ namespace ipxp {
264264

265265
#ifdef WITH_FLEXPROBE
266266
#define FX_FRAME_SIGNATURE(F) F(5715, 1010, 18, nullptr)
267+
#define FX_INPUT_INTERFACE(F) F(5715, 1015, 1, nullptr)
267268
#define FX_TCP_TRACKING(F) F(5715, 1020, 1, nullptr)
268269
#endif
269270

@@ -498,7 +499,7 @@ namespace ipxp {
498499
F(OSQUERY_SYSTEM_HOSTNAME)
499500

500501
#ifdef WITH_FLEXPROBE
501-
#define IPFIX_FLEXPROBE_DATA_TEMPLATE(F) F(FX_FRAME_SIGNATURE)
502+
#define IPFIX_FLEXPROBE_DATA_TEMPLATE(F) F(FX_FRAME_SIGNATURE) F(FX_INPUT_INTERFACE)
502503
#define IPFIX_FLEXPROBE_TCP_TEMPLATE(F) F(FX_TCP_TRACKING)
503504
#define IPFIX_FLEXPROBE_ENCR_TEMPLATE(F)
504505
#else

process/flexprobe-data-processing.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@
4545

4646
namespace ipxp {
4747

48-
int FrameSignature::REGISTERED_ID = -1;
48+
int FlexprobeData::REGISTERED_ID = -1;
4949

5050
__attribute__((constructor)) static void register_this_plugin()
5151
{
5252
static PluginRecord rec = PluginRecord("flexprobe-data", [](){return new FlexprobeDataProcessing();});
5353
register_plugin(&rec);
54-
FrameSignature::REGISTERED_ID = register_extension();
54+
FlexprobeData::REGISTERED_ID = register_extension();
5555
}
5656

5757
}

process/flexprobe-data-processing.h

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,25 @@
5353

5454
namespace ipxp {
5555

56-
struct FrameSignature : public RecordExt, public std::array<unsigned char, 18> {
56+
struct FlexprobeData : public RecordExt {
5757
static int REGISTERED_ID;
58+
std::array<unsigned char, 18> frame_signature;
59+
std::uint8_t interface_in;
5860

59-
FrameSignature() : RecordExt(REGISTERED_ID), std::array<unsigned char, 18>()
61+
FlexprobeData() : RecordExt(REGISTERED_ID), interface_in(0)
6062
{
63+
frame_signature.fill(0x0);
6164
}
6265

6366
virtual int fill_ipfix(uint8_t *buffer, int size)
6467
{
65-
if (sizeof(Flexprobe::FrameSignature) > size) {
68+
if ((sizeof(frame_signature) + sizeof(interface_in)) > size) {
6669
return -1;
6770
}
68-
std::copy(begin(), end(), buffer);
71+
std::copy(frame_signature.begin(), frame_signature.end(), buffer);
72+
*(buffer + sizeof(frame_signature)) = interface_in;
6973

70-
return sizeof(Flexprobe::FrameSignature);
74+
return frame_signature.size() + sizeof(interface_in);
7175
}
7276

7377
const char **get_ipfix_tmplt() const
@@ -87,7 +91,7 @@ class FlexprobeDataProcessing : public ProcessPlugin
8791

8892
void init(const char *params) {}
8993
void close() {}
90-
RecordExt *get_ext() const { return new FrameSignature(); }
94+
RecordExt *get_ext() const { return new FlexprobeData(); }
9195
OptionsParser *get_parser() const { return new OptionsParser("flexprobe-data", "Parse flexprobe data (Flexprobe HW only)"); }
9296
std::string get_name() const { return "flexprobe-data"; }
9397
FlexprobeDataProcessing *copy() override
@@ -101,11 +105,12 @@ class FlexprobeDataProcessing : public ProcessPlugin
101105
return 0;
102106
}
103107

104-
if (!rec.get_extension(FrameSignature::REGISTERED_ID)) {
105-
auto *fs = new FrameSignature();
108+
if (!rec.get_extension(FlexprobeData::REGISTERED_ID)) {
109+
auto *fd = new FlexprobeData();
106110
auto data_view = reinterpret_cast<const Flexprobe::FlexprobeData*>(pkt.custom);
107-
std::copy(data_view->frame_signature.begin(), data_view->frame_signature.end(), fs->begin());
108-
rec.add_extension(fs);
111+
std::copy(data_view->frame_signature.begin(), data_view->frame_signature.end(), fd->frame_signature.begin());
112+
fd->interface_in = data_view->interface_in;
113+
rec.add_extension(fd);
109114
}
110115
return 0;
111116
}

0 commit comments

Comments
 (0)