void* thr1(void* arg){ while(1) switch(__VERIFIER_nondet_int()){ case 0: rdma_addr_unregister_client(__VERIFIER_nondet_int()); break; case 1: queue_req(); break; case 2: process_req(); break; case 3: rdma_resolve_ip(); break; case 4: rdma_addr_cancel(); break; } return 0; }
int hvnd_get_neigh_mac_addr(struct sockaddr *local, struct sockaddr *remote, char *mac_addr) { struct rdma_dev_addr dev_addr; struct resolve_cb_context ctx; int ret; memset(&dev_addr, 0, sizeof(dev_addr)); ctx.addr = &dev_addr; init_completion(&ctx.comp); ret = rdma_resolve_ip(&self, local, remote, &dev_addr, 1000, resolve_cb, &ctx); if (ret) { hvnd_error("rdma_resolve_ip failed ret=%d\n", ret); return ret; } wait_for_completion(&ctx.comp); memcpy(mac_addr, dev_addr.dst_dev_addr, ETH_ALEN); return ret; }