Files
2026-07-30 11:19:44 +05:30

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
****************************************************************************
*/