OSDN Git Service

Basic ping support.
authorRob Landley <rob@landley.net>
Wed, 31 Jan 2018 00:44:58 +0000 (18:44 -0600)
committerRob Landley <rob@landley.net>
Wed, 31 Jan 2018 00:44:58 +0000 (18:44 -0600)
Requires echo 0 $((1<<30)) > /proc/sys/net/ipv4/ping_group_range (as root)

lib/lib.h
lib/net.c

index 9466298..939d612 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -294,6 +294,7 @@ struct addrinfo *xgetaddrinfo(char *host, char *port, int family, int socktype,
 int xconnect(struct addrinfo *ai_arg);
 int xpoll(struct pollfd *fds, int nfds, int timeout);
 int pollinate(int in1, int in2, int out1, int out2, int timeout, int shutdown_timeout);
+char *ntop(struct sockaddr *sa);
 
 // password.c
 int get_salt(char *salt, char * algo);
index 5c6d4f7..846be31 100644 (file)
--- a/lib/net.c
+++ b/lib/net.c
@@ -102,3 +102,16 @@ int pollinate(int in1, int in2, int out1, int out2, int timeout, int shutdown_ti
     }
   }
 }
+
+// Return converted numeric address in libbuf
+char *ntop(struct sockaddr *sa)
+{
+  void *addr;
+
+  if (sa->sa_family == AF_INET) addr = &((struct sockaddr_in *)sa)->sin_addr;
+  else addr = &((struct sockaddr_in6 *)sa)->sin6_addr;
+
+  inet_ntop(sa->sa_family, addr, libbuf, sizeof(libbuf));
+
+  return libbuf;
+}