void dncp_ext_readable(dncp o) { char buf[1024]; size_t len = sizeof(buf); int r; struct sockaddr_in6 *src, *dst; dncp_ep ep; int flags; r = o->ext->cb.recv(o->ext, &ep, &src, &dst, &flags, buf, len); smock_pull_int_is("dncp_poll_io_recvfrom", r); if (r >= 0) { void *b = smock_pull("dncp_poll_io_recvfrom_buf"); char *ifn = smock_pull("dncp_poll_io_recvfrom_ifname"); struct sockaddr_in6 *esrc = smock_pull("dncp_poll_io_recvfrom_src"); struct sockaddr_in6 *edst = smock_pull("dncp_poll_io_recvfrom_dst"); sput_fail_unless(memcmp(b, buf, r)==0, "buf mismatch"); sput_fail_unless(strcmp(ifn, ep->ifname) == 0, "ifname mismatch"); sput_fail_unless(memcmp(src, esrc, sizeof(*src))==0, "src mismatch"); sput_fail_unless(memcmp(&dst->sin6_addr, &edst->sin6_addr, sizeof(dst->sin6_addr))==0, "dst mismatch"); if (!--pending_packets) uloop_end(); } }
static void dummy_local_tlv_cb(hncp_subscriber s, struct tlv_attr *tlv, bool add) { sput_fail_unless(s, "subscriber provided"); sput_fail_unless(s->local_tlv_change_callback == dummy_local_tlv_cb, "tlv cb set"); sput_fail_unless(tlv, "tlv set"); L_NOTICE("local tlv callback %s %s", TLV_REPR(tlv), add ? "add" : "remove"); if (tlv_id(tlv) == HNCP_T_VERSION) return; int exp_v = (add ? 1 : -1) * tlv_id(tlv); smock_pull_int_is("local_tlv_callback", exp_v); }
void hncp_io_schedule(hncp o, int msecs) { if (check_timing) { sput_fail_unless(o, "hncp"); sput_fail_unless(o && o->udp_socket == 1, "hncp_io ready"); smock_pull_int_is("schedule", msecs); } else { want_schedule = msecs; } }
void iface_test_new_managed(void) { struct in_addr v4source = {INADDR_LOOPBACK}; iface_register_user(&user_mock); struct prefix p = {IN6ADDR_LOOPBACK_INIT, 0}; char test[] = "test"; struct iface *iface00 = iface_create("test00", "test00", 0); iface_update_ipv4_uplink(iface00); iface_set_ipv4_uplink(iface00, &v4source, 24); iface_commit_ipv4_uplink(iface00); /* smock_pull_bool_is("test00", false); */ /* this was removed in the commit a5293745c235a057b6a477ffbd817937eaa9bc12 at 5/2015(!); */ struct iface *iface = iface_create("test0", "test0", 0); iface->carrier = true; iface_discover_border(iface); sput_fail_unless(!!iface, "alloc managed"); struct iface *iface2 = iface_get("test0"); sput_fail_unless(iface == iface2, "get after create"); struct iface *iface3 = iface_create("test0", "test0", 0); sput_fail_unless(iface == iface3, "create after create"); /* smock_pull_bool_is("test0", false); */ /* this was removed in the commit a5293745c235a057b6a477ffbd817937eaa9bc12 at 5/2015(!); */ uloop_cancelled = false; uloop_run(); smock_pull_bool_is("test0", true); iface_update_ipv4_uplink(iface); iface_set_ipv4_uplink(iface, &v4source, 24); iface_commit_ipv4_uplink(iface); smock_pull_bool_is("test0", false); iface_update_ipv4_uplink(iface); iface_commit_ipv4_uplink(iface); uloop_cancelled = false; uloop_run(); smock_pull_bool_is("test0", true); iface_update_ipv6_uplink(iface); iface_add_delegated(iface, &p, NULL, HNETD_TIME_MAX, 0, test, sizeof(test)); iface_commit_ipv6_uplink(iface); smock_pull_bool_is("test0", false); sput_fail_unless(!prefix_cmp(&p, (struct prefix *)smock_pull("prefix_prefix")), "prefix address"); smock_pull_int64_is("prefix_valid", HNETD_TIME_MAX); smock_pull_int64_is("prefix_preferred", 0); sput_fail_unless(!strcmp(smock_pull("dhcpv6_data"), "test"), "dhcpv6_data"); smock_pull_int_is("dhcpv6_len", sizeof(test)); iface_update_ipv4_uplink(iface); iface_set_ipv4_uplink(iface, &v4source, 24); iface_commit_ipv4_uplink(iface); iface_update_ipv6_uplink(iface); iface_commit_ipv6_uplink(iface); smock_pull_bool_is("prefix_remove", true); iface_update_ipv4_uplink(iface); iface_commit_ipv4_uplink(iface); uloop_cancelled = false; uloop_run(); smock_pull_bool_is("test0", true); iface_remove(iface); sput_fail_unless(!iface_get("test0"), "delete"); smock_pull_bool_is("test0", false); smock_is_empty(); iface_unregister_user(&user_mock); }