static void check_content_type_and_change_protocol(struct ipoque_detection_module_struct *ipoque_struct) { #ifdef IPOQUE_PROTOCOL_MPEG struct ipoque_packet_struct *packet = &ipoque_struct->packet; #endif #ifdef IPOQUE_PROTOCOL_AVI #endif // struct ipoque_id_struct *src=ipoque_struct->src; // struct ipoque_id_struct *dst=ipoque_struct->dst; u8 a; if (ipoque_struct->packet.content_line.ptr != NULL && ipoque_struct->packet.content_line.len != 0) { IPQ_LOG(IPOQUE_PROTOCOL_HTTP, ipoque_struct, IPQ_LOG_DEBUG, "Content Type Line found %.*s\n", ipoque_struct->packet.content_line.len, ipoque_struct->packet.content_line.ptr); #ifdef IPOQUE_PROTOCOL_MPEG if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_MPEG) != 0) mpeg_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_FLASH if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_FLASH) != 0) flash_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_QUICKTIME if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_QUICKTIME) != 0) qt_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_REALMEDIA if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_REALMEDIA) != 0) realmedia_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_WINDOWSMEDIA if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_WINDOWSMEDIA) != 0) windowsmedia_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_MMS if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_MMS) != 0) mms_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_OFF if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_OFF) != 0) off_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_OGG if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_OGG) != 0) ogg_parse_packet_contentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_MOVE if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_MOVE) != 0) move_parse_packet_contentline(ipoque_struct); #endif } /* check user agent here too */ if (ipoque_struct->packet.user_agent_line.ptr != NULL && ipoque_struct->packet.user_agent_line.len != 0) { IPQ_LOG(IPOQUE_PROTOCOL_HTTP, ipoque_struct, IPQ_LOG_DEBUG, "User Agent Type Line found %.*s\n", ipoque_struct->packet.user_agent_line.len, ipoque_struct->packet.user_agent_line.ptr); #ifdef IPOQUE_PROTOCOL_XBOX if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_XBOX) != 0) xbox_parse_packet_useragentline(ipoque_struct); #endif #ifdef IPOQUE_PROTOCOL_WINDOWSMEDIA if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_WINDOWSMEDIA) != 0) winmedia_parse_packet_useragentline(ipoque_struct); #endif } /* check for host line */ if (ipoque_struct->packet.host_line.ptr != NULL) { IPQ_LOG(IPOQUE_PROTOCOL_HTTP, ipoque_struct, IPQ_LOG_DEBUG, "HOST Line found %.*s\n", ipoque_struct->packet.host_line.len, ipoque_struct->packet.host_line.ptr); #ifdef IPOQUE_PROTOCOL_QQ if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_QQ) != 0) { qq_parse_packet_URL_and_hostname(ipoque_struct); } #endif #ifdef HAVE_NTOP parseHttpSubprotocol(ipoque_struct); #endif } /* check for accept line */ if (ipoque_struct->packet.accept_line.ptr != NULL) { IPQ_LOG(IPOQUE_PROTOCOL_HTTP, ipoque_struct, IPQ_LOG_DEBUG, "Accept Line found %.*s\n", ipoque_struct->packet.accept_line.len, ipoque_struct->packet.accept_line.ptr); #ifdef IPOQUE_PROTOCOL_RTSP if (IPOQUE_COMPARE_PROTOCOL_TO_BITMASK(ipoque_struct->detection_bitmask, IPOQUE_PROTOCOL_RTSP) != 0) { rtsp_parse_packet_acceptline(ipoque_struct); } #endif } /* search for line startin with "Icy-MetaData" */ #ifdef IPOQUE_PROTOCOL_MPEG for (a = 0; a < packet->parsed_lines; a++) { if (packet->line[a].len > 11 && memcmp(packet->line[a].ptr, "Icy-MetaData", 12) == 0) { IPQ_LOG(IPOQUE_PROTOCOL_MPEG, ipoque_struct, IPQ_LOG_DEBUG, "MPEG: Icy-MetaData found.\n"); ipoque_int_http_add_connection(ipoque_struct, IPOQUE_PROTOCOL_MPEG); return; } } #ifdef IPOQUE_PROTOCOL_AVI #endif #endif }
static void check_content_type_and_change_protocol(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { #ifdef NDPI_PROTOCOL_MPEG struct ndpi_packet_struct *packet = &flow->packet; #endif #ifdef NDPI_PROTOCOL_AVI #endif // struct ndpi_id_struct *src=ndpi_struct->src; // struct ndpi_id_struct *dst=ndpi_struct->dst; u_int8_t a; if (packet->content_line.ptr != NULL && packet->content_line.len != 0) { NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "Content Type Line found %.*s\n", packet->content_line.len, packet->content_line.ptr); #ifdef NDPI_PROTOCOL_MPEG if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_MPEG) != 0) mpeg_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_FLASH if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_FLASH) != 0) flash_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_QUICKTIME if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_QUICKTIME) != 0) qt_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_REALMEDIA if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_REALMEDIA) != 0) realmedia_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_WINDOWSMEDIA if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WINDOWSMEDIA) != 0) windowsmedia_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_MMS if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_MMS) != 0) mms_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_OFF if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_OFF) != 0) off_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_OGG if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_OGG) != 0) ogg_parse_packet_contentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_MOVE if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_MOVE) != 0) move_parse_packet_contentline(ndpi_struct, flow); #endif } /* check user agent here too */ if (packet->user_agent_line.ptr != NULL && packet->user_agent_line.len != 0) { NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "User Agent Type Line found %.*s\n", packet->user_agent_line.len, packet->user_agent_line.ptr); #ifdef NDPI_PROTOCOL_XBOX if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_XBOX) != 0) xbox_parse_packet_useragentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_WINDOWS_UPDATE if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WINDOWS_UPDATE) != 0) windows_update_packet_useragentline(ndpi_struct, flow); #endif #ifdef NDPI_PROTOCOL_WINDOWSMEDIA if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WINDOWSMEDIA) != 0) winmedia_parse_packet_useragentline(ndpi_struct, flow); #endif } /* check for host line */ if (packet->host_line.ptr != NULL) { NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "HOST Line found %.*s\n", packet->host_line.len, packet->host_line.ptr); #ifdef NDPI_PROTOCOL_QQ if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_QQ) != 0) { qq_parse_packet_URL_and_hostname(ndpi_struct, flow); } #endif parseHttpSubprotocol(ndpi_struct, flow); } /* check for accept line */ if (packet->accept_line.ptr != NULL) { NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "Accept Line found %.*s\n", packet->accept_line.len, packet->accept_line.ptr); #ifdef NDPI_PROTOCOL_RTSP if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_RTSP) != 0) { rtsp_parse_packet_acceptline(ndpi_struct, flow); } #endif } /* search for line startin with "Icy-MetaData" */ #ifdef NDPI_PROTOCOL_MPEG for (a = 0; a < packet->parsed_lines; a++) { if (packet->line[a].len > 11 && memcmp(packet->line[a].ptr, "Icy-MetaData", 12) == 0) { NDPI_LOG(NDPI_PROTOCOL_MPEG, ndpi_struct, NDPI_LOG_DEBUG, "MPEG: Icy-MetaData found.\n"); ndpi_int_http_add_connection(ndpi_struct, flow, NDPI_PROTOCOL_MPEG); return; } } #ifdef NDPI_PROTOCOL_AVI #endif #endif }