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

277 lines
8.2 KiB
C

/* ipmip6_nd_proxy.h - ipmip6_nd_proxy.h */
/*
******************************************************************************
* HEADER FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmip6_nd_proxy.h,v $ $Revision: 1.8 $
* $Source: /home/interpeak/CVSRoot/ipmip6/include/private/ipmip6_nd_proxy.h,v $
* $Author: jhorteli $ $Date: 2010-12-07 09:55:19 $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Joel Hortelius <joel.hortelius@interpeak.se>
******************************************************************************
*/
#ifndef IPMIP6_ND_PROXY_H
#define IPMIP6_ND_PROXY_H
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
DESCRIPTION
This module defines the Proxy Neighbor Unreachability Detection feature. This
is used by Home Agents, NEMO Agents and Proxy Mobility to proxy advertise
for hosts they are providing connectivity for.
*/
/*
****************************************************************************
* 2 CONFIGURATION
****************************************************************************
*/
/*
****************************************************************************
* 3 INCLUDE FILES
****************************************************************************
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
****************************************************************************
* 4 DEFINES
****************************************************************************
*/
/*
****************************************************************************
* 5 TYPES
****************************************************************************
*/
struct Ipmip6_context;
struct Ipmip6_pktbuf;
struct Ipmip_proc;
struct Ipmip6_if;
/* NUD structure */
typedef struct Ipmip6_nd_proxy
{
Ipcom_list next; /* NUD linkage */
struct Ip_in6_addr *addr; /* Address we're interested in */
struct Ipmip6_if *ifp; /* Interface to respond on */
Ip_u32 sent; /* Number of sent advertisements*/
Ipmip_timer_t unsolicited; /* Unsolicited advertisements */
}
Ipmip6_nd_proxy_t;
/*
****************************************************************************
* 6 FUNCTIONS
****************************************************************************
*/
/*******************************************************************************
*
* ipmip6_nd_proxy_init - ipmip6_nd_proxy_init
*
* Initialize a PROXY structure.
*
* Parameters:
* \is
* \i nud
* The NUD structure
* \ie
*
* RETURNS:
*
* ERRNO:
*
*/
IP_GLOBAL void ipmip6_nd_proxy_init
(
Ipmip6_nd_proxy_t *proxy
);
/*******************************************************************************
*
* ipmip6_nd_proxy_start_solicited_iflocked - ipmip6_nd_proxy_start_solicited_iflocked
*
* Start passive proxying for a given address
*
* THIS FUNCTION REQUIRES THAT THE INTERFACE LOCK IS HELD.
*
* 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 for this request.
* \i proxy
* The PROXY structure for this request.
* \ie
*
* RETURNS:
*
* ERRNO:
*
*/
IP_GLOBAL void ipmip6_nd_proxy_start_solicited_iflocked
(
struct Ipmip6_context *ctx,
struct Ipmip_proc *proc,
struct Ipmip6_if *ife,
Ipmip6_nd_proxy_t *proxy
);
/*******************************************************************************
*
* ipmip6_nd_proxy_start_unsolicited_iflocked - ipmip6_nd_proxy_start_unsolicited_iflocked
*
* Start unsolicited neighbor advertisements
*
* THIS FUNCTION REQUIRES THAT THE INTERFACE LOCK IS HELD.
*
* 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 for this request.
* \i proxy
* The PROXY structure for this request.
* \ie
*
* RETURNS:
*
* ERRNO:
*
*/
IP_GLOBAL void ipmip6_nd_proxy_start_unsolicited_iflocked
(
struct Ipmip6_context *ctx,
struct Ipmip_proc *proc,
struct Ipmip6_if *ife,
Ipmip6_nd_proxy_t *proxy
);
/*******************************************************************************
*
* ipmip6_nd_proxy_stop_iflocked - ipmip6_nd_proxy_stop_iflocked
*
* Stop unsolicited or proxied neighbor advertisements
*
* THIS FUNCTION REQUIRES THAT THE INTERFACE LOCK IS HELD.
*
* 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 PROXY structure for this request.
* \ie
*
* RETURNS:
*
* ERRNO:
*
*/
IP_GLOBAL void ipmip6_nd_proxy_stop_iflocked
(
struct Ipmip6_context *ctx,
struct Ipmip_proc *proc,
Ipmip6_nd_proxy_t *proxy
);
/*******************************************************************************
*
* ipmip6_nd_proxy_ns_recv - ipmip6_nd_proxy_ns_recv
*
* Process a received NEIGHBOR request.
*
* 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 pbuf
* The NUD request
* \ie
*
* RETURNS:
*
* ERRNO:
*
*/
IP_GLOBAL void ipmip6_nd_proxy_ns_recv
(
struct Ipmip6_context *ctx,
struct Ipmip_proc *proc,
struct Ipmip6_pktbuf *pbuf
);
#ifdef __cplusplus
}
#endif
#endif
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/