ospf_nsm.h
上传用户:xiaozhuqw
上传日期:2009-11-15
资源大小:1338k
文件大小:3k
源码类别:

网络

开发平台:

Unix_Linux

  1. /*
  2.  * OSPF version 2  Neighbor State Machine
  3.  *   From RFC2328 [OSPF Version 2]
  4.  *   Copyright (C) 1999 Toshiaki Takada
  5.  *
  6.  * This file is part of GNU Zebra.
  7.  *
  8.  * GNU Zebra is free software; you can redistribute it and/or modify it
  9.  * under the terms of the GNU General Public License as published by the
  10.  * Free Software Foundation; either version 2, or (at your option) any
  11.  * later version.
  12.  *
  13.  * GNU Zebra is distributed in the hope that it will be useful, but
  14.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with GNU Zebra; see the file COPYING.  If not, write to the Free
  20.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  21.  * 02111-1307, USA.
  22.  */
  23. #ifndef _ZEBRA_OSPF_NSM_H
  24. #define _ZEBRA_OSPF_NSM_H
  25. /* OSPF Neighbor State Machine State. */
  26. #define NSM_DependUpon          0
  27. #define NSM_Down 1
  28. #define NSM_Attempt 2
  29. #define NSM_Init 3
  30. #define NSM_TwoWay 4
  31. #define NSM_ExStart 5
  32. #define NSM_Exchange 6
  33. #define NSM_Loading 7
  34. #define NSM_Full 8
  35. #define OSPF_NSM_STATE_MAX      9
  36. /* OSPF Neighbor State Machine Event. */
  37. #define NSM_NoEvent         0
  38. #define NSM_HelloReceived 1
  39. #define NSM_Start 2
  40. #define NSM_TwoWayReceived 3
  41. #define NSM_NegotiationDone 4
  42. #define NSM_ExchangeDone 5
  43. #define NSM_BadLSReq 6
  44. #define NSM_LoadingDone 7
  45. #define NSM_AdjOK 8
  46. #define NSM_SeqNumberMismatch 9
  47. #define NSM_OneWayReceived     10
  48. #define NSM_KillNbr        11
  49. #define NSM_InactivityTimer    12
  50. #define NSM_LLDown        13
  51. #define OSPF_NSM_EVENT_MAX     14
  52. /* Macro for OSPF NSM timer turn on. */
  53. #define OSPF_NSM_TIMER_ON(T,F,V)                                              
  54.       do {                                                                    
  55.         if (!(T))                                                             
  56.           (T) = thread_add_timer (master, (F), nbr, (V));                     
  57.       } while (0)
  58. /* Macro for OSPF NSM timer turn off. */
  59. #define OSPF_NSM_TIMER_OFF(X)                                                 
  60.       do {                                                                    
  61.         if (X)                                                                
  62.           {                                                                   
  63.             thread_cancel (X);                                                
  64.             (X) = NULL;                                                       
  65.           }                                                                   
  66.       } while (0)
  67. /* Macro for OSPF NSM schedule event. */
  68. #define OSPF_NSM_EVENT_SCHEDULE(N,E)                                          
  69.       thread_add_event (master, ospf_nsm_event, (N), (E))
  70. /* Macro for OSPF NSM execute event. */
  71. #define OSPF_NSM_EVENT_EXECUTE(N,E)                                           
  72.       thread_execute (master, ospf_nsm_event, (N), (E))
  73. /* Prototypes. */
  74. int ospf_nsm_event (struct thread *);
  75. void nsm_change_state (struct ospf_neighbor *, int);
  76. void ospf_check_nbr_loading (struct ospf_neighbor *);
  77. int ospf_db_summary_isempty (struct ospf_neighbor *);
  78. int ospf_db_summary_count (struct ospf_neighbor *);
  79. void ospf_db_summary_clear (struct ospf_neighbor *);
  80. #endif /* _ZEBRA_OSPF_NSM_H */