sd-ndisc: drop sd_ndisc_get_prefixlen()

This is unused, and in the future we will pass prefixes and prefixlengths directly
to the callbacks when needed rather than having to search for them.
This commit is contained in:
Tom Gundersen
2015-10-22 17:19:54 +02:00
parent f46fc04fac
commit 4e5ca364f4
3 changed files with 0 additions and 206 deletions
-18
View File
@@ -316,24 +316,6 @@ static int ndisc_prefix_match(sd_ndisc *nd, const struct in6_addr *addr,
return -EADDRNOTAVAIL;
}
int sd_ndisc_get_prefixlen(sd_ndisc *nd, const struct in6_addr *addr,
uint8_t *prefixlen) {
int r;
NDiscPrefix *prefix;
assert_return(nd, -EINVAL);
assert_return(addr, -EINVAL);
assert_return(prefixlen, -EINVAL);
r = ndisc_prefix_match(nd, addr, sizeof(addr->s6_addr) * 8, &prefix);
if (r < 0)
return r;
*prefixlen = prefix->len;
return 0;
}
static int ndisc_prefix_update(sd_ndisc *nd, ssize_t len,
const struct nd_opt_prefix_info *prefix_opt) {
NDiscPrefix *prefix;
-186
View File
@@ -53,191 +53,6 @@ int icmp6_bind_router_solicitation(int index) {
return test_fd[0];
}
static int send_ra_short_prefix(uint8_t flags) {
uint8_t advertisement[] = {
0x86, 0x00, 0xbe, 0xd7, 0x40, 0xc0, 0x00, 0xb4,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x04, 0x34, 0xc0, 0x00, 0x00, 0x01, 0xf4,
0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x00,
0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
assert_se(write(test_fd[1], advertisement, sizeof(advertisement)) ==
sizeof(advertisement));
return 0;
}
static void test_short_prefix_cb(sd_ndisc *nd, int event, void *userdata) {
sd_event *e = userdata;
struct {
struct in6_addr addr;
uint8_t prefixlen;
bool success;
} addrs[] = {
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
52, true },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0x0d, 0xad,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
64, false },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0x0b, 0x16, 0xd0, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
60, true },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x9d, 0xab, 0xcd,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
64, true },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xed,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } },
52, true },
};
uint8_t prefixlen;
unsigned int i;
for (i = 0; i < ELEMENTSOF(addrs); i++) {
printf(" %s prefix %02x%02x:%02x%02x:%02x%02x:%02x%02x",
__FUNCTION__,
addrs[i].addr.s6_addr[0], addrs[i].addr.s6_addr[1],
addrs[i].addr.s6_addr[2], addrs[i].addr.s6_addr[3],
addrs[i].addr.s6_addr[4], addrs[i].addr.s6_addr[5],
addrs[i].addr.s6_addr[6], addrs[i].addr.s6_addr[7]);
if (addrs[i].success) {
assert_se(sd_ndisc_get_prefixlen(nd, &addrs[i].addr,
&prefixlen) >= 0);
assert_se(addrs[i].prefixlen == prefixlen);
printf("/%d onlink\n", prefixlen);
} else {
assert_se(sd_ndisc_get_prefixlen(nd, &addrs[i].addr,
&prefixlen) == -EADDRNOTAVAIL);
printf("/128 offlink\n");
}
}
sd_event_exit(e, 0);
}
static int send_ra_prefixes(uint8_t flags) {
uint8_t advertisement[] = {
0x86, 0x00, 0xbe, 0xd7, 0x40, 0xc0, 0x00, 0xb4,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x04, 0x3f, 0xc0, 0x00, 0x00, 0x01, 0xf4,
0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x00,
0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x04, 0x40, 0x00, 0x00, 0x00, 0x02, 0x58,
0x00, 0x00, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x00,
0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0x0d, 0xad,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x04, 0x3c, 0x80, 0x00, 0x00, 0x03, 0x84,
0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00,
0x20, 0x01, 0x0d, 0xb8, 0x0b, 0x16, 0xd0, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x04, 0x40, 0xc0, 0x00, 0x00, 0x03, 0x84,
0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00,
0x20, 0x01, 0x0d, 0xb8, 0x00, 0x9d, 0xab, 0xcd,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x19, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
0x03, 0x6c, 0x61, 0x62, 0x05, 0x69, 0x6e, 0x74,
0x72, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x78, 0x2b, 0xcb, 0xb3, 0x6d, 0x53
};
assert_se(write(test_fd[1], advertisement, sizeof(advertisement)) ==
sizeof(advertisement));
return 0;
}
static void test_prefixes_cb(sd_ndisc *nd, int event, void *userdata) {
sd_event *e = userdata;
struct {
struct in6_addr addr;
uint8_t prefixlen;
bool success;
} addrs[] = {
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
63, true },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0x0d, 0xad,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
64, false },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0x0b, 0x16, 0xd0, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
60, true },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x9d, 0xab, 0xcd,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
64, true },
{ { { { 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xed,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } },
63, false },
};
uint8_t prefixlen;
unsigned int i;
for (i = 0; i < ELEMENTSOF(addrs); i++) {
printf(" %s prefix %02x%02x:%02x%02x:%02x%02x:%02x%02x",
__FUNCTION__,
addrs[i].addr.s6_addr[0], addrs[i].addr.s6_addr[1],
addrs[i].addr.s6_addr[2], addrs[i].addr.s6_addr[3],
addrs[i].addr.s6_addr[4], addrs[i].addr.s6_addr[5],
addrs[i].addr.s6_addr[6], addrs[i].addr.s6_addr[7]);
if (addrs[i].success) {
assert_se(sd_ndisc_get_prefixlen(nd, &addrs[i].addr,
&prefixlen) >= 0);
assert_se(addrs[i].prefixlen == prefixlen);
printf("/%d onlink\n", prefixlen);
} else {
assert_se(sd_ndisc_get_prefixlen(nd, &addrs[i].addr,
&prefixlen) == -EADDRNOTAVAIL);
printf("/128 offlink\n");
}
}
send_ra_function = send_ra_short_prefix;
assert_se(sd_ndisc_set_callback(nd, test_short_prefix_cb, e) >= 0);
assert_se(sd_ndisc_stop(nd) >= 0);
assert_se(sd_ndisc_router_discovery_start(nd) >= 0);
}
static void test_prefixes(void) {
sd_event *e;
sd_ndisc *nd;
if (verbose)
printf("* %s\n", __FUNCTION__);
send_ra_function = send_ra_prefixes;
assert_se(sd_event_new(&e) >= 0);
assert_se(sd_ndisc_new(&nd) >= 0);
assert_se(nd);
assert_se(sd_ndisc_attach_event(nd, e, 0) >= 0);
assert_se(sd_ndisc_set_index(nd, 42) >= 0);
assert_se(sd_ndisc_set_mac(nd, &mac_addr) >= 0);
assert_se(sd_ndisc_set_callback(nd, test_prefixes_cb, e) >= 0);
assert_se(sd_ndisc_router_discovery_start(nd) >= 0);
sd_event_loop(e);
nd = sd_ndisc_unref(nd);
assert_se(!nd);
close(test_fd[1]);
sd_event_unref(e);
}
static int send_ra(uint8_t flags) {
uint8_t advertisement[] = {
0x86, 0x00, 0xde, 0x83, 0x40, 0xc0, 0x00, 0xb4,
@@ -351,7 +166,6 @@ int main(int argc, char *argv[]) {
log_open();
test_rs();
test_prefixes();
return 0;
}
-2
View File
@@ -52,8 +52,6 @@ sd_ndisc *sd_ndisc_unref(sd_ndisc *nd);
int sd_ndisc_new(sd_ndisc **ret);
int sd_ndisc_get_mtu(sd_ndisc *nd, uint32_t *mtu);
int sd_ndisc_get_prefixlen(sd_ndisc *nd, const struct in6_addr *addr,
uint8_t *prefixlen);
int sd_ndisc_stop(sd_ndisc *nd);
int sd_ndisc_router_discovery_start(sd_ndisc *nd);