/* ****************************************************************************** * INTERPEAK SOURCE FILE * * Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmip6mn_ifevent.c,v $ $Revision: 1.3 $ * $Source: /home/interpeak/CVSRoot/ipmip6mn/src/ipmip6mn_ifevent.c,v $ * $Author: jhorteli $ * $State: Exp $ $Locker: $ * * INTERPEAK_COPYRIGHT_STRING * Design and implementation by Joel Hortelius ****************************************************************************** */ /* **************************************************************************** * 1 DESCRIPTION **************************************************************************** */ /* **************************************************************************** * 2 CONFIGURATION **************************************************************************** */ #include "ipmip6mn_config.h" /* **************************************************************************** * 3 INCLUDE FILES **************************************************************************** */ #define IPCOM_USE_CLIB_PROTO #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ipmip6mn_h.h" #include "ipmip6mn_mib_update.h" #include "ipmip6mn_coa.h" /* **************************************************************************** * 4 DEFINES **************************************************************************** */ /* **************************************************************************** * 5 TYPES **************************************************************************** */ /* **************************************************************************** * 6 EXTERN PROTOTYPES **************************************************************************** */ /* **************************************************************************** * 7 LOCAL PROTOTYPES **************************************************************************** */ IP_STATIC void ipmip6mn_ifevent_router_new(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_router_t *router); IP_STATIC void ipmip6mn_ifevent_router_expire(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_router_t *router); IP_STATIC void ipmip6mn_ifevent_prefix_new(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix); IP_STATIC void ipmip6mn_ifevent_prefix_expire(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix); IP_STATIC void ipmip6mn_ifevent_prefix_advertise(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix); IP_STATIC void ipmip6mn_ifevent_prefix_update(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix); /* **************************************************************************** * 8 DATA **************************************************************************** */ Ipmip6_if_event_table_t ipmip6mn_ifevent_table = { (Ipmip6_if_event_t)IP_NULL, (Ipmip6_if_event_t)IP_NULL, (Ipmip6_if_event_t)ipmip6mn_ifevent_router_new, (Ipmip6_if_event_t)ipmip6mn_ifevent_router_expire, (Ipmip6_if_event_t)ipmip6mn_ifevent_prefix_new, (Ipmip6_if_event_t)ipmip6mn_ifevent_prefix_expire, (Ipmip6_if_event_t)ipmip6mn_ifevent_prefix_advertise, (Ipmip6_if_event_t)ipmip6mn_ifevent_prefix_update }; /* **************************************************************************** * 9 STATIC FUNCTIONS **************************************************************************** */ IP_STATIC void ipmip6mn_ifevent_router_new(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_router_t *router) { #if 0 /* Is this a default gateway router? */ if (IP_BIT_ISSET(router->ifr_type, (1 << IPMIP6_IF_RTR_GATEWAY))) /* Create the default gateway */ ipmip_netlink_inX_route(&ctx->ipmip, proc, IP_AF_INET6, IP_RTM_NEWROUTE, 0, ife->iff.ifindex, &ip_in6addr_any, 0, &router->addr, IP_RTN_UNICAST); #else IPMIP_UNUSED_PARAMETER(ctx); IPMIP_UNUSED_PARAMETER(proc); IPMIP_UNUSED_PARAMETER(ife); IPMIP_UNUSED_PARAMETER(router); #endif } IP_STATIC void ipmip6mn_ifevent_router_expire(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_router_t *router) { #if 0 /* Is this a default gateway router? */ if (IP_BIT_ISSET(router->ifr_type, (1 << IPMIP6_IF_RTR_GATEWAY))) ipmip_netlink_inX_route(&ctx->ipmip, proc, IP_AF_INET6, IP_RTM_DELROUTE, 0, ife->iff.ifindex, &ip_in6addr_any, 0, &router->addr, IP_RTN_UNICAST); #else IPMIP_UNUSED_PARAMETER(ctx); IPMIP_UNUSED_PARAMETER(proc); IPMIP_UNUSED_PARAMETER(ife); IPMIP_UNUSED_PARAMETER(router); #endif } IP_STATIC void ipmip6mn_ifevent_prefix_new(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix) { IPMIP_UNUSED_PARAMETER(ife); #if 0 /* Attach the prefix */ ipmip6_if_prefix_install_iflocked(ctx, proc, prefix); #else IPMIP_UNUSED_PARAMETER(ctx); IPMIP_UNUSED_PARAMETER(proc); IPMIP_UNUSED_PARAMETER(prefix); #endif } IP_STATIC void ipmip6mn_ifevent_prefix_expire(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix) { IPMIP_UNUSED_PARAMETER(ctx); IPMIP_UNUSED_PARAMETER(proc); IPMIP_UNUSED_PARAMETER(ife); IPMIP_UNUSED_PARAMETER(prefix); } IP_STATIC void ipmip6mn_ifevent_prefix_advertise(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix) { IPMIP_UNUSED_PARAMETER(ctx); IPMIP_UNUSED_PARAMETER(proc); IPMIP_UNUSED_PARAMETER(ife); IPMIP_UNUSED_PARAMETER(prefix); /* ipmip6m_coa_advertise_prefix(prefix); */ } IP_STATIC void ipmip6mn_ifevent_prefix_update(Ipmip6_context_t *ctx, Ipmip_proc_t *proc, Ipmip6_if_t *ife, Ipmip6_if_prefix_t *prefix) { IPMIP_UNUSED_PARAMETER(ctx); IPMIP_UNUSED_PARAMETER(proc); IPMIP_UNUSED_PARAMETER(ife); IPMIP_UNUSED_PARAMETER(prefix); /* ipmip6mn_coa_update_validity(prefix); */ } /* **************************************************************************** * 10 GLOBAL FUNCTIONS **************************************************************************** */ /* **************************************************************************** * 11 PUBLIC FUNCTIONS **************************************************************************** */ /* **************************************************************************** * END OF FILE **************************************************************************** */