/* ****************************************************************************** * HEADER FILE * * Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmip6ha_if.h,v $ $Revision: 1.15 $ * $Source: /home/interpeak/CVSRoot/ipmip6ha/src/ipmip6ha_if.h,v $ * $Author: jhorteli $ $Date: 2009-12-02 15:33:16 $ * $State: Exp $ $Locker: $ * * INTERPEAK_COPYRIGHT_STRING * Design and implementation by Joel Hortelius ****************************************************************************** */ #ifndef IPMIP6HA_IF_H #define IPMIP6HA_IF_H /* **************************************************************************** * 1 DESCRIPTION **************************************************************************** */ /* **************************************************************************** * 2 CONFIGURATION **************************************************************************** */ /* **************************************************************************** * 3 INCLUDE FILES **************************************************************************** */ #include #ifdef __cplusplus extern "C" { #endif /* **************************************************************************** * 4 DEFINES **************************************************************************** */ /* **************************************************************************** * 5 TYPES **************************************************************************** */ struct Ipmip6ha_context; struct Ipmip_proc; struct Ipmip6ha_node; struct Ipmip_pktbuf_pktinfo; struct Ipmip6ha_pktbuf; struct Ipmip6ha_nemo_context; typedef struct Ipmip6ha_if_notify { Ipcom_list next; Ipmip6_if_notify_t ipmip6; } Ipmip6ha_if_notify_t; typedef struct Ipmip6ha_if { Ipmip6_if_t ipmip6; /* Home agent specific configuration */ Ipmip6_address_t ifaddr; #ifdef IPMIP_USE_INET Ip_u32 ifaddr_v4; Ip_bool AcceptForcedIPv4UDPEncapsulationRequest; Ip_bool ForceIPv4UDPEncapsulation; Ip_u32 IPv4UDPEncapsulationNATTimeout; #endif Ip_bool AcceptUDPTLVEncapsulation; /**/ Ip_bool ifenabled_P[IPMIP_TUNNELTYPE_MAX + 1]; Ip_bool ifenabled_H[IPMIP_TUNNELTYPE_MAX + 1]; struct Ipmip6ha_if *iftunnels[IPMIP_TUNNELTYPE_MAX + 1]; Ip_u16 lifetime; Ip_u16 refresh; Ip_u32 BRIMaxRetriesNumber; Ip_u32 MINDelayBRIs; Ip_u32 MinDelayBeforeBCEDelete; Ip_u32 MaxDelayBeforeNewBCEAssign; Ip_u32 TimestampValidityWindow; struct Ip_timeval TimestampValidityWindow_tv; Ip_bool TimestampBasedApproachInUse; Ip_bool MobileNodeGeneratedTimestampInUse; Ip_bool AlwaysVerifyTunnelSrc; Ip_bool FixedMAGLinkLocalAddressOnAllAccessLinks_ALL_ZERO; Ipmip6_address_t FixedMAGLinkLocalAddressOnAllAccessLinks; Ip_bool RelayBindings; Ip_u32 HeartBeatInterval; Ip_u32 HeartBeatMissAllowed; Ip_bool HeartBeatEnabled; Ip_bool BindingRevocationEnabled; /* Contains the current MAG's */ Ipcom_hash *mag_table; struct Ipmip6ha_nemo_context *nemo; Ipcom_hash *node_name; Ipcom_hash *node_addr; struct { Ip_u32 pending; Ip_u32 route_optimize; Ip_u32 tunnel; Ip_u32 forward; } iftables; /* */ Ipcom_route *prefixes; void *extdata[32]; void *extensions[32]; } Ipmip6ha_if_t; typedef struct Ipmip6ha_if_route_entry { Ipmip_route_t ipmip; /* Key & Mask */ struct Ip_in6_addr subnet; struct Ip_in6_addr mask; Ip_u8 mask_len; Ip_u32 refcnt; /**/ Ip_time_t valid; Ip_time_t timestamp; Ipmip6ha_if_t *ifp; } Ipmip6ha_if_route_entry_t; /* **************************************************************************** * 6 FUNCTIONS **************************************************************************** */ IP_GLOBAL void ipmip6ha_if_configure(struct Ipmip6ha_context *ctx, struct Ipmip_proc *proc); IP_GLOBAL void ipmip6ha_if_unconfigure(struct Ipmip6ha_context *ctx, struct Ipmip_proc *proc); IP_GLOBAL Ipmip6ha_if_t *ipmip6ha_if_findbypktinfo(struct Ipmip6ha_context *ctx, struct Ipmip_proc *proc, struct Ipmip_pktbuf_pktinfo *dst); IP_GLOBAL Ipmip6ha_if_t *ipmip6ha_if_findbyname(struct Ipmip6ha_context *ctx, struct Ipmip_proc *proc, const char *name); IP_GLOBAL Ipmip6ha_if_t *ipmip6ha_if_findbyifindex(struct Ipmip6ha_context *ctx, struct Ipmip_proc *proc, Ip_u32 ifindex); #ifdef __cplusplus } #endif #endif /* **************************************************************************** * END OF FILE **************************************************************************** */