LCOV - code coverage report
Current view: top level - bgp/routing-instance - iservice_chain_mgr.h (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 15 19 78.9 %
Date: 2026-06-08 02:02:55 Functions: 3 4 75.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #ifndef SRC_BGP_ROUTING_INSTANCE_ISERVICE_CHAIN_MGR_H_
       6             : #define SRC_BGP_ROUTING_INSTANCE_ISERVICE_CHAIN_MGR_H_
       7             : 
       8             : #include <stddef.h>
       9             : #include <stdint.h>
      10             : 
      11             : #include <string>
      12             : 
      13             : #include "base/address.h"
      14             : 
      15             : class RoutingInstance;
      16             : class ServiceChainConfig;
      17             : class ServiceChainGroup;
      18             : class ShowServicechainInfo;
      19             : 
      20             : class IServiceChainMgr {
      21             : public:
      22       38968 :     virtual ~IServiceChainMgr() { }
      23             : 
      24             :     virtual void ManagedDelete() = 0;
      25             :     virtual void StopServiceChain(RoutingInstance *rtinstance) = 0;
      26             :     virtual bool LocateServiceChain(RoutingInstance *rtinstance,
      27             :         const ServiceChainConfig &config) = 0;
      28             :     virtual void UpdateServiceChain(RoutingInstance *rtinstance,
      29             :         bool group_oper_state_up) = 0;
      30             :     virtual void UpdateServiceChainGroup(ServiceChainGroup *group) = 0;
      31             : 
      32             :     virtual bool ServiceChainIsUp(RoutingInstance *rtinstance) const = 0;
      33             : 
      34             :     virtual size_t PendingQueueSize() const = 0;
      35             :     virtual size_t ResolvedQueueSize() const = 0;
      36             :     virtual uint32_t GetDownServiceChainCount() const = 0;
      37             :     virtual bool IsQueueEmpty() const = 0;
      38             :     virtual bool FillServiceChainInfo(RoutingInstance *rtinstance,
      39             :         ShowServicechainInfo *info) const = 0;
      40             :     virtual bool ServiceChainIsPending(RoutingInstance *rtinstance,
      41             :         std::string *reason = NULL) const = 0;
      42             : 
      43             : private:
      44             :     template <typename U> friend class ServiceChainIntegrationTest;
      45             :     template <typename U> friend class ServiceChainTest;
      46             : 
      47             :     virtual ServiceChainGroup *FindServiceChainGroup(
      48             :         RoutingInstance *rtinstance) = 0;
      49             :     virtual ServiceChainGroup *FindServiceChainGroup(
      50             :         const std::string &group_name) = 0;
      51             :     virtual void set_aggregate_host_route(bool value) = 0;
      52             :     virtual void DisableResolveTrigger() = 0;
      53             :     virtual void EnableResolveTrigger() = 0;
      54             :     virtual void DisableGroupTrigger() = 0;
      55             :     virtual void EnableGroupTrigger() = 0;
      56             :     virtual void DisableQueue() = 0;
      57             :     virtual void EnableQueue() = 0;
      58             : };
      59             : 
      60             : struct SCAddress {
      61             :     enum Family {
      62             :         UNSPEC = 0,
      63             :         INET = 1,
      64             :         INET6 = 2,
      65             :         EVPN = 3,
      66             :         EVPN6 = 4,
      67             :         NUM_FAMILIES
      68             :     };
      69             : 
      70        6914 :     static Address::Family SCFamilyToAddressFamily(Family family) {
      71        6914 :         if (family == INET) {
      72        1730 :             return Address::INET;
      73        5184 :         } else if (family == INET6) {
      74        1728 :             return Address::INET6;
      75        3456 :         } else if (family == EVPN) {
      76        1728 :             return Address::EVPN;
      77        1728 :         } else if (family == EVPN6) {
      78        1728 :             return Address::EVPN;
      79             :         }
      80           0 :         assert(false);
      81             :         return Address::UNSPEC;
      82             :     }
      83             : 
      84      389383 :     static Family AddressFamilyToSCFamily(Address::Family family) {
      85      389383 :         if (family == Address::INET) {
      86      200301 :             return INET;
      87      189082 :         } else if (family == Address::INET6) {
      88      189109 :             return INET6;
      89           0 :         } else if (family == Address::EVPN) {
      90           0 :             return EVPN;
      91             :         }
      92           0 :         assert(false);
      93             :         return UNSPEC;
      94             :     }
      95             : };
      96             : 
      97             : #endif  // SRC_BGP_ROUTING_INSTANCE_ISERVICE_CHAIN_MGR_H_

Generated by: LCOV version 1.14