1207 lines
43 KiB
C
1207 lines
43 KiB
C
/*
|
|
******************************************************************************
|
|
* IPNET_CONFIG.H
|
|
*
|
|
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipnet_config.h,v $ $Revision: 1.195.10.10 $
|
|
* $Source: /home/interpeak/CVSRoot/ipnet2/config/ipnet_config.h,v $
|
|
* $Author: jren $ $Date: 2016-11-18 02:20:46 $
|
|
* $State: Exp $ $Locker: $
|
|
*
|
|
* INTERPEAK_COPYRIGHT_STRING
|
|
* Design and implementation by Kenneth Jonsson <kenneth@interpeak.se>
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef IPNET_CONFIG_H
|
|
#define IPNET_CONFIG_H
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 1 DESCRIPTION
|
|
****************************************************************************
|
|
*
|
|
* Configuration for IPNET. Parameters that are macros can only be changed
|
|
* before compiling, variables can be changed before compiling and linking.
|
|
*/
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 2 INCLUDE FILES
|
|
****************************************************************************
|
|
*/
|
|
|
|
#include <ipcom_config.h>
|
|
|
|
#include <ipcom_type.h>
|
|
#include <ipcom_cstyle.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 3 TYPES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/* Forward delcaration */
|
|
struct Ipnet_netif_struct;
|
|
|
|
/* Packet pool entry */
|
|
typedef struct Ipnet_conf_pkt_pool_struct
|
|
{
|
|
int count; /* Number of packet of this size */
|
|
int mtu; /* The size of the packets in this pool */
|
|
int mprio; /* The minimum priority needed to be allowed to allocate this pkt */
|
|
}
|
|
Ipnet_conf_pkt_pool;
|
|
|
|
/* Link layer initialization function */
|
|
typedef struct Ipnet_conf_link_layer_init_struct
|
|
{
|
|
int type; /* Type of link layer (IP_IFT_xxx) */
|
|
int (*init_func)(struct Ipnet_netif_struct *netif);
|
|
}
|
|
Ipnet_conf_link_layer_init;
|
|
|
|
/* Descriptor for a packet pool buffer slab */
|
|
struct Ipnet_pkt_pool_slab_desc
|
|
{
|
|
Ip_size_t mtu; /* The maximum MTU this buffer can
|
|
hold */
|
|
Ip_u32 flags; /* The IPCOM_SLAB_F_xxx flags for
|
|
this buffer */
|
|
Ip_size_t size; /* The actual length of this
|
|
buffer */
|
|
void **pslab; /* Pointer to where the memory cache
|
|
should be stored */
|
|
};
|
|
|
|
/*
|
|
* 16-bit length field + 40 bytes of IPv6 header
|
|
*/
|
|
#define IPNET_PKT_POOL_MAX_MTU (65535 + 40)
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 4 CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
#ifdef IP_PORT_OSE5
|
|
#define IPNET_MSP_DISTRIBUTION
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPCOM_SYSLOG_PRIORITY
|
|
*===========================================================================
|
|
* Default syslog priority.
|
|
*/
|
|
#ifdef IP_DEBUG
|
|
#define IPNET_SYSLOG_PRIORITY IPCOM_LOG_DEBUG /* (see ipcom_syslog.h) */
|
|
#else
|
|
#define IPNET_SYSLOG_PRIORITY IPCOM_LOG_WARNING
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET DEBUG/ASSERT
|
|
*===========================================================================
|
|
* Define IPNET_ASSERT and/or IPNET_DEBUG to debug IPNET.
|
|
*/
|
|
#ifdef IP_ASSERT
|
|
#define IPNET_ASSERT
|
|
#endif
|
|
|
|
#ifdef IP_DEBUG
|
|
#define IPNET_DEBUG
|
|
#endif
|
|
|
|
/*
|
|
****************************************************************************
|
|
* GENERAL CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* IMPORTANT: Do not edit this file in case you are using the LKM port
|
|
* All the options below are configurable through the
|
|
* Linux kernel configuration tool (make menuconfig)
|
|
*
|
|
*/
|
|
#ifndef IP_PORT_LKM
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_MEMORY_LIMIT
|
|
*===========================================================================
|
|
* Defines the maximum amount of memory that the stack is allowed to use.
|
|
* The limit must be large enough to allow enough packet buffers, packet
|
|
* headers, sockets, timers to support the workload the system has.
|
|
* Most memory will be used to packet buffers. Each socket can queue up to
|
|
* (send buffer size + receive buffer size) buffer octets. Each device
|
|
* will need up to TX + RX descriptors of MTU sized packets.
|
|
* This parameter must be set through the IPNET_MEMORY_LIMIT kernel
|
|
* parameter on VxWorks.
|
|
*/
|
|
#ifndef IPNET_MEMORY_LIMIT
|
|
#define IPNET_MEMORY_LIMIT (1024 * 1024 * 16)
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_DST_CACHE_LIMIT
|
|
*===========================================================================
|
|
* Defines maximum amount of destination cache number the stack is allowed to use.
|
|
* Set to 0 if do not limit(default), but it will still be limited by memory size.
|
|
*/
|
|
#ifndef IPNET_DST_CACHE_LIMIT
|
|
#define IPNET_DST_CACHE_LIMIT (0)
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_IS_ROUTER
|
|
*===========================================================================
|
|
* Define to configure IPNET as a router. IPNET can be changed into a host
|
|
* stack after boot event if this is defined. However, IPNET cannot be
|
|
* configured as a router if this is not set.
|
|
*/
|
|
#define IPNET_IS_ROUTER
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_ROUTER_ALERT
|
|
*===========================================================================
|
|
* Define to include support for router alert processing in IPNET.
|
|
* This option requires that IPNET_IS_ROUTER is defined and that
|
|
* IPCOM_FORWARDER_NAE is not defined.
|
|
*/
|
|
#if defined(IPNET_IS_ROUTER) && !defined(IPCOM_FORWARDER_NAE)
|
|
#define IPNET_USE_ROUTER_ALERT
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_ROUTE_TABLE_NAMES
|
|
*===========================================================================
|
|
* Define to get support for naming each route table. The name can then
|
|
* be used to get the underlying virtual router index and table ID.
|
|
*
|
|
* This configuration allocates some extra memory.
|
|
*/
|
|
#define IPNET_USE_ROUTE_TABLE_NAMES
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_SCAN_GW_AT_DELETE
|
|
*===========================================================================
|
|
* Define if the stack should delete all route entries that uses a
|
|
* gateway that becomes unreachable after removal of a route entry.
|
|
*
|
|
* This configuration transforms the route delete operation from being
|
|
* O(log(N)) to O(N) (if defined). So it is not possible, from a practical
|
|
* standpoint, to have this enabled on systems where the route table/FIB
|
|
* holds large amount of entries.
|
|
*
|
|
#define IPNET_USE_SCAN_GW_AT_DELETE
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_ECMP_HIGHEST_RANDOM_WEIGHT
|
|
*===========================================================================
|
|
* IPNET has 2 different algorithms to select which route to use when there
|
|
* are more than 1 route that is equally good to use (equal cost multipath
|
|
* routing). Both algorithms are described in RFC 2991.
|
|
* The IPNET_USE_ECMP_HIGHEST_RANDOM_WEIGHT controls which algorithm to use
|
|
* Not defined: will use "Modulo-N Hash"
|
|
* Defined: will use "Highest Random Weight"
|
|
*
|
|
#define IPNET_USE_ECMP_HIGHEST_RANDOM_WEIGHT
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC1812_SRC_ADDR_VALIDATION
|
|
*===========================================================================
|
|
* Define to perform Source Address Validation as described in RFC
|
|
* 1812, chapter 5.3.8:
|
|
* A router SHOULD IMPLEMENT the ability to filter traffic based on a
|
|
* comparison of the source address of a packet and the forwarding
|
|
* table for a logical interface on which the packet was received.
|
|
* If this feature is implemented, it MUST be disabled by default.
|
|
*
|
|
#define IPNET_USE_RFC1812_SRC_ADDR_VALIDATION
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_INCLUDE_CMD
|
|
*===========================================================================
|
|
* Define to include IPNET shell commands (ifconfig, route, netstat,
|
|
* ipnet_ctrl, arp, ping, ndp, ping6, tunnel, etc.)
|
|
*/
|
|
#if IPCOM_USE_SHELL != IPCOM_SHELL_NONE
|
|
#define IPNET_INCLUDE_CMD
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_INCLUDE_CMD_SCALETEST
|
|
*===========================================================================
|
|
* Define to include IPNET:s algorithm scaling test.
|
|
*
|
|
#define IPNET_INCLUDE_CMD_SCALETEST
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_COMPAT_OLDSOCK
|
|
*===========================================================================
|
|
* Makes IPNET able to run old socket code using the 16-bit sin_family from
|
|
* struct sockaddr_in instead of the newer 8-bit version + length mapping
|
|
* directly against the struct sockaddr.
|
|
*/
|
|
#define IPNET_COMPAT_OLDSOCK
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC4941/IPNET_USE_RFC3041
|
|
*===========================================================================
|
|
* Define to include support for RFC 4941. RFC 4941 obsoletes RFC 3041.
|
|
* Definiting RFC 4941 will also enable support for RFC 3041 so that
|
|
* any code that depends on the old define still works.
|
|
* "Privacy Extensions for Stateless Address Autoconfiguration in IPv6"
|
|
* Note this option requires one of IPMCRYPTO or IPCRYPTO products.
|
|
*/
|
|
#if defined(IPCOM_USE_MD5) && !defined(OPENSSL_FIPS)
|
|
#define IPNET_USE_RFC4941
|
|
#endif
|
|
|
|
#ifdef IPNET_USE_RFC4941
|
|
#define IPNET_USE_RFC3041
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_IPV6_RFC4941_MAX_DESYNC_FACTOR
|
|
*===========================================================================
|
|
* Defines the maximum value of the resynchronization factor.
|
|
* The resynchronization factor is a random duration (in seconds) in the
|
|
* interval [0..MAX_DESYNC_FACTOR] generated on each host at boot.
|
|
* The MAX_DESYNC_FACTOR is included timeout calculations of temporary
|
|
* addresses to avoid that all clients updates their temporary addresses at
|
|
* the same time.
|
|
*/
|
|
#if ((defined(IPNET_USE_RFC3041) || defined(IPNET_USE_RFC4941)) \
|
|
&& !defined(IPNET_IPV6_RFC4941_MAX_DESYNC_FACTOR))
|
|
#define IPNET_IPV6_RFC4941_MAX_DESYNC_FACTOR 600
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC1256
|
|
*===========================================================================
|
|
* Define to include support for RFC 1256
|
|
* "ICMP Router Discovery Messages"
|
|
* This is an extension of the Internet Control Message Protocol (ICMP)
|
|
* to enable hosts attached to multicast or broadcast networks to discover
|
|
* the IP addresses of their neighboring routers.
|
|
*/
|
|
#ifndef IPCOM_FORWARDER_NAE
|
|
#define IPNET_USE_RFC1256
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_RFC1256_ENABLE_ADVERTISEMENT
|
|
*===========================================================================
|
|
* If defined, RFC1256 advertisements will be on by default if the
|
|
* the host is configured as a router, for all interfaces where forwarding
|
|
* is enabled.
|
|
#define IPNET_RFC1256_ENABLE_ADVERTISEMENT
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_RFC1256_ENABLE_SOLICITATION
|
|
*===========================================================================
|
|
* If defined, RFC1256 solicitations will be enabled by default if the
|
|
* the target is configured as a host, for all interfaces where forwarding
|
|
* is not enabled.
|
|
#define IPNET_RFC1256_ENABLE_SOLICITATION
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC3927
|
|
*===========================================================================
|
|
* Define to include support for RFC 3927
|
|
* "Dynamic Configuration of IPv4 Link-Local Addresses"
|
|
* The link local IPv4 addresses is the 169.254/16 network.
|
|
* The feature is currently only supported on Ethernet and IEEE 802.11
|
|
* interfaces.
|
|
*/
|
|
#if defined(IPCOM_USE_ETHERNET) && !defined(IPCOM_FORWARDER_NAE)
|
|
#define IPNET_USE_RFC3927
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC5227
|
|
*===========================================================================
|
|
* Define to include support for RFC 5227
|
|
* "IPv4 Address Conflict Detection"
|
|
* Before an address is assigned and usable on an interface,
|
|
* an ARP probe sequence is performed to avoid IP address collisions.
|
|
* Once assigned, duplicated addresses will be detected.
|
|
*/
|
|
#if defined(IPCOM_USE_ETHERNET) && !defined(IPCOM_FORWARDER_NAE)
|
|
#define IPNET_USE_RFC5227
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC4443
|
|
*===========================================================================
|
|
* Define to make make usage of the new ICMPv6 destintation unreachable
|
|
* codes defined in this RFC.
|
|
* The node will be able to process ICMPv6 messages containing RFC4443
|
|
* codes regardless of the state of this define, but it will only use them
|
|
* in messages generated by this node if IPNET_USE_RFC4443 is defined.
|
|
*
|
|
*/
|
|
#define IPNET_USE_RFC4443
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_PCAP
|
|
*===========================================================================
|
|
* Define to include support for generation of PCAP compatible dumps from
|
|
* the stack.
|
|
*/
|
|
#if !defined(IPBASIC) && !defined(IP_SIZE) && IPCOM_USE_FILE != IPCOM_FILE_NONE
|
|
#define IPNET_USE_PCAP
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC3971
|
|
*===========================================================================
|
|
* Define to include support for Secure Neighbor Discovery, SEND, defined
|
|
* in RFC 3971
|
|
#define IPNET_USE_RFC3971
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_POST
|
|
*===========================================================================
|
|
* Define to include support for Power-On Self Test of the stack.
|
|
* The POST tests will run in the backgrund after boot, the POST
|
|
* task will be halted if an error is found.
|
|
*/
|
|
#if IPCOM_VR_MAX > 1 && defined(IPNET_DEBUG) \
|
|
&& !defined(IPCOM_FORWARDER_NAE) && !defined(IPNET_USE_RFC3971)
|
|
#define IPNET_USE_POST
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_SOCK_SENDMSG_ASYNCHRONOUS_IN_NONBLOCK_MODE
|
|
*===========================================================================
|
|
* Define to enable asynchronous sends for nonblocking sockets. In
|
|
* asynchronous sends, the sending task does not wait for confirmation
|
|
* from the stack that a route to the send's destination could actually
|
|
* be found.
|
|
*/
|
|
#define IPNET_SOCK_SENDMSG_ASYNCHRONOUS_IN_NONBLOCK_MODE
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* PACKET POOL CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_PACKET_POOL
|
|
*===========================================================================
|
|
* Use the IPNET internal packet pool.
|
|
* If defined, IPNET will allocate all packets from this pool.
|
|
* Otherwise IPNET will allocate packets from a pool provided by the
|
|
* operating system.
|
|
* NAE systems must provide their own implementation of packet
|
|
* allocation since the memory occupied by the packet must be
|
|
* reachable from all NAE instances.
|
|
*/
|
|
#if !defined(IPCOM_FORWARDER_NAE)
|
|
#define IPNET_USE_PACKET_POOL
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_pkt_pool
|
|
*===========================================================================
|
|
* Array that describes the number of and sizes of the packets in the packet
|
|
* pool. The largest MTU in this list should be equal or larger than
|
|
* the MTU of any network interface used on this target.
|
|
*/
|
|
#ifdef IPNET_USE_PACKET_POOL
|
|
IP_EXTERN IP_CONST Ipnet_conf_pkt_pool ipnet_conf_pkt_pool_buf[];
|
|
IP_EXTERN IP_CONST Ipnet_conf_pkt_pool *ipnet_conf_pkt_pool;
|
|
#endif /* IPNET_USE_PACKET_POOL */
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* NETIF CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_SOCKDEV
|
|
*===========================================================================
|
|
* Define include support for the IP_AF_SOCKDEV domain.
|
|
* Every socket in this domain has a one-to-one mapping to a network
|
|
* interface of type IP_IFF_SOCKDEV in the stack. Every frame sent to that
|
|
* interface by IPNET can be read on the socket. Every frame written to
|
|
* the socket will appear as a received IP datagram on the corresponding
|
|
* interface in IPNET.
|
|
*/
|
|
#ifdef IPNET_USE_POST
|
|
#define IPNET_USE_SOCKDEV
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_VRRP
|
|
*===========================================================================
|
|
* Define to included support for Virtual Router Redundancy Protocol (RFC3768).
|
|
* Must always be defined when building the LAS port.
|
|
*/
|
|
#ifdef IP_PORT_LAS
|
|
#define IPNET_USE_VRRP
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_IFO_x
|
|
*===========================================================================
|
|
* Define which queue types that should be possible to use as interface
|
|
* output queues.
|
|
*/
|
|
|
|
/*** Actual queues (leaf nodes for containers) ***/
|
|
/* First In First Out */
|
|
#define IPNET_USE_IFO_FIFO
|
|
|
|
#ifdef IPNET_MSP_DISTRIBUTION /* FIFO available always, the rest MSP only */
|
|
|
|
/* Drop Precedence Aware FIFO */
|
|
#define IPNET_USE_IFO_DPAF
|
|
/* Random Early Detection */
|
|
/*#define IPNET_USE_IFO_RED*/
|
|
/* Network emulator */
|
|
#define IPNET_USE_IFO_NETEMU
|
|
/* Null queue (black hole) */
|
|
#define IPNET_USE_IFO_NULL
|
|
|
|
/*** Containers for queues (which queue the packet ends up in depends on its class) ***/
|
|
/* Multi Band Container */
|
|
#define IPNET_USE_IFO_MBC
|
|
/* Hierarchical Token Bucket Container */
|
|
#define IPNET_USE_IFO_HTBC
|
|
|
|
#endif /* IPNET_MSP_DISTRIBUTION */
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* SOCKET CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* MACSEC/DOT1X CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_SECY
|
|
*===========================================================================
|
|
* Define to include MACsec SecY (MAC Security Entity) support.
|
|
*/
|
|
#if defined(IPMACSEC)
|
|
#ifndef IPNET_USE_SECY
|
|
#define IPNET_USE_SECY
|
|
#endif
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_CP
|
|
*===========================================================================
|
|
* Define to include support for Controlled Port.
|
|
*/
|
|
#if defined (IPNET_USE_SECY) || defined (IPNET_USE_PAC)
|
|
#ifndef IPNET_USE_CP
|
|
#define IPNET_USE_CP
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* MULTICAST CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_SOURCE_SPECIFIC_MCAST
|
|
*===========================================================================
|
|
* Define to include support for IGMPv3 and MLDv2.
|
|
* IGMPv2 and MLDv1 will be used it this feature is disabled.
|
|
* The only reason to disable this is to make the stack smaller.
|
|
*/
|
|
#define IPNET_USE_SOURCE_SPECIFIC_MCAST
|
|
|
|
#ifdef IPNET_MSP_DISTRIBUTION
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_MCAST_ROUTING
|
|
*===========================================================================
|
|
* Define included support for multicast routing (IPv4 and IPv6).
|
|
*/
|
|
#define IPNET_USE_MCAST_ROUTING
|
|
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* IP TUNNEL CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_TUNNEL
|
|
*===========================================================================
|
|
* Define includes support for tunnel network interfaces. The interaces will
|
|
* be called gifX.
|
|
*/
|
|
#if defined(IPCOM_USE_INET) && defined(IPNET_USE_MCAST_ROUTING)
|
|
# ifdef IP_PORT_VXWORKS
|
|
# if defined (_WRS_CONFIG_COMPONENT_TUNNEL_SUPPORT) && defined(INET)
|
|
# define IPNET_USE_TUNNEL
|
|
# endif
|
|
# else
|
|
# define IPNET_USE_TUNNEL
|
|
# endif /* IP_PORT_VXWORKS */
|
|
#endif /* IPCOM_USE_INET && IPNET_USE_MCAST_ROUTING */
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_SIT
|
|
*===========================================================================
|
|
* Define includes support for SIT tunnel network interfaces. The interfaces
|
|
* will be called sitX and is used to automatically tunnel IPv6 packets
|
|
* over IPv4 when IPv6-compatible-IPv4 addresses are used.
|
|
*/
|
|
#if defined(IPNET_USE_TUNNEL) && defined(IPCOM_USE_INET) && defined(IPCOM_USE_INET6)
|
|
#define IPNET_USE_SIT
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_6TO4
|
|
*===========================================================================
|
|
* Define includes support for RFC3056 6to4 tunnel network interfaces. The
|
|
* interfaces will be called 6to4X and is used to automatically tunnel IPv6
|
|
* packets over IPv4 using 2002:IPv4::/48 addresses.
|
|
*/
|
|
#if defined(IPNET_USE_TUNNEL) && defined(IPCOM_USE_INET) && defined(IPCOM_USE_INET6)
|
|
#define IPNET_USE_6TO4
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_6OVER4
|
|
*===========================================================================
|
|
* Define includes support for RFC2529 6over4 tunnel network interfaces. The
|
|
* interfaces will be called 6over4X. A local IPv4 must be selected as the
|
|
* link address (via the IP_SIOCCHGTUNNEL ioctl).
|
|
*/
|
|
#if defined(IPNET_USE_TUNNEL) && defined(IPCOM_USE_INET) && defined(IPCOM_USE_INET6)
|
|
#define IPNET_USE_6OVER4
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_GRE
|
|
*===========================================================================
|
|
* Define includes support for GRE tunnel network interfaces. The interfaces
|
|
* will be called greX.
|
|
*/
|
|
#ifdef IPNET_USE_TUNNEL
|
|
#define IPNET_USE_GRE
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RFC2890
|
|
*===========================================================================
|
|
* Define to include support for sequence number and key option in GRE
|
|
* tunnels.
|
|
*/
|
|
#ifdef IPNET_USE_GRE
|
|
#define IPNET_USE_RFC2890
|
|
#endif
|
|
|
|
#endif /* IPNET_MSP_DISTRIBUTION */
|
|
|
|
/*
|
|
****************************************************************************
|
|
* DIFFERENTIATED SERVICES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_DIFFSERV
|
|
*===========================================================================
|
|
* Define to include support for differentiated services.
|
|
*/
|
|
#ifdef IPNET_MSP_DISTRIBUTION
|
|
# if defined(IP_PORT_VXWORKS)
|
|
# ifdef _WRS_CONFIG_COMPONENT_DIFF_SERV
|
|
# define IPNET_USE_DIFFSERV
|
|
# endif
|
|
# else
|
|
# define IPNET_USE_DIFFSERV
|
|
# endif /* IP_PORT_VXWORKS */
|
|
#endif /* IPNET_MSP_DISTRIBUTION */
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_DIFFSERV_CLASSIFIER_MODE_BA
|
|
*===========================================================================
|
|
* Define to run the classifier in Behavior Aggregate mode. IPNET will
|
|
* only look at the DS field (TOS for IPv4, traffic class for IPv6)
|
|
* when classifying traffic.
|
|
* Undefine to run the classifier in Multi-Field mode, this is slower than
|
|
* BA mode but it is now possible to match traffic on any field supported
|
|
* by the IPNET classifier.
|
|
*/
|
|
#ifdef IPNET_USE_DIFFSERV
|
|
#define IPNET_DIFFSERV_CLASSIFIER_MODE_BA
|
|
#endif
|
|
|
|
/*
|
|
****************************************************************************
|
|
* LINK CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_LOOPBACK
|
|
*===========================================================================
|
|
* Define for Loopback support, must be define for all ports except LKM.
|
|
*/
|
|
#define IPNET_USE_LOOPBACK
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_BOND
|
|
*===========================================================================
|
|
* Define for Link Aggregation support.
|
|
* The name bondX will be used for the link aggregation interfaces.
|
|
*/
|
|
#ifdef IPNET_MSP_DISTRIBUTION
|
|
#define IPNET_USE_BOND
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_VLAN
|
|
*===========================================================================
|
|
* Define for IPNET 802.1Q virtual LAN support. The interfaces will be called
|
|
* vlanX.
|
|
*/
|
|
#ifdef IPNET_MSP_DISTRIBUTION
|
|
#if defined(IPCOM_USE_ETHERNET) || defined(INCLUDE_IPBRIDGE_VLAN_SUPPORT)
|
|
#define IPNET_USE_VLAN
|
|
#endif
|
|
#endif /* IPNET_MSP_DISTRIBUTION */
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_VLAN_STACKING
|
|
*===========================================================================
|
|
* Macro define for IPNET 802.1ad VLAN stacking.
|
|
*/
|
|
#ifdef IPNET_MSP_DISTRIBUTION
|
|
# if defined(IP_PORT_VXWORKS) && defined(IPCOM_USE_ETHERNET)
|
|
# ifdef _WRS_CONFIG_COMPONENT_VLAN_STACKING
|
|
# define IPNET_USE_VLAN_STACKING
|
|
# endif
|
|
# endif /* IP_PORT_VXWORKS && IPCOM_USE_ETHERNET */
|
|
#endif /* IPNET_MSP_DISTRIBUTION */
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_PER_SOCKET_VLAN_TAG
|
|
*===========================================================================
|
|
* Define to make it possible to set the VLAN ID and VLAN priority of
|
|
* outgoing Ethernet frames via the IP_SO_VLAN socket option.
|
|
*/
|
|
#ifdef IPNET_USE_VLAN
|
|
#define IPNET_USE_PER_SOCKET_VLAN_TAG
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_WLAN
|
|
*===========================================================================
|
|
* Define for IPNET WLAN support.
|
|
*/
|
|
#if defined(IPWLAN) || defined(IPPRISM) || defined(IP8021X)
|
|
#define IPNET_USE_WLAN
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_RARP
|
|
*===========================================================================
|
|
* Define for IPNET RARP support.
|
|
* Note: Use "inet rarp" in ipnet_config.c interface structure to enable.
|
|
*/
|
|
#if defined(IPCOM_USE_INET) && !defined(IPCOM_FORWARDER_NAE)
|
|
#define IPNET_USE_RARP
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_VRRP
|
|
*===========================================================================
|
|
* Define for IPNET VRRP support.
|
|
*/
|
|
#if defined(IPVRRP)
|
|
#define IPNET_USE_VRRP
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* ROUTING SOCKET CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_ROUTESOCK
|
|
*===========================================================================
|
|
* Define for routing socket support.
|
|
*/
|
|
#define IPNET_USE_ROUTESOCK
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_ROUTESOCK_LINKINFO
|
|
*===========================================================================
|
|
* Define if you want information about added, deleted or changed ARP
|
|
* and NDP entries sent to listening routing sockets as well.
|
|
* #define IPNET_USE_ROUTESOCK_LINKINFO
|
|
*/
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* NETLINK SOCKET CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NETLINK
|
|
*===========================================================================
|
|
* Define wether or not to use the Linux compatible NETLINK interface
|
|
*
|
|
*/
|
|
#if defined(IPNET_USE_RFC3971) || defined(IPNET_USE_BOND) || defined(IPWRNAD) || \
|
|
defined(IPCOM_FORWARDER_NAE) || defined(IPMACSEC) || defined(IPNET_USE_VRRP) || \
|
|
defined(IPDHCPC6)
|
|
#ifndef IPNET_USE_NETLINKSOCK
|
|
#define IPNET_USE_NETLINKSOCK
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef IPNET_USE_NETLINKSOCK
|
|
#define IPNET_USE_NETLINK
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* NETLINK SOCKET CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_COMPENSATE_UNRELIABLE_NETLINK
|
|
*===========================================================================
|
|
* Makes IPNET compensate for the unlikely event of dropped messages, by
|
|
* regenerating a netlink "new neighbor" event for each transmission until
|
|
* the neighbor has been acknowledged by an ARP/ND daemon.
|
|
*
|
|
* Applicable only with IPNET configured to do neighbor solication via an
|
|
* ARP/ND daemon
|
|
* #define IPNET_COMPENSATE_UNRELIABLE_NETLINK
|
|
*/
|
|
|
|
/*
|
|
****************************************************************************
|
|
* INTERFACE MANAGEMENT CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_ROUTE_COOKIES
|
|
*===========================================================================
|
|
* Define to get support for tagging each route table and route entry with
|
|
* a user supplied finger print.
|
|
*
|
|
* This configuration allocates some extra memory.
|
|
#define IPNET_USE_ROUTE_COOKIES
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_FAST_IFNAME_LOOKUP
|
|
*===========================================================================
|
|
* Configure for fast (constant time) interface name lookup in IPNET.
|
|
* Should be enabled on systems with a huge amount of interfaces (>10000)
|
|
*
|
|
* This configuration allocates some extra memory.
|
|
#define IPNET_USE_FAST_IFNAME_LOOKUP
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_SKIP_IFNAME_CHECK_ON_ATTACH
|
|
*===========================================================================
|
|
* Configure IPNET to skip checking for duplicate names when attaching new
|
|
* interfaces.
|
|
*
|
|
* Only enable this if name checking is done externally by the OS
|
|
* (this is the case for the IPCOM LKM port).
|
|
*===========================================================================
|
|
#define IPNET_SKIP_IFNAME_CHECK_ON_ATTACH
|
|
*/
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* NAT CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT
|
|
*===========================================================================
|
|
* Define for NAT support. NAT is included by default when building a
|
|
* MSP distribution but it is legal to exclude it.
|
|
* NAT is current NOT support in a NAE, that might be changed in future
|
|
* releases.
|
|
*/
|
|
#if defined(IPCOM_USE_INET)
|
|
# if defined(_WRS_CONFIG_COMPONENT_NAT)
|
|
# define IPNET_USE_NAT
|
|
# elif defined(IPNET_MSP_DISTRIBUTION) \
|
|
&& !defined(IPBASIC) \
|
|
&& !defined(IPCOM_FORWARDER_NAE) \
|
|
&& !defined(IP_PORT_VXWORKS)
|
|
# define IPNET_USE_NAT
|
|
# endif
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_PT
|
|
*===========================================================================
|
|
* Define for NAT-PT support
|
|
*/
|
|
#if defined(IPNET_USE_NAT) && defined(IPCOM_USE_INET) && defined(IPCOM_USE_INET6)
|
|
#define IPNET_USE_NAT_PT
|
|
#endif
|
|
|
|
/* NAT-PT requires NAT */
|
|
#ifdef IPNET_USE_NAT_PT
|
|
#ifndef IPNET_USE_NAT
|
|
#error NAT-PT requires NAT
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_FTP_ALG
|
|
*===========================================================================
|
|
* Define to enable the FTP ALG
|
|
*/
|
|
#define IPNET_USE_NAT_FTP_ALG
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_DNS_ALG
|
|
*===========================================================================
|
|
* Define to enable the DNS ALG
|
|
*/
|
|
#ifdef IPNET_USE_NAT_PT
|
|
#define IPNET_USE_NAT_DNS_ALG
|
|
#endif
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_IPSEC_ALG
|
|
*===========================================================================
|
|
* Define to enable the IPSEC ALG
|
|
*/
|
|
#define IPNET_USE_NAT_IPSEC_ALG
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_PPTP_ALG
|
|
*===========================================================================
|
|
* Define to enable the PPTP ALG
|
|
*/
|
|
#define IPNET_USE_NAT_PPTP_ALG
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_H323_ALG
|
|
*===========================================================================
|
|
* Define to enable the H323 ALG
|
|
*/
|
|
#define IPNET_USE_NAT_H323_ALG
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_SIP_ALG
|
|
*===========================================================================
|
|
* Define to enable the SIP ALG
|
|
*/
|
|
#define IPNET_USE_NAT_SIP_ALG
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_NAT_TRIGGER_ALG
|
|
*===========================================================================
|
|
* Define to enable the port trigger ALG
|
|
*/
|
|
#define IPNET_USE_NAT_TRIGGER_ALG
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_LINK_STUB
|
|
*===========================================================================
|
|
* Define to enable the link stub implementation for bypassing
|
|
* ethernet processing( for use with ipcom_drv_mux.c only)
|
|
*/
|
|
#define IPNET_USE_LINK_STUB
|
|
|
|
/*
|
|
*===========================================================================
|
|
* IPNET_USE_SO_CONNTIMEO
|
|
*===========================================================================
|
|
* Define to solve the issue that in RTP mode network connect by connectWithTimeout would fail
|
|
*/
|
|
#define IPNET_USE_SO_CONNTIMEO
|
|
|
|
#endif /* IP_PORT_LKM */
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_memory_limit
|
|
*===========================================================================
|
|
* Defines the maximum amount of memory that the stack is allowed to use.
|
|
* The limit must be large enough to allow enough packet buffers, packet
|
|
* headers, sockets, timers to support the workload the system has.
|
|
* Most memory will be used to packet buffers. Each socket can queue up to
|
|
* (send buffer size + receive buffer size) buffer octets. Each device
|
|
* will need up to TX + RX descriptors of MTU sized packets.
|
|
*/
|
|
IP_EXTERN IP_CONST unsigned ipnet_conf_memory_limit;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_max_sockets
|
|
*===========================================================================
|
|
* Maximum number of sockets that can be used at any time (the actual number
|
|
* of available sockets will be 3 less since 0,1 and 2 is reserved).
|
|
*/
|
|
IP_EXTERN IP_CONST int ipnet_conf_max_sockets;
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_link_layer
|
|
*===========================================================================
|
|
* Array of link layer types and a initialize functions that knows how
|
|
* to initialize the Ipnet_netif structure.
|
|
*/
|
|
IP_EXTERN IP_CONST Ipnet_conf_link_layer_init ipnet_conf_link_layer[];
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_inq_max
|
|
*===========================================================================
|
|
* Maximum number of buffers in input queue processed by the input daemon.
|
|
*/
|
|
IP_EXTERN IP_CONST int ipnet_conf_inq_max;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_reassembly_timeout
|
|
*===========================================================================
|
|
* Number of seconds IPNET will keep incomplete datagram fragments in the
|
|
* reassembly list before discarding them. RFC2460 states default 60 seconds.
|
|
*
|
|
*/
|
|
IP_EXTERN IP_CONST int ipnet_conf_reassembly_timeout;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_cache_bufsiz
|
|
*===========================================================================
|
|
* Trailing Ipcom_pkt cache buffer to protect dynamic buffer end marks.
|
|
*/
|
|
IP_EXTERN Ip_u16 ipnet_conf_cache_bufsiz;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_interfaces
|
|
*===========================================================================
|
|
* Interface configuration that is set during system boot.
|
|
*/
|
|
IP_EXTERN IP_CONST char *ipnet_conf_interfaces[];
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_routes
|
|
*===========================================================================
|
|
* Route table configuration that is set during system boot.
|
|
*/
|
|
IP_EXTERN IP_CONST char *ipnet_conf_boot_cmd[];
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_ip4_min_mtu
|
|
*===========================================================================
|
|
* The smallest MTU that IPNET expects for IPv4. Should be 576 in most cases.
|
|
*/
|
|
IP_EXTERN IP_CONST Ip_u16 ipnet_conf_ip4_min_mtu;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_ip6_min_mtu
|
|
*===========================================================================
|
|
* The smallest MTU that IPNET expects for IPv6. Should be 1280 in most cases.
|
|
*/
|
|
IP_EXTERN IP_CONST Ip_u16 ipnet_conf_ip6_min_mtu;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_max_reassembly_list_len
|
|
*===========================================================================
|
|
* Maximum number of partially reassembled IP-datagrams the stack will
|
|
* keep around.
|
|
*/
|
|
IP_EXTERN IP_CONST unsigned ipnet_conf_max_reassembly_list_len;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_conf_max_dgram_frag_list_len
|
|
*===========================================================================
|
|
* Maximum number of fragments a single IP-datagram can consist of.
|
|
*/
|
|
IP_EXTERN IP_CONST unsigned ipnet_conf_max_dgram_frag_list_len;
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_pkt_pool_slab_desc
|
|
*===========================================================================
|
|
* Slab cache configuration.
|
|
*/
|
|
IP_EXTERN struct Ipnet_pkt_pool_slab_desc ipnet_pkt_pool_slab_desc[];
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipnet_dst_cache_number_limit
|
|
*===========================================================================
|
|
* Defines maximum amount of destination cache number the stack is allowed to use.
|
|
* Set to 0 if do not limit(default)
|
|
*/
|
|
IP_EXTERN IP_CONST unsigned ipnet_dst_cache_number_limit;
|
|
|
|
/*
|
|
****************************************************************************
|
|
* MISC AUTO CONFIG/VERIFICATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
#if !defined(IPCOM_USE_INET) && !defined(IPCOM_USE_INET6)
|
|
#error Must_define__IPNET_INET4__andor__IPNET_INET6
|
|
#endif
|
|
|
|
/* IPSSL use old socket structures. */
|
|
#if defined(IPSSL) && !defined(IPNET_COMPAT_OLDSOCK)
|
|
#define IPNET_COMPAT_OLDSOCK
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* END OF FILE
|
|
****************************************************************************
|
|
*/
|
|
|