Print client ip address in httpd and telnetd

上级 e91ed64d
...@@ -275,7 +275,7 @@ main(void) ...@@ -275,7 +275,7 @@ main(void)
printf(2, "telnetd accept: %d\n", ss); printf(2, "telnetd accept: %d\n", ss);
continue; continue;
} }
printf(1, "httpd: connection\n"); printf(1, "httpd: connection %s\n", ipaddr(&sin));
client(ss); client(ss);
close(ss); close(ss);
......
...@@ -37,7 +37,7 @@ main(void) ...@@ -37,7 +37,7 @@ main(void)
printf(2, "telnetd accept: %d\n", ss); printf(2, "telnetd accept: %d\n", ss);
continue; continue;
} }
printf(1, "telnetd: connection\n"); printf(1, "telnetd: connection %s\n", ipaddr(&sin));
pid = fork(0); pid = fork(0);
if (pid < 0) { if (pid < 0) {
......
...@@ -7,4 +7,19 @@ extern int bind(int sockfd, const struct sockaddr *addr, ...@@ -7,4 +7,19 @@ extern int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen); socklen_t addrlen);
extern int listen(int sockfd, int backlog); extern int listen(int sockfd, int backlog);
extern int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 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 #endif
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论