|
|
@@ -573,13 +573,13 @@ static void test_lpm_get_next_key(void)
|
|
|
|
|
|
/* add one more element (total two) */
|
|
|
key_p->prefixlen = 24;
|
|
|
- inet_pton(AF_INET, "192.168.0.0", key_p->data);
|
|
|
+ inet_pton(AF_INET, "192.168.128.0", key_p->data);
|
|
|
assert(bpf_map_update_elem(map_fd, key_p, &value, 0) == 0);
|
|
|
|
|
|
memset(key_p, 0, key_size);
|
|
|
assert(bpf_map_get_next_key(map_fd, NULL, key_p) == 0);
|
|
|
assert(key_p->prefixlen == 24 && key_p->data[0] == 192 &&
|
|
|
- key_p->data[1] == 168 && key_p->data[2] == 0);
|
|
|
+ key_p->data[1] == 168 && key_p->data[2] == 128);
|
|
|
|
|
|
memset(next_key_p, 0, key_size);
|
|
|
assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == 0);
|
|
|
@@ -592,7 +592,7 @@ static void test_lpm_get_next_key(void)
|
|
|
|
|
|
/* Add one more element (total three) */
|
|
|
key_p->prefixlen = 24;
|
|
|
- inet_pton(AF_INET, "192.168.128.0", key_p->data);
|
|
|
+ inet_pton(AF_INET, "192.168.0.0", key_p->data);
|
|
|
assert(bpf_map_update_elem(map_fd, key_p, &value, 0) == 0);
|
|
|
|
|
|
memset(key_p, 0, key_size);
|
|
|
@@ -643,6 +643,41 @@ static void test_lpm_get_next_key(void)
|
|
|
assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == -1 &&
|
|
|
errno == ENOENT);
|
|
|
|
|
|
+ /* Add one more element (total five) */
|
|
|
+ key_p->prefixlen = 28;
|
|
|
+ inet_pton(AF_INET, "192.168.1.128", key_p->data);
|
|
|
+ assert(bpf_map_update_elem(map_fd, key_p, &value, 0) == 0);
|
|
|
+
|
|
|
+ memset(key_p, 0, key_size);
|
|
|
+ assert(bpf_map_get_next_key(map_fd, NULL, key_p) == 0);
|
|
|
+ assert(key_p->prefixlen == 24 && key_p->data[0] == 192 &&
|
|
|
+ key_p->data[1] == 168 && key_p->data[2] == 0);
|
|
|
+
|
|
|
+ memset(next_key_p, 0, key_size);
|
|
|
+ assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == 0);
|
|
|
+ assert(next_key_p->prefixlen == 28 && next_key_p->data[0] == 192 &&
|
|
|
+ next_key_p->data[1] == 168 && next_key_p->data[2] == 1 &&
|
|
|
+ next_key_p->data[3] == 128);
|
|
|
+
|
|
|
+ memcpy(key_p, next_key_p, key_size);
|
|
|
+ assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == 0);
|
|
|
+ assert(next_key_p->prefixlen == 24 && next_key_p->data[0] == 192 &&
|
|
|
+ next_key_p->data[1] == 168 && next_key_p->data[2] == 1);
|
|
|
+
|
|
|
+ memcpy(key_p, next_key_p, key_size);
|
|
|
+ assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == 0);
|
|
|
+ assert(next_key_p->prefixlen == 24 && next_key_p->data[0] == 192 &&
|
|
|
+ next_key_p->data[1] == 168 && next_key_p->data[2] == 128);
|
|
|
+
|
|
|
+ memcpy(key_p, next_key_p, key_size);
|
|
|
+ assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == 0);
|
|
|
+ assert(next_key_p->prefixlen == 16 && next_key_p->data[0] == 192 &&
|
|
|
+ next_key_p->data[1] == 168);
|
|
|
+
|
|
|
+ memcpy(key_p, next_key_p, key_size);
|
|
|
+ assert(bpf_map_get_next_key(map_fd, key_p, next_key_p) == -1 &&
|
|
|
+ errno == ENOENT);
|
|
|
+
|
|
|
/* no exact matching key should return the first one in post order */
|
|
|
key_p->prefixlen = 22;
|
|
|
inet_pton(AF_INET, "192.168.1.0", key_p->data);
|