OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
inet6_table.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_BGP_INET6_INET6_TABLE_H_
6 #define SRC_BGP_INET6_INET6_TABLE_H_
7 
8 #include <string>
9 
10 #include "bgp/bgp_table.h"
11 #include "bgp/inet6/inet6_route.h"
12 #include "base/address.h"
13 
14 class Inet6Prefix;
15 class BgpServer;
16 class PathResolver;
17 
18 class Inet6Table : public BgpTable {
19 public:
21  RequestKey(const Inet6Prefix &prefix, const IPeer *ipeer)
22  : prefix(prefix), peer(ipeer) {
23  }
25  const IPeer *peer;
26  virtual const IPeer *GetPeer() const {
27  return peer;
28  }
29  };
30 
31  Inet6Table(DB *db, const std::string &name);
32 
33  virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *key) const;
34  virtual std::unique_ptr<DBEntry> AllocEntryStr(const std::string &key) const;
35 
36  virtual Address::Family family() const { return Address::INET6; }
37 
38  virtual size_t Hash(const DBEntry *entry) const;
39  virtual size_t Hash(const DBRequestKey *key) const;
40 
41  virtual bool Export(RibOut *ribout, Route *route, const RibPeerSet &peerset,
42  UpdateInfoSList &info_slist);
44 
45  static size_t HashFunction(const Inet6Prefix &addr);
46  static DBTableBase *CreateTable(DB *db, const std::string &name);
48  BgpRoute *src_rt, const BgpPath *path,
49  ExtCommunityPtr ptr);
50 
51  virtual bool IsRoutingPolicySupported() const { return true; }
52  virtual bool IsRouteAggregationSupported() const { return true; }
53 private:
54  virtual BgpRoute *TableFind(DBTablePartition *partition,
55  const DBRequestKey *rkey);
56 
58 };
59 
60 #endif // SRC_BGP_INET6_INET6_TABLE_H_
virtual const IPeer * GetPeer() const
Definition: inet6_table.h:26
virtual Address::Family family() const
Definition: inet6_table.h:36
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *key) const
Definition: inet6_table.cc:22
Family
Definition: address.h:24
RequestKey(const Inet6Prefix &prefix, const IPeer *ipeer)
Definition: inet6_table.h:21
Definition: route.h:14
Definition: ipeer.h:186
Definition: db.h:24
const IPeer * peer
Definition: inet6_table.h:25
virtual PathResolver * CreatePathResolver()
Definition: inet6_table.cc:178
boost::intrusive_ptr< const ExtCommunity > ExtCommunityPtr
Definition: community.h:448
virtual bool IsRoutingPolicySupported() const
Definition: inet6_table.h:51
virtual BgpRoute * TableFind(DBTablePartition *partition, const DBRequestKey *rkey)
Definition: inet6_table.cc:45
Inet6Table(DB *db, const std::string &name)
Definition: inet6_table.cc:13
virtual std::unique_ptr< DBEntry > AllocEntryStr(const std::string &key) const
Definition: inet6_table.cc:27
const std::string & name() const
Definition: db_table.h:110
BgpServer * server()
Definition: bgp_table.cc:88
virtual size_t Hash(const DBEntry *entry) const
Definition: inet6_table.cc:33
virtual bool IsRouteAggregationSupported() const
Definition: inet6_table.h:52
DISALLOW_COPY_AND_ASSIGN(Inet6Table)
static size_t HashFunction(const Inet6Prefix &addr)
Definition: inet6_table.cc:17
BgpRoute * RouteReplicate(BgpServer *server, BgpTable *src_tbl, BgpRoute *src_rt, const BgpPath *path, ExtCommunityPtr ptr)
Definition: inet6_table.cc:58
static DBTableBase * CreateTable(DB *db, const std::string &name)
Definition: inet6_table.cc:52
virtual bool Export(RibOut *ribout, Route *route, const RibPeerSet &peerset, UpdateInfoSList &info_slist)
Definition: inet6_table.cc:149