2N/A/*
2N/A * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
2N/A */
2N/A
2N/A/*
2N/A * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
2N/A * Copyright (C) 2001-2003 Internet Software Consortium.
2N/A *
2N/A * Permission to use, copy, modify, and/or distribute this software for any
2N/A * purpose with or without fee is hereby granted, provided that the above
2N/A * copyright notice and this permission notice appear in all copies.
2N/A *
2N/A * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
2N/A * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
2N/A * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
2N/A * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
2N/A * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
2N/A * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
2N/A * PERFORMANCE OF THIS SOFTWARE.
2N/A */
2N/A
2N/A/* $Id: port_after.h.in,v 1.60 2008/02/28 05:34:17 marka Exp $ */
2N/A
2N/A#ifndef port_after_h
2N/A#define port_after_h
2N/A
2N/A#include <stdio.h>
2N/A#include <sys/types.h>
2N/A#include <sys/socket.h>
2N/A#include <sys/param.h>
2N/A#include <sys/time.h>
2N/A#if (!defined(BSD)) || (BSD < 199306)
2N/A#include <sys/bitypes.h>
2N/A#endif
2N/A#ifdef HAVE_INTTYPES_H
2N/A#include <inttypes.h>
2N/A#endif
2N/A#ifdef HAVE_SYS_SELECT_H
2N/A#include <sys/select.h>
2N/A#endif /* HAVE_SYS_SELECT_H */
2N/A
2N/A#ifdef REENABLE_SEND
2N/A#undef send
2N/A#endif
2N/A
2N/A#undef NEED_PSELECT
2N/A#undef HAVE_SA_LEN
2N/A#undef HAVE_MINIMUM_IFREQ
2N/A#define NEED_DAEMON 1
2N/A#undef NEED_STRSEP
2N/A#undef NEED_STRERROR
2N/A#ifdef NEED_STRERROR
2N/Aconst char *isc_strerror(int);
2N/A#define strerror isc_strerror
2N/A#endif
2N/A/* HAS_INET6_STRUCTS and HAVE_SIN6_SCOPE_ID are defined by port_ipv6.h
2N/A * #define HAS_INET6_STRUCTS 1
2N/A * #define HAVE_SIN6_SCOPE_ID 1
2N/A */
2N/A#include <port_ipv6.h>
2N/A
2N/A#undef NEED_IN6ADDR_ANY
2N/A#undef HAS_IN_ADDR6
2N/A#define HAVE_SOCKADDR_STORAGE 1
2N/A#undef NEED_GETTIMEOFDAY
2N/A#define HAVE_STRNDUP
2N/A#undef USE_FIONBIO_IOCTL
2N/A#undef INNETGR_ARGS
2N/A
2N/A#undef USE_IFNAMELINKID
2N/A#define PORT_NONBLOCK O_NONBLOCK
2N/A
2N/A#ifndef _POSIX_PATH_MAX
2N/A#define _POSIX_PATH_MAX 255
2N/A#endif
2N/A#ifndef PATH_MAX
2N/A#define PATH_MAX _POSIX_PATH_MAX
2N/A#endif
2N/A
2N/A/*
2N/A * We need to know the IPv6 address family number even on IPv4-only systems.
2N/A * Note that this is NOT a protocol constant, and that if the system has its
2N/A * own AF_INET6, different from ours below, all of BIND's libraries and
2N/A * executables will need to be recompiled after the system <sys/socket.h>
2N/A * has had this type added. The type number below is correct on most BSD-
2N/A * derived systems for which AF_INET6 is defined.
2N/A */
2N/A#ifndef AF_INET6
2N/A#define AF_INET6 24
2N/A#endif
2N/A
2N/A#ifndef PF_INET6
2N/A#define PF_INET6 AF_INET6
2N/A#endif
2N/A
2N/A#ifdef HAS_IN_ADDR6
2N/A/* Map to pre-RFC structure. */
2N/A#define in6_addr in_addr6
2N/A#endif
2N/A
2N/A#ifndef HAS_INET6_STRUCTS
2N/A/* Replace with structure from later rev of O/S if known. */
2N/Astruct in6_addr {
2N/A u_int8_t s6_addr[16];
2N/A};
2N/A
2N/A#define IN6ADDR_ANY_INIT \
2N/A {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
2N/A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}
2N/A
2N/A#define IN6ADDR_LOOPBACK_INIT \
2N/A {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
2N/A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}
2N/A
2N/A/* Replace with structure from later rev of O/S if known. */
2N/Astruct sockaddr_in6 {
2N/A#ifdef HAVE_SA_LEN
2N/A u_int8_t sin6_len; /* length of this struct */
2N/A u_int8_t sin6_family; /* AF_INET6 */
2N/A#else
2N/A u_int16_t sin6_family; /* AF_INET6 */
2N/A#endif
2N/A u_int16_t sin6_port; /* transport layer port # */
2N/A u_int32_t sin6_flowinfo; /* IPv6 flow information */
2N/A struct in6_addr sin6_addr; /* IPv6 address */
2N/A u_int32_t sin6_scope_id; /* set of interfaces for a scope */
2N/A};
2N/A#endif /* HAS_INET6_STRUCTS */
2N/A
2N/A#ifdef BROKEN_IN6ADDR_INIT_MACROS
2N/A#undef IN6ADDR_ANY_INIT
2N/A#undef IN6ADDR_LOOPBACK_INIT
2N/A#endif
2N/A
2N/A#ifdef _AIX
2N/A#ifndef IN6ADDR_ANY_INIT
2N/A#define IN6ADDR_ANY_INIT {{{ 0, 0, 0, 0 }}}
2N/A#endif
2N/A#ifndef IN6ADDR_LOOPBACK_INIT
2N/A#if BYTE_ORDER == BIG_ENDIAN
2N/A#define IN6ADDR_LOOPBACK_INIT {{{ 0, 0, 0, 1 }}}
2N/A#else
2N/A#define IN6ADDR_LOOPBACK_INIT {{{0, 0, 0, 0x01000000}}}
2N/A#endif
2N/A#endif
2N/A#endif
2N/A
2N/A#ifndef IN6ADDR_ANY_INIT
2N/A#ifdef s6_addr
2N/A#define IN6ADDR_ANY_INIT \
2N/A {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
2N/A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
2N/A#else
2N/A#define IN6ADDR_ANY_INIT \
2N/A {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
2N/A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}
2N/A#endif
2N/A
2N/A#endif
2N/A#ifndef IN6ADDR_LOOPBACK_INIT
2N/A#ifdef s6_addr
2N/A#define IN6ADDR_LOOPBACK_INIT \
2N/A {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
2N/A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
2N/A#else
2N/A#define IN6ADDR_LOOPBACK_INIT \
2N/A {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
2N/A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}
2N/A#endif
2N/A#endif
2N/A
2N/A#ifndef HAVE_SOCKADDR_STORAGE
2N/A#define __SS_MAXSIZE 128
2N/A#define __SS_ALLIGSIZE (sizeof (long))
2N/A
2N/Astruct sockaddr_storage {
2N/A#ifdef HAVE_SA_LEN
2N/A u_int8_t ss_len; /* address length */
2N/A u_int8_t ss_family; /* address family */
2N/A char __ss_pad1[__SS_ALLIGSIZE - 2 * sizeof(u_int8_t)];
2N/A long __ss_align;
2N/A char __ss_pad2[__SS_MAXSIZE - 2 * __SS_ALLIGSIZE];
2N/A#else
2N/A u_int16_t ss_family; /* address family */
2N/A char __ss_pad1[__SS_ALLIGSIZE - sizeof(u_int16_t)];
2N/A long __ss_align;
2N/A char __ss_pad2[__SS_MAXSIZE - 2 * __SS_ALLIGSIZE];
2N/A#endif
2N/A};
2N/A#endif
2N/A
2N/A
2N/A#if !defined(HAS_INET6_STRUCTS) || defined(NEED_IN6ADDR_ANY)
2N/A#define in6addr_any isc_in6addr_any
2N/Aextern const struct in6_addr in6addr_any;
2N/A#endif
2N/A
2N/A/*
2N/A * IN6_ARE_ADDR_EQUAL, IN6_IS_ADDR_UNSPECIFIED, IN6_IS_ADDR_V4COMPAT and
2N/A * IN6_IS_ADDR_V4MAPPED are broken in glibc 2.1.
2N/A */
2N/A#ifdef __GLIBC__
2N/A#if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 2)
2N/A#undef IN6_ARE_ADDR_EQUAL
2N/A#undef IN6_IS_ADDR_UNSPECIFIED
2N/A#undef IN6_IS_ADDR_V4COMPAT
2N/A#undef IN6_IS_ADDR_V4MAPPED
2N/A#endif
2N/A#endif
2N/A
2N/A#ifndef IN6_ARE_ADDR_EQUAL
2N/A#define IN6_ARE_ADDR_EQUAL(a,b) \
2N/A (memcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof(struct in6_addr)) == 0)
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_UNSPECIFIED
2N/A#define IN6_IS_ADDR_UNSPECIFIED(a) \
2N/A IN6_ARE_ADDR_EQUAL(a, &in6addr_any)
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_LOOPBACK
2N/Aextern const struct in6_addr isc_in6addr_loopback;
2N/A#define IN6_IS_ADDR_LOOPBACK(a) \
2N/A IN6_ARE_ADDR_EQUAL(a, &isc_in6addr_loopback)
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_V4MAPPED
2N/A#define IN6_IS_ADDR_V4MAPPED(a) \
2N/A ((a)->s6_addr[0] == 0x00 && (a)->s6_addr[1] == 0x00 && \
2N/A (a)->s6_addr[2] == 0x00 && (a)->s6_addr[3] == 0x00 && \
2N/A (a)->s6_addr[4] == 0x00 && (a)->s6_addr[5] == 0x00 && \
2N/A (a)->s6_addr[6] == 0x00 && (a)->s6_addr[9] == 0x00 && \
2N/A (a)->s6_addr[8] == 0x00 && (a)->s6_addr[9] == 0x00 && \
2N/A (a)->s6_addr[10] == 0xff && (a)->s6_addr[11] == 0xff)
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_SITELOCAL
2N/A#define IN6_IS_ADDR_SITELOCAL(a) \
2N/A (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0))
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_LINKLOCAL
2N/A#define IN6_IS_ADDR_LINKLOCAL(a) \
2N/A (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80))
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_MULTICAST
2N/A#define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr[0] == 0xff)
2N/A#endif
2N/A
2N/A#ifndef __IPV6_ADDR_MC_SCOPE
2N/A#define __IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f)
2N/A#endif
2N/A
2N/A#ifndef __IPV6_ADDR_SCOPE_SITELOCAL
2N/A#define __IPV6_ADDR_SCOPE_SITELOCAL 0x05
2N/A#endif
2N/A#ifndef __IPV6_ADDR_SCOPE_ORGLOCAL
2N/A#define __IPV6_ADDR_SCOPE_ORGLOCAL 0x08
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_MC_SITELOCAL
2N/A#define IN6_IS_ADDR_MC_SITELOCAL(a) \
2N/A (IN6_IS_ADDR_MULTICAST(a) && \
2N/A (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL))
2N/A#endif
2N/A
2N/A#ifndef IN6_IS_ADDR_MC_ORGLOCAL
2N/A#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
2N/A (IN6_IS_ADDR_MULTICAST(a) && \
2N/A (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL))
2N/A#endif
2N/A
2N/A#ifndef INADDR_NONE
2N/A#define INADDR_NONE 0xffffffff
2N/A#endif
2N/A
2N/A#ifndef MAXHOSTNAMELEN
2N/A#define MAXHOSTNAMELEN 256
2N/A#endif
2N/A
2N/A#ifndef INET6_ADDRSTRLEN
2N/A/* sizeof("aaaa:bbbb:cccc:dddd:eeee:ffff:123.123.123.123") */
2N/A#define INET6_ADDRSTRLEN 46
2N/A#endif
2N/A
2N/A#ifndef MIN
2N/A#define MIN(x,y) (((x) <= (y)) ? (x) : (y))
2N/A#endif
2N/A
2N/A#ifndef MAX
2N/A#define MAX(x,y) (((x) >= (y)) ? (x) : (y))
2N/A#endif
2N/A
2N/A#ifdef NEED_DAEMON
2N/Aint daemon(int nochdir, int noclose);
2N/A#endif
2N/A
2N/A#ifdef NEED_STRSEP
2N/Achar * strsep(char **stringp, const char *delim);
2N/A#endif
2N/A
2N/A#ifndef ALIGN
2N/A#define ALIGN(p) (((uintptr_t)(p) + (sizeof(long) - 1)) & ~(sizeof(long) - 1))
2N/A#endif
2N/A
2N/A#ifdef NEED_SETGROUPENT
2N/Aint setgroupent(int stayopen);
2N/A#endif
2N/A
2N/A#ifdef NEED_GETGROUPLIST
2N/Aint getgrouplist(GETGROUPLIST_ARGS);
2N/A#endif
2N/A
2N/A#ifdef POSIX_GETGRNAM_R
2N/Aint
2N/A__posix_getgrnam_r(const char *, struct group *, char *, int, struct group **);
2N/A#endif
2N/A
2N/A#ifdef NEED_GETGRNAM_R
2N/Aint
2N/Agetgrnam_r(const char *, struct group *, char *, size_t, struct group **);
2N/A#endif
2N/A
2N/A#ifdef POSIX_GETGRGID_R
2N/Aint
2N/A__posix_getgrgid_r(gid_t, struct group *, char *, int, struct group **) ;
2N/A#endif
2N/A
2N/A#ifdef NEED_GETGRGID_R
2N/Aint
2N/Agetgrgid_r(gid_t, struct group *, char *, size_t, struct group **);
2N/A#endif
2N/A
2N/A#ifdef NEED_GETGRENT_R
2N/AGROUP_R_RETURN getgrent_r(struct group *gptr, GROUP_R_ARGS);
2N/A#endif
2N/A
2N/A#ifdef NEED_SETGRENT_R
2N/AGROUP_R_SET_RETURN setgrent_r(GROUP_R_ENT_ARGS);
2N/A#endif
2N/A
2N/A#ifdef NEED_ENDGRENT_R
2N/AGROUP_R_END_RETURN endgrent_r(GROUP_R_ENT_ARGS);
2N/A#endif
2N/A
2N/A#if defined(NEED_INNETGR_R) && defined(NGR_R_RETURN)
2N/ANGR_R_RETURN
2N/Ainnetgr_r(const char *, const char *, const char *, const char *);
2N/A#endif
2N/A
2N/A#ifdef NEED_SETNETGRENT_R
2N/A#ifdef NGR_R_SET_ARGS
2N/ANGR_R_SET_RETURN setnetgrent_r(NGR_R_SET_CONST char *netgroup, NGR_R_SET_ARGS);
2N/A#else
2N/ANGR_R_SET_RETURN setnetgrent_r(NGR_R_SET_CONST char *netgroup);
2N/A#endif
2N/A#endif
2N/A
2N/A#ifdef NEED_ENDNETGRENT_R
2N/A#ifdef NGR_R_END_ARGS
2N/ANGR_R_END_RETURN endnetgrent_r(NGR_R_END_ARGS);
2N/A#else
2N/ANGR_R_END_RETURN endnetgrent_r(void);
2N/A#endif
2N/A#endif
2N/A
2N/A#ifdef POSIX_GETPWNAM_R
2N/Aint
2N/A__posix_getpwnam_r(const char *login, struct passwd *pwptr,
2N/A char *buf, size_t buflen, struct passwd **result);
2N/A#endif
2N/A
2N/A#ifdef NEED_GETPWNAM_R
2N/Aint
2N/Agetpwnam_r(const char *login, struct passwd *pwptr,
2N/A char *buf, size_t buflen, struct passwd **result);
2N/A#endif
2N/A
2N/A#ifdef POSIX_GETPWUID_R
2N/Aint
2N/A__posix_getpwuid_r(uid_t uid, struct passwd *pwptr,
2N/A char *buf, int buflen, struct passwd **result);
2N/A#endif
2N/A
2N/A#ifdef NEED_GETPWUID_R
2N/Aint
2N/Agetpwuid_r(uid_t uid, struct passwd *pwptr,
2N/A char *buf, size_t buflen, struct passwd **result);
2N/A#endif
2N/A
2N/A#ifdef NEED_SETPWENT_R
2N/A#ifdef PASS_R_ENT_ARGS
2N/APASS_R_SET_RETURN setpwent_r(PASS_R_ENT_ARGS);
2N/A#else
2N/APASS_R_SET_RETURN setpwent_r(void);
2N/A#endif
2N/A
2N/A#endif
2N/A
2N/A#ifdef NEED_SETPASSENT_R
2N/A#ifdef PASS_R_ENT_ARGS
2N/APASS_R_SET_RETURN setpassent_r(int stayopen, PASS_R_ENT_ARGS);
2N/A#else
2N/APASS_R_SET_RETURN setpassent_r(int stayopen);
2N/A#endif
2N/A#endif
2N/A
2N/A#ifdef NEED_GETPWENT_R
2N/APASS_R_RETURN getpwent_r(struct passwd *pwptr, PASS_R_ARGS);
2N/A#endif
2N/A
2N/A#ifdef NEED_ENDPWENT_R
2N/Avoid endpwent_r(void);
2N/A#endif
2N/A
2N/A#ifdef NEED_SETPASSENT
2N/Aint setpassent(int stayopen);
2N/A#endif
2N/A
2N/A#define gettimeofday isc__gettimeofday
2N/A#ifdef NEED_GETTIMEOFDAY
2N/Aint isc__gettimeofday(struct timeval *tvp, struct _TIMEZONE *tzp);
2N/A#else
2N/Aint isc__gettimeofday(struct timeval *tp, struct timezone *tzp);
2N/A#endif
2N/A
2N/Aint getnetgrent(NGR_R_CONST char **machinep, NGR_R_CONST char **userp,
2N/A NGR_R_CONST char **domainp);
2N/A
2N/A#ifdef NGR_R_ARGS
2N/Aint getnetgrent_r(NGR_R_CONST char **machinep, NGR_R_CONST char **userp,
2N/A NGR_R_CONST char **domainp, NGR_R_ARGS);
2N/A#endif
2N/A
2N/A/* setnetgrent and endnetgrent are defined in sunw_port_after.h
2N/A#ifdef SETNETGRENT_ARGS
2N/Avoid setnetgrent(SETNETGRENT_ARGS);
2N/A#else
2N/Avoid setnetgrent(const char *netgroup);
2N/A#endif
2N/A
2N/Avoid endnetgrent(void);
2N/A*/
2N/A
2N/A#ifdef INNETGR_ARGS
2N/Aint innetgr(INNETGR_ARGS);
2N/A#else
2N/Aint innetgr(const char *netgroup, const char *machine,
2N/A const char *user, const char *domain);
2N/A#endif
2N/A
2N/A#ifdef NGR_R_SET_ARGS
2N/ANGR_R_SET_RETURN
2N/Asetnetgrent_r(NGR_R_SET_CONST char *netgroup, NGR_R_SET_ARGS);
2N/A#else
2N/ANGR_R_SET_RETURN
2N/Asetnetgrent_r(NGR_R_SET_CONST char *netgroup);
2N/A#endif
2N/A
2N/A#ifdef NEED_STRTOUL
2N/Aunsigned long strtoul(const char *, char **, int);
2N/A#endif
2N/A
2N/A#ifdef NEED_SUN4PROTOS
2N/A#include <stdarg.h>
2N/A#ifndef __SIZE_TYPE__
2N/A#define __SIZE_TYPE__ int
2N/A#endif
2N/Astruct sockaddr;
2N/Astruct iovec;
2N/Astruct timeval;
2N/Astruct timezone;
2N/Aint fprintf(FILE *, const char *, ...);
2N/Aint getsockname(int, struct sockaddr *, int *);
2N/Aint getpeername(int, struct sockaddr *, int *);
2N/Aint socket(int, int, int);
2N/Aint connect(int, const struct sockaddr *, int);
2N/Aint writev(int, struct iovec *, int);
2N/Aint readv(int, struct iovec *, int);
2N/Aint send(int, const char *, int, int);
2N/Avoid bzero(char *, int);
2N/Aint recvfrom(int, char *, int, int, struct sockaddr *, int *);
2N/Aint syslog(int, const char *, ... );
2N/Aint printf(const char *, ...);
2N/A__SIZE_TYPE__ fread(void *, __SIZE_TYPE__, __SIZE_TYPE__, FILE *);
2N/A__SIZE_TYPE__ fwrite(const void *, __SIZE_TYPE__, __SIZE_TYPE__, FILE *);
2N/Aint fclose(FILE *);
2N/Aint ungetc(int, FILE *);
2N/Aint scanf(const char *, ...);
2N/Aint sscanf(const char *, const char *, ... );
2N/Aint tolower(int);
2N/Aint toupper(int);
2N/Aint strcasecmp(const char *, const char *);
2N/Aint strncasecmp(const char *, const char *, int);
2N/Aint select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
2N/A#ifdef gettimeofday
2N/A#undef gettimeofday
2N/Aint gettimeofday(struct timeval *, struct timezone *);
2N/A#define gettimeofday isc__gettimeofday
2N/A#else
2N/Aint gettimeofday(struct timeval *, struct timezone *);
2N/A#endif
2N/Along strtol(const char*, char **, int);
2N/Aint fseek(FILE *, long, int);
2N/Aint setsockopt(int, int, int, const char *, int);
2N/Aint bind(int, const struct sockaddr *, int);
2N/Avoid bcopy(char *, char *, int);
2N/Aint fputc(char, FILE *);
2N/Aint listen(int, int);
2N/Aint accept(int, struct sockaddr *, int *);
2N/Aint getsockopt(int, int, int, char *, int *);
2N/Aint vfprintf(FILE *, const char *, va_list);
2N/Aint fflush(FILE *);
2N/Aint fgetc(FILE *);
2N/Aint fputs(const char *, FILE *);
2N/Aint fchown(int, int, int);
2N/Avoid setbuf(FILE *, char *);
2N/Aint gethostname(char *, int);
2N/Aint rename(const char *, const char *);
2N/Atime_t time(time_t *);
2N/Aint fscanf(FILE *, const char *, ...);
2N/Aint sscanf(const char *, const char *, ...);
2N/Aint ioctl(int, int, caddr_t);
2N/Avoid perror(const char *);
2N/A
2N/A#if !defined(__USE_FIXED_PROTOTYPES__) && !defined(__cplusplus) && !defined(__STRICT_ANSI__)
2N/A/*
2N/A * 'gcc -ansi' changes the prototype for vsprintf().
2N/A * Use this prototype when 'gcc -ansi' is not in effect.
2N/A */
2N/Achar *vsprintf(char *, const char *, va_list);
2N/A#endif
2N/A#endif
2N/A
2N/A/* Solaris-specific changes */
2N/A#include "sunw_port_after.h"
2N/A
2N/A#endif /* port_after_h */