LCOV - code coverage report
Current view: top level - bgp - bgp_rib_policy.cc (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 99 99 100.0 %
Date: 2026-06-22 02:21:21 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #include "bgp/bgp_rib_policy.h"
       6             : 
       7             : using std::string;
       8             : using std::vector;
       9             : 
      10      288626 : RibExportPolicy::RemovePrivatePolicy::RemovePrivatePolicy()
      11      288626 :     : enabled(false),
      12      288626 :       all(false),
      13      288626 :       replace(false),
      14      288626 :       peer_loop_check(false) {
      15      288626 : }
      16             : 
      17      263879 : RibExportPolicy::RibExportPolicy()
      18      263879 :     : type(BgpProto::IBGP),
      19      263879 :       encoding(BGP),
      20      263879 :       as_number(0),
      21      263879 :       local_as_number(0),
      22      263879 :       as_override(false),
      23      263879 :       affinity(-1),
      24      263879 :       llgr(false),
      25      263879 :       as4_supported(false),
      26      263879 :       cluster_id(0) {
      27      263879 : }
      28             : 
      29          83 : RibExportPolicy::RibExportPolicy(uint32_t cluster_id)
      30          83 :     : type(BgpProto::IBGP),
      31          83 :       encoding(BGP),
      32          83 :       as_number(0),
      33          83 :       local_as_number(0),
      34          83 :       as_override(false),
      35          83 :       affinity(-1),
      36          83 :       llgr(false),
      37          83 :       as4_supported(false),
      38          83 :       cluster_id(cluster_id) {
      39          83 : }
      40             : 
      41       11059 : RibExportPolicy::RibExportPolicy(BgpProto::BgpPeerType type, Encoding encoding,
      42       11059 :     int affinity, uint32_t cluster_id)
      43       11059 :     : type(type),
      44       11059 :       encoding(encoding),
      45       11059 :       as_number(0),
      46       11059 :       local_as_number(0),
      47       11059 :       as_override(false),
      48       11059 :       affinity(affinity),
      49       11059 :       llgr(false),
      50       11059 :       as4_supported(false),
      51       11059 :       cluster_id(cluster_id) {
      52       11059 :     if (encoding == XMPP)
      53       10867 :         assert(type == BgpProto::XMPP);
      54       11059 :     if (encoding == BGP)
      55         192 :         assert(type == BgpProto::IBGP || type == BgpProto::EBGP);
      56       11059 : }
      57             : 
      58         724 : RibExportPolicy::RibExportPolicy(BgpProto::BgpPeerType type, Encoding encoding,
      59             :     as_t as_number, bool as_override, bool llgr, bool as4, int affinity,
      60         724 :     uint32_t cluster_id, as_t local_as_number)
      61         724 :     : type(type),
      62         724 :       encoding(encoding),
      63         724 :       as_number(as_number),
      64         724 :       local_as_number(local_as_number),
      65         724 :       as_override(as_override),
      66         724 :       affinity(affinity),
      67         724 :       llgr(llgr),
      68         724 :       as4_supported(as4),
      69         724 :       cluster_id(cluster_id) {
      70         724 :     if (encoding == XMPP)
      71           8 :         assert(type == BgpProto::XMPP);
      72         724 :     if (encoding == BGP)
      73         716 :         assert(type == BgpProto::IBGP || type == BgpProto::EBGP);
      74         724 : }
      75             : 
      76             : 
      77       12881 : RibExportPolicy::RibExportPolicy(BgpProto::BgpPeerType type, Encoding encoding,
      78             :     as_t as_number, bool as_override, bool llgr, bool as4, IpAddress nexthop,
      79             :     int affinity, uint32_t cluster_id,
      80       12881 :     vector<string> &default_tunnel_encap_list, as_t local_as_number) :
      81       12881 :       type(type),
      82       12881 :       encoding(BGP),
      83       12881 :       as_number(as_number),
      84       12881 :       local_as_number(local_as_number),
      85       12881 :       as_override(as_override),
      86       12881 :       nexthop(nexthop),
      87       12881 :       affinity(affinity),
      88       12881 :       llgr(llgr),
      89       12881 :       as4_supported(as4),
      90       12881 :       cluster_id(cluster_id),
      91       12881 :       default_tunnel_encap_list(default_tunnel_encap_list) {
      92       12880 :     assert(type == BgpProto::IBGP || type == BgpProto::EBGP);
      93       12880 :     assert(encoding == BGP);
      94       12880 : }
      95             : 
      96         115 : void RibExportPolicy::SetRemovePrivatePolicy(bool all, bool replace,
      97             :     bool peer_loop_check) {
      98         115 :     remove_private.enabled = true;
      99         115 :     remove_private.all = all;
     100         115 :     remove_private.replace = replace;
     101         115 :     remove_private.peer_loop_check = peer_loop_check;
     102         115 : }
     103             : 
     104             : //
     105             : // Implement operator< for RibExportPolicy by comparing each of the fields.
     106             : //
     107      178116 : bool RibExportPolicy::operator<(const RibExportPolicy &rhs) const {
     108      178116 :     BOOL_KEY_COMPARE(encoding, rhs.encoding);
     109      176724 :     BOOL_KEY_COMPARE(type, rhs.type);
     110      176652 :     BOOL_KEY_COMPARE(as_number, rhs.as_number);
     111      166416 :     BOOL_KEY_COMPARE(local_as_number, rhs.local_as_number);
     112      166416 :     BOOL_KEY_COMPARE(as_override, rhs.as_override);
     113      166409 :     BOOL_KEY_COMPARE(nexthop, rhs.nexthop);
     114      166075 :     BOOL_KEY_COMPARE(affinity, rhs.affinity);
     115      166017 :     BOOL_KEY_COMPARE(llgr, rhs.llgr);
     116      166010 :     BOOL_KEY_COMPARE(as4_supported, rhs.as4_supported);
     117      166010 :     BOOL_KEY_COMPARE(cluster_id, rhs.cluster_id);
     118      165754 :     BOOL_KEY_COMPARE(remove_private.enabled, rhs.remove_private.enabled);
     119      165754 :     BOOL_KEY_COMPARE(remove_private.all, rhs.remove_private.all);
     120      165754 :     BOOL_KEY_COMPARE(remove_private.replace, rhs.remove_private.replace);
     121      165754 :     BOOL_KEY_COMPARE(
     122             :         remove_private.peer_loop_check, rhs.remove_private.peer_loop_check);
     123      165754 :     BOOL_KEY_COMPARE(default_tunnel_encap_list, rhs.default_tunnel_encap_list);
     124      165754 :     return false;
     125             : }

Generated by: LCOV version 1.14