summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/test-ndisc-rs.c
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2015-10-19 22:15:50 +0200
committerTom Gundersen <teg@jklm.no>2015-11-11 15:42:38 +0100
commit9d96e6c3efbe5ef52b2855612d51db52c469beb2 (patch)
tree8398fd74f30954af3e427be8e19e93b58545889e /src/libsystemd-network/test-ndisc-rs.c
parentcb53894d3b6e90edaee4219fe716850d01242f46 (diff)
sd-ndisc: introduce separate callbacks
As the data passed is very different, we introduce four different callbacks: - Generic - router discovery timed out or state machine stopped - Router - router and link configuration received - Prefix onlink - configuration for an onlink prefix received - Prefix autonomous - configuration for to configure a SLAAC address for a prefix received
Diffstat (limited to 'src/libsystemd-network/test-ndisc-rs.c')
-rw-r--r--src/libsystemd-network/test-ndisc-rs.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/libsystemd-network/test-ndisc-rs.c b/src/libsystemd-network/test-ndisc-rs.c
index 59c720d48d..a485be704e 100644
--- a/src/libsystemd-network/test-ndisc-rs.c
+++ b/src/libsystemd-network/test-ndisc-rs.c
@@ -85,31 +85,28 @@ int icmp6_send_router_solicitation(int s, const struct ether_addr *ether_addr) {
return send_ra_function(0);
}
-static void test_rs_done(sd_ndisc *nd, int event, void *userdata) {
+static void test_rs_done(sd_ndisc *nd, uint8_t flags, const struct in6_addr *gateway, unsigned lifetime, int pref, void *userdata) {
sd_event *e = userdata;
static unsigned idx = 0;
- struct {
- uint8_t flag;
- int event;
- } flag_event[] = {
- { 0, SD_NDISC_EVENT_STOP },
- { 0, SD_NDISC_EVENT_STOP },
- { 0, SD_NDISC_EVENT_ROUTER_ADVERTISMENT_NONE },
- { ND_RA_FLAG_OTHER, SD_NDISC_EVENT_ROUTER_ADVERTISMENT_OTHER },
- { ND_RA_FLAG_MANAGED, SD_NDISC_EVENT_ROUTER_ADVERTISMENT_MANAGED }
+ uint8_t flags_array[] = {
+ 0,
+ 0,
+ 0,
+ ND_RA_FLAG_OTHER,
+ ND_RA_FLAG_MANAGED
};
uint32_t mtu;
assert_se(nd);
- assert_se(event == flag_event[idx].event);
+ assert_se(flags == flags_array[idx]);
idx++;
if (verbose)
- printf(" got event %d\n", event);
+ printf(" got event 0x%02x\n", flags);
- if (idx < ELEMENTSOF(flag_event)) {
- send_ra(flag_event[idx].flag);
+ if (idx < ELEMENTSOF(flags_array)) {
+ send_ra(flags_array[idx]);
return;
}
@@ -137,7 +134,7 @@ static void test_rs(void) {
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_rs_done, e) >= 0);
+ assert_se(sd_ndisc_set_callback(nd, test_rs_done, NULL, NULL, NULL, e) >= 0);
assert_se(sd_event_add_time(e, &test_hangcheck, clock_boottime_or_monotonic(),
time_now + 2 *USEC_PER_SEC, 0,