aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_utils.c
diff options
context:
space:
mode:
authorIvan Kapranov <44571881+koltiradw@users.noreply.github.com>2025-02-16 19:04:16 +0300
committerGitHub <noreply@github.com>2025-02-16 17:04:16 +0100
commitccb15db9b36f86639a4932d000e201a2dc445abc (patch)
tree79b29460f8a540e630e5357acc0bbcdc47be14c9 /src/lib/ndpi_utils.c
parentd51b6ab0492e1c32e9954ee77a27a755ffaccc92 (diff)
Implement SSDP Metadata export (#2729)
Close #2524
Diffstat (limited to 'src/lib/ndpi_utils.c')
-rw-r--r--src/lib/ndpi_utils.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c
index 64c6c2d6d..0a3babe3f 100644
--- a/src/lib/ndpi_utils.c
+++ b/src/lib/ndpi_utils.c
@@ -1592,6 +1592,76 @@ int ndpi_dpi2json(struct ndpi_detection_module_struct *ndpi_struct,
}
break;
+ case NDPI_PROTOCOL_SSDP:
+ ndpi_serialize_start_of_block(serializer, "ssdp");
+
+ if (flow->protos.ssdp.method) {
+ ndpi_serialize_string_string(serializer, "METHOD", flow->protos.ssdp.method);
+ }
+
+ if (flow->protos.ssdp.cache_controle) {
+ ndpi_serialize_string_string(serializer, "CACHE-CONTROL", flow->protos.ssdp.cache_controle);
+ }
+
+ if (flow->protos.ssdp.location) {
+ ndpi_serialize_string_string(serializer, "LOCATION", flow->protos.ssdp.location);
+ }
+
+ if (flow->protos.ssdp.nt) {
+ ndpi_serialize_string_string(serializer, "NT", flow->protos.ssdp.nt);
+ }
+
+ if (flow->protos.ssdp.nts) {
+ ndpi_serialize_string_string(serializer, "NTS", flow->protos.ssdp.nts);
+ }
+
+ if (flow->protos.ssdp.server) {
+ ndpi_serialize_string_string(serializer, "SERVER", flow->protos.ssdp.server);
+ }
+
+ if (flow->protos.ssdp.usn) {
+ ndpi_serialize_string_string(serializer, "USN", flow->protos.ssdp.usn);
+ }
+
+ if (flow->protos.ssdp.rincon_household) {
+ ndpi_serialize_string_string(serializer, "X-RINCON-HOUSEHOLD", flow->protos.ssdp.rincon_household);
+ }
+
+ if (flow->protos.ssdp.rincon_bootseq) {
+ ndpi_serialize_string_string(serializer, "X-RINCON-BOOTSEQ", flow->protos.ssdp.rincon_bootseq);
+ }
+
+ if (flow->protos.ssdp.bootid) {
+ ndpi_serialize_string_string(serializer, "BOOTID.UPNP.ORG", flow->protos.ssdp.bootid);
+ }
+
+ if (flow->protos.ssdp.rincon_wifimode) {
+ ndpi_serialize_string_string(serializer, "X-RINCON-WIFIMODE", flow->protos.ssdp.rincon_wifimode);
+ }
+
+ if (flow->protos.ssdp.rincon_variant) {
+ ndpi_serialize_string_string(serializer, "X-RINCON-VARIANT", flow->protos.ssdp.rincon_variant);
+ }
+
+ if (flow->protos.ssdp.household_smart_speaker_audio) {
+ ndpi_serialize_string_string(serializer, "HOUSEHOLD.SMARTSPEAKER.AUDIO", flow->protos.ssdp.household_smart_speaker_audio);
+ }
+
+ if (flow->protos.ssdp.location_smart_speaker_audio) {
+ ndpi_serialize_string_string(serializer, "LOCATION.SMARTSPEAKER.AUDIO", flow->protos.ssdp.location_smart_speaker_audio);
+ }
+
+ if (flow->protos.ssdp.securelocation_upnp) {
+ ndpi_serialize_string_string(serializer, "SECURELOCATION.UPNP.ORG", flow->protos.ssdp.securelocation_upnp);
+ }
+
+ if (flow->protos.ssdp.sonos_securelocation) {
+ ndpi_serialize_string_string(serializer, "X-SONOS-HHSECURELOCATION", flow->protos.ssdp.sonos_securelocation);
+ }
+
+ ndpi_serialize_end_of_block(serializer);
+ break;
+
case NDPI_PROTOCOL_DISCORD:
if (l7_protocol.proto.master_protocol != NDPI_PROTOCOL_TLS) {
ndpi_serialize_start_of_block(serializer, "discord");