back to topotato report
topotato coverage report
Current view: top level - zebra - zebra_mlag.h (source / functions) Hit Total Coverage
Test: test_pim_bfd.py::PIMBFDTest Lines: 2 2 100.0 %
Date: 2023-02-24 18:39:40 Functions: 0 0 -

          Line data    Source code
       1             : /* Zebra mlag header.
       2             :  * Copyright (C) 2018 Cumulus Networks, Inc.
       3             :  *                    Donald Sharp
       4             :  *
       5             :  * This file is part of FRR.
       6             :  *
       7             :  * FRR is free software; you can redistribute it and/or modify it
       8             :  * under the terms of the GNU General Public License as published by the
       9             :  * Free Software Foundation; either version 2, or (at your option) any
      10             :  * later version.
      11             :  *
      12             :  * FRR is distributed in the hope that it will be useful, but
      13             :  * WITHOUT ANY WARRANTY; without even the implied warranty of
      14             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      15             :  * General Public License for more details.
      16             :  *
      17             :  * You should have received a copy of the GNU General Public License
      18             :  * along with FRR; see the file COPYING.  If not, write to the Free
      19             :  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
      20             :  * 02111-1307, USA.
      21             :  */
      22             : #ifndef __ZEBRA_MLAG_H__
      23             : #define __ZEBRA_MLAG_H__
      24             : 
      25             : #include "mlag.h"
      26             : #include "zclient.h"
      27             : #include "zebra/zserv.h"
      28             : 
      29             : #ifdef __cplusplus
      30             : extern "C" {
      31             : #endif
      32             : 
      33             : #define ZEBRA_MLAG_BUF_LIMIT 32768
      34             : #define ZEBRA_MLAG_LEN_SIZE 4
      35             : 
      36             : DECLARE_HOOK(zebra_mlag_private_write_data,
      37             :              (uint8_t *data, uint32_t len), (data, len));
      38             : DECLARE_HOOK(zebra_mlag_private_monitor_state, (), ());
      39             : DECLARE_HOOK(zebra_mlag_private_open_channel, (), ());
      40             : DECLARE_HOOK(zebra_mlag_private_close_channel, (), ());
      41             : DECLARE_HOOK(zebra_mlag_private_cleanup_data, (), ());
      42             : 
      43             : extern uint8_t mlag_wr_buffer[ZEBRA_MLAG_BUF_LIMIT];
      44             : extern uint8_t mlag_rd_buffer[ZEBRA_MLAG_BUF_LIMIT];
      45             : 
      46           4 : static inline void zebra_mlag_reset_read_buffer(void)
      47             : {
      48           4 :         memset(mlag_wr_buffer, 0, ZEBRA_MLAG_BUF_LIMIT);
      49             : }
      50             : 
      51             : enum zebra_mlag_state {
      52             :         MLAG_UP = 1,
      53             :         MLAG_DOWN = 2,
      54             : };
      55             : 
      56             : void zebra_mlag_init(void);
      57             : void zebra_mlag_terminate(void);
      58             : enum mlag_role zebra_mlag_get_role(void);
      59             : void zebra_mlag_client_register(ZAPI_HANDLER_ARGS);
      60             : void zebra_mlag_client_unregister(ZAPI_HANDLER_ARGS);
      61             : void zebra_mlag_forward_client_msg(ZAPI_HANDLER_ARGS);
      62             : void zebra_mlag_send_register(void);
      63             : void zebra_mlag_send_deregister(void);
      64             : void zebra_mlag_handle_process_state(enum zebra_mlag_state state);
      65             : void zebra_mlag_process_mlag_data(uint8_t *data, uint32_t len);
      66             : 
      67             : /*
      68             :  * ProtoBuffer Api's
      69             :  */
      70             : int zebra_mlag_protobuf_encode_client_data(struct stream *s,
      71             :                                            uint32_t *msg_type);
      72             : int zebra_mlag_protobuf_decode_message(struct stream *s, uint8_t *data,
      73             :                                        uint32_t len);
      74             : #ifdef __cplusplus
      75             : }
      76             : #endif
      77             : 
      78             : #endif

Generated by: LCOV version v1.16-topotato