|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/LWIP PATCH 2/5] Add getaddrinfo() wrapper
From: Bogdan Lascu <lascu.bogdan96@xxxxxxxxx>
... and freeaddrinfo() and gai_strerror().
Signed-off-by: Bogdan Lascu <lascu.bogdan96@xxxxxxxxx>
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
exportsyms.uk | 3 +++
include/netdb.h | 8 +++++++-
inet.c | 23 +++++++++++++++++++++++
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/exportsyms.uk b/exportsyms.uk
index ca0a748..7362abb 100644
--- a/exportsyms.uk
+++ b/exportsyms.uk
@@ -35,3 +35,6 @@ getservbyname
getservbyport
inet_ntop
inet_pton
+lwip_getaddrinfo
+lwip_freeaddrinfo
+gai_strerror
diff --git a/include/netdb.h b/include/netdb.h
index dbed0cd..0cbcb5e 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -4,7 +4,11 @@
#define gethostbyname(name) lwip_gethostbyname(name)
#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \
- lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop)
+ lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop)
+
+#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo)
+#define getaddrinfo(nodname, servname, hints, res) \
+ lwip_getaddrinfo(nodname, servname, hints, res)
#endif /* LWIP_DNS && LWIP_SOCKET && !(LWIP_COMPAT_SOCKETS) */
@@ -20,3 +24,5 @@ struct protoent {
char **p_aliases; /* alias list */
int p_proto; /* protocol # */
};
+
+const char *gai_strerror(int errcode);
diff --git a/inet.c b/inet.c
index 07dafe6..f718e38 100644
--- a/inet.c
+++ b/inet.c
@@ -43,3 +43,26 @@ int inet_pton(int af, const char *src, void *dst)
{
return lwip_inet_pton(af, src, dst);
}
+
+/* Note: lwip implementation of getaddrinfo does not return all the errors
+ * codes mentioned in its man page.
+ */
+const char *gai_strerror(int errcode)
+{
+ switch (errcode) {
+#if LWIP_DNS_API_DEFINE_ERRORS
+ case EAI_NONAME:
+ return "The node or service is not known; or both node and
service are NULL.";
+ case EAI_SERVICE:
+ return "The requested service is not available for the
requested socket type.";
+ case EAI_FAIL:
+ return "The name server returned a permanent failure
indication.";
+ case EAI_MEMORY:
+ return "Out of memory.";
+ case EAI_FAMILY:
+ return "The requested address family is not supported.";
+#endif /* LWIP_DNS_API_DEFINE_ERRORS */
+ default:
+ return "Error on getaddrinfo.";
+ }
+}
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |