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

网络

开发平台:

Unix_Linux

  1. /*
  2.  * OSPFd main header.
  3.  * Copyright (C) 1998, 99, 2000 Kunihiro Ishiguro, Toshiaki Takada
  4.  *
  5.  * This file is part of GNU Zebra.
  6.  *
  7.  * GNU Zebra is free software; you can redistribute it and/or modify it
  8.  * under the terms of the GNU General Public License as published by the
  9.  * Free Software Foundation; either version 2, or (at your option) any
  10.  * later version.
  11.  * 
  12.  * GNU Zebra is distributed in the hope that it will be useful, but
  13.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with GNU Zebra; see the file COPYING.  If not, write to the Free
  19.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  20.  * 02111-1307, USA.
  21.  */
  22. #ifndef _ZEBRA_OSPFD_H
  23. #define _ZEBRA_OSPFD_H
  24. #include "filter.h"
  25. #define OSPF_VERSION            2
  26. /* Default protocol, port number. */
  27. #ifndef IPPROTO_OSPFIGP
  28. #define IPPROTO_OSPFIGP         89
  29. #endif /* IPPROTO_OSPFIGP */
  30. /* IP precedence. */
  31. #ifndef IPTOS_PREC_INTERNETCONTROL
  32. #define IPTOS_PREC_INTERNETCONTROL 0xC0
  33. #endif /* IPTOS_PREC_INTERNETCONTROL */
  34. /* VTY port number. */
  35. #define OSPF_VTY_PORT          2604
  36. #define OSPF_VTYSH_PATH        "/tmp/.ospfd"
  37. /* IP TTL for OSPF protocol. */
  38. #define OSPF_IP_TTL             1
  39. #define OSPF_VL_IP_TTL          100
  40. /* Default configuration file name for ospfd. */
  41. #define OSPF_DEFAULT_CONFIG   "ospfd.conf"
  42. /* Architectual Constants */
  43. #ifdef DEBUG
  44. #define OSPF_LS_REFRESH_TIME                    60
  45. #else
  46. #define OSPF_LS_REFRESH_TIME                  1800
  47. #endif
  48. #define OSPF_MIN_LS_INTERVAL                     5
  49. #define OSPF_MIN_LS_ARRIVAL                      1
  50. #define OSPF_LSA_MAXAGE                       3600
  51. #define OSPF_CHECK_AGE                         300
  52. #define OSPF_LSA_MAXAGE_DIFF                   900
  53. #define OSPF_LS_INFINITY                  0xffffff
  54. #define OSPF_DEFAULT_DESTINATION        0x00000000      /* 0.0.0.0 */
  55. #define OSPF_INITIAL_SEQUENCE_NUMBER    0x80000001
  56. #define OSPF_MAX_SEQUENCE_NUMBER        0x7fffffff
  57. #define OSPF_LSA_MAXAGE_CHECK_INTERVAL          30
  58. #define OSPF_ALLSPFROUTERS              0xe0000005      /* 224.0.0.5 */
  59. #define OSPF_ALLDROUTERS                0xe0000006      /* 224.0.0.6 */
  60. #ifdef HAVE_NSSA
  61. #define OSPF_LOOPer                     0x7f000000      /* 127.0.0.0 */
  62. #endif /* HAVE_NSSA */
  63. #define OSPF_AREA_BACKBONE              0x00000000      /* 0.0.0.0 */
  64. /* OSPF Authentication Type. */
  65. #define OSPF_AUTH_NULL                      0
  66. #define OSPF_AUTH_SIMPLE                    1
  67. #define OSPF_AUTH_CRYPTOGRAPHIC             2
  68. /* For Interface authentication setting default */
  69. #define OSPF_AUTH_NOTSET                   -1
  70. /* For the consumption and sanity of the command handler */ 
  71. /* DO NIOT REMOVE!!! Need to detect whether a value has
  72.    been given or not in VLink command handlers */
  73. #define OSPF_AUTH_CMD_NOTSEEN              -2
  74. /* OSPF SPF timer values. */
  75. #define OSPF_SPF_DELAY_DEFAULT              5
  76. #define OSPF_SPF_HOLDTIME_DEFAULT          10
  77. /* OSPF interface default values. */
  78. #define OSPF_OUTPUT_COST_DEFAULT           10
  79. #define OSPF_ROUTER_DEAD_INTERVAL_DEFAULT  40
  80. #define OSPF_HELLO_INTERVAL_DEFAULT        10
  81. #define OSPF_ROUTER_PRIORITY_DEFAULT        1
  82. #define OSPF_RETRANSMIT_INTERVAL_DEFAULT    5
  83. #define OSPF_TRANSMIT_DELAY_DEFAULT         1
  84. #define OSPF_DEFAULT_BANDWIDTH  10000 /* Kbps */
  85. #define OSPF_DEFAULT_REF_BANDWIDTH 100000  /* Kbps */
  86. #define OSPF_POLL_INTERVAL_DEFAULT         60
  87. #define OSPF_NEIGHBOR_PRIORITY_DEFAULT      0
  88. /* OSPF options. */
  89. #define OSPF_OPTION_T                    0x01  /* TOS. */
  90. #define OSPF_OPTION_E                    0x02
  91. #define OSPF_OPTION_MC                   0x04
  92. #define OSPF_OPTION_NP                   0x08
  93. #define OSPF_OPTION_EA                   0x10
  94. #define OSPF_OPTION_DC                   0x20
  95. #define OSPF_OPTION_O                    0x40
  96. /* OSPF Database Description flags. */
  97. #define OSPF_DD_FLAG_MS                  0x01
  98. #define OSPF_DD_FLAG_M                   0x02
  99. #define OSPF_DD_FLAG_I                   0x04
  100. #define OSPF_DD_FLAG_ALL                 0x07
  101. /* Timer value. */
  102. #define OSPF_ROUTER_ID_UPDATE_DELAY             1
  103. #define OSPF_LS_REFRESH_SHIFT       (60 * 15)
  104. #define OSPF_LS_REFRESH_JITTER      60
  105. /* OSPF master for system wide configuration and variables. */
  106. struct ospf_master
  107. {
  108.   /* OSPF instance. */
  109.   struct list *ospf;
  110.   /* OSPF thread master. */
  111.   struct thread_master *master;
  112.   /* Zebra interface list. */
  113.   struct list *iflist;
  114.   /* Redistributed external information. */
  115.   struct route_table *external_info[ZEBRA_ROUTE_MAX + 1];
  116. #define EXTERNAL_INFO(T)      om->external_info[T]
  117.   /* OSPF start time. */
  118.   time_t start_time;
  119.   /* Various OSPF global configuration. */
  120.   u_char options;
  121. };
  122. /* OSPF instance structure. */
  123. struct ospf
  124. {
  125.   /* OSPF Router ID. */
  126.   struct in_addr router_id; /* Configured automatically. */
  127.   struct in_addr router_id_static; /* Configured manually. */
  128.   /* ABR/ASBR internal flags. */
  129.   u_char flags;
  130. #define OSPF_FLAG_ABR           0x0001
  131. #define OSPF_FLAG_ASBR          0x0002
  132.   /* ABR type. */
  133.   u_char abr_type;
  134. #define OSPF_ABR_UNKNOWN 0
  135. #define OSPF_ABR_STAND          1
  136. #define OSPF_ABR_IBM            2
  137. #define OSPF_ABR_CISCO          3
  138. #define OSPF_ABR_SHORTCUT       4
  139.   /* NSSA ABR */
  140.   u_char anyNSSA; /* Bump for every NSSA attached. */
  141.   /* Configured variables. */
  142.   u_char config;
  143. #define OSPF_RFC1583_COMPATIBLE         (1 << 0)
  144. #define OSPF_OPAQUE_CAPABLE (1 << 2)
  145. #ifdef HAVE_OPAQUE_LSA
  146.   /* Opaque-LSA administrative flags. */
  147.   u_char opaque;
  148. #define OPAQUE_OPERATION_READY_BIT (1 << 0)
  149. #define OPAQUE_BLOCK_TYPE_09_LSA_BIT (1 << 1)
  150. #define OPAQUE_BLOCK_TYPE_10_LSA_BIT (1 << 2)
  151. #define OPAQUE_BLOCK_TYPE_11_LSA_BIT (1 << 3)
  152. #endif /* HAVE_OPAQUE_LSA */
  153.   int spf_delay; /* SPF delay time. */
  154.   int spf_holdtime; /* SPF hold time. */
  155.   int default_originate; /* Default information originate. */
  156. #define DEFAULT_ORIGINATE_NONE 0
  157. #define DEFAULT_ORIGINATE_ZEBRA 1
  158. #define DEFAULT_ORIGINATE_ALWAYS 2
  159.   u_int32_t ref_bandwidth; /* Reference Bandwidth (Kbps). */
  160.   struct route_table *networks;         /* OSPF config networks. */
  161.   list vlinks;                          /* Configured Virtual-Links. */
  162.   list areas;                           /* OSPF areas. */
  163.   struct route_table *nbr_nbma;
  164.   struct ospf_area *backbone;           /* Pointer to the Backbone Area. */
  165.   list oiflist;                         /* ospf interfaces */
  166.   /* LSDB of AS-external-LSAs. */
  167.   struct ospf_lsdb *lsdb;
  168.   
  169.   /* Flags. */
  170.   int external_origin; /* AS-external-LSA origin flag. */
  171.   int ase_calc; /* ASE calculation flag. */
  172. #ifdef HAVE_OPAQUE_LSA
  173.   list opaque_lsa_self; /* Type-11 Opaque-LSAs */
  174. #endif /* HAVE_OPAQUE_LSA */
  175.   /* Routing tables. */
  176.   struct route_table *old_table;        /* Old routing table. */
  177.   struct route_table *new_table;        /* Current routing table. */
  178.   struct route_table *old_rtrs;         /* Old ABR/ASBR RT. */
  179.   struct route_table *new_rtrs;         /* New ABR/ASBR RT. */
  180.   struct route_table *new_external_route;   /* New External Route. */
  181.   struct route_table *old_external_route;   /* Old External Route. */
  182.   
  183.   struct route_table *external_lsas;    /* Database of external LSAs,
  184.    prefix is LSA's adv. network*/
  185.   /* Time stamps. */
  186.   time_t ts_spf; /* SPF calculation time stamp. */
  187.   list maxage_lsa;                      /* List of MaxAge LSA for deletion. */
  188.   int redistribute;                     /* Num of redistributed protocols. */
  189.   /* Threads. */
  190.   struct thread *t_router_id_update; /* Router ID update timer. */
  191.   struct thread *t_router_lsa_update;   /* router-LSA update timer. */
  192.   struct thread *t_abr_task;            /* ABR task timer. */
  193.   struct thread *t_asbr_check;          /* ASBR check timer. */
  194.   struct thread *t_distribute_update;   /* Distirbute list update timer. */
  195.   struct thread *t_spf_calc;         /* SPF calculation timer. */
  196.   struct thread *t_ase_calc; /* ASE calculation timer. */
  197.   struct thread *t_external_lsa; /* AS-external-LSA origin timer. */
  198. #ifdef HAVE_OPAQUE_LSA
  199.   struct thread *t_opaque_lsa_self; /* Type-11 Opaque-LSAs origin event. */
  200. #endif /* HAVE_OPAQUE_LSA */
  201.   struct thread *t_maxage;              /* MaxAge LSA remover timer. */
  202.   struct thread *t_maxage_walker;       /* MaxAge LSA checking timer. */
  203.   struct thread *t_write;
  204.   struct thread *t_read;
  205.   int fd;
  206.   list oi_write_q;
  207.   
  208.   /* Distribute lists out of other route sources. */
  209.   struct 
  210.   {
  211.     char *name;
  212.     struct access_list *list;
  213.   } dlist[ZEBRA_ROUTE_MAX];
  214. #define DISTRIBUTE_NAME(O,T)    (O)->dlist[T].name
  215. #define DISTRIBUTE_LIST(O,T)    (O)->dlist[T].list
  216.   /* Redistribute metric info. */
  217.   struct 
  218.   {
  219.     int type;                   /* External metric type (E1 or E2).  */
  220.     int value;         /* Value for static metric (24-bit).
  221.    -1 means metric value is not set. */
  222.   } dmetric [ZEBRA_ROUTE_MAX + 1];
  223.   /* For redistribute route map. */
  224.   struct
  225.   {
  226.     char *name;
  227.     struct route_map *map;
  228.   } route_map [ZEBRA_ROUTE_MAX + 1]; /* +1 is for default-information */
  229. #define ROUTEMAP_NAME(O,T)   (O)->route_map[T].name
  230. #define ROUTEMAP(O,T)        (O)->route_map[T].map
  231.   
  232.   int default_metric; /* Default metric for redistribute. */
  233. #define OSPF_LSA_REFRESHER_GRANULARITY 10
  234. #define OSPF_LSA_REFRESHER_SLOTS ((OSPF_LS_REFRESH_TIME + 
  235.                                   OSPF_LS_REFRESH_SHIFT)/10 + 1)
  236.   struct
  237.   {
  238.     u_int16_t index;
  239.     list qs[OSPF_LSA_REFRESHER_SLOTS];
  240.   } lsa_refresh_queue;
  241.   
  242.   struct thread *t_lsa_refresher;
  243.   time_t lsa_refresher_started;
  244. #define OSPF_LSA_REFRESH_INTERVAL_DEFAULT 10
  245.   u_int16_t lsa_refresh_interval;
  246.   
  247.   /* Distance parameter. */
  248.   u_char distance_all;
  249.   u_char distance_intra;
  250.   u_char distance_inter;
  251.   u_char distance_external;
  252.   /* Statistics for LSA origination. */
  253.   u_int32_t lsa_originate_count;
  254.   /* Statistics for LSA used for new instantiation. */
  255.   u_int32_t rx_lsa_count;
  256.  
  257.   struct route_table *distance_table;
  258. };
  259. /* OSPF area structure. */
  260. struct ospf_area
  261. {
  262.   /* OSPF instance. */
  263.   struct ospf *ospf;
  264.   /* Zebra interface list belonging to the area. */
  265.   list oiflist;
  266.   /* Area ID. */
  267.   struct in_addr area_id;
  268.   /* Area ID format. */
  269.   char format;
  270. #define OSPF_AREA_ID_FORMAT_ADDRESS         1
  271. #define OSPF_AREA_ID_FORMAT_DECIMAL         2
  272.   /* Address range. */
  273.   list address_range;
  274.   /* Configured variables. */
  275.   int external_routing;                 /* ExternalRoutingCapability. */
  276. #define OSPF_AREA_DEFAULT       0
  277. #define OSPF_AREA_STUB          1
  278. #define OSPF_AREA_NSSA          2
  279. #define OSPF_AREA_TYPE_MAX 3
  280.   int no_summary;                       /* Don't inject summaries into stub.*/
  281.   int shortcut_configured;              /* Area configured as shortcut. */
  282. #define OSPF_SHORTCUT_DEFAULT 0
  283. #define OSPF_SHORTCUT_ENABLE 1
  284. #define OSPF_SHORTCUT_DISABLE 2
  285.   int shortcut_capability;              /* Other ABRs agree on S-bit */
  286.   u_int32_t default_cost;               /* StubDefaultCost. */
  287.   int auth_type;                        /* Authentication type. */
  288.   u_char NSSATranslatorRole;          /* NSSA Role during configuration */
  289. #define OSPF_NSSA_ROLE_NEVER     0
  290. #define OSPF_NSSA_ROLE_ALWAYS    1
  291. #define OSPF_NSSA_ROLE_CANDIDATE 2
  292.   u_char NSSATranslator;              /* NSSA Role after election process */
  293.   u_char transit; /* TransitCapability. */
  294. #define OSPF_TRANSIT_FALSE      0
  295. #define OSPF_TRANSIT_TRUE       1
  296.   struct route_table *ranges; /* Configured Area Ranges. */
  297.   /* Area related LSDBs[Type1-4]. */
  298.   struct ospf_lsdb *lsdb;
  299.   /* Self-originated LSAs. */
  300.   struct ospf_lsa *router_lsa_self;
  301. #ifdef HAVE_OPAQUE_LSA
  302.   list opaque_lsa_self; /* Type-10 Opaque-LSAs */
  303. #endif /* HAVE_OPAQUE_LSA */
  304.   /* Area announce list. */
  305.   struct 
  306.   {
  307.     char *name;
  308.     struct access_list *list;
  309.   } export;
  310. #define EXPORT_NAME(A)  (A)->export.name
  311. #define EXPORT_LIST(A)  (A)->export.list
  312.   /* Area acceptance list. */
  313.   struct 
  314.   {
  315.     char *name;
  316.     struct access_list *list;
  317.   } import;
  318. #define IMPORT_NAME(A)  (A)->import.name
  319. #define IMPORT_LIST(A)  (A)->import.list
  320.   /* Type 3 LSA Area prefix-list. */
  321.   struct 
  322.   {
  323.     char *name;
  324.     struct prefix_list *list;
  325.   } plist_in;
  326. #define PREFIX_LIST_IN(A)   (A)->plist_in.list
  327. #define PREFIX_NAME_IN(A)   (A)->plist_in.name
  328.   struct
  329.   {
  330.     char *name;
  331.     struct prefix_list *list;
  332.   } plist_out;
  333. #define PREFIX_LIST_OUT(A)  (A)->plist_out.list
  334. #define PREFIX_NAME_OUT(A)  (A)->plist_out.name
  335.   /* Shortest Path Tree. */
  336.   struct vertex *spf;
  337.   /* Threads. */
  338.   struct thread *t_router_lsa_self;/* Self-originated router-LSA timer. */
  339. #ifdef HAVE_OPAQUE_LSA
  340.   struct thread *t_opaque_lsa_self; /* Type-10 Opaque-LSAs origin. */
  341. #endif /* HAVE_OPAQUE_LSA */
  342.   /* Statistics field. */
  343.   u_int32_t spf_calculation; /* SPF Calculation Count. */
  344.   /* Router count. */
  345.   u_int32_t abr_count; /* ABR router in this area. */
  346.   u_int32_t asbr_count; /* ASBR router in this area. */
  347.   /* Counters. */
  348.   u_int32_t act_ints; /* Active interfaces. */
  349.   u_int32_t full_nbrs; /* Fully adjacent neighbors. */
  350.   u_int32_t full_vls; /* Fully adjacent virtual neighbors. */
  351. };
  352. /* OSPF config network structure. */
  353. struct ospf_network
  354. {
  355.   /* Area ID. */
  356.   struct in_addr area_id;
  357.   int format;
  358. };
  359. /* OSPF NBMA neighbor structure. */
  360. struct ospf_nbr_nbma
  361. {
  362.   /* Neighbor IP address. */
  363.   struct in_addr addr;
  364.   /* OSPF interface. */
  365.   struct ospf_interface *oi;
  366.   /* OSPF neighbor structure. */
  367.   struct ospf_neighbor *nbr;
  368.   /* Neighbor priority. */
  369.   u_char priority;
  370.   /* Poll timer value. */
  371.   u_int32_t v_poll;
  372.   /* Poll timer thread. */
  373.   struct thread *t_poll;
  374.   /* State change. */
  375.   u_int32_t state_change;
  376. };
  377. /* Macro. */
  378. #define OSPF_AREA_SAME(X,Y) 
  379.         (memcmp ((X->area_id), (Y->area_id), IPV4_MAX_BYTELEN) == 0)
  380. #define IS_OSPF_ABR(O) ((O)->flags & OSPF_FLAG_ABR)
  381. #define IS_OSPF_ASBR(O) ((O)->flags & OSPF_FLAG_ASBR)
  382. #define OSPF_IS_AREA_ID_BACKBONE(I) ((I).s_addr == OSPF_AREA_BACKBONE)
  383. #define OSPF_IS_AREA_BACKBONE(A) OSPF_IS_AREA_ID_BACKBONE ((A)->area_id)
  384. #ifdef roundup
  385. #  define ROUNDUP(val, gran) roundup(val, gran)
  386. #else /* roundup */
  387. #  define ROUNDUP(val, gran) (((val) - 1 | (gran) - 1) + 1)
  388. #endif /* roundup */
  389. #define LSA_OPTIONS_GET(area) 
  390.         (((area)->external_routing == OSPF_AREA_DEFAULT) ? OSPF_OPTION_E : 0)
  391. #ifdef HAVE_NSSA
  392. #define LSA_NSSA_GET(area) 
  393.         (((area)->external_routing == OSPF_AREA_NSSA) ? 
  394.           (area)->NSSATranslator : 0)
  395. #endif /* HAVE_NSSA */
  396. #define OSPF_TIMER_ON(T,F,V)                                                  
  397.     do {                                                                      
  398.       if (!(T))                                                               
  399. (T) = thread_add_timer (master, (F), ospf, (V));                      
  400.     } while (0)
  401. #define OSPF_AREA_TIMER_ON(T,F,V)                                             
  402.     do {                                                                      
  403.       if (!(T))                                                               
  404.         (T) = thread_add_timer (master, (F), area, (V));                      
  405.     } while (0)
  406. #define OSPF_POLL_TIMER_ON(T,F,V)                                             
  407.     do {                                                                      
  408.       if (!(T))                                                               
  409.         (T) = thread_add_timer (master, (F), nbr_nbma, (V));                  
  410.     } while (0)
  411. #define OSPF_POLL_TIMER_OFF(X) OSPF_TIMER_OFF((X))
  412. #define OSPF_TIMER_OFF(X)                                                     
  413.     do {                                                                      
  414.       if (X)                                                                  
  415.         {                                                                     
  416.           thread_cancel (X);                                                  
  417.           (X) = NULL;                                                         
  418.         }                                                                     
  419.     } while (0)
  420. /* Extern variables. */
  421. extern struct ospf_master *om;
  422. extern struct message ospf_ism_state_msg[];
  423. extern struct message ospf_nsm_state_msg[];
  424. extern struct message ospf_lsa_type_msg[];
  425. extern struct message ospf_link_state_id_type_msg[];
  426. extern struct message ospf_redistributed_proto[];
  427. extern struct message ospf_network_type_msg[];
  428. extern int ospf_ism_state_msg_max;
  429. extern int ospf_nsm_state_msg_max;
  430. extern int ospf_lsa_type_msg_max;
  431. extern int ospf_link_state_id_type_msg_max;
  432. extern int ospf_redistributed_proto_max;
  433. extern int ospf_network_type_msg_max;
  434. extern struct zclient *zclient;
  435. extern struct thread_master *master;
  436. extern int ospf_zlog;
  437. /* Prototypes. */
  438. struct ospf *ospf_lookup ();
  439. struct ospf *ospf_get ();
  440. void ospf_finish (struct ospf *);
  441. int ospf_router_id_update_timer (struct thread *);
  442. void ospf_router_id_update ();
  443. int ospf_network_set (struct ospf *, struct prefix_ipv4 *, struct in_addr);
  444. int ospf_network_unset (struct ospf *, struct prefix_ipv4 *, struct in_addr);
  445. int ospf_area_stub_set (struct ospf *, struct in_addr);
  446. int ospf_area_stub_unset (struct ospf *, struct in_addr);
  447. int ospf_area_no_summary_set (struct ospf *, struct in_addr);
  448. int ospf_area_no_summary_unset (struct ospf *, struct in_addr);
  449. int ospf_area_nssa_set (struct ospf *, struct in_addr);
  450. int ospf_area_nssa_unset (struct ospf *, struct in_addr);
  451. int ospf_area_nssa_translator_role_set (struct ospf *, struct in_addr, int);
  452. int ospf_area_export_list_set (struct ospf *, struct ospf_area *, char *);
  453. int ospf_area_export_list_unset (struct ospf *, struct ospf_area *);
  454. int ospf_area_import_list_set (struct ospf *, struct ospf_area *, char *);
  455. int ospf_area_import_list_unset (struct ospf *, struct ospf_area *);
  456. int ospf_area_shortcut_set (struct ospf *, struct ospf_area *, int);
  457. int ospf_area_shortcut_unset (struct ospf *, struct ospf_area *);
  458. int ospf_timers_spf_set (struct ospf *, u_int32_t, u_int32_t);
  459. int ospf_timers_spf_unset (struct ospf *);
  460. int ospf_timers_refresh_set (struct ospf *, int);
  461. int ospf_timers_refresh_unset (struct ospf *);
  462. int ospf_nbr_nbma_set (struct ospf *, struct in_addr);
  463. int ospf_nbr_nbma_unset (struct ospf *, struct in_addr);
  464. int ospf_nbr_nbma_priority_set (struct ospf *, struct in_addr, u_char);
  465. int ospf_nbr_nbma_priority_unset (struct ospf *, struct in_addr);
  466. int ospf_nbr_nbma_poll_interval_set (struct ospf *, struct in_addr, int);
  467. int ospf_nbr_nbma_poll_interval_unset (struct ospf *, struct in_addr);
  468. void ospf_prefix_list_update (struct prefix_list *);
  469. void ospf_init ();
  470. void ospf_if_update (struct ospf *);
  471. void ospf_ls_upd_queue_empty (struct ospf_interface *);
  472. void ospf_terminate ();
  473. void ospf_nbr_nbma_if_update (struct ospf *, struct ospf_interface *);
  474. struct ospf_nbr_nbma *ospf_nbr_nbma_lookup (struct ospf *, struct in_addr);
  475. struct ospf_nbr_nbma *ospf_nbr_nbma_lookup_next (struct ospf *,
  476.  struct in_addr *, int);
  477. int ospf_oi_count (struct interface *);
  478. struct ospf_area *ospf_area_get (struct ospf *, struct in_addr, int);
  479. void ospf_area_check_free (struct ospf *, struct in_addr);
  480. struct ospf_area *ospf_area_lookup_by_area_id (struct ospf *, struct in_addr);
  481. void ospf_area_add_if (struct ospf_area *, struct ospf_interface *);
  482. void ospf_area_del_if (struct ospf_area *, struct ospf_interface *);
  483. void ospf_route_map_init ();
  484. void ospf_snmp_init ();
  485. void ospf_master_init ();
  486. #endif /* _ZEBRA_OSPFD_H */