Skip to content

Commit

Permalink
Merge "Add neighbor info to routing instance introspect" into R3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Mar 2, 2017
2 parents eda43d5 + 06d16f3 commit 82dfa5b
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 20 deletions.
1 change: 1 addition & 0 deletions src/bgp/bgp_peer.sandesh
Expand Up @@ -305,6 +305,7 @@ struct ShowRoutingInstance {
9: string deleted_at; // Delete timestamp
2: optional list<ShowRoutingInstanceTable> tables;
11: optional list<ShowInstanceRoutingPolicyInfo> routing_policies;
14: optional list<string> neighbors;
}

response sandesh ShowRoutingInstanceResp {
Expand Down
54 changes: 34 additions & 20 deletions src/bgp/bgp_show_routing_instance.cc
Expand Up @@ -7,9 +7,11 @@
#include <boost/foreach.hpp>

#include "bgp/bgp_membership.h"
#include "bgp/bgp_peer.h"
#include "bgp/bgp_peer_internal_types.h"
#include "bgp/bgp_server.h"
#include "bgp/bgp_table.h"
#include "bgp/routing-instance/peer_manager.h"
#include "bgp/routing-instance/routing_instance.h"
#include "bgp/routing-policy/routing_policy.h"

Expand Down Expand Up @@ -63,27 +65,39 @@ static void FillRoutingInstanceInfo(ShowRoutingInstance *sri,
sri->set_export_target(export_rt);
sri->set_always_subscribe(rtinstance->always_subscribe());

if (!summary) {
const BgpMembershipManager *bmm = bsc->bgp_server->membership_mgr();
vector<ShowRoutingInstanceTable> srit_list;
const RoutingInstance::RouteTableList &tables = rtinstance->GetTables();
for (RoutingInstance::RouteTableList::const_iterator it =
tables.begin(); it != tables.end(); ++it) {
ShowRoutingInstanceTable srit;
FillRoutingInstanceTableInfo(&srit, bsc, it->second);
bmm->FillRoutingInstanceTableInfo(&srit, it->second);
srit_list.push_back(srit);
}
sri->set_tables(srit_list);
vector<ShowInstanceRoutingPolicyInfo> policy_list;
BOOST_FOREACH(RoutingPolicyInfo info, rtinstance->routing_policies()) {
ShowInstanceRoutingPolicyInfo show_policy_info;
RoutingPolicyPtr policy = info.first;
show_policy_info.set_policy_name(policy->name());
show_policy_info.set_generation(info.second);
policy_list.push_back(show_policy_info);
if (summary)
return;

const BgpMembershipManager *bmm = bsc->bgp_server->membership_mgr();
vector<ShowRoutingInstanceTable> srit_list;
const RoutingInstance::RouteTableList &tables = rtinstance->GetTables();
for (RoutingInstance::RouteTableList::const_iterator it =
tables.begin(); it != tables.end(); ++it) {
ShowRoutingInstanceTable srit;
FillRoutingInstanceTableInfo(&srit, bsc, it->second);
bmm->FillRoutingInstanceTableInfo(&srit, it->second);
srit_list.push_back(srit);
}
sri->set_tables(srit_list);

vector<ShowInstanceRoutingPolicyInfo> policy_list;
BOOST_FOREACH(RoutingPolicyInfo info, rtinstance->routing_policies()) {
ShowInstanceRoutingPolicyInfo show_policy_info;
RoutingPolicyPtr policy = info.first;
show_policy_info.set_policy_name(policy->name());
show_policy_info.set_generation(info.second);
policy_list.push_back(show_policy_info);
}
sri->set_routing_policies(policy_list);

const PeerManager *peer_manager = rtinstance->peer_manager();
if (peer_manager) {
vector<string> neighbors;
for (const BgpPeer *peer = peer_manager->NextPeer(BgpPeerKey());
peer != NULL; peer = peer_manager->NextPeer(peer->peer_key())) {
neighbors.push_back(peer->peer_name());
}
sri->set_routing_policies(policy_list);
sri->set_neighbors(neighbors);
}
}

Expand Down

0 comments on commit 82dfa5b

Please sign in to comment.