[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT/LWIP PATCH] Stub getservbyport_r()



Building lwip breaks when nolibc is selected. getservbyport_r() was
relying on definitions which aren't available with nolibc. This commit
stubs this function because it seems that it wasn't used and tested so
far.

Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
 serv.c | 53 +++++------------------------------------------------
 1 file changed, 5 insertions(+), 48 deletions(-)

diff --git a/serv.c b/serv.c
index b08ffa4..80ae036 100644
--- a/serv.c
+++ b/serv.c
@@ -51,53 +51,10 @@ struct servent *getservbyport(int port __unused,
        return NULL;
 }
 
-int getservbyport_r(int port, const char *prots, struct servent *se, char 
*buf, size_t buflen, struct servent **res)
+int getservbyport_r(int port __unused, const char *prots __unused,
+                   struct servent *se __unused, char *buf __unused,
+                   size_t buflen __unused, struct servent **res __unused)
 {
-  int i;
-  struct sockaddr_in sin = {
-    .sin_family = AF_INET,
-    .sin_port = port,
-  };
-
-  if (!prots) {
-    int r = getservbyport_r(port, "tcp", se, buf, buflen, res);
-    if (r) r = getservbyport_r(port, "udp", se, buf, buflen, res);
-    return r;
-  }
-  *res = 0;
-
-  /* Align buffer */
-  i = (uintptr_t)buf & (sizeof(char *)-1);
-  if (!i) i = sizeof(char *);
-  if (buflen < 3*sizeof(char *)-i)
-    return ERANGE;
-  buf += sizeof(char *)-i;
-  buflen -= sizeof(char *)-i;
-
-  if (strcmp(prots, "tcp") && strcmp(prots, "udp")) return EINVAL;
-
-  se->s_port = port;
-  se->s_proto = (char *)prots;
-  se->s_aliases = (void *)buf;
-  buf += 2*sizeof(char *);
-  buflen -= 2*sizeof(char *);
-  se->s_aliases[1] = 0;
-  se->s_aliases[0] = se->s_name = buf;
-
-  switch (getnameinfo((void *)&sin, sizeof sin, 0, 0, buf, buflen,
-                     strcmp(prots, "udp") ? 0 : NI_DGRAM)) {
-  case EAI_MEMORY:
-  case EAI_SYSTEM:
-    return ENOMEM;
-  default:
-    return ENOENT;
-  case 0:
-    break;
-  }
-
-  /* A numeric port string is not a service record. */
-  if (strtol(buf, 0, 10)==ntohs(port)) return ENOENT;
-
-  *res = se;
-  return 0;
+       errno = ENOSYS;
+       return EAI_SYSTEM;
 }
-- 
2.20.1


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.