]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_router.h
zebra: print unknown rule family as number
[mirror_frr.git] / zebra / zebra_router.h
index 092cf2e049db3f232b5f3c20814cbc6935cb5695..d8ad8a68646d778cfbba94438aa39ebaad3afe07 100644 (file)
@@ -71,9 +71,46 @@ struct zebra_mlag_info {
 
        /* The system mac being used */
        struct ethaddr mac;
+       /*
+        * Zebra will open the communication channel with MLAGD only if any
+        * clients are interested and it is controlled dynamically based on
+        * client registers & un-registers.
+        */
+       uint32_t clients_interested_cnt;
+
+       /* coomunication channel with MLAGD is established */
+       bool connected;
+
+       /* connection retry timer is running */
+       bool timer_running;
+
+       /* Holds the client data(unencoded) that need to be pushed to MCLAGD*/
+       struct stream_fifo *mlag_fifo;
+
+       /*
+        * A new Kernel thread will be created to post the data to MCLAGD.
+        * where as, read will be performed from the zebra main thread, because
+        * read involves accessing client registartion data structures.
+        */
+       struct frr_pthread *zebra_pth_mlag;
+
+       /* MLAG Thread context 'master' */
+       struct thread_master *th_master;
+
+       /*
+        * Event for Initial MLAG Connection setup & Data Read
+        * Read can be performed only after successful connection establishment,
+        * so no issues.
+        *
+        */
+       struct thread *t_read;
+       /* Event for MLAG write */
+       struct thread *t_write;
 };
 
 struct zebra_router {
+       atomic_bool in_shutdown;
+
        /* Thread master */
        struct thread_master *master;
 
@@ -93,9 +130,8 @@ struct zebra_router {
 
        struct hash *iptable_hash;
 
-#if defined(HAVE_RTADV)
-       struct rtadv rtadv;
-#endif /* HAVE_RTADV */
+       /* used if vrf backend is not network namespace */
+       int rtadv_sock;
 
        /* A sequence number used for tracking routes */
        _Atomic uint32_t sequence_num;
@@ -131,6 +167,12 @@ struct zebra_router {
         * Time for when we sweep the rib from old routes
         */
        time_t startup_time;
+
+       /*
+        * The hash of nexthop groups associated with this router
+        */
+       struct hash *nhgs;
+       struct hash *nhgs_id;
 };
 
 #define GRACEFUL_RESTART_TIME 60
@@ -138,6 +180,7 @@ struct zebra_router {
 extern struct zebra_router zrouter;
 
 extern void zebra_router_init(void);
+extern void zebra_router_cleanup(void);
 extern void zebra_router_terminate(void);
 
 extern struct route_table *zebra_router_find_table(struct zebra_vrf *zvrf,
@@ -152,6 +195,7 @@ extern void zebra_router_release_table(struct zebra_vrf *zvrf, uint32_t tableid,
 extern int zebra_router_config_write(struct vty *vty);
 
 extern void zebra_router_sweep_route(void);
+extern void zebra_router_sweep_nhgs(void);
 
 extern void zebra_router_show_table_summary(struct vty *vty);