Lines Matching defs:fi
716 struct finfo *fi;
963 fi = forward_register(bd->su_xid, caller, fd, ma.m_uaddr);
964 if (fi == NULL) {
976 if (fi->flag & FINFO_ACTIVE) {
988 fi->flag |= FINFO_ACTIVE;
990 call_msg.rm_xid = fi->forward_xid;
999 forward_destroy(fi);
1015 forward_destroy(fi);
1026 forward_destroy(fi);
1048 forward_destroy(fi);
1058 forward_destroy(fi);
1068 forward_destroy(fi);
1081 forward_destroy(fi);
1100 forward_destroy(fi);
1110 forward_destroy(fi);
1136 while (fi->reply_data == NULL &&
1137 cond_timedwait(&fi->cv, &finfo_lock, &to) != ETIME)
1140 if (fi->reply_data == NULL) {
1141 forward_destroy(fi);
1152 if (fi->reply_error.re_status != RPC_SUCCESS) {
1153 forward_destroy(fi);
1161 clnt_sperrno(fi->reply_error.re_status));
1173 if (sscanf(fi->uaddr, "%d.%d.%d.%d.%d.%d",
1178 result.res.res_len = fi->res_len;
1179 result.res.res_val = fi->res_val;
1190 result.addr = fi->uaddr;
1191 result.results.results_len = fi->res_len;
1192 result.results.results_val = fi->res_val;
1200 forward_destroy(fi);
1224 struct finfo *fi;
1242 for (fi = fihead; fi != NULL; fi = fi->next) {
1243 if (fi->caller_xid == caller_xid &&
1244 netbufcmp(fi->caller_addr, caller_addr)) {
1245 assert(fi->flag & FINFO_ACTIVE);
1246 return (fi);
1250 fi = malloc(sizeof (*fi));
1251 if (fi == NULL) {
1256 if ((fi->caller_addr = netbufdup(caller_addr)) == NULL) {
1258 free(fi);
1272 fi->prev = NULL;
1273 fi->next = fihead;
1275 fihead->prev = fi;
1276 fihead = fi;
1278 fitail = fi;
1280 fi->flag = 0;
1281 fi->caller_xid = caller_xid;
1283 fi->forward_xid = lastxid;
1284 fi->forward_fd = forward_fd;
1290 fi->uaddr = uaddr;
1292 fi->reply_data = NULL;
1293 (void) cond_init(&fi->cv, USYNC_THREAD, NULL);
1297 assert(fitail != fi);
1301 return (fi);
1305 forward_destroy(struct finfo *fi)
1308 assert(fi->flag & FINFO_ACTIVE);
1310 if (fihead == fi) {
1311 assert(fi->prev == NULL);
1312 fihead = fi->next;
1314 fi->prev->next = fi->next;
1317 if (fitail == fi) {
1318 assert(fi->next == NULL);
1319 fitail = fi->prev;
1321 fi->next->prev = fi->prev;
1324 netbuffree(fi->caller_addr);
1325 free(fi->uaddr);
1326 if (fi->reply_data != NULL)
1327 t_free((char *)fi->reply_data, T_UNITDATA);
1328 (void) cond_destroy(&fi->cv);
1330 free(fi);
1342 struct finfo *fi;
1346 for (fi = fihead; fi != NULL; fi = fi->next) {
1347 if (fi->forward_xid == reply_xid &&
1348 strcmp(fi->uaddr, uaddr) == 0)
1349 return (fi);
1398 struct finfo *fi;
1466 fi = forward_find(reply_msg.rm_xid, uaddr);
1467 if (fi == NULL) {
1472 fi->reply_data = tr_data;
1475 __seterr_reply(&reply_msg, &fi->reply_error);
1477 fi->res_len = len;
1478 fi->res_val = &buffer[pos];
1480 (void) cond_signal(&fi->cv);