Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r--winsup/cygwin/net.cc46
1 files changed, 46 insertions, 0 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index 00951a49d..23989dd10 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -2259,3 +2259,49 @@ cygwin_sendmsg (int fd, const struct msghdr *msg, int flags)
syscall_printf ("%d = sendmsg (%d, %p, %x)", res, fd, msg, flags);
return res;
}
+
+/* See "UNIX Network Programming, Networing APIs: Sockets and XTI",
+ W. Richard Stevens, Prentice Hall PTR, 1998. */
+extern "C" int
+cygwin_inet_pton (int family, const char *strptr, void *addrptr)
+{
+ if (family == AF_INET)
+ {
+ struct in_addr in_val;
+
+ if (cygwin_inet_aton (strptr, &in_val))
+ {
+ memcpy (addrptr, &in_val, sizeof (struct in_addr));
+ return 1;
+ }
+ return 0;
+ }
+ set_errno (EAFNOSUPPORT);
+ return -1;
+}
+
+/* See "UNIX Network Programming, Networing APIs: Sockets and XTI",
+ W. Richard Stevens, Prentice Hall PTR, 1998. */
+extern "C" const char *
+cygwin_inet_ntop (int family, const void *addrptr, char *strptr, size_t len)
+{
+ const u_char *p = (const u_char *) addrptr;
+
+ if (__check_null_invalid_struct_errno (strptr, len))
+ return NULL;
+ if (family == AF_INET)
+ {
+ char temp[64]; /* Big enough for 4 ints ... */
+
+ __small_sprintf (temp, "%u.%u.%u.%u", p[0], p[1], p[2], p[3]);
+ if (strlen (temp) >= len)
+ {
+ set_errno (ENOSPC);
+ return NULL;
+ }
+ strcpy (strptr, temp);
+ return strptr;
+ }
+ set_errno (EAFNOSUPPORT);
+ return NULL;
+}