LCOV - code coverage report
Current view: top level - vnsw/agent/vrouter/ksync - bridge_route_audit_ksync.cc (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 5 69 7.2 %
Date: 2026-11-09 02:10:49 Functions: 3 18 16.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
       3             :  * Copyright Contributors to the OpenSDN project
       4             :  */
       5             : 
       6             : #include <base/string_util.h>
       7             : #include <cmn/agent.h>
       8             : #include <ksync/ksync_entry.h>
       9             : #include <ksync/ksync_object.h>
      10             : #include <ksync/ksync_netlink.h>
      11             : #include <vrouter/ksync/ksync_init.h>
      12             : #include <vrouter/ksync/bridge_route_audit_ksync.h>
      13             : 
      14           0 : BridgeRouteAuditKSyncEntry::BridgeRouteAuditKSyncEntry
      15           0 :     (BridgeRouteAuditKSyncObject *obj, uint32_t vrf_id, const MacAddress &mac)
      16           0 :     : ksync_obj_(obj), vrf_id_(vrf_id), mac_(mac) {
      17           0 : }
      18             : 
      19           0 : BridgeRouteAuditKSyncEntry::BridgeRouteAuditKSyncEntry
      20           0 :     (BridgeRouteAuditKSyncObject* obj, const BridgeRouteAuditKSyncEntry *entry)
      21           0 :     : ksync_obj_(obj), vrf_id_(entry->vrf_id_), mac_(entry->mac_) {
      22           0 : }
      23             : 
      24           0 : BridgeRouteAuditKSyncEntry::~BridgeRouteAuditKSyncEntry() {
      25           0 : }
      26             : 
      27           0 : bool BridgeRouteAuditKSyncEntry::Sync() {
      28           0 :     return false;
      29             : }
      30             : 
      31           0 : KSyncEntry *BridgeRouteAuditKSyncEntry::UnresolvedReference() {
      32           0 :     return NULL;
      33             : }
      34             : 
      35           0 : std::string BridgeRouteAuditKSyncEntry::ToString() const {
      36           0 :     std::stringstream s;
      37             : 
      38             :     const VrfEntry* vrf =
      39           0 :         ksync_obj_->ksync()->agent()->vrf_table()->FindVrfFromId(vrf_id_);
      40           0 :     string vrf_info = vrf? vrf->GetName() : integerToString(vrf_id_);
      41           0 :     s << "Route Vrf : " << vrf_info << " Mac: " << mac_.ToString();
      42           0 :     return s.str();
      43           0 : }
      44             : 
      45           0 : bool BridgeRouteAuditKSyncEntry::IsLess(const KSyncEntry &rhs) const {
      46           0 :     const BridgeRouteAuditKSyncEntry &entry = static_cast
      47             :         <const BridgeRouteAuditKSyncEntry &>(rhs);
      48             : 
      49           0 :     if (vrf_id_ != entry.vrf_id_) {
      50           0 :         return vrf_id_ < entry.vrf_id_;
      51             :     }
      52             : 
      53           0 :     return mac_ < entry.mac_;
      54             : }
      55             : 
      56           0 : KSyncObject *BridgeRouteAuditKSyncEntry::GetObject() const {
      57           0 :     return ksync_obj_;
      58             : }
      59             : 
      60           0 : void BridgeRouteAuditKSyncEntry::FillObjectLog(sandesh_op::type type,
      61             :                                                KSyncRouteInfo &info) const {
      62           0 :     info.set_operation("DELETE");
      63           0 :     info.set_plen(0);
      64           0 :     info.set_vrf(vrf_id_);
      65           0 :     info.set_mac(mac_.ToString());
      66           0 :     info.set_type("BRIDGE");
      67           0 : }
      68             : 
      69           0 : int BridgeRouteAuditKSyncEntry::AddMsg(char *buf, int buf_len) {
      70             :     /* No message has to be sent to vrouter. Add is taken care in
      71             :      * RouteKSyncEntry */
      72           0 :     return 0;
      73             : }
      74             : 
      75           0 : int BridgeRouteAuditKSyncEntry::ChangeMsg(char *buf, int buf_len){
      76             :     /* No message has to be sent to vrouter. Change is taken care in
      77             :      * RouteKSyncEntry */
      78           0 :     return 0;
      79             : }
      80             : 
      81           0 : int BridgeRouteAuditKSyncEntry::EncodeDelete(char *buf, int buf_len) {
      82           0 :     vr_route_req encoder;
      83             :     int encode_len;
      84             : 
      85           0 :     encoder.set_h_op(sandesh_op::DEL);
      86           0 :     encoder.set_rtr_rid(0);
      87           0 :     encoder.set_rtr_vrf_id(vrf_id_);
      88           0 :     encoder.set_rtr_family(AF_BRIDGE);
      89             : 
      90             :     std::vector<int8_t> mac((int8_t *)mac_,
      91           0 :                             (int8_t *)mac_ + mac_.size());
      92           0 :     encoder.set_rtr_mac(mac);
      93           0 :     encoder.set_rtr_replace_plen(0);
      94             : 
      95           0 :     int error = 0;
      96           0 :     encode_len = encoder.WriteBinary((uint8_t *)buf, buf_len, &error);
      97           0 :     assert(error == 0);
      98           0 :     assert(encode_len <= buf_len);
      99           0 :     return encode_len;
     100           0 : }
     101             : 
     102           0 : int BridgeRouteAuditKSyncEntry::DeleteMsg(char *buf, int buf_len) {
     103           0 :     KSyncRouteInfo info;
     104           0 :     FillObjectLog(sandesh_op::DEL, info);
     105           0 :     KSYNC_TRACE(Route, GetObject(), info);
     106             : 
     107           0 :     return EncodeDelete(buf, buf_len);
     108           0 : }
     109             : 
     110             : ///////////////////////////////////////////////////////////////////////////////
     111             : //                 BridgeRouteAuditKSyncObject routines
     112             : ///////////////////////////////////////////////////////////////////////////////
     113             : 
     114           2 : BridgeRouteAuditKSyncObject::BridgeRouteAuditKSyncObject(KSync *ksync) :
     115           2 :     KSyncObject("KSync BridgeRouteTable"), ksync_(ksync) {
     116           2 : }
     117             : 
     118           4 : BridgeRouteAuditKSyncObject::~BridgeRouteAuditKSyncObject() {
     119           4 : }
     120             : 
     121           0 : KSyncEntry *BridgeRouteAuditKSyncObject::Alloc(const KSyncEntry *key,
     122             :                                                uint32_t idx) {
     123           0 :     const BridgeRouteAuditKSyncEntry *route =
     124             :         static_cast<const BridgeRouteAuditKSyncEntry *>(key);
     125             :     BridgeRouteAuditKSyncEntry *ksync = new BridgeRouteAuditKSyncEntry(this,
     126           0 :                                                                        route);
     127           0 :     return static_cast<KSyncEntry *>(ksync);
     128             : }

Generated by: LCOV version 1.14