diff options
| author | Satheesh Kumar K <sathk@cumulusnetworks.com> | 2019-11-12 00:40:35 -0800 |
|---|---|---|
| committer | Satheesh Kumar K <sathk@cumulusnetworks.com> | 2019-11-13 20:50:37 -0800 |
| commit | ee235396b9c0187f7c72a86d3adb0bb15861c6c4 (patch) | |
| tree | 7aa36f7f28189a6e93e551f0fdec8c018cc2117b /zebra/zebra_router.h | |
| parent | 46c2687c72e59dce69a5f5d35fc7bd4d76bc740e (diff) | |
Zebra: adding support for Zebra MLAG Functionality
This includes:
1. Processing client Registrations for MLAG
2. storing client Interests for MLAG updates
3. Opening communication channel to MLAG with First client reg
4. Closing Communication channel with last client De-reg
5. Spawning a new thread for handling MLAG updates peocessing
6. adding Test code
7. advertising MLAG Updates to clients based on their interests
Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
Diffstat (limited to 'zebra/zebra_router.h')
| -rw-r--r-- | zebra/zebra_router.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/zebra/zebra_router.h b/zebra/zebra_router.h index ac4c961475..437cab5bbd 100644 --- a/zebra/zebra_router.h +++ b/zebra/zebra_router.h @@ -71,6 +71,35 @@ 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; + + /* Threads for read/write. */ + struct thread *t_read; + struct thread *t_write; }; struct zebra_router { |
