/* * two kinds of target formats: * 1) 192.168.0.1:80-192.168.0.2:8080 * 2) 80-192.168.0.2:8080 */ static int parse_target(ip_port_pair_mapping_t *ip_port, char *addr) { char *seq, *addr1, *addr2; if ((seq = strchr(addr, '-')) == NULL) { tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr); return -1; } else { *seq = '\0'; } addr1 = addr; addr2 = seq + 1; parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port); parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port); if (clt_settings.lo_tf_ip == 0) { clt_settings.lo_tf_ip = ip_port->online_ip; } *seq = '-'; return 0; }
/* * two kinds of target formats: * 1) 192.168.0.1:80-192.168.0.2:8080 * 2) 80-192.168.0.2:8080 */ static int parse_target(ip_port_pair_mapping_t *ip_port, char *addr) { char *seq, *addr1, *addr2; if ((seq = strchr(addr, '-')) == NULL) { tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr); return -1; } else { *seq = '\0'; } addr1 = addr; addr2 = seq + 1; parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port, ip_port->src_mac); parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port, ip_port->dst_mac); if (ip_port->target_ip == LOCALHOST) { clt_settings.target_localhost = 1; tc_log_info(LOG_WARN, 0, "target host is 127.0.0.1"); tc_log_info(LOG_WARN, 0, "only client requests from localhost are valid"); } *seq = '-'; return 0; }
/* * two kinds of target formats: * 1) 192.168.0.1:80-192.168.0.2:8080 * 2) 80-192.168.0.2:8080 */ static int parse_target(ip_port_pair_mapping_t *ip_port, char *addr) { char *seq, *addr1, *addr2; if ((seq = strchr(addr, '-')) == NULL) { tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr); return -1; } else { *seq = '\0'; } addr1 = addr; addr2 = seq + 1; parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port, ip_port->src_mac); parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port, ip_port->dst_mac); if (clt_settings.lo_tf_ip == 0) { clt_settings.lo_tf_ip = ip_port->online_ip; } if (ip_port->target_ip == LOCALHOST) { clt_settings.target_localhost = 1; tc_log_info(LOG_WARN, 0, "target host is 127.0.0.1"); tc_log_info(LOG_WARN, 0, "only client requests from localhost are valid"); } #if (TCPCOPY_PCAP) if (clt_settings.user_filter == NULL && ip_port->online_ip == 0) { if (ip_port->online_port == ip_port->target_port) { tc_log_info(LOG_WARN, 0, "captured port and target port are equal"); tc_log_info(LOG_WARN, 0, "choose a different port or set filter or set device"); } } #endif *seq = '-'; return 0; }
/* * two kinds of target formats: * 1) 192.168.0.1:80-192.168.0.2:8080 * 2) 80-192.168.0.2:8080 */ static int parse_target(transfer_map_t *ip_port, char *addr) { char *seq, *addr1, *addr2; if ((seq = strchr(addr, '-')) == NULL) { tc_log_info(LOG_WARN, 0, "target \"%s\" is invalid", addr); fprintf(stderr, "target \"%s\" is invalid\n", addr); return -1; } else { *seq = '\0'; } addr1 = addr; addr2 = seq + 1; parse_ip_port_pair(addr1, &ip_port->online_ip, &ip_port->online_port, ip_port->src_mac); parse_ip_port_pair(addr2, &ip_port->target_ip, &ip_port->target_port, ip_port->dst_mac); if (ip_port->target_ip == LOCALHOST) { clt_settings.target_localhost = 1; tc_log_info(LOG_WARN, 0, "target host is 127.0.0.1"); } #if (TC_PCAP) if (clt_settings.user_filter == NULL && ip_port->online_ip == 0) { if (ip_port->online_port == ip_port->target_port) { tc_log_info(LOG_WARN, 0, "captured port and target port are equal"); tc_log_info(LOG_ERR, 0, "set pcap filter to capture online inbound packets"); fprintf(stderr, "set -F argument to capture packets\n"); return -1; } } #endif *seq = '-'; return 0; }