Skip to content

Commit

Permalink
Ignore IPv6 subnets in ServiceChainConfig
Browse files Browse the repository at this point in the history
Change-Id: I7ec99b371e470c9d2bcfb5ee9896ef923c30816b
Closes-Bug: 1412251
  • Loading branch information
Nischal Sheth committed Jan 28, 2015
1 parent 98ad0f1 commit fa8101b
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/bgp/routing-instance/service_chaining.cc
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ ServiceChain::ServiceChain(RoutingInstance *src, RoutingInstance *dest,
it != subnets.end(); it++) {
error_code ec;
Ip4Prefix ipam_subnet = Ip4Prefix::FromString(*it, &ec);
assert(ec == 0);
if (ec != 0)
continue;
prefix_to_routelist_map_[ipam_subnet] = RouteList();
}
}
Expand Down
35 changes: 35 additions & 0 deletions src/bgp/test/service_chain_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -971,6 +971,41 @@ TEST_P(ServiceChainParamTest, Basic) {
DeleteConnectedRoute(NULL, "1.1.2.3/32");
}

TEST_P(ServiceChainParamTest, IgnoreNonInetSubnets) {
vector<string> instance_names = list_of("blue")("blue-i1")("red-i2")("red");
multimap<string, string> connections =
map_list_of("blue", "blue-i1") ("red-i2", "red");
NetworkConfig(instance_names, connections);
VerifyNetworkConfig(instance_names);

SetServiceChainInformation("blue-i1",
"controller/src/bgp/testdata/service_chain_7.xml");

// Add More specifics
AddInetRoute(NULL, "red", "192.168.1.1/32", 100);
AddInetRoute(NULL, "red", "192.168.2.1/32", 100);

// Check for aggregated routes
VerifyInetRouteNoExists("blue", "192.168.1.0/24");
VerifyInetRouteNoExists("blue", "192.168.2.0/24");

// Add Connected
AddConnectedRoute(NULL, "1.1.2.3/32", 100, "2.3.4.5");

// Check for aggregated routes
VerifyInetRouteExists("blue", "192.168.1.0/24");
VerifyInetRouteAttributes("blue", "192.168.1.0/24", "2.3.4.5", "red");
VerifyInetRouteExists("blue", "192.168.2.0/24");
VerifyInetRouteAttributes("blue", "192.168.2.0/24", "2.3.4.5", "red");

// Delete More specifics
DeleteInetRoute(NULL, "red", "192.168.1.1/32");
DeleteInetRoute(NULL, "red", "192.168.2.1/32");

// Delete connected route
DeleteConnectedRoute(NULL, "1.1.2.3/32");
}

TEST_P(ServiceChainParamTest, MoreSpecificAddDelete) {
vector<string> instance_names = list_of("blue")("blue-i1")("red-i2")("red");
multimap<string, string> connections =
Expand Down
12 changes: 12 additions & 0 deletions src/bgp/testdata/service_chain_7.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<service-chain-info>
<routing-instance>red</routing-instance>
<source-routing-instance>blue</source-routing-instance>
<prefix>192.168.1.0/24</prefix>
<!-- Missing prefix length -->
<prefix>192.168.3.0</prefix>
<!-- Ipv6 subnet -->
<prefix>2001:abcd:abcd:abcd::/64</prefix>
<prefix>192.168.2.0/24</prefix>
<service-chain-address>1.1.2.3</service-chain-address>
</service-chain-info>

0 comments on commit fa8101b

Please sign in to comment.