xref: /plan9-contrib/sys/src/cmd/unix/u9fs/remotehost.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
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