diff options
Diffstat (limited to 'src/lib/protocols/tds.c')
-rw-r--r-- | src/lib/protocols/tds.c | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/src/lib/protocols/tds.c b/src/lib/protocols/tds.c index 7bf6639f4..32accbb6c 100644 --- a/src/lib/protocols/tds.c +++ b/src/lib/protocols/tds.c @@ -27,65 +27,65 @@ #ifdef NDPI_PROTOCOL_TDS static void ndpi_int_tds_add_connection(struct ndpi_detection_module_struct - *ndpi_struct, struct ndpi_flow_struct *flow) + *ndpi_struct, struct ndpi_flow_struct *flow) { - ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_TDS); + ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_TDS, NDPI_PROTOCOL_UNKNOWN); } void ndpi_search_tds_tcp(struct ndpi_detection_module_struct - *ndpi_struct, struct ndpi_flow_struct *flow) + *ndpi_struct, struct ndpi_flow_struct *flow) { - struct ndpi_packet_struct *packet = &flow->packet; + struct ndpi_packet_struct *packet = &flow->packet; -// struct ndpi_id_struct *src=ndpi_struct->src; -// struct ndpi_id_struct *dst=ndpi_struct->dst; + // struct ndpi_id_struct *src=ndpi_struct->src; + // struct ndpi_id_struct *dst=ndpi_struct->dst; - if (packet->payload_packet_len > 8 - && packet->payload_packet_len < 512 - && packet->payload[1] < 0x02 - && ntohs(get_u_int16_t(packet->payload, 2)) == packet->payload_packet_len && get_u_int16_t(packet->payload, 4) == 0x0000) { + if (packet->payload_packet_len > 8 + && packet->payload_packet_len < 512 + && packet->payload[1] < 0x02 + && ntohs(get_u_int16_t(packet->payload, 2)) == packet->payload_packet_len && get_u_int16_t(packet->payload, 4) == 0x0000) { - if (flow->l4.tcp.tds_stage == 0) { - if (packet->payload[0] != 0x02 && packet->payload[0] != 0x07 && packet->payload[0] != 0x12) { - goto exclude_tds; - } else { - flow->l4.tcp.tds_stage = 1 + packet->packet_direction; - flow->l4.tcp.tds_login_version = packet->payload[0]; - return; - } - } else if (flow->l4.tcp.tds_stage == 2 - packet->packet_direction) { - switch (flow->l4.tcp.tds_login_version) { - case 0x12: - if (packet->payload[0] == 0x04) { - flow->l4.tcp.tds_stage = 3 + packet->packet_direction; - return; - } else { - goto exclude_tds; - } - //TODO: add more cases for other versions - default: - goto exclude_tds; - } - } else if (flow->l4.tcp.tds_stage == 4 - packet->packet_direction) { - switch (flow->l4.tcp.tds_login_version) { - case 0x12: - if (packet->payload[0] == 0x12) { - NDPI_LOG(NDPI_PROTOCOL_TDS, ndpi_struct, NDPI_LOG_DEBUG, "TDS detected\n"); - ndpi_int_tds_add_connection(ndpi_struct, flow); - return; - } else { - goto exclude_tds; - } - //TODO: add more cases for other versions - default: - goto exclude_tds; - } - } + if (flow->l4.tcp.tds_stage == 0) { + if (packet->payload[0] != 0x02 && packet->payload[0] != 0x07 && packet->payload[0] != 0x12) { + goto exclude_tds; + } else { + flow->l4.tcp.tds_stage = 1 + packet->packet_direction; + flow->l4.tcp.tds_login_version = packet->payload[0]; + return; + } + } else if (flow->l4.tcp.tds_stage == 2 - packet->packet_direction) { + switch (flow->l4.tcp.tds_login_version) { + case 0x12: + if (packet->payload[0] == 0x04) { + flow->l4.tcp.tds_stage = 3 + packet->packet_direction; + return; + } else { + goto exclude_tds; } + //TODO: add more cases for other versions + default: + goto exclude_tds; + } + } else if (flow->l4.tcp.tds_stage == 4 - packet->packet_direction) { + switch (flow->l4.tcp.tds_login_version) { + case 0x12: + if (packet->payload[0] == 0x12) { + NDPI_LOG(NDPI_PROTOCOL_TDS, ndpi_struct, NDPI_LOG_DEBUG, "TDS detected\n"); + ndpi_int_tds_add_connection(ndpi_struct, flow); + return; + } else { + goto exclude_tds; + } + //TODO: add more cases for other versions + default: + goto exclude_tds; + } + } + } - exclude_tds: + exclude_tds: - NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_TDS); + NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_TDS); } #endif |