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