arg_t _getsockaddrs(void) { struct socket *s = sock_get(fd, NULL); if (s == NULL) return -1; if (type > 1) { udata.u_error = EINVAL; return -1; } return sa_put(s, type, uaddr); }
arg_t _recvfrom(void) { struct socket *s = sock_get(d, NULL); int ret; if (s == NULL) return -1; ret = _read(); if (ret < 0) return ret; if (sa_put(s, SADDR_TMP, uaddr)) return -1; return ret; }
arg_t _recvfrom(void) { struct socket *s = sock_get(fd, NULL); int ret; uint16_t flags; /* FIXME: will need _read redone for banked syscalls */ if (s == NULL) return -1; flags = ugetw(&uaddr->sio_flags); if (flags) { udata.u_error = EINVAL; return -1; } ret = _read(); if (ret < 0) return ret; if (sa_put(s, SADDR_TMP, &uaddr->sio_addr)) return -1; return ret; }