aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/routing-api
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/routing-api')
-rw-r--r--framework/src/onos/apps/routing-api/src/main/java/org/onosproject/routing/RouteEntry.java10
-rw-r--r--framework/src/onos/apps/routing-api/src/test/java/org/onosproject/routing/RouteEntryTest.java22
2 files changed, 18 insertions, 14 deletions
diff --git a/framework/src/onos/apps/routing-api/src/main/java/org/onosproject/routing/RouteEntry.java b/framework/src/onos/apps/routing-api/src/main/java/org/onosproject/routing/RouteEntry.java
index 2b0ef989..8204a109 100644
--- a/framework/src/onos/apps/routing-api/src/main/java/org/onosproject/routing/RouteEntry.java
+++ b/framework/src/onos/apps/routing-api/src/main/java/org/onosproject/routing/RouteEntry.java
@@ -89,14 +89,17 @@ public class RouteEntry {
/**
* Creates the binary string representation of an IP prefix.
* The prefix can be either IPv4 or IPv6.
- * The string length is equal to the prefix length.
+ * The string length is equal to the prefix length + 1.
+ *
+ * For each string, we put a extra "0" in the front. The purpose of
+ * doing this is to store the default route inside InvertedRadixTree.
*
* @param ipPrefix the IP prefix to use
* @return the binary string representation
*/
public static String createBinaryString(IpPrefix ipPrefix) {
if (ipPrefix.prefixLength() == 0) {
- return "";
+ return "0";
}
byte[] octets = ipPrefix.address().toOctets();
@@ -109,7 +112,8 @@ public class RouteEntry {
boolean isSet = ((value & mask) != 0);
result.append(isSet ? "1" : "0");
}
- return result.toString();
+
+ return "0" + result.toString();
}
@Override
diff --git a/framework/src/onos/apps/routing-api/src/test/java/org/onosproject/routing/RouteEntryTest.java b/framework/src/onos/apps/routing-api/src/test/java/org/onosproject/routing/RouteEntryTest.java
index b89eb2d1..981d6a09 100644
--- a/framework/src/onos/apps/routing-api/src/test/java/org/onosproject/routing/RouteEntryTest.java
+++ b/framework/src/onos/apps/routing-api/src/test/java/org/onosproject/routing/RouteEntryTest.java
@@ -121,52 +121,52 @@ public class RouteEntryTest {
Ip4Prefix prefix;
prefix = Ip4Prefix.valueOf("0.0.0.0/0");
- assertThat(RouteEntry.createBinaryString(prefix), is(""));
+ assertThat(RouteEntry.createBinaryString(prefix), is("0"));
prefix = Ip4Prefix.valueOf("192.168.166.0/22");
assertThat(RouteEntry.createBinaryString(prefix),
- is("1100000010101000101001"));
+ is("0" + "1100000010101000101001"));
prefix = Ip4Prefix.valueOf("192.168.166.0/23");
assertThat(RouteEntry.createBinaryString(prefix),
- is("11000000101010001010011"));
+ is("0" + "11000000101010001010011"));
prefix = Ip4Prefix.valueOf("192.168.166.0/24");
assertThat(RouteEntry.createBinaryString(prefix),
- is("110000001010100010100110"));
+ is("0" + "110000001010100010100110"));
prefix = Ip4Prefix.valueOf("130.162.10.1/25");
assertThat(RouteEntry.createBinaryString(prefix),
- is("1000001010100010000010100"));
+ is("0" + "1000001010100010000010100"));
prefix = Ip4Prefix.valueOf("255.255.255.255/32");
assertThat(RouteEntry.createBinaryString(prefix),
- is("11111111111111111111111111111111"));
+ is("0" + "11111111111111111111111111111111"));
Ip6Prefix prefix6;
Pattern pattern;
Matcher matcher;
prefix6 = Ip6Prefix.valueOf("::/0");
- assertThat(RouteEntry.createBinaryString(prefix6), is(""));
+ assertThat(RouteEntry.createBinaryString(prefix6), is("0"));
prefix6 = Ip6Prefix.valueOf("2000::1000/112");
- pattern = Pattern.compile("00100{108}");
+ pattern = Pattern.compile("0" + "00100{108}");
matcher = pattern.matcher(RouteEntry.createBinaryString(prefix6));
assertTrue(matcher.matches());
prefix6 = Ip6Prefix.valueOf("2000::1000/116");
- pattern = Pattern.compile("00100{108}0001");
+ pattern = Pattern.compile("0" + "00100{108}0001");
matcher = pattern.matcher(RouteEntry.createBinaryString(prefix6));
assertTrue(matcher.matches());
prefix6 = Ip6Prefix.valueOf("2000::2000/116");
- pattern = Pattern.compile("00100{108}0010");
+ pattern = Pattern.compile("0" + "00100{108}0010");
matcher = pattern.matcher(RouteEntry.createBinaryString(prefix6));
assertTrue(matcher.matches());
prefix6 = Ip6Prefix.valueOf("2000::1234/128");
- pattern = Pattern.compile("00100{108}0001001000110100");
+ pattern = Pattern.compile("0" + "00100{108}0001001000110100");
matcher = pattern.matcher(RouteEntry.createBinaryString(prefix6));
assertTrue(matcher.matches());
}