head 1.2; access; symbols; locks; strict; comment @ * @; 1.2 date 2003.04.25.21.58.30; author wessels; state Exp; branches; next 1.1; 1.1 date 2003.04.25.21.51.35; author wessels; state Exp; branches; next ; desc @@ 1.2 log @cleanup @ text @/* * $Id$ * * Executes 'traceroute' back to the client's IP address. To be invoked from * inetd, stdin/stdout should be a connected socket */ #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { struct sockaddr_in peer; char ipa[32]; int len = sizeof(peer); openlog(argv[0], LOG_NDELAY, LOG_DAEMON); memset(&peer, '\0', sizeof(peer)); memset(ipa, '\0', 32); if (getpeername(1, (struct sockaddr *) & peer, &len) < 0) { perror("getpeername"); exit(0); } strcpy(ipa, inet_ntoa(peer.sin_addr)); syslog(LOG_INFO, "Connection from %s", ipa); execl("/usr/local/sbin/traceroute", "/usr/local/sbin/traceroute", ipa, NULL); execl("/usr/sbin/traceroute", "/usr/sbin/traceroute", ipa, NULL); execl("/usr/etc/traceroute", "/usr/etc/traceroute", ipa, NULL); syslog(LOG_ERR, "traceroute: %s", strerror(errno)); return 0; } @ 1.1 log @Initial revision @ text @d1 6 a6 1 /* to be invoked from inetd, stdin/stdout should be a connected socket */ d16 2 d20 1 a20 1 main (int argc, char *argv[]) d22 17 a38 16 struct sockaddr_in peer; char ipa[32]; int len = sizeof(peer); memset(&peer, '\0', sizeof(peer)); memset(ipa, '\0', 32); if (getpeername(1, (struct sockaddr *) &peer, &len) < 0) { perror("getpeername"); exit(0); } strcpy(ipa, inet_ntoa(peer.sin_addr)); fprintf(stderr, "Connection from %s\n", ipa); execl("/usr/local/sbin/traceroute", "/usr/local/sbin/traceroute", ipa, NULL); execl("/usr/sbin/traceroute", "/usr/sbin/traceroute", ipa, NULL); execl("/usr/etc/traceroute", "/usr/etc/traceroute", ipa, NULL); perror("traceroute"); return 0; @