]> xenbits.xensource.com Git - unikraft/libs/lwip.git/commitdiff
Stub getservbyport_r()
authorSimon Kuenzer <simon.kuenzer@neclab.eu>
Wed, 12 Feb 2020 14:31:38 +0000 (15:31 +0100)
committerSimon Kuenzer <simon.kuenzer@neclab.eu>
Thu, 13 Feb 2020 09:42:08 +0000 (10:42 +0100)
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@neclab.eu>
Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>
serv.c

diff --git a/serv.c b/serv.c
index b08ffa4b333632e2d715546ed8e227d372d6bd79..80ae036e43ca4d9c976bb0594d87cf3d8162b3ff 100644 (file)
--- 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;
 }