/**************************************************************************** Program: $Id: trace.c,v 1.6 2006/11/19 19:28:53 rbeverly Exp $ Author: Rob Beverly Date: $Date: 2006/11/19 19:28:53 $ Description: Traceroute wrapper ****************************************************************************/ #include "spoof.h" #ifdef _WIN32 #include #else #include #endif #define TRWAIT 10 // wait up to 10 seconds for results #define NUM_TR_EXEC 4 int alrm_brk = 0; int findtr(char *traceroute) { char tr[NUM_TR_EXEC][SMALLBUF] = { "/usr/local/sbin/traceroute", "/usr/sbin/traceroute", "/sbin/traceroute", "/usr/sbin/tracepath" }; FILE *fp; int i; #ifdef _WIN32 snprintf(traceroute, BUFSIZE, "tracert -d"); return(1); #endif for (i=0;i> Running Trace (please wait): %s\n", tracecmd); fp = popen(tracecmd, "r"); c = result; while (!feof(fp)) { #ifdef _WIN32 PeekMessage(&msg, NULL, 0, 0, 0); if (msg.message == WM_TIMER) { alrm_brk++; } #endif if (alrm_brk) return(ret); fgets(buff, BUFSIZE, fp); if (!feof(fp)) { read += strlen(buff); if (read < BIGBUF) { sprintf(c, "%s", buff); c += strlen(buff); } else { return(ret); } // printf("alrm_brk: %d %s", alrm_brk, buff); } } ret = pclose(fp); return(ret); } #if 0 int main() { char tracecmd[BUFSIZE]; char tracebuf[BIGBUF]; findtr(tracecmd); runtrace(tracecmd, "128.61.2.1", tracebuf); printf("string: %s\n", tracebuf); exit(0); } #endif