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

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



Reviewed-by: Costin Lupu <costin.lupu@xxxxxxxxx>

On 6/25/19 7:32 PM, Vlad-Andrei BĂDOIU (78692) wrote:
> This patch adds endprotoent, setprotoent, getprotoent, getprotobyname and
> getprotobynumber from musl.
> 
> tag: v1.1.14
> commit <074e6b3fe3f2ad89b991f3d8ab0932035b312a62>
> 
> Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
> ---
>  Makefile.uk   |   1 +
>  exportsyms.uk |   5 +++
>  proto.c       | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 118 insertions(+)
>  create mode 100644 proto.c
> 
> diff --git a/Makefile.uk b/Makefile.uk
> index e7b7cc6..067aa04 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -70,6 +70,7 @@ LIBLWIP_CFLAGS-$(CONFIG_LWIP_DEBUG) += -DUK_DEBUG
>  # Core
>  
> ################################################################################
>  LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/alloc.c|unikraft
> +LIBLWIP_SRCS-y += $(LIBLWIP_BASE)/proto.c
>  LIBLWIP_SRCS-$(CONFIG_LWIP_THREADS) += $(LIBLWIP_BASE)/mutex.c|unikraft
>  LIBLWIP_SRCS-$(CONFIG_LWIP_THREADS) += $(LIBLWIP_BASE)/semaphore.c|unikraft
>  LIBLWIP_SRCS-$(CONFIG_LWIP_THREADS) += $(LIBLWIP_BASE)/mailbox.c|unikraft
> diff --git a/exportsyms.uk b/exportsyms.uk
> index 9d40bcd..0964804 100644
> --- a/exportsyms.uk
> +++ b/exportsyms.uk
> @@ -26,3 +26,8 @@ ip4addr_ntoa
>  ipaddr_addr
>  ip4addr_ntoa
>  h_errno
> +endprotoent
> +setprotoent
> +getprotoent
> +getprotobyname
> +getprotobynumber
> diff --git a/proto.c b/proto.c
> new file mode 100644
> index 0000000..9794300
> --- /dev/null
> +++ b/proto.c
> @@ -0,0 +1,112 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright (c) 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.
> + */
> +
> +#include <netdb.h>
> +#include <string.h>
> +
> +/* do we really need all these?? */
> +
> +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;
> +}
> +
> 

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