]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospf6d/ospf6_top.h
zebra: Allow ns delete to happen after under/over flow checks
[mirror_frr.git] / ospf6d / ospf6_top.h
index 5e101520d702a35af177237bae85e5f4dcd4b03b..381027dcff26c60eb13fd83bbb1773a03e644e4d 100644 (file)
 #include "qobj.h"
 #include "routemap.h"
 
+struct ospf6_master {
+
+       uint32_t zebra_router_id;
+};
+
 /* OSPFv3 top level data structure */
-struct ospf6
-{
-  /* my router id */
-  u_int32_t router_id;
+struct ospf6 {
+       /* my router id */
+       uint32_t router_id;
+
+       /* static router id */
+       uint32_t router_id_static;
 
-  /* static router id */
-  u_int32_t router_id_static;
+       struct in_addr router_id_zebra;
 
-  /* start time */
-  struct timeval starttime;
+       /* start time */
+       struct timeval starttime;
 
-  /* list of areas */
-  struct list *area_list;
-  struct ospf6_area *backbone;
+       /* list of areas */
+       struct list *area_list;
+       struct ospf6_area *backbone;
 
-  /* AS scope link state database */
-  struct ospf6_lsdb *lsdb;
-  struct ospf6_lsdb *lsdb_self;
+       /* AS scope link state database */
+       struct ospf6_lsdb *lsdb;
+       struct ospf6_lsdb *lsdb_self;
 
-  struct ospf6_route_table *route_table;
-  struct ospf6_route_table *brouter_table;
+       struct ospf6_route_table *route_table;
+       struct ospf6_route_table *brouter_table;
 
-  struct ospf6_route_table *external_table;
-  struct route_table *external_id_table;
-  u_int32_t external_id;
+       struct ospf6_route_table *external_table;
+       struct route_table *external_id_table;
+       uint32_t external_id;
 
-  /* redistribute route-map */
-  struct
-  {
-    char *name;
-    struct route_map *map;
-  } rmap[ZEBRA_ROUTE_MAX];
+       /* redistribute route-map */
+       struct {
+               char *name;
+               struct route_map *map;
+       } rmap[ZEBRA_ROUTE_MAX];
 
-  u_char flag;
+       uint8_t flag;
 
-  /* Configured flags */
-  u_char config_flags;
+       /* Configured flags */
+       uint8_t config_flags;
 #define OSPF6_LOG_ADJACENCY_CHANGES      (1 << 0)
 #define OSPF6_LOG_ADJACENCY_DETAIL       (1 << 1)
 
-  /* LSA timer parameters */
-  unsigned int lsa_minarrival;         /* LSA minimum arrival in milliseconds. */
+       /* LSA timer parameters */
+       unsigned int lsa_minarrival; /* LSA minimum arrival in milliseconds. */
 
-  /* SPF parameters */
-  unsigned int spf_delay;              /* SPF delay time. */
-  unsigned int spf_holdtime;           /* SPF hold time. */
-  unsigned int spf_max_holdtime;       /* SPF maximum-holdtime */
-  unsigned int spf_hold_multiplier;    /* Adaptive multiplier for hold time */
-  unsigned int spf_reason;              /* reason bits while scheduling SPF */
+       /* SPF parameters */
+       unsigned int spf_delay; /* SPF delay time. */
+       unsigned int spf_holdtime;     /* SPF hold time. */
+       unsigned int spf_max_holdtime; /* SPF maximum-holdtime */
+       unsigned int
+               spf_hold_multiplier; /* Adaptive multiplier for hold time */
+       unsigned int spf_reason;     /* reason bits while scheduling SPF */
 
-  struct timeval ts_spf;               /* SPF calculation time stamp. */
-  struct timeval ts_spf_duration;      /* Execution time of last SPF */
-  unsigned int last_spf_reason;         /* Last SPF reason */
+       struct timeval ts_spf;          /* SPF calculation time stamp. */
+       struct timeval ts_spf_duration; /* Execution time of last SPF */
+       unsigned int last_spf_reason;   /* Last SPF reason */
 
-  /* Threads */
-  struct thread *t_spf_calc;           /* SPF calculation timer. */
-  struct thread *t_ase_calc;           /* ASE calculation timer. */
-  struct thread *maxage_remover;
+       /* Threads */
+       struct thread *t_spf_calc; /* SPF calculation timer. */
+       struct thread *t_ase_calc; /* ASE calculation timer. */
+       struct thread *maxage_remover;
+       struct thread *t_distribute_update; /* Distirbute update timer. */
 
-  u_int32_t ref_bandwidth;
+       uint32_t ref_bandwidth;
 
-  /* Distance parameters */
-  u_char distance_all;
-  u_char distance_intra;
-  u_char distance_inter;
-  u_char distance_external;
+       /* Distance parameters */
+       uint8_t distance_all;
+       uint8_t distance_intra;
+       uint8_t distance_inter;
+       uint8_t distance_external;
 
-  struct route_table *distance_table;
+       struct route_table *distance_table;
 
-  QOBJ_FIELDS
+       /* Used during ospf instance going down send LSDB
+        * update to neighbors immediatly */
+       uint8_t inst_shutdown;
+
+       QOBJ_FIELDS
 };
 DECLARE_QOBJ_TYPE(ospf6)
 
@@ -103,13 +114,14 @@ DECLARE_QOBJ_TYPE(ospf6)
 
 /* global pointer for OSPF top data structure */
 extern struct ospf6 *ospf6;
+extern struct ospf6_master *om6;
 
 /* prototypes */
-extern void ospf6_top_init (void);
-extern void ospf6_delete (struct ospf6 *o);
+extern void ospf6_master_init(void);
+extern void ospf6_top_init(void);
+extern void ospf6_delete(struct ospf6 *o);
+extern void ospf6_router_id_update(void);
 
-extern void ospf6_maxage_remove (struct ospf6 *o);
+extern void ospf6_maxage_remove(struct ospf6 *o);
 
 #endif /* OSPF6_TOP_H */
-
-