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

Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* functions



Hi,

Looks good, thanks.

— Felipe

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

On 11.06.19, 08:32, "Vlad-Andrei BĂDOIU (78692)" 
<vlad_andrei.badoiu@xxxxxxxxxxxxxxx> wrote:

    This patch adds endprotoent, setprotoent, getprotoent, getprotobyname and
    getprotobynumber from musl release 1.1.14.
    
    Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
    ---
     Makefile.uk |   1 +
     proto.c     | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++
     2 files changed, 114 insertions(+)
     create mode 100644 proto.c
    
    diff --git a/Makefile.uk b/Makefile.uk
    index 9d1b275..5450ed2 100644
    --- a/Makefile.uk
    +++ b/Makefile.uk
    @@ -115,6 +115,7 @@ LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/time.c|glue
     LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/locale.c
     LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/dev.c
     LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/signal.c
    +LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/proto.c
     
     
################################################################################
     # Newlib/libc code -- argz
    diff --git a/proto.c b/proto.c
    new file mode 100644
    index 0000000..a16dc3b
    --- /dev/null
    +++ b/proto.c
    @@ -0,0 +1,113 @@
    +/* SPDX-License-Identifier: MIT */
    +/* ----------------------------------------------------------------------
    + * Copyright © 2005-2014 Rich Felker, et al.
    + *
    + * Permission is hereby granted, free of charge, to any person obtaining
    + * a copy of this software and associated documentation files (the
    + * "Software"), to deal in the Software without restriction, including
    + * without limitation the rights to use, copy, modify, merge, publish,
    + * distribute, sublicense, and/or sell copies of the Software, and to
    + * permit persons to whom the Software is furnished to do so, subject to
    + * the following conditions:
    + *
    + * The above copyright notice and this permission notice shall be
    + * included in all copies or substantial portions of the Software.
    + *
    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    + * ----------------------------------------------------------------------
    + */
    +/* Taken from musl */
    +
    +#include <netdb.h>
    +#include <string.h>
    +
    +static int idx;
    +static const unsigned char protos[] = {
    +   "\000ip\0"
    +   "\001icmp\0"
    +   "\002igmp\0"
    +   "\003ggp\0"
    +   "\004ipencap\0"
    +   "\005st\0"
    +   "\006tcp\0"
    +   "\010egp\0"
    +   "\014pup\0"
    +   "\021udp\0"
    +   "\024hmp\0"
    +   "\026xns-idp\0"
    +   "\033rdp\0"
    +   "\035iso-tp4\0"
    +   "\044xtp\0"
    +   "\045ddp\0"
    +   "\046idpr-cmtp\0"
    +   "\051ipv6\0"
    +   "\053ipv6-route\0"
    +   "\054ipv6-frag\0"
    +   "\055idrp\0"
    +   "\056rsvp\0"
    +   "\057gre\0"
    +   "\062esp\0"
    +   "\063ah\0"
    +   "\071skip\0"
    +   "\072ipv6-icmp\0"
    +   "\073ipv6-nonxt\0"
    +   "\074ipv6-opts\0"
    +   "\111rspf\0"
    +   "\121vmtp\0"
    +   "\131ospf\0"
    +   "\136ipip\0"
    +   "\142encap\0"
    +   "\147pim\0"
    +   "\377raw"
    +};
    +
    +void endprotoent(void)
    +{
    +   idx = 0;
    +}
    +
    +void setprotoent(int stayopen)
    +{
    +   idx = 0;
    +}
    +
    +struct protoent *getprotoent(void)
    +{
    +   static struct protoent p;
    +   static const char *aliases;
    +
    +   if (idx >= sizeof(protos))
    +           return NULL;
    +   p.p_proto = protos[idx];
    +   p.p_name = (char *)&protos[idx+1];
    +   p.p_aliases = (char **)&aliases;
    +   idx += strlen(p.p_name) + 2;
    +   return &p;
    +}
    +
    +struct protoent *getprotobyname(const char *name)
    +{
    +   struct protoent *p;
    +
    +   endprotoent();
    +   do p = getprotoent();
    +   while (p && strcmp(name, p->p_name));
    +   return p;
    +}
    +
    +struct protoent *getprotobynumber(int num)
    +{
    +   struct protoent *p;
    +
    +   endprotoent();
    +   do p = getprotoent();
    +   while (p && p->p_proto != num);
    +   return p;
    +}
    +
    -- 
    2.21.0
    
    

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