]> git.proxmox.com Git - mirror_frr.git/blob - ospfd/ospf_nsm.h
Merge pull request #12645 from gpnaveen/ospf_error_msg_enhancements
[mirror_frr.git] / ospfd / ospf_nsm.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * OSPF version 2 Neighbor State Machine
4 * From RFC2328 [OSPF Version 2]
5 * Copyright (C) 1999 Toshiaki Takada
6 */
7
8 #ifndef _ZEBRA_OSPF_NSM_H
9 #define _ZEBRA_OSPF_NSM_H
10
11 #include "hook.h"
12
13 /* OSPF Neighbor State Machine State. */
14 #define NSM_DependUpon 0
15 #define NSM_Deleted 1
16 #define NSM_Down 2
17 #define NSM_Attempt 3
18 #define NSM_Init 4
19 #define NSM_TwoWay 5
20 #define NSM_ExStart 6
21 #define NSM_Exchange 7
22 #define NSM_Loading 8
23 #define NSM_Full 9
24 #define OSPF_NSM_STATE_MAX 10
25
26 /* OSPF Neighbor State Machine Event. */
27 #define NSM_NoEvent 0
28 #define NSM_HelloReceived 1 /* HelloReceived in the protocol */
29 #define NSM_Start 2
30 #define NSM_TwoWayReceived 3
31 #define NSM_NegotiationDone 4
32 #define NSM_ExchangeDone 5
33 #define NSM_BadLSReq 6
34 #define NSM_LoadingDone 7
35 #define NSM_AdjOK 8
36 #define NSM_SeqNumberMismatch 9
37 #define NSM_OneWayReceived 10
38 #define NSM_KillNbr 11
39 #define NSM_InactivityTimer 12
40 #define NSM_LLDown 13
41 #define OSPF_NSM_EVENT_MAX 14
42
43 /* Macro for OSPF NSM timer turn on. */
44 #define OSPF_NSM_TIMER_ON(T, F, V) event_add_timer(master, (F), nbr, (V), &(T))
45
46 /* Macro for OSPF NSM schedule event. */
47 #define OSPF_NSM_EVENT_SCHEDULE(N, E) \
48 event_add_event(master, ospf_nsm_event, (N), (E), NULL)
49
50 /* Macro for OSPF NSM execute event. */
51 #define OSPF_NSM_EVENT_EXECUTE(N, E) \
52 event_execute(master, ospf_nsm_event, (N), (E))
53
54 /* Prototypes. */
55 extern void ospf_nsm_event(struct event *e);
56 extern void ospf_check_nbr_loading(struct ospf_neighbor *nbr);
57 extern int ospf_db_summary_isempty(struct ospf_neighbor *nbr);
58 extern int ospf_db_summary_count(struct ospf_neighbor *nbr);
59 extern void ospf_db_summary_clear(struct ospf_neighbor *nbr);
60 extern int nsm_should_adj(struct ospf_neighbor *nbr);
61 DECLARE_HOOK(ospf_nsm_change,
62 (struct ospf_neighbor * on, int state, int oldstate),
63 (on, state, oldstate));
64
65 #endif /* _ZEBRA_OSPF_NSM_H */