/* ipmip6_icmp.h - ipmip6_icmp.h */ /* ****************************************************************************** * HEADER FILE * * Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmip6_icmp.h,v $ $Revision: 1.5 $ * $Source: /home/interpeak/CVSRoot/ipmip6/include/private/ipmip6_icmp.h,v $ * $Author: jhorteli $ $Date: 2010-12-07 09:55:18 $ * $State: Exp $ $Locker: $ * * INTERPEAK_COPYRIGHT_STRING * Design and implementation by Joel Hortelius ****************************************************************************** */ #ifndef IPMIP6_ICMP_H #define IPMIP6_ICMP_H /* **************************************************************************** * 1 DESCRIPTION **************************************************************************** */ /* DESCRIPTION This module defines the ICMP utility functions required by MIP6. They include multicast join/leave, anycast join/leave, neighbor advertisement/ solitication and router advertisement/solicitation. */ /* **************************************************************************** * 2 CONFIGURATION **************************************************************************** */ /* **************************************************************************** * 3 INCLUDE FILES **************************************************************************** */ #ifdef __cplusplus extern "C" { #endif /* **************************************************************************** * 4 DEFINES **************************************************************************** */ /* **************************************************************************** * 5 TYPES **************************************************************************** */ struct Ipmip6_nd_nud; struct Ipmip6_nd_proxy; struct Ipmip6_if; struct Ipmip6_address; struct Ipmip6_context; struct Ipmip_proc; /* **************************************************************************** * 6 FUNCTIONS **************************************************************************** */ /******************************************************************************* * * ipmip6_icmp_router_solicitation - ipmip6_icmp_router_solicitation * * Send a router solicitation out on the indicated link * * Parameters: * \is * \i ctx * The generic mobility singleton context for IPMIP6. For each started mobility * entity, there exists a mobility context which tracks configuration, system * events, available features and started processes. The mobility context is * created using ipmip6_context_create(). See ipmip6_context.h for * more information regarding the mobility entity context singleton. * \i proc * The process context associated with the currently executing thread. Each * thread and/or process in MIP must have its own unique process context. * If a process is started using ipmip_proc_start, the process context will * be allocated automatically by the IPMIP framework. Otherwise it must * be allocated using ipmip_proc_alloc(). * \i ife * The interface to send on. * \ie * * RETURNS: IP_TRUE on success, IP_FALSE otherwise. * * ERRNO: * */ IP_GLOBAL Ip_bool ipmip6_icmp_router_solicitation ( struct Ipmip6_context *ctx, struct Ipmip_proc *proc, struct Ipmip6_if *ife ); /******************************************************************************* * * ipmip6_icmp_neighbor_solicitation - ipmip6_icmp_neighbor_solicitation * * Send a neighbor solicitation. * * Parameters: * \is * \i ctx * The generic mobility singleton context for IPMIP6. For each started mobility * entity, there exists a mobility context which tracks configuration, system * events, available features and started processes. The mobility context is * created using ipmip6_context_create(). See ipmip6_context.h for * more information regarding the mobility entity context singleton. * \i proc * The process context associated with the currently executing thread. Each * thread and/or process in MIP must have its own unique process context. * If a process is started using ipmip_proc_start, the process context will * be allocated automatically by the IPMIP framework. Otherwise it must * be allocated using ipmip_proc_alloc(). * \i nud * The neighbor unreachability detection structure. * \ie * * RETURNS: IP_TRUE on success, IP_FALSE otherwise. * * ERRNO: * */ IP_GLOBAL Ip_bool ipmip6_icmp_neighbor_solicitation ( struct Ipmip6_context *ctx, struct Ipmip_proc *proc, struct Ipmip6_nd_nud *nud ); /******************************************************************************* * * ipmip6_icmp_neighbor_advertisement - ipmip6_icmp_neighbor_advertisement * * Send a neighbor advertisement. * * Parameters: * \is * \i ctx * The generic mobility singleton context for IPMIP6. For each started mobility * entity, there exists a mobility context which tracks configuration, system * events, available features and started processes. The mobility context is * created using ipmip6_context_create(). See ipmip6_context.h for * more information regarding the mobility entity context singleton. * \i proc * The process context associated with the currently executing thread. Each * thread and/or process in MIP must have its own unique process context. * If a process is started using ipmip_proc_start, the process context will * be allocated automatically by the IPMIP framework. Otherwise it must * be allocated using ipmip_proc_alloc(). * \i proxy * The NUD Proxy structure to use * \i dst * The destination address * \i override * IP_TRUE if the override flag is to be set. * \ie * * RETURNS: IP_TRUE on success, IP_FALSE otherwise. * * ERRNO: * */ IP_GLOBAL Ip_bool ipmip6_icmp_neighbor_advertisement ( struct Ipmip6_context *ctx, struct Ipmip_proc *proc, struct Ipmip6_nd_proxy *proxy, struct Ip_in6_addr *dst, Ip_bool override ); /******************************************************************************* * * ipmip6_icmp_mc_all_nodes - ipmip6_icmp_mc_all_nodes * * Joins/Leaves the all-nodes multicast on the specified interface. * * Parameters: * \is * \i ctx * The generic mobility singleton context for IPMIP6. For each started mobility * entity, there exists a mobility context which tracks configuration, system * events, available features and started processes. The mobility context is * created using ipmip6_context_create(). See ipmip6_context.h for * more information regarding the mobility entity context singleton. * \i proc * The process context associated with the currently executing thread. Each * thread and/or process in MIP must have its own unique process context. * If a process is started using ipmip_proc_start, the process context will * be allocated automatically by the IPMIP framework. Otherwise it must * be allocated using ipmip_proc_alloc(). * \i join * IP_TRUE on join, IP_FALSE on leave * \i ifp * The interface to join/leave * \ie * * RETURNS: IP_TRUE on success, IP_FALSE otherwise. * * ERRNO: * */ IP_GLOBAL Ip_bool ipmip6_icmp_mc_all_nodes ( struct Ipmip6_context *ctx, struct Ipmip_proc *proc, Ip_bool join, struct Ipmip6_if *ifp ); /******************************************************************************* * * ipmip6_icmp_mc_solicitated_address - ipmip6_icmp_mc_solicitated_address * * Joins/Leaves the solicited multicast address for the specified address * on the indicated interface. * * Parameters: * \is * \i ctx * The generic mobility singleton context for IPMIP6. For each started mobility * entity, there exists a mobility context which tracks configuration, system * events, available features and started processes. The mobility context is * created using ipmip6_context_create(). See ipmip6_context.h for * more information regarding the mobility entity context singleton. * \i proc * The process context associated with the currently executing thread. Each * thread and/or process in MIP must have its own unique process context. * If a process is started using ipmip_proc_start, the process context will * be allocated automatically by the IPMIP framework. Otherwise it must * be allocated using ipmip_proc_alloc(). * \i join * IP_TRUE on join, IP_FALSE on leave * \i ifp * The interface to join/leave * \i addr * The address to join the solicited address for. * \ie * * RETURNS: IP_TRUE on success, IP_FALSE otherwise. * * ERRNO: * */ IP_GLOBAL Ip_bool ipmip6_icmp_mc_solicitated_address ( struct Ipmip6_context *ctx, struct Ipmip_proc *proc, Ip_bool join, struct Ipmip6_if *ifp, struct Ip_in6_addr *addr ); /******************************************************************************* * * ipmip6_icmp_mc_anycast_address - ipmip6_icmp_mc_anycast_address * * Joins/Leaves the specified anycast address on the interface * * Parameters: * \is * \i ctx * The generic mobility singleton context for IPMIP6. For each started mobility * entity, there exists a mobility context which tracks configuration, system * events, available features and started processes. The mobility context is * created using ipmip6_context_create(). See ipmip6_context.h for * more information regarding the mobility entity context singleton. * \i proc * The process context associated with the currently executing thread. Each * thread and/or process in MIP must have its own unique process context. * If a process is started using ipmip_proc_start, the process context will * be allocated automatically by the IPMIP framework. Otherwise it must * be allocated using ipmip_proc_alloc(). * \i join * IP_TRUE on join, IP_FALSE on leave * \i ifp * The interface to join/leave * \i prefix * The base prefix to form the anycast address on * \i anycast * The anycast address * \ie * * RETURNS: IP_TRUE on success, IP_FALSE otherwise. * * ERRNO: * */ IP_GLOBAL Ip_bool ipmip6_icmp_mc_anycast_address ( struct Ipmip6_context *ctx, struct Ipmip_proc *proc, Ip_bool join, struct Ipmip6_if *ifp, struct Ipmip6_address *prefix, Ip_u8 anycast ); #ifdef __cplusplus } #endif #endif /* **************************************************************************** * END OF FILE **************************************************************************** */