1414
1515#include " dnssd.hpp"
1616
17- #include < iostream >
17+ #include " dnssdOptionsParser.hpp "
1818
19- #include < ipfixprobe/pluginFactory/pluginManifest.hpp>
20- #include < ipfixprobe/pluginFactory/pluginRegistrar.hpp>
19+ #include < iostream>
2120
22- // #include <pluginManifest.hpp>
23- // #include <pluginRegistrar.hpp>
24- // #include <pluginFactory.hpp>
21+ #include < dnsParser/dnsParser.hpp>
22+ #include < dnsParser/dnsQueryType.hpp>
2523#include < fieldGroup.hpp>
2624#include < fieldManager.hpp>
25+ #include < ipfixprobe/pluginFactory/pluginManifest.hpp>
26+ #include < ipfixprobe/pluginFactory/pluginRegistrar.hpp>
2727#include < utils.hpp>
28- #include < dnsParser/dnsParser.hpp>
29- #include < dnsParser/dnsQueryType.hpp>
30- #include < utils/stringViewUtils.hpp>
31- #include < utils/stringUtils.hpp>
3228#include < utils/spanUtils.hpp>
33-
34- #include " dnssdOptionsParser .hpp"
29+ # include < utils/stringUtils.hpp >
30+ #include < utils/stringViewUtils .hpp>
3531
3632namespace ipxp {
3733
@@ -47,31 +43,35 @@ static const PluginManifest dnssdPluginManifest = {
4743 },
4844};
4945
50- static FieldGroup createDNSSDSchema (FieldManager& fieldManager, FieldHandlers<DNSSDFields>& handlers)
46+ static FieldGroup
47+ createDNSSDSchema (FieldManager& fieldManager, FieldHandlers<DNSSDFields>& handlers)
5148{
5249 FieldGroup schema = fieldManager.createFieldGroup (" dnssd" );
5350
54- handlers.insert (DNSSDFields::DNSSD_QUERIES, schema.addScalarField (" DNSSD_QUERIES" , [](const void * context) {
55- return toStringView (static_cast <const DNSSDData*>(context)->queries );
56- }));
51+ handlers.insert (
52+ DNSSDFields::DNSSD_QUERIES,
53+ schema.addScalarField (" DNSSD_QUERIES" , [](const void * context) {
54+ return toStringView (static_cast <const DNSSDData*>(context)->queries );
55+ }));
5756
58- handlers.insert (DNSSDFields::DNSSD_RESPONSES, schema.addScalarField (" DNSSD_RESPONSES" , [](const void * context) {
59- return toStringView (static_cast <const DNSSDData*>(context)->responses );
60- }));
57+ handlers.insert (
58+ DNSSDFields::DNSSD_RESPONSES,
59+ schema.addScalarField (" DNSSD_RESPONSES" , [](const void * context) {
60+ return toStringView (static_cast <const DNSSDData*>(context)->responses );
61+ }));
6162
6263 return schema;
6364}
6465
65- DNSSDPlugin::DNSSDPlugin ([[maybe_unused]]const std::string& params, FieldManager& manager)
66+ DNSSDPlugin::DNSSDPlugin ([[maybe_unused]] const std::string& params, FieldManager& manager)
6667{
6768 createDNSSDSchema (manager, m_fieldHandlers);
6869}
6970
7071PluginInitResult DNSSDPlugin::onInit (const FlowContext& flowContext, void * pluginContext)
7172{
7273 constexpr uint16_t DNSSD_PORT = 5353 ;
73- if (flowContext.packet .src_port != DNSSD_PORT &&
74- flowContext.packet .dst_port != DNSSD_PORT) {
74+ if (flowContext.packet .src_port != DNSSD_PORT && flowContext.packet .dst_port != DNSSD_PORT) {
7575 return {
7676 .constructionState = ConstructionState::NotConstructed,
7777 .updateRequirement = UpdateRequirement::NoUpdateNeeded,
@@ -83,7 +83,10 @@ PluginInitResult DNSSDPlugin::onInit(const FlowContext& flowContext, void* plugi
8383 // TODO USE VALUES FROM DISSECTOR
8484 constexpr std::size_t TCP = 6 ;
8585 const bool isDNSoverTCP = (flowContext.packet .ip_proto == TCP);
86- if (!parseDNSSD (toSpan<const std::byte>(flowContext.packet .payload , flowContext.packet .payload_len ), isDNSoverTCP, *pluginData)) {
86+ if (!parseDNSSD (
87+ toSpan<const std::byte>(flowContext.packet .payload , flowContext.packet .payload_len ),
88+ isDNSoverTCP,
89+ *pluginData)) {
8790 return {
8891 .constructionState = ConstructionState::Constructed,
8992 .updateRequirement = UpdateRequirement::NoUpdateNeeded,
@@ -104,7 +107,10 @@ PluginUpdateResult DNSSDPlugin::onUpdate(const FlowContext& flowContext, void* p
104107 // TODO USE VALUES FROM DISSECTOR
105108 constexpr std::size_t TCP = 6 ;
106109 const bool isDNSoverTCP = (flowContext.packet .ip_proto == TCP);
107- if (!parseDNSSD (toSpan<const std::byte>(flowContext.packet .payload , flowContext.packet .payload_len ), isDNSoverTCP, *pluginData)) {
110+ if (!parseDNSSD (
111+ toSpan<const std::byte>(flowContext.packet .payload , flowContext.packet .payload_len ),
112+ isDNSoverTCP,
113+ *pluginData)) {
108114 return {
109115 .updateRequirement = UpdateRequirement::NoUpdateNeeded,
110116 .flowAction = FlowAction::RemovePlugin,
@@ -133,7 +139,7 @@ bool DNSSDPlugin::parseAnswer(const DNSRecord& answer, DNSSDData& pluginData) no
133139 return true ;
134140 }
135141
136- DNSSDRecord& record = pluginData.findOrInsert (answer.name );
142+ DNSSDRecord& record = pluginData.findOrInsert (answer.name );
137143 record.txtContent .append (txt.content );
138144 record.txtContent .push_back (' :' );
139145 }
@@ -149,25 +155,22 @@ bool DNSSDPlugin::parseAnswer(const DNSRecord& answer, DNSSDData& pluginData) no
149155}
150156
151157bool DNSSDPlugin::parseDNSSD (
152- std::span<const std::byte> payload,
158+ std::span<const std::byte> payload,
153159 const bool isDNSOverTCP,
154160 DNSSDData& pluginData) noexcept
155161{
156162 DNSParser parser;
157163
158- std::function<bool (const DNSQuestion& query)>
159- queryParser = [&](const DNSQuestion& query) {
164+ std::function<bool (const DNSQuestion& query)> queryParser = [&](const DNSQuestion& query) {
160165 pluginData.findOrInsert (query.name );
161166 return false ;
162167 };
163168
164- auto answerParser = [&](const DNSRecord& answer) {
165- return parseAnswer (answer, pluginData);
166- };
169+ auto answerParser = [&](const DNSRecord& answer) { return parseAnswer (answer, pluginData); };
167170
168- const bool parsed = parser. parse (
169- payload, isDNSOverTCP, queryParser, answerParser,
170- answerParser, answerParser);
171+ const bool parsed
172+ = parser
173+ . parse (payload, isDNSOverTCP, queryParser, answerParser, answerParser, answerParser);
171174 if (!parsed) {
172175 return false ;
173176 }
@@ -185,13 +188,18 @@ PluginExportResult DNSSDPlugin::onExport(const FlowRecord& flowRecord, void* plu
185188 };
186189 }
187190
188- concatenateRangeTo (pluginData.requests | std::views::transform ([](const DNSSDRecord& record) {
189- return record.requestName .toString ();
190- }), pluginData.queries , ' ;' );
191- concatenateRangeTo (pluginData.requests | std::views::transform ([](const DNSSDRecord& record) {
192- return record.toString ();
193- }), pluginData.responses , ' ;' );
194-
191+ concatenateRangeTo (
192+ pluginData.requests | std::views::transform ([](const DNSSDRecord& record) {
193+ return record.requestName .toString ();
194+ }),
195+ pluginData.queries ,
196+ ' ;' );
197+ concatenateRangeTo (
198+ pluginData.requests
199+ | std::views::transform ([](const DNSSDRecord& record) { return record.toString (); }),
200+ pluginData.responses ,
201+ ' ;' );
202+
195203 m_fieldHandlers[DNSSDFields::DNSSD_QUERIES].setAsAvailable (flowRecord);
196204 m_fieldHandlers[DNSSDFields::DNSSD_RESPONSES].setAsAvailable (flowRecord);
197205
@@ -200,7 +208,7 @@ PluginExportResult DNSSDPlugin::onExport(const FlowRecord& flowRecord, void* plu
200208 };
201209}
202210
203- void DNSSDPlugin::onDestroy (void * pluginContext)
211+ void DNSSDPlugin::onDestroy (void * pluginContext)
204212{
205213 std::destroy_at (reinterpret_cast <DNSSDData*>(pluginContext));
206214}
@@ -213,6 +221,9 @@ PluginDataMemoryLayout DNSSDPlugin::getDataMemoryLayout() const noexcept
213221 };
214222}
215223
216- static const PluginRegistrar<DNSSDPlugin, PluginFactory<ProcessPlugin, const std::string&, FieldManager&>> dnssdRegistrar (dnssdPluginManifest);
224+ static const PluginRegistrar<
225+ DNSSDPlugin,
226+ PluginFactory<ProcessPlugin, const std::string&, FieldManager&>>
227+ dnssdRegistrar (dnssdPluginManifest);
217228
218229} // namespace ipxp
0 commit comments