source:
npl/overig/netcat_openbsd/patches/0008-verbose-numeric-port.patch
@
7c410f9
Last change on this file since 7c410f9 was c5c522c, checked in by , 8 years ago | |
---|---|
|
|
File size: 3.2 KB |
-
netcat.c
From: Aron Xu <aron@debian.org> Date: Mon, 13 Feb 2012 15:38:15 +0800 Subject: verbose numeric port --- netcat.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/netcat.c b/netcat.c index baab909..eb3453e 100644
a b 41 41 #include <netinet/tcp.h> 42 42 #include <netinet/ip.h> 43 43 #include <arpa/telnet.h> 44 #include <arpa/inet.h> 44 45 45 46 #ifndef IPTOS_LOWDELAY 46 47 # define IPTOS_LOWDELAY 0x10 … … main(int argc, char *argv[]) 424 425 s = local_listen(host, uport, hints); 425 426 if (s < 0) 426 427 err(1, NULL); 428 429 char* local; 430 if (family == AF_INET6 431 local = "0.0.0.0"; 432 else if (family == AF_INET) 433 local = ":::"; 434 else 435 local = "unknown" 436 fprintf(stderr, "Listening on [%s] (family %d, port %d)\n", 437 host ?: local, 438 family, 439 *uport); 427 440 /* 428 441 * For UDP, we will use recvfrom() initially 429 442 * to wait for a caller, then use the regular … … main(int argc, char *argv[]) 432 445 if (uflag) { 433 446 int rv, plen; 434 447 char buf[16384]; 435 struct sockaddr_storage z;436 448 437 len = sizeof( z);449 len = sizeof(cliaddr); 438 450 plen = jflag ? 16384 : 2048; 439 451 rv = recvfrom(s, buf, plen, MSG_PEEK, 440 (struct sockaddr *)& z, &len);452 (struct sockaddr *)&cliaddr, &len); 441 453 if (rv < 0) 442 454 err(1, "recvfrom"); 443 455 444 rv = connect(s, (struct sockaddr *)& z, len);456 rv = connect(s, (struct sockaddr *)&cliaddr, len); 445 457 if (rv < 0) 446 458 err(1, "connect"); 447 459 … … main(int argc, char *argv[]) 450 462 len = sizeof(cliaddr); 451 463 connfd = accept(s, (struct sockaddr *)&cliaddr, 452 464 &len); 465 if(vflag) { 466 /* Don't look up port if -n. */ 467 if (nflag) 468 sv = NULL; 469 else 470 sv = getservbyport(ntohs(atoi(uport)), 471 uflag ? "udp" : "tcp"); 472 473 if (((struct sockaddr *)&cliaddr)->sa_family == AF_INET) { 474 char dst[INET_ADDRSTRLEN]; 475 inet_ntop(((struct sockaddr *)&cliaddr)->sa_family,&(((struct sockaddr_in *)&cliaddr)->sin_addr),dst,INET_ADDRSTRLEN); 476 fprintf(stderr, "Connection from [%s] port %s [%s/%s] accepted (family %d, sport %d)\n", 477 dst, 478 uport, 479 uflag ? "udp" : "tcp", 480 sv ? sv->s_name : "*", 481 ((struct sockaddr *)(&cliaddr))->sa_family, 482 ntohs(((struct sockaddr_in *)&cliaddr)->sin_port)); 483 } 484 else if(((struct sockaddr *)&cliaddr)->sa_family == AF_INET6) { 485 char dst[INET6_ADDRSTRLEN]; 486 inet_ntop(((struct sockaddr *)&cliaddr)->sa_family,&(((struct sockaddr_in6 *)&cliaddr)->sin6_addr),dst,INET6_ADDRSTRLEN); 487 fprintf(stderr, "Connection from [%s] port %s [%s/%s] accepted (family %d, sport %d)\n", 488 dst, 489 uport, 490 uflag ? "udp" : "tcp", 491 sv ? sv->s_name : "*", 492 ((struct sockaddr *)&cliaddr)->sa_family, 493 ntohs(((struct sockaddr_in6 *)&cliaddr)->sin6_port)); 494 } 495 else { 496 fprintf(stderr, "Connection from unknown port %s [%s/%s] accepted (family %d, sport %d)\n", 497 uport, 498 uflag ? "udp" : "tcp", 499 sv ? sv->s_name : "*", 500 ((struct sockaddr *)(&cliaddr))->sa_family, 501 ntohs(((struct sockaddr_in *)&cliaddr)->sin_port)); 502 } 503 } 453 504 readwrite(connfd); 454 505 close(connfd); 455 506 }
Note: See TracBrowser
for help on using the repository browser.