OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [newlib/] [libc/] [sys/] [linux/] [net/] [inet_net_ntop.c] - Diff between revs 148 and 158

Only display areas with differences | Details | Blame | View Log

Rev 148 Rev 158
/*
/*
 * Copyright (c) 1996 by Internet Software Consortium.
 * Copyright (c) 1996 by Internet Software Consortium.
 *
 *
 * Permission to use, copy, modify, and distribute this software for any
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 * copyright notice and this permission notice appear in all copies.
 *
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
 * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 * SOFTWARE.
 */
 */
 
 
#if defined(LIBC_SCCS) && !defined(lint)
#if defined(LIBC_SCCS) && !defined(lint)
static const char orig_rcsid[] = "From Id: inet_net_ntop.c,v 8.2 1996/08/08 06:54:44 vixie Exp";
static const char orig_rcsid[] = "From Id: inet_net_ntop.c,v 8.2 1996/08/08 06:54:44 vixie Exp";
#endif
#endif
#include <sys/cdefs.h>
#include <sys/cdefs.h>
#include <sys/types.h>
#include <sys/types.h>
 
 
#include <sys/types.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
 
 
#include <errno.h>
#include <errno.h>
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <string.h>
#include <stdlib.h>
#include <stdlib.h>
 
 
#ifdef SPRINTF_CHAR
#ifdef SPRINTF_CHAR
# define SPRINTF(x) strlen(sprintf/**/x)
# define SPRINTF(x) strlen(sprintf/**/x)
#else
#else
# define SPRINTF(x) ((size_t)sprintf x)
# define SPRINTF(x) ((size_t)sprintf x)
#endif
#endif
 
 
static char *   inet_net_ntop_ipv4(const u_char *src, int bits, char *dst,
static char *   inet_net_ntop_ipv4(const u_char *src, int bits, char *dst,
                    size_t size);
                    size_t size);
 
 
/*
/*
 * char *
 * char *
 * inet_net_ntop(af, src, bits, dst, size)
 * inet_net_ntop(af, src, bits, dst, size)
 *      convert network number from network to presentation format.
 *      convert network number from network to presentation format.
 *      generates CIDR style result always.
 *      generates CIDR style result always.
 * return:
 * return:
 *      pointer to dst, or NULL if an error occurred (check errno).
 *      pointer to dst, or NULL if an error occurred (check errno).
 * author:
 * author:
 *      Paul Vixie (ISC), July 1996
 *      Paul Vixie (ISC), July 1996
 */
 */
char *
char *
inet_net_ntop(af, src, bits, dst, size)
inet_net_ntop(af, src, bits, dst, size)
        int af;
        int af;
        const void *src;
        const void *src;
        int bits;
        int bits;
        char *dst;
        char *dst;
        size_t size;
        size_t size;
{
{
        switch (af) {
        switch (af) {
        case AF_INET:
        case AF_INET:
                return (inet_net_ntop_ipv4(src, bits, dst, size));
                return (inet_net_ntop_ipv4(src, bits, dst, size));
        default:
        default:
                errno = EAFNOSUPPORT;
                errno = EAFNOSUPPORT;
                return (NULL);
                return (NULL);
        }
        }
}
}
 
 
/*
/*
 * static char *
 * static char *
 * inet_net_ntop_ipv4(src, bits, dst, size)
 * inet_net_ntop_ipv4(src, bits, dst, size)
 *      convert IPv4 network number from network to presentation format.
 *      convert IPv4 network number from network to presentation format.
 *      generates CIDR style result always.
 *      generates CIDR style result always.
 * return:
 * return:
 *      pointer to dst, or NULL if an error occurred (check errno).
 *      pointer to dst, or NULL if an error occurred (check errno).
 * note:
 * note:
 *      network byte order assumed.  this means 192.5.5.240/28 has
 *      network byte order assumed.  this means 192.5.5.240/28 has
 *      0x11110000 in its fourth octet.
 *      0x11110000 in its fourth octet.
 * author:
 * author:
 *      Paul Vixie (ISC), July 1996
 *      Paul Vixie (ISC), July 1996
 */
 */
static char *
static char *
inet_net_ntop_ipv4(src, bits, dst, size)
inet_net_ntop_ipv4(src, bits, dst, size)
        const u_char *src;
        const u_char *src;
        int bits;
        int bits;
        char *dst;
        char *dst;
        size_t size;
        size_t size;
{
{
        char *odst = dst;
        char *odst = dst;
        char *t;
        char *t;
        u_int m;
        u_int m;
        int b;
        int b;
 
 
        if (bits < 0 || bits > 32) {
        if (bits < 0 || bits > 32) {
                errno = EINVAL;
                errno = EINVAL;
                return (NULL);
                return (NULL);
        }
        }
        if (bits == 0) {
        if (bits == 0) {
                if (size < sizeof "0")
                if (size < sizeof "0")
                        goto emsgsize;
                        goto emsgsize;
                *dst++ = '0';
                *dst++ = '0';
                *dst = '\0';
                *dst = '\0';
        }
        }
 
 
        /* Format whole octets. */
        /* Format whole octets. */
        for (b = bits / 8; b > 0; b--) {
        for (b = bits / 8; b > 0; b--) {
                if (size < sizeof "255.")
                if (size < sizeof "255.")
                        goto emsgsize;
                        goto emsgsize;
                t = dst;
                t = dst;
                dst += SPRINTF((dst, "%u", *src++));
                dst += SPRINTF((dst, "%u", *src++));
                if (b > 1) {
                if (b > 1) {
                        *dst++ = '.';
                        *dst++ = '.';
                        *dst = '\0';
                        *dst = '\0';
                }
                }
                size -= (size_t)(dst - t);
                size -= (size_t)(dst - t);
        }
        }
 
 
        /* Format partial octet. */
        /* Format partial octet. */
        b = bits % 8;
        b = bits % 8;
        if (b > 0) {
        if (b > 0) {
                if (size < sizeof ".255")
                if (size < sizeof ".255")
                        goto emsgsize;
                        goto emsgsize;
                t = dst;
                t = dst;
                if (dst != odst)
                if (dst != odst)
                        *dst++ = '.';
                        *dst++ = '.';
                m = ((1 << b) - 1) << (8 - b);
                m = ((1 << b) - 1) << (8 - b);
                dst += SPRINTF((dst, "%u", *src & m));
                dst += SPRINTF((dst, "%u", *src & m));
                size -= (size_t)(dst - t);
                size -= (size_t)(dst - t);
        }
        }
 
 
        /* Format CIDR /width. */
        /* Format CIDR /width. */
        if (size < sizeof "/32")
        if (size < sizeof "/32")
                goto emsgsize;
                goto emsgsize;
        dst += SPRINTF((dst, "/%u", bits));
        dst += SPRINTF((dst, "/%u", bits));
        return (odst);
        return (odst);
 
 
 emsgsize:
 emsgsize:
        errno = EMSGSIZE;
        errno = EMSGSIZE;
        return (NULL);
        return (NULL);
}
}
 
 
/*
/*
 * Weak aliases for applications that use certain private entry points,
 * Weak aliases for applications that use certain private entry points,
 * and fail to include <arpa/inet.h>.
 * and fail to include <arpa/inet.h>.
 */
 */
#undef inet_net_ntop
#undef inet_net_ntop
__weak_reference(__inet_net_ntop, inet_net_ntop);
__weak_reference(__inet_net_ntop, inet_net_ntop);
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.