MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ff_recvfrom

Function ff_recvfrom

lib/ff_syscall_wrapper.c:1265–1299  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1263}
1264
1265ssize_t
1266ff_recvfrom(int s, void *buf, size_t len, int flags,
1267 struct linux_sockaddr *from, socklen_t *fromlen)
1268{
1269 struct msghdr msg;
1270 struct iovec aiov;
1271 int rc;
1272 struct sockaddr_storage bsdaddr;
1273
1274 if (fromlen != NULL)
1275 msg.msg_namelen = *fromlen;
1276 else
1277 msg.msg_namelen = 0;
1278
1279 msg.msg_name = &bsdaddr;
1280 msg.msg_iov = &aiov;
1281 msg.msg_iovlen = 1;
1282 aiov.iov_base = buf;
1283 aiov.iov_len = len;
1284 msg.msg_control = 0;
1285 msg.msg_flags = flags;
1286 if ((rc = kern_recvit(curthread, s, &msg, UIO_SYSSPACE, NULL)))
1287 goto kern_fail;
1288 rc = curthread->td_retval[0];
1289 if (fromlen != NULL)
1290 *fromlen = msg.msg_namelen;
1291
1292 if (from && msg.msg_namelen != 0)
1293 freebsd2linux_sockaddr(from, (struct sockaddr *)&bsdaddr);
1294
1295 return (rc);
1296kern_fail:
1297 ff_os_errno(rc);
1298 return (-1);
1299}
1300
1301/*
1302 * It is considered here that the upper 4 bytes of

Callers 3

ff_recvFunction · 0.85
ff_sys_recvfromFunction · 0.85
ff_hook_recvfromFunction · 0.85

Calls 3

kern_recvitFunction · 0.85
freebsd2linux_sockaddrFunction · 0.85
ff_os_errnoFunction · 0.85

Tested by

no test coverage detected