OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
iservice_chain_mgr.h
Go to the documentation of this file.
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 
21 public:
22  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 
48  RoutingInstance *rtinstance) = 0;
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,
68  };
69 
71  if (family == INET) {
72  return Address::INET;
73  } else if (family == INET6) {
74  return Address::INET6;
75  } else if (family == EVPN) {
76  return Address::EVPN;
77  } else if (family == EVPN6) {
78  return Address::EVPN;
79  }
80  assert(false);
81  return Address::UNSPEC;
82  }
83 
85  if (family == Address::INET) {
86  return INET;
87  } else if (family == Address::INET6) {
88  return INET6;
89  } else if (family == Address::EVPN) {
90  return EVPN;
91  }
92  assert(false);
93  return UNSPEC;
94  }
95 };
96 
97 #endif // SRC_BGP_ROUTING_INSTANCE_ISERVICE_CHAIN_MGR_H_
virtual void EnableGroupTrigger()=0
virtual void StopServiceChain(RoutingInstance *rtinstance)=0
virtual uint32_t GetDownServiceChainCount() const =0
static Address::Family SCFamilyToAddressFamily(Family family)
virtual ~IServiceChainMgr()
Family
Definition: address.h:24
virtual size_t PendingQueueSize() const =0
virtual void DisableQueue()=0
static Family AddressFamilyToSCFamily(Address::Family family)
virtual void UpdateServiceChain(RoutingInstance *rtinstance, bool group_oper_state_up)=0
virtual void UpdateServiceChainGroup(ServiceChainGroup *group)=0
virtual size_t ResolvedQueueSize() const =0
virtual bool LocateServiceChain(RoutingInstance *rtinstance, const ServiceChainConfig &config)=0
virtual bool FillServiceChainInfo(RoutingInstance *rtinstance, ShowServicechainInfo *info) const =0
virtual void DisableResolveTrigger()=0
virtual void set_aggregate_host_route(bool value)=0
virtual bool ServiceChainIsPending(RoutingInstance *rtinstance, std::string *reason=NULL) const =0
friend class ServiceChainTest
virtual void DisableGroupTrigger()=0
virtual ServiceChainGroup * FindServiceChainGroup(RoutingInstance *rtinstance)=0
virtual void EnableResolveTrigger()=0
virtual void EnableQueue()=0
friend class ServiceChainIntegrationTest
virtual bool ServiceChainIsUp(RoutingInstance *rtinstance) const =0
virtual bool IsQueueEmpty() const =0
virtual void ManagedDelete()=0