LCOV - code coverage report
Current view: top level - plugins/vrrp - vrrp_format.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 13 62 21.0 %
Date: 2023-10-26 01:39:38 Functions: 2 7 28.6 %

          Line data    Source code
       1             : /*
       2             :  * Copyright 2019-2020 Rubicon Communications, LLC (Netgate)
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  *
       6             :  */
       7             : 
       8             : #include <vnet/vnet.h>
       9             : #include <vnet/api_errno.h>
      10             : #include <vnet/ip/ip.h>
      11             : #include <vnet/interface.h>
      12             : 
      13             : #include <plugins/vrrp/vrrp.h>
      14             : #include <plugins/vrrp/vrrp_packet.h>
      15             : 
      16             : u8 *
      17           0 : format_vrrp_vr_flags (u8 * s, va_list * args)
      18             : {
      19           0 :   vrrp_vr_flags_t flags = va_arg (*args, vrrp_vr_flags_t);
      20             : 
      21           0 :   s = format (s, "preempt %s accept %s unicast %s",
      22           0 :               (flags & VRRP_VR_PREEMPT) ? "yes" : "no",
      23           0 :               (flags & VRRP_VR_ACCEPT) ? "yes" : "no",
      24           0 :               (flags & VRRP_VR_UNICAST) ? "yes" : "no");
      25             : 
      26           0 :   return s;
      27             : }
      28             : 
      29             : u8 *
      30           0 : format_vrrp_vr_addrs (u8 * s, va_list * args)
      31             : {
      32           0 :   int is_ipv6 = va_arg (*args, int);
      33           0 :   ip46_address_t *addrs = va_arg (*args, ip46_address_t *);
      34             :   ip46_address_t *addr;
      35             : 
      36           0 :   vec_foreach (addr, addrs)
      37             :   {
      38           0 :     s = format (s, "%U ",
      39             :                 (is_ipv6) ? format_ip6_address : format_ip4_address,
      40             :                 (is_ipv6) ? (u8 *) & addr->ip6 : (u8 *) & addr->ip4);
      41             :   }
      42             : 
      43           0 :   return s;
      44             : }
      45             : 
      46             : u8 *
      47           4 : format_vrrp_vr_state (u8 * s, va_list * args)
      48             : {
      49           4 :   vrrp_vr_state_t state = va_arg (*args, vrrp_vr_state_t);
      50             : 
      51           4 :   switch (state)
      52             :     {
      53             : #define _(v,f,n) case VRRP_VR_STATE_##f: s = format (s, n); break;
      54           4 :       foreach_vrrp_vr_state
      55             : #undef _
      56           0 :     default:
      57           0 :       s = format (s, "Unknown");
      58           0 :       break;
      59             :     }
      60             : 
      61           4 :   return s;
      62             : }
      63             : 
      64             : u8 *
      65           4 : format_vrrp_vr_key (u8 * s, va_list * args)
      66             : {
      67           4 :   vrrp_main_t *vmp = &vrrp_main;
      68           4 :   vrrp_vr_t *vr = va_arg (*args, vrrp_vr_t *);
      69           4 :   vrrp_vr_config_t *vrc = &vr->config;
      70             : 
      71           4 :   s = format (s, "[%d] sw_if_index %u VR ID %u IPv%d",
      72           4 :               vr - vmp->vrs, vrc->sw_if_index,
      73           8 :               vrc->vr_id, (vrc->flags & VRRP_VR_IPV6) ? 6 : 4);
      74             : 
      75           4 :   return s;
      76             : }
      77             : 
      78             : u8 *
      79           0 : format_vrrp_vr_track_ifs (u8 * s, va_list * args)
      80             : {
      81           0 :   vrrp_vr_tracking_if_t *track_ifs = va_arg (*args, vrrp_vr_tracking_if_t *);
      82             :   vrrp_vr_tracking_if_t *track_if;
      83             : 
      84           0 :   vec_foreach (track_if, track_ifs)
      85           0 :     s = format (s, "sw_if_index %u priority %u ",
      86           0 :                 track_if->sw_if_index, track_if->priority);
      87             : 
      88           0 :   return s;
      89             : }
      90             : 
      91             : u8 *
      92           0 : format_vrrp_vr (u8 * s, va_list * args)
      93             : {
      94           0 :   vrrp_vr_t *vr = va_arg (*args, vrrp_vr_t *);
      95             : 
      96           0 :   s = format (s, "%U\n", format_vrrp_vr_key, vr);
      97             : 
      98           0 :   s = format (s, "   state %U flags: %U\n",
      99           0 :               format_vrrp_vr_state, vr->runtime.state,
     100           0 :               format_vrrp_vr_flags, vr->config.flags);
     101           0 :   s = format (s, "   priority: configured %u adjusted %u\n",
     102           0 :               vr->config.priority, vrrp_vr_priority (vr));
     103           0 :   s = format (s, "   timers: adv interval %u "
     104             :               "master adv %u skew %u master down %u\n",
     105           0 :               vr->config.adv_interval, vr->runtime.master_adv_int,
     106           0 :               vr->runtime.skew, vr->runtime.master_down_int);
     107             : 
     108           0 :   s = format (s, "   virtual MAC %U\n", format_ethernet_address,
     109             :               &vr->runtime.mac);
     110             : 
     111           0 :   s = format (s, "   addresses %U\n", format_vrrp_vr_addrs,
     112           0 :               (vr->config.flags & VRRP_VR_IPV6) != 0, vr->config.vr_addrs);
     113             : 
     114           0 :   s = format (s, "   peer addresses %U\n", format_vrrp_vr_addrs,
     115           0 :               (vr->config.flags & VRRP_VR_IPV6) != 0, vr->config.peer_addrs);
     116             : 
     117           0 :   s = format (s, "   tracked interfaces %U\n", format_vrrp_vr_track_ifs,
     118             :               vr->tracking.interfaces);
     119             : 
     120           0 :   return s;
     121             : }
     122             : 
     123             : u8 *
     124           0 : format_vrrp_packet_hdr (u8 * s, va_list * args)
     125             : {
     126           0 :   vrrp_header_t *pkt = va_arg (*args, vrrp_header_t *);
     127           0 :   u32 version = pkt->vrrp_version_and_type >> 4;
     128             : 
     129           0 :   s = format (s, "ver %u, type %u, VRID %u, prio %u, "
     130             :               "n_addrs %u, interval %u%ss, csum 0x%x",
     131           0 :               version, pkt->vrrp_version_and_type & 0xf,
     132           0 :               pkt->vr_id, pkt->priority, pkt->n_addrs,
     133           0 :               clib_net_to_host_u16 (pkt->rsvd_and_max_adv_int),
     134           0 :               (version == 3) ? "c" : "", pkt->checksum);
     135             : 
     136           0 :   return s;
     137             : }
     138             : 
     139             : 
     140             : /*
     141             :  * fd.io coding-style-patch-verification: ON
     142             :  *
     143             :  * Local Variables:
     144             :  * eval: (c-set-style "gnu")
     145             :  * End:
     146             :  */

Generated by: LCOV version 1.14