Annotation of embedaddon/dhcp/includes/osdep.h, revision 1.1

1.1     ! misho       1: /* osdep.h
        !             2: 
        !             3:    Operating system dependencies... */
        !             4: 
        !             5: /*
        !             6:  * Copyright (c) 2004-2005,2007-2010 by Internet Systems Consortium,
        !             7:  *                                      Inc. ("ISC")
        !             8:  * Copyright (c) 1996-2003 by Internet Software Consortium
        !             9:  *
        !            10:  * Permission to use, copy, modify, and distribute this software for any
        !            11:  * purpose with or without fee is hereby granted, provided that the above
        !            12:  * copyright notice and this permission notice appear in all copies.
        !            13:  *
        !            14:  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
        !            15:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            16:  * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
        !            17:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            18:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            19:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
        !            20:  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            21:  *
        !            22:  *   Internet Systems Consortium, Inc.
        !            23:  *   950 Charter Street
        !            24:  *   Redwood City, CA 94063
        !            25:  *   <info@isc.org>
        !            26:  *   https://www.isc.org/
        !            27:  *
        !            28:  * This software has been written for Internet Systems Consortium
        !            29:  * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
        !            30:  * To learn more about Internet Systems Consortium, see
        !            31:  * ``https://www.isc.org/''.  To learn more about Vixie Enterprises,
        !            32:  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
        !            33:  * ``http://www.nominum.com''.
        !            34:  */
        !            35: 
        !            36: #if !defined (__ISC_DHCP_OSDEP_H__)
        !            37: #define __ISC_DHCP_OSDEP_H__
        !            38: 
        !            39: #include "site.h"
        !            40: 
        !            41: #include "config.h"
        !            42: 
        !            43: #include <inttypes.h>
        !            44: 
        !            45: #ifndef LITTLE_ENDIAN
        !            46: #define LITTLE_ENDIAN 1234
        !            47: #endif /* LITTLE_ENDIAN */
        !            48: 
        !            49: #ifndef BIG_ENDIAN
        !            50: #define BIG_ENDIAN 4321
        !            51: #endif /* BIG_ENDIAN */
        !            52: 
        !            53: #ifndef BYTE_ORDER
        !            54: #define BYTE_ORDER DHCP_BYTE_ORDER
        !            55: #endif /* BYTE_ORDER */
        !            56: 
        !            57: /* Porting::
        !            58: 
        !            59:    If you add a new network API, you must add a check for it below: */
        !            60: 
        !            61: #if !defined (USE_SOCKETS) && \
        !            62:     !defined (USE_SOCKET_SEND) && \
        !            63:     !defined (USE_SOCKET_RECEIVE) && \
        !            64:     !defined (USE_RAW_SOCKETS) && \
        !            65:     !defined (USE_RAW_SEND) && \
        !            66:     !defined (USE_SOCKET_RECEIVE) && \
        !            67:     !defined (USE_BPF) && \
        !            68:     !defined (USE_BPF_SEND) && \
        !            69:     !defined (USE_BPF_RECEIVE) && \
        !            70:     !defined (USE_LPF) && \
        !            71:     !defined (USE_LPF_SEND) && \
        !            72:     !defined (USE_LPF_RECEIVE) && \
        !            73:     !defined (USE_NIT) && \
        !            74:     !defined (USE_NIT_SEND) && \
        !            75:     !defined (USE_NIT_RECEIVE) && \
        !            76:     !defined (USE_DLPI_SEND) && \
        !            77:     !defined (USE_DLPI_RECEIVE)
        !            78: /* Determine default socket API to USE. */
        !            79: # if defined(HAVE_BPF)
        !            80: #  define USE_BPF 1
        !            81: # elif defined(HAVE_LPF)
        !            82: #  define USE_LPF 1
        !            83: # elif defined(HAVE_DLPI)
        !            84: #  define USE_DLPI 1
        !            85: # endif
        !            86: #endif
        !            87: 
        !            88: #if !defined (TIME_MAX)
        !            89: # define TIME_MAX 2147483647
        !            90: #endif
        !            91: 
        !            92: /* snprintf/vsnprintf hacks.  for systems with no libc versions only. */
        !            93: #ifdef NO_SNPRINTF
        !            94:   extern int isc_print_snprintf(char *, size_t, const char *, ...);
        !            95:   extern int isc_print_vsnprintf(char *, size_t, const char *, va_list ap);
        !            96: # define snprintf  isc_print_snprintf
        !            97: # define vsnprintf isc_print_vsnprintf
        !            98: #endif
        !            99: 
        !           100: /* Porting::
        !           101: 
        !           102:    If you add a new network API, and have it set up so that it can be
        !           103:    used for sending or receiving, but doesn't have to be used for both,
        !           104:    then set up an ifdef like the ones below: */
        !           105: 
        !           106: #ifdef USE_SOCKETS
        !           107: #  define USE_SOCKET_SEND
        !           108: #  define USE_SOCKET_RECEIVE
        !           109: #  if defined(HAVE_DLPI)
        !           110: #    define USE_DLPI_HWADDR
        !           111: #  endif
        !           112: #endif
        !           113: 
        !           114: #ifdef USE_RAW_SOCKETS
        !           115: #  define USE_RAW_SEND
        !           116: #  define USE_SOCKET_RECEIVE
        !           117: #endif
        !           118: 
        !           119: #ifdef USE_BPF
        !           120: #  define USE_BPF_SEND
        !           121: #  define USE_BPF_RECEIVE
        !           122: #endif
        !           123: 
        !           124: #ifdef USE_LPF
        !           125: #  define USE_LPF_SEND
        !           126: #  define USE_LPF_RECEIVE
        !           127: #endif
        !           128: 
        !           129: #ifdef USE_NIT
        !           130: #  define USE_NIT_SEND
        !           131: #  define USE_NIT_RECEIVE
        !           132: #endif
        !           133: 
        !           134: #ifdef USE_DLPI
        !           135: #  define USE_DLPI_SEND
        !           136: #  define USE_DLPI_RECEIVE
        !           137: #endif
        !           138: 
        !           139: #ifdef USE_UPF
        !           140: #  define USE_UPF_SEND
        !           141: #  define USE_UPF_RECEIVE
        !           142: #endif
        !           143: 
        !           144: /* Porting::
        !           145: 
        !           146:    If you add support for sending packets directly out an interface,
        !           147:    and your support does not do ARP or routing, you must use a fallback
        !           148:    mechanism to deal with packets that need to be sent to routers.
        !           149:    Currently, all low-level packet interfaces use BSD sockets as a
        !           150:    fallback. */
        !           151: 
        !           152: #if defined (USE_BPF_SEND) || defined (USE_NIT_SEND) || \
        !           153:     defined (USE_DLPI_SEND) || defined (USE_UPF_SEND) || \
        !           154:     defined (USE_LPF_SEND) || \
        !           155:     (defined (USE_SOCKET_SEND) && defined (HAVE_SO_BINDTODEVICE))
        !           156: #  define USE_SOCKET_FALLBACK
        !           157: #  define USE_FALLBACK
        !           158: #endif
        !           159: 
        !           160: /* Porting::
        !           161: 
        !           162:    If you add support for sending packets directly out an interface
        !           163:    and need to be able to assemble packets, add the USE_XXX_SEND
        !           164:    definition for your interface to the list tested below. */
        !           165: 
        !           166: #if defined (USE_RAW_SEND) || defined (USE_BPF_SEND) || \
        !           167:                defined (USE_NIT_SEND) || defined (USE_UPF_SEND) || \
        !           168:                defined (USE_DLPI_SEND) || defined (USE_LPF_SEND)
        !           169: #  define PACKET_ASSEMBLY
        !           170: #endif
        !           171: 
        !           172: /* Porting::
        !           173: 
        !           174:    If you add support for receiving packets directly from an interface
        !           175:    and need to be able to decode raw packets, add the USE_XXX_RECEIVE
        !           176:    definition for your interface to the list tested below. */
        !           177: 
        !           178: #if defined (USE_RAW_RECEIVE) || defined (USE_BPF_SEND) || \
        !           179:                defined (USE_NIT_RECEIVE) || defined (USE_UPF_RECEIVE) || \
        !           180:                defined (USE_DLPI_RECEIVE) || defined (USE_LPF_RECEIVE)
        !           181: #  define PACKET_DECODING
        !           182: #endif
        !           183: 
        !           184: /* If we don't have a DLPI packet filter, we have to filter in userland.
        !           185:    Probably not worth doing, actually. */
        !           186: #if defined (USE_DLPI_RECEIVE) && !defined (USE_DLPI_PFMOD)
        !           187: #  define USERLAND_FILTER
        !           188: #endif
        !           189: 
        !           190: /* jmp_buf is assumed to be a struct unless otherwise defined in the
        !           191:    system header. */
        !           192: #ifndef jbp_decl
        !           193: # define jbp_decl(x)   jmp_buf *x
        !           194: #endif
        !           195: #ifndef jref
        !           196: # define jref(x)       (&(x))
        !           197: #endif
        !           198: #ifndef jdref
        !           199: # define jdref(x)      (*(x))
        !           200: #endif
        !           201: #ifndef jrefproto
        !           202: # define jrefproto     jmp_buf *
        !           203: #endif
        !           204: 
        !           205: #ifndef BPF_FORMAT
        !           206: # define BPF_FORMAT "/dev/bpf%d"
        !           207: #endif
        !           208: 
        !           209: #if defined (F_SETFD) && !defined (HAVE_SETFD)
        !           210: # define HAVE_SETFD
        !           211: #endif
        !           212: 
        !           213: #if defined (IFF_POINTOPOINT) && !defined (HAVE_IFF_POINTOPOINT)
        !           214: # define HAVE_IFF_POINTOPOINT
        !           215: #endif
        !           216: 
        !           217: #if defined (AF_LINK) && !defined (HAVE_AF_LINK)
        !           218: # define HAVE_AF_LINK
        !           219: #endif
        !           220: 
        !           221: #if defined (ARPHRD_TUNNEL) && !defined (HAVE_ARPHRD_TUNNEL)
        !           222: # define HAVE_ARPHRD_TUNNEL
        !           223: #endif
        !           224: 
        !           225: #if defined (ARPHRD_LOOPBACK) && !defined (HAVE_ARPHRD_LOOPBACK)
        !           226: # define HAVE_ARPHRD_LOOPBACK
        !           227: #endif
        !           228: 
        !           229: #if defined (ARPHRD_ROSE) && !defined (HAVE_ARPHRD_ROSE)
        !           230: # define HAVE_ARPHRD_ROSE
        !           231: #endif
        !           232: 
        !           233: #if defined (ARPHRD_IRDA) && !defined (HAVE_ARPHRD_IRDA)
        !           234: # define HAVE_ARPHRD_IRDA
        !           235: #endif
        !           236: 
        !           237: #if defined (ARPHRD_SIT) && !defined (HAVE_ARPHRD_SIT)
        !           238: # define HAVE_ARPHRD_SIT
        !           239: #endif
        !           240: 
        !           241: #if defined (ARPHRD_IEEE1394) & !defined (HAVE_ARPHRD_IEEE1394)
        !           242: # define HAVE_ARPHRD_IEEE1394
        !           243: #endif
        !           244: 
        !           245: #if defined (ARPHRD_IEEE802) && !defined (HAVE_ARPHRD_IEEE802)
        !           246: # define HAVE_ARPHRD_IEEE802
        !           247: #endif
        !           248: 
        !           249: #if defined (ARPHRD_IEEE802_TR) && !defined (HAVE_ARPHRD_IEEE802_TR)
        !           250: # define HAVE_ARPHRD_IEEE802_TR
        !           251: #endif
        !           252: 
        !           253: #if defined (ARPHRD_FDDI) && !defined (HAVE_ARPHRD_FDDI)
        !           254: # define HAVE_ARPHRD_FDDI
        !           255: #endif
        !           256: 
        !           257: #if defined (ARPHRD_AX25) && !defined (HAVE_ARPHRD_AX25)
        !           258: # define HAVE_ARPHRD_AX25
        !           259: #endif
        !           260: 
        !           261: #if defined (ARPHRD_NETROM) && !defined (HAVE_ARPHRD_NETROM)
        !           262: # define HAVE_ARPHRD_NETROM
        !           263: #endif
        !           264: 
        !           265: #if defined (ARPHRD_METRICOM) && !defined (HAVE_ARPHRD_METRICOM)
        !           266: # define HAVE_ARPHRD_METRICOM
        !           267: #endif
        !           268: 
        !           269: #if defined (SO_BINDTODEVICE) && !defined (HAVE_SO_BINDTODEVICE)
        !           270: # define HAVE_SO_BINDTODEVICE
        !           271: #endif
        !           272: 
        !           273: #if defined (AF_LINK) && !defined (HAVE_AF_LINK)
        !           274: # define HAVE_AF_LINK
        !           275: #endif
        !           276: 
        !           277: /* Linux needs to define SHUT_* in /usr/include/sys/socket.h someday... */
        !           278: #if !defined (SHUT_RD)
        !           279: # define SHUT_RD 0
        !           280: #endif
        !           281: 
        !           282: #if !defined (SOCKLEN_T)
        !           283: # define SOCKLEN_T socklen_t
        !           284: #elif defined(_AIX)
        !           285: #undef SOCKLEN_T
        !           286: #define SOCKLEN_T socklen_t
        !           287: #endif
        !           288: 
        !           289: #if !defined (STDERR_FILENO)
        !           290: # define STDERR_FILENO 2
        !           291: #endif
        !           292: 
        !           293: #endif /* __ISC_DHCP_OSDEP_H__ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>