]>
git.proxmox.com Git - mirror_frr.git/blob - lib/mlag.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (C) 2018 Cumulus Networks, Inc.
15 #include "lib/stream.h"
17 #define MLAG_MSG_NULL_PAYLOAD 0
18 #define MLAG_MSG_NO_BATCH 1
19 #define MLAG_BUF_LIMIT 2048
45 * This message definition should match mlag.proto
46 * Because message registration is based on this
52 MLAG_STATUS_UPDATE
= 3,
56 MLAG_MROUTE_ADD_BULK
= 7,
57 MLAG_MROUTE_DEL_BULK
= 8,
58 MLAG_PIM_CFG_DUMP
= 10,
59 MLAG_VXLAN_UPDATE
= 11,
60 MLAG_PEER_FRR_STATUS
= 12,
63 struct mlag_frr_status
{
64 enum mlag_frr_state frr_state
;
68 char peerlink_rif
[INTERFACE_NAMSIZ
];
69 enum mlag_role my_role
;
70 enum mlag_state peer_state
;
73 #define MLAG_ROLE_STRSIZE 16
80 struct mlag_mroute_add
{
81 char vrf_name
[VRF_NAMSIZ
];
85 enum mlag_owner owner_id
;
87 bool am_i_dual_active
;
89 char intf_name
[INTERFACE_NAMSIZ
];
92 struct mlag_mroute_del
{
93 char vrf_name
[VRF_NAMSIZ
];
96 enum mlag_owner owner_id
;
98 char intf_name
[INTERFACE_NAMSIZ
];
102 enum mlag_msg_type msg_type
;
106 } __attribute__((packed
));
109 extern char *mlag_role2str(enum mlag_role role
, char *buf
, size_t size
);
110 extern char *mlag_lib_msgid_to_str(enum mlag_msg_type msg_type
, char *buf
,
112 extern int mlag_lib_decode_mlag_hdr(struct stream
*s
, struct mlag_msg
*msg
,
114 extern int mlag_lib_decode_mroute_add(struct stream
*s
,
115 struct mlag_mroute_add
*msg
,
117 extern int mlag_lib_decode_mroute_del(struct stream
*s
,
118 struct mlag_mroute_del
*msg
,
120 extern int mlag_lib_decode_mlag_status(struct stream
*s
,
121 struct mlag_status
*msg
);
122 extern int mlag_lib_decode_vxlan_update(struct stream
*s
,
123 struct mlag_vxlan
*msg
);
124 extern int mlag_lib_decode_frr_status(struct stream
*s
,
125 struct mlag_frr_status
*msg
);