Print client ip address in httpd and telnetd

上级 e91ed64d
......@@ -275,7 +275,7 @@ main(void)
printf(2, "telnetd accept: %d\n", ss);
continue;
}
printf(1, "httpd: connection\n");
printf(1, "httpd: connection %s\n", ipaddr(&sin));
client(ss);
close(ss);
......
......@@ -37,7 +37,7 @@ main(void)
printf(2, "telnetd accept: %d\n", ss);
continue;
}
printf(1, "telnetd: connection\n");
printf(1, "telnetd: connection %s\n", ipaddr(&sin));
pid = fork(0);
if (pid < 0) {
......
......@@ -7,4 +7,19 @@ extern int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
extern int listen(int sockfd, int backlog);
extern int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
static inline const char *
ipaddr(struct sockaddr_in *sin)
{
static char buf[16];
u32 addr = ntohl(sin->sin_addr.s_addr);
snprintf(buf, sizeof(buf), "%d.%d.%d.%d",
(addr & 0xff000000) >> 24,
(addr & 0x00ff0000) >> 16,
(addr & 0x0000ff00) >> 8,
(addr & 0x000000ff));
return buf;
}
#endif
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论