]> git.proxmox.com Git - mirror_frr.git/blame - pimd/pim_mlag.h
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / pimd / pim_mlag.h
CommitLineData
acddc0ed 1// SPDX-License-Identifier: GPL-2.0-or-later
36b5b98f
SK
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
36b5b98f
SK
10 */
11#ifndef __PIM_MLAG_H__
12#define __PIM_MLAG_H__
13
a243d1db 14#include "zclient.h"
36b5b98f
SK
15#include "mlag.h"
16#include "pim_iface.h"
17
deb76ca4 18#if PIM_IPV == 4
36b5b98f 19extern void pim_mlag_init(void);
892c2c44 20extern void pim_mlag_terminate(void);
36b5b98f
SK
21extern void pim_instance_mlag_init(struct pim_instance *pim);
22extern void pim_instance_mlag_terminate(struct pim_instance *pim);
23extern void pim_if_configure_mlag_dualactive(struct pim_interface *pim_ifp);
24extern void pim_if_unconfigure_mlag_dualactive(struct pim_interface *pim_ifp);
a243d1db
DL
25extern int pim_zebra_mlag_process_up(ZAPI_CALLBACK_ARGS);
26extern int pim_zebra_mlag_process_down(ZAPI_CALLBACK_ARGS);
27extern int pim_zebra_mlag_handle_msg(ZAPI_CALLBACK_ARGS);
17823cdd
DS
28
29/* pm_zpthread.c */
30extern int pim_mlag_signal_zpthread(void);
31extern void pim_zpthread_init(void);
32extern void pim_zpthread_terminate(void);
33
22c35834
SK
34extern void pim_mlag_register(void);
35extern void pim_mlag_deregister(void);
05ca004b 36extern void pim_mlag_up_local_add(struct pim_instance *pim,
22c35834 37 struct pim_upstream *upstream);
05ca004b 38extern void pim_mlag_up_local_del(struct pim_instance *pim,
22c35834 39 struct pim_upstream *upstream);
05ca004b 40extern bool pim_mlag_up_df_role_update(struct pim_instance *pim,
22c35834
SK
41 struct pim_upstream *up, bool is_df,
42 const char *reason);
deb76ca4
DL
43#else /* PIM_IPV == 4 */
44static inline void pim_mlag_terminate(void)
45{
46}
47
48static inline void pim_instance_mlag_init(struct pim_instance *pim)
49{
50}
51
52static inline void pim_instance_mlag_terminate(struct pim_instance *pim)
53{
54}
55
56static inline void pim_if_configure_mlag_dualactive(
57 struct pim_interface *pim_ifp)
58{
59}
60
61static inline void pim_if_unconfigure_mlag_dualactive(
62 struct pim_interface *pim_ifp)
63{
64}
65
66static inline void pim_mlag_register(void)
67{
68}
69
70static inline void pim_mlag_up_local_add(struct pim_instance *pim,
71 struct pim_upstream *upstream)
72{
73}
74
75static inline void pim_mlag_up_local_del(struct pim_instance *pim,
76 struct pim_upstream *upstream)
77{
78}
79
80static 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
36b5b98f 88#endif