diff options
author | Darryl Sokoloski <darryl@sokoloski.ca> | 2022-03-27 05:10:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-27 11:10:44 +0200 |
commit | d668ab4becf446195f3c6cd338d5de2711d7bf4e (patch) | |
tree | c3b32f1b0e376c1ab31a2b0da21abb0106397a50 /src/lib/protocols/ssdp.c | |
parent | 856d7d2916369e42111543c54a5f784e1c87b2a2 (diff) |
[SSDP] Extract HTTP user-agent when available. (#1500)
[SSDP] Added capture file with UA header.
[SSDP] Added pcap test output log file.
Signed-off-by: Darryl Sokoloski <darryl@sokoloski.ca>
Diffstat (limited to 'src/lib/protocols/ssdp.c')
-rw-r--r-- | src/lib/protocols/ssdp.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/protocols/ssdp.c b/src/lib/protocols/ssdp.c index 92354b27a..cc2eb2f71 100644 --- a/src/lib/protocols/ssdp.c +++ b/src/lib/protocols/ssdp.c @@ -29,9 +29,30 @@ #include "ndpi_api.h" +static void ssdp_parse_lines(struct ndpi_detection_module_struct + *ndpi_struct, struct ndpi_flow_struct *flow) +{ + struct ndpi_packet_struct *packet = &ndpi_struct->packet; + + ndpi_parse_packet_line_info(ndpi_struct, flow); + + /* Save user-agent for device discovery if available */ + if(packet->user_agent_line.ptr != NULL && packet->user_agent_line.len != 0) { + if(flow->http.user_agent == NULL) { + flow->http.user_agent = ndpi_malloc(packet->user_agent_line.len + 1); + if(flow->http.user_agent) { + memcpy(flow->http.user_agent, + (char*)packet->user_agent_line.ptr, packet->user_agent_line.len); + flow->http.user_agent[packet->user_agent_line.len] = '\0'; + } + } + } +} + static void ndpi_int_ssdp_add_connection(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { + ssdp_parse_lines(ndpi_struct, flow); ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_SSDP, NDPI_PROTOCOL_UNKNOWN, NDPI_CONFIDENCE_DPI); } |