]> git.proxmox.com Git - mirror_frr.git/blob - pimd/pim_mlag.h
Merge pull request #13646 from donaldsharp/logically_illogical
[mirror_frr.git] / pimd / pim_mlag.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * This is an implementation of PIM MLAG Functionality
4 *
5 * Module name: PIM MLAG
6 *
7 * Author: sathesh Kumar karra <sathk@cumulusnetworks.com>
8 *
9 * Copyright (C) 2019 Cumulus Networks http://www.cumulusnetworks.com
10 */
11 #ifndef __PIM_MLAG_H__
12 #define __PIM_MLAG_H__
13
14 #include "zclient.h"
15 #include "mlag.h"
16 #include "pim_iface.h"
17
18 #if PIM_IPV == 4
19 extern void pim_mlag_init(void);
20 extern void pim_mlag_terminate(void);
21 extern void pim_instance_mlag_init(struct pim_instance *pim);
22 extern void pim_instance_mlag_terminate(struct pim_instance *pim);
23 extern void pim_if_configure_mlag_dualactive(struct pim_interface *pim_ifp);
24 extern void pim_if_unconfigure_mlag_dualactive(struct pim_interface *pim_ifp);
25 extern int pim_zebra_mlag_process_up(ZAPI_CALLBACK_ARGS);
26 extern int pim_zebra_mlag_process_down(ZAPI_CALLBACK_ARGS);
27 extern int pim_zebra_mlag_handle_msg(ZAPI_CALLBACK_ARGS);
28
29 /* pm_zpthread.c */
30 extern int pim_mlag_signal_zpthread(void);
31 extern void pim_zpthread_init(void);
32 extern void pim_zpthread_terminate(void);
33
34 extern void pim_mlag_register(void);
35 extern void pim_mlag_deregister(void);
36 extern void pim_mlag_up_local_add(struct pim_instance *pim,
37 struct pim_upstream *upstream);
38 extern void pim_mlag_up_local_del(struct pim_instance *pim,
39 struct pim_upstream *upstream);
40 extern bool pim_mlag_up_df_role_update(struct pim_instance *pim,
41 struct pim_upstream *up, bool is_df,
42 const char *reason);
43 #else /* PIM_IPV == 4 */
44 static inline void pim_mlag_terminate(void)
45 {
46 }
47
48 static inline void pim_instance_mlag_init(struct pim_instance *pim)
49 {
50 }
51
52 static inline void pim_instance_mlag_terminate(struct pim_instance *pim)
53 {
54 }
55
56 static inline void pim_if_configure_mlag_dualactive(
57 struct pim_interface *pim_ifp)
58 {
59 }
60
61 static inline void pim_if_unconfigure_mlag_dualactive(
62 struct pim_interface *pim_ifp)
63 {
64 }
65
66 static inline void pim_mlag_register(void)
67 {
68 }
69
70 static inline void pim_mlag_up_local_add(struct pim_instance *pim,
71 struct pim_upstream *upstream)
72 {
73 }
74
75 static inline void pim_mlag_up_local_del(struct pim_instance *pim,
76 struct pim_upstream *upstream)
77 {
78 }
79
80 static inline bool pim_mlag_up_df_role_update(struct pim_instance *pim,
81 struct pim_upstream *up,
82 bool is_df, const char *reason)
83 {
84 return false;
85 }
86 #endif
87
88 #endif