static int bind_ep_res(void) { int ret; ret = bind_fid(&ep->fid, &scq->fid, FI_SEND | FI_READ | FI_WRITE); if (ret) return ret; ret = bind_fid(&ep->fid, &rcq->fid, FI_RECV); if (ret) return ret; ret = bind_fid(&ep->fid, &av->fid, 0); if(ret) return ret; ret = fi_enable(ep); return ret; }
static int server_listen(void) { struct fi_info *fi; int ret; ret = fi_getinfo(FI_VERSION(1, 0), src_addr, port, 0, &hints, &fi); if (ret) { printf("fi_getinfo %s\n", strerror(-ret)); return ret; } ret = fi_fabric(fi->fabric_attr, &fab, NULL); if (ret) { printf("fi_fabric %s\n", fi_strerror(-ret)); goto err0; } ret = fi_pendpoint(fab, fi, &pep, NULL); if (ret) { printf("fi_endpoint %s\n", fi_strerror(-ret)); goto err1; } ret = alloc_cm_res(); if (ret) goto err2; ret = bind_fid(&pep->fid, &cmeq->fid, 0); if (ret) goto err3; ret = fi_listen(pep); if (ret) { printf("fi_listen %s\n", fi_strerror(-ret)); goto err3; } fi_freeinfo(fi); return 0; err3: free_lres(); err2: fi_close(&pep->fid); err1: fi_close(&fab->fid); err0: fi_freeinfo(fi); return ret; }