1 #include <sys/types.h> 2 #include <sys/socket.h> /* various networking crud */ 3 #include <netinet/in.h> 4 #include <netinet/tcp.h> 5 #include <netdb.h> 6 #include <plan9.h> 7 8 void 9 getremotehostname(char *name, int nname) 10 { 11 struct sockaddr_in sock; 12 struct hostent *hp; 13 uint len; 14 int on; 15 16 strecpy(name, name+nname, "unknown"); 17 len = sizeof sock; 18 if(getpeername(0, (struct sockaddr*)&sock, (void*)&len) < 0) 19 return; 20 21 hp = gethostbyaddr((char *)&sock.sin_addr, sizeof (struct in_addr), 22 sock.sin_family); 23 if(hp == 0) 24 return; 25 26 strecpy(name, name+nname, hp->h_name); 27 on = 1; 28 setsockopt(0, SOL_SOCKET, SO_KEEPALIVE, (char*)&on, sizeof(on)); 29 30 on = 1; 31 setsockopt(0, IPPROTO_TCP, TCP_NODELAY, (char*)&on, sizeof(on)); 32 } 33