12#include "EnumString.h"
14BEGIN_ENUM(OSPF_Subevent)
17 DECL_ENUM_ELEMENT_WITH_VAL(OSPF_InterfaceUp, APP_PROTOCOL_OSPF * 100),
18 DECL_ENUM_ELEMENT(OSPF_WAITTIMER),
19 DECL_ENUM_ELEMENT(OSPF_BACKUPSEEN),
20 DECL_ENUM_ELEMENT(OSPF_NEIGHBORCHANGE),
21 DECL_ENUM_ELEMENT(OSPF_LOOPIND),
22 DECL_ENUM_ELEMENT(OSPF_UNLOOPIND),
23 DECL_ENUM_ELEMENT(OSPF_InterfaceDown),
26 DECL_ENUM_ELEMENT(OSPF_HelloReceived),
27 DECL_ENUM_ELEMENT(OSPF_Start),
28 DECL_ENUM_ELEMENT(OSPF_1Way),
29 DECL_ENUM_ELEMENT(OSPF_2WayReceived),
30 DECL_ENUM_ELEMENT(OSPF_NegotiationDone),
31 DECL_ENUM_ELEMENT(OSPF_ExchangeDone),
32 DECL_ENUM_ELEMENT(OSPF_BadLSReq),
33 DECL_ENUM_ELEMENT(OSPF_LoadingDone),
34 DECL_ENUM_ELEMENT(OSPF_Adjok),
35 DECL_ENUM_ELEMENT(OSPF_SeqNumberMismatch),
36 DECL_ENUM_ELEMENT(OSPF_KillNbr),
37 DECL_ENUM_ELEMENT(OSPF_InactivityTimer),
38 DECL_ENUM_ELEMENT(OSPF_LLDown),
40 DECL_ENUM_ELEMENT(OSPF_HELLO_TIMER),
41 DECL_ENUM_ELEMENT(OSPF_DD_RXMT_IN_EXSTART),
42 DECL_ENUM_ELEMENT(OSPF_SCHEDULELSDB),
43 DECL_ENUM_ELEMENT(OSPF_FLOODTIMER),
44 DECL_ENUM_ELEMENT(OSPF_MAXAGEREMOVALTIMER),
45 DECL_ENUM_ELEMENT(OSPF_CALCULATESPF),
46 DECL_ENUM_ELEMENT(OSPF_RXMTTIMER),
47 DECL_ENUM_ELEMENT(OSPF_SENDDELAYEDACK),
49 DECL_ENUM_ELEMENT(OSPF_INCREMENTAGE),
51#pragma warning(disable:4028)
52END_ENUM(OSPF_Subevent);
53#pragma warning(default:4028)
55#ifndef _OSPF_EVENT_FUN_
56#define _OSPF_EVENT_FUN_
58typedef void(*fnEventCallback)();
60static fnEventCallback fnpEventCallback[] = {ospf_handle_interfaceUp_event,
61ospf_interface_handleMultipleInterfaceEvent,
62ospf_interface_handleMultipleInterfaceEvent,
63ospf_interface_handleMultipleInterfaceEvent,
66ospf_handle_interfaceDown_event,
67ospf_neighbor_handle_helloReceived_event,
68ospf_neighbor_handle_start_event,
69ospf_neighbor_handle_1way_event,
70ospf_neighbor_handle_2wayReceived_event,
71ospf_neighbor_handle_negotiationDone_event,
72ospf_neighbor_handle_exchangeDone_event,
74ospf_neighbor_handle_LoadingDoneEvent,
77ospf_neighbor_handle_KillNbrEvent,
78ospf_neighbor_handle_inactivityTimer_event,
80ospf_handle_helloTimer_event,
83ospf_lsa_handle_floodTimer_event,
84ospf_lsdb_handleMaxAgeRemovalTimer,
85ospf_spf_handleCalculateSPFEvent,
86ospf_lsupdate_handleRxmtTimer,
87ospf_lsack_handleDelayedAckTimer,
88ospf_LSDB_handle_IncrementAge_event};
90#define OSPF_CALL_SUBEVENT(subevent) fnpEventCallback[(subevent)%100]()
91#define OSPF_IS_SUBEVENT(subevent) (fnpEventCallback[(subevent)%100] != NULL)