2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-08-22 18:07:25 +00:00
isc-dhcp/includes/osdep.h

277 lines
6.3 KiB
C
Raw Normal View History

1995-11-29 07:40:04 +00:00
/* osdep.h
Operating system dependencies... */
/*
1999-03-16 05:50:46 +00:00
* Copyright (c) 1996-1999 Internet Software Consortium.
* Use is subject to license terms which appear in the file named
* ISC-LICENSE that should have accompanied this file when you
* received it. If a file named ISC-LICENSE did not accompany this
* file, or you are not sure the one you have is correct, you may
* obtain an applicable copy of the license at:
1995-11-29 07:40:04 +00:00
*
1999-03-16 05:50:46 +00:00
* http://www.isc.org/isc-license-1.0.html.
1995-11-29 07:40:04 +00:00
*
1999-03-16 05:50:46 +00:00
* This file is part of the ISC DHCP distribution. The documentation
* associated with this file is listed in the file DOCUMENTATION,
* included in the top-level directory of this release.
1995-11-29 07:40:04 +00:00
*
1999-03-16 05:50:46 +00:00
* Support and other services are available for ISC products - see
* http://www.isc.org for more information.
1995-11-29 07:40:04 +00:00
*/
#include "site.h"
/* Porting::
If you add a new network API, you must add a check for it below: */
#if !defined (USE_SOCKETS) && \
!defined (USE_SOCKET_SEND) && \
!defined (USE_SOCKET_RECEIVE) && \
!defined (USE_RAW_SOCKETS) && \
!defined (USE_RAW_SEND) && \
!defined (USE_SOCKET_RECEIVE) && \
!defined (USE_BPF) && \
!defined (USE_BPF_SEND) && \
!defined (USE_BPF_RECEIVE) && \
1999-02-14 19:04:05 +00:00
!defined (USE_LPF) && \
!defined (USE_LPF_SEND) && \
!defined (USE_LPF_RECEIVE) && \
!defined (USE_NIT) && \
!defined (USE_NIT_SEND) && \
1998-01-12 01:07:21 +00:00
!defined (USE_NIT_RECEIVE) && \
!defined (USR_DLPI_SEND) && \
!defined (USE_DLPI_RECEIVE)
# define USE_DEFAULT_NETWORK
#endif
1999-02-14 19:04:05 +00:00
#if !defined (TIME_MAX)
# define TIME_MAX 2147483647
#endif
/* Porting::
If you add a new system configuration file, include it here: */
1996-05-16 23:12:28 +00:00
#if defined (sun)
1996-09-11 05:53:58 +00:00
# if defined (__svr4__) || defined (__SVR4)
1996-05-16 23:12:28 +00:00
# include "cf/sunos5-5.h"
# else
# include "cf/sunos4.h"
1996-05-16 23:12:28 +00:00
# endif
1995-11-29 07:40:04 +00:00
#endif
1999-03-26 19:19:46 +00:00
#ifdef aix
# include "cf/aix.h"
#endif
1995-11-29 07:40:04 +00:00
#ifdef bsdi
# include "cf/bsdos.h"
1995-11-29 07:40:04 +00:00
#endif
#ifdef __NetBSD__
# include "cf/netbsd.h"
1995-11-29 07:40:04 +00:00
#endif
1996-03-16 17:50:30 +00:00
#ifdef __FreeBSD__
# include "cf/freebsd.h"
1996-03-16 17:50:30 +00:00
#endif
1999-09-08 01:48:14 +00:00
#ifdef OpenBSD
# include "cf/openbsd.h"
#endif
#if defined (__osf__) && defined (__alpha)
# include "cf/alphaosf.h"
#endif
1996-03-16 17:50:30 +00:00
#ifdef ultrix
# include "cf/ultrix.h"
1996-03-16 17:50:30 +00:00
#endif
#ifdef linux
# include "cf/linux.h"
1996-03-16 17:50:30 +00:00
#endif
#ifdef SCO
# include "cf/sco.h"
#endif
#if defined (hpux) || defined (__hpux)
1996-06-12 04:06:16 +00:00
# include "cf/hpux.h"
#endif
1996-08-29 09:18:05 +00:00
#ifdef __QNX__
# include "cf/qnx.h"
#endif
1997-05-09 08:18:06 +00:00
#ifdef __CYGWIN32__
# include "cf/cygwin32.h"
#endif
1999-04-23 22:26:51 +00:00
#ifdef __APPLE__
# include "cf/rhapsody.h"
#else
# if defined (NeXT)
1997-09-17 00:21:45 +00:00
# include "cf/nextstep.h"
1998-06-25 18:37:45 +00:00
# endif
1997-09-17 00:21:45 +00:00
#endif
/* Porting::
If you add a new network API, and have it set up so that it can be
used for sending or receiving, but doesn't have to be used for both,
then set up an ifdef like the ones below: */
#ifdef USE_SOCKETS
# define USE_SOCKET_SEND
# define USE_SOCKET_RECEIVE
#endif
#ifdef USE_RAW_SOCKETS
# define USE_RAW_SEND
# define USE_SOCKET_RECEIVE
#endif
#ifdef USE_BPF
# define USE_BPF_SEND
# define USE_BPF_RECEIVE
#endif
1999-02-14 19:04:05 +00:00
#ifdef USE_LPF
# define USE_LPF_SEND
# define USE_LPF_RECEIVE
#endif
#ifdef USE_NIT
# define USE_NIT_SEND
# define USE_NIT_RECEIVE
#endif
1996-05-22 07:27:28 +00:00
1998-01-12 01:07:21 +00:00
#ifdef USE_DLPI
# define USE_DLPI_SEND
# define USE_DLPI_RECEIVE
#endif
1997-03-05 06:16:07 +00:00
#ifdef USE_UPF
# define USE_UPF_SEND
# define USE_UPF_RECEIVE
#endif
1996-05-22 07:27:28 +00:00
/* Porting::
If you add support for sending packets directly out an interface,
and your support does not do ARP or routing, you must use a fallback
mechanism to deal with packets that need to be sent to routers.
Currently, all low-level packet interfaces use BSD sockets as a
fallback. */
1998-01-12 01:07:21 +00:00
#if defined (USE_BPF_SEND) || defined (USE_NIT_SEND) || \
1999-02-14 19:04:05 +00:00
defined (USE_DLPI_SEND) || defined (USE_UPF_SEND) || defined (USE_LPF_SEND)
1996-05-22 07:27:28 +00:00
# define USE_SOCKET_FALLBACK
# define USE_FALLBACK
#endif
/* Porting::
If you add support for sending packets directly out an interface
and need to be able to assemble packets, add the USE_XXX_SEND
definition for your interface to the list tested below. */
1997-03-05 06:16:07 +00:00
#if defined (USE_RAW_SEND) || defined (USE_BPF_SEND) || \
1998-01-12 01:07:21 +00:00
defined (USE_NIT_SEND) || defined (USE_UPF_SEND) || \
1999-02-14 19:04:05 +00:00
defined (USE_DLPI_SEND) || defined (USE_LPF_SEND)
# define PACKET_ASSEMBLY
#endif
/* Porting::
If you add support for receiving packets directly from an interface
and need to be able to decode raw packets, add the USE_XXX_RECEIVE
definition for your interface to the list tested below. */
1997-03-05 06:16:07 +00:00
#if defined (USE_RAW_RECEIVE) || defined (USE_BPF_SEND) || \
1998-01-12 01:07:21 +00:00
defined (USE_NIT_RECEIVE) || defined (USE_UPF_RECEIVE) || \
1999-02-14 19:04:05 +00:00
defined (USE_DLPI_RECEIVE) || defined (USE_LPF_RECEIVE)
# define PACKET_DECODING
#endif
1998-03-15 20:59:47 +00:00
/* If we don't have a DLPI packet filter, we have to filter in userland.
Probably not worth doing, actually. */
#if defined (USE_DLPI_RECEIVE) && !defined (USE_DLPI_PFMOD)
# define USERLAND_FILTER
#endif
/* jmp_buf is assumed to be a struct unless otherwise defined in the
system header. */
#ifndef jbp_decl
# define jbp_decl(x) jmp_buf *x
#endif
#ifndef jref
# define jref(x) (&(x))
#endif
#ifndef jdref
# define jdref(x) (*(x))
#endif
1996-05-16 23:12:28 +00:00
#ifndef jrefproto
# define jrefproto jmp_buf *
#endif
#ifndef BPF_FORMAT
# define BPF_FORMAT "/dev/bpf%d"
#endif
#if defined (IFF_POINTOPOINT) && !defined (HAVE_IFF_POINTOPOINT)
# define HAVE_IFF_POINTOPOINT
#endif
#if defined (AF_LINK) && !defined (HAVE_AF_LINK)
# define HAVE_AF_LINK
#endif
#if defined (ARPHRD_TUNNEL) && !defined (HAVE_ARPHRD_TUNNEL)
# define HAVE_ARPHRD_TUNNEL
#endif
#if defined (ARPHRD_LOOPBACK) && !defined (HAVE_ARPHRD_LOOPBACK)
# define HAVE_ARPHRD_LOOPBACK
#endif
1999-03-26 19:19:46 +00:00
#if defined (ARPHRD_ROSE) && !defined (HAVE_ARPHRD_ROSE)
# define HAVE_ARPHRD_ROSE
#endif
#if defined (ARPHRD_IEEE802) && !defined (HAVE_ARPHRD_IEEE802)
# define HAVE_ARPHRD_IEEE802
#endif
#if defined (ARPHRD_FDDI) && !defined (HAVE_ARPHRD_FDDI)
# define HAVE_ARPHRD_FDDI
#endif
#if defined (ARPHRD_AX25) && !defined (HAVE_ARPHRD_AX25)
# define HAVE_ARPHRD_AX25
#endif
#if defined (ARPHRD_NETROM) && !defined (HAVE_ARPHRD_NETROM)
# define HAVE_ARPHRD_NETROM
#endif
#if defined (ARPHRD_METRICOM) && !defined (HAVE_ARPHRD_METRICOM)
# define HAVE_ARPHRD_METRICOM
#endif
#if defined (SO_BINDTODEVICE) && !defined (HAVE_SO_BINDTODEVICE)
# define HAVE_SO_BINDTODEVICE
#endif
#if defined (SIOCGIFHWADDR) && !defined (HAVE_SIOCGIFHWADDR)
# define HAVE_SIOCGIFHWADDR
#endif
#if defined (AF_LINK) && !defined (HAVE_AF_LINK)
# define HAVE_AF_LINK
#endif