/* ****************************************************************************** * HEADER FILE * * Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmip6pm_if.h,v $ $Revision: 1.12 $ * $Source: /home/interpeak/CVSRoot/ipmip6pm/src/ipmip6pm_if.h,v $ * $Author: jhorteli $ $Date: 2009-06-18 12:53:20 $ * $State: Exp $ $Locker: $ * * INTERPEAK_COPYRIGHT_STRING * Design and implementation by Joel Hortelius ****************************************************************************** */ #ifndef IPMIP6PM_IF_H #define IPMIP6PM_IF_H /* **************************************************************************** * 1 DESCRIPTION **************************************************************************** */ /* **************************************************************************** * 2 CONFIGURATION **************************************************************************** */ /* **************************************************************************** * 3 INCLUDE FILES **************************************************************************** */ #ifdef __cplusplus extern "C" { #endif /* **************************************************************************** * 4 DEFINES **************************************************************************** */ /* **************************************************************************** * 5 TYPES **************************************************************************** */ struct Ipmip6pm_context; struct Ipmip_proc; struct Ipmip6pm_node; struct Ipmip_pktbuf_pktinfo; struct Ipmip_cli_message; struct Ipmip6pm_if; typedef struct Ipmip6pm_if_notify { Ipcom_list next; Ipmip6_if_notify_t ipmip6; } Ipmip6pm_if_notify_t; typedef struct Ipmip6pm_if_priv_notify { char handoff[IP_IFNAMSIZ+1]; Ipmip6_if_notify_t ipmip6; } Ipmip6pm_if_priv_notify_t; typedef struct Ipmip6pm_if { Ipmip6_if_t ipmip6; /* Home agent specific configuration */ Ipmip6_address_t ifaddr; #ifdef IPMIP_USE_INET Ip_u32 ifinet; #endif /**/ Ip_bool ifenabled[IPMIP_TUNNELTYPE_MAX + 1]; struct Ipmip6pm_if *iftunnels[IPMIP_TUNNELTYPE_MAX + 1]; Ip_u16 lifetime; Ip_u32 InitialBindackTimeoutFirstReg; /* Initial timeout */ Ip_bool TimestampBasedApproachInUse; Ip_u32 BRIMaxRetriesNumber; Ip_u32 MINDelayBRIs; Ip_u32 HeartBeatInterval; Ip_u32 HeartBeatMissAllowed; Ip_bool HeartBeatEnabled; Ip_bool GRE_Preferred; Ip_bool GRE_UseKeys; Ip_u8 supported_tunnel_types; #ifdef IPMIP_USE_INET Ip_bool UseIPv4UDPEncapForSignalingMessages; Ip_bool ForceIPv4UDPEncapsulationSupport; Ip_u32 IPv4UDPEncapsulationNATTimeout; #endif Ipcom_hash *lma_table; Ipcom_hash *node_name; /* Opaque service data */ void *extdata[IPMIP6PM_FUNCTION_MAX][32]; } Ipmip6pm_if_t; typedef struct Ipmip6pm_if_priv { Ipmip6_if_t ipmip6; } Ipmip6pm_if_priv_t; /* **************************************************************************** * 6 FUNCTIONS **************************************************************************** */ IP_GLOBAL void ipmip6pm_if_configure(struct Ipmip6pm_context *ctx, struct Ipmip_proc *proc); IP_GLOBAL void ipmip6pm_if_unconfigure(struct Ipmip6pm_context *ctx, struct Ipmip_proc *proc); IP_GLOBAL Ipmip6pm_if_t *ipmip6pm_if_findbypktinfo(struct Ipmip6pm_context *ctx, struct Ipmip_proc *proc, struct Ipmip_pktbuf_pktinfo *dst); IP_GLOBAL Ipmip6pm_if_t *ipmip6pm_if_findbyifindex(struct Ipmip6pm_context *ctx, struct Ipmip_proc *proc, Ip_u32 ifindex); IP_GLOBAL Ipmip6pm_if_t *ipmip6pm_if_findbyinet6(struct Ipmip6pm_context *ctx, struct Ipmip_proc *proc, struct Ip_in6_addr *addr); IP_GLOBAL Ipmip6pm_if_t *ipmip6pm_if_findbyifname(struct Ipmip6pm_context *ctx, struct Ipmip_proc *proc, const char *ifname); #ifdef __cplusplus } #endif #endif /* **************************************************************************** * END OF FILE **************************************************************************** */