예제 #1
0
int sd_ipv4ll_set_address(sd_ipv4ll *ll, const struct in_addr *address) {
        int r;

        assert_return(ll, -EINVAL);
        assert_return(address, -EINVAL);
        assert_return(ipv4ll_address_is_valid(address), -EINVAL);

        r = sd_ipv4acd_set_address(ll->acd, address);
        if (r < 0)
                return r;

        ll->address = address->s_addr;

        return 0;
}
예제 #2
0
파일: test-acd.c 프로젝트: AOSC-Dev/systemd
static int client_run(int ifindex, const struct in_addr *pa, const struct ether_addr *ha, sd_event *e) {
        sd_ipv4acd *acd;

        assert_se(sd_ipv4acd_new(&acd) >= 0);
        assert_se(sd_ipv4acd_attach_event(acd, e, 0) >= 0);

        assert_se(sd_ipv4acd_set_index(acd, ifindex) >= 0);
        assert_se(sd_ipv4acd_set_mac(acd, ha) >= 0);
        assert_se(sd_ipv4acd_set_address(acd, pa) >= 0);
        assert_se(sd_ipv4acd_set_callback(acd, acd_handler, NULL) >= 0);

        log_info("starting IPv4ACD client");

        assert_se(sd_ipv4acd_start(acd) >= 0);

        assert_se(sd_event_loop(e) >= 0);

        assert_se(!sd_ipv4acd_unref(acd));

        return EXIT_SUCCESS;
}