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

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



Hi Simon, looks good, thanks.

-- Felipe

Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>

On 12.02.20, 15:31, "Simon Kuenzer" <simon.kuenzer@xxxxxxxxx> wrote:

    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®.