11#define LIBCGLUE_SYS_SOCKET_NO_ALIASES
12#define LIBCGLUE_ARPA_INET_NO_ALIASES
18_libcglue_fdman_socket_ops_t __ps2ipee_fdman_socket_ops;
19_libcglue_fdman_inet_ops_t __ps2ipee_fdman_inet_ops;
20_libcglue_fdman_fd_ops_t __ps2ipee_fdman_ops_socket;
22extern void __ps2ipeeOpsInitializeImpl(
void);
25static void __ps2ipeeOpsInitialize(
void)
27 __ps2ipeeOpsInitializeImpl();
30int __ps2ipeeSocketHelper(_libcglue_fdman_fd_info_t *info,
int domain,
int type,
int protocol)
34 iop_fd = lwip_socket(domain, type, protocol);
39 info->userdata = (
void *)(uiptr)(u32)iop_fd;
40 info->ops = &__ps2ipee_fdman_ops_socket;
44int __ps2ipeeGetFdHelper(
void *userdata)
46 return (
int)(u32)(uiptr)userdata;
57u32 __ps2ipeeInetAddrHelper(
const char *cp)
59 return (u32)ipaddr_addr(cp);
62int __ps2ipeeFcntlfsetflHelper(
void *userdata,
int newfl)
67 fd = __ps2ipeeGetFdHelper(userdata);
74 val = (newfl & O_NONBLOCK) ? 1 : 0;
75 res = lwip_ioctl(fd, FIONBIO, &val);
83int __ps2ipeeAcceptHelper(
void *userdata, _libcglue_fdman_fd_info_t *info,
struct sockaddr *addr, socklen_t *addrlen)
87 fd = __ps2ipeeGetFdHelper(userdata);
94 new_fd = lwip_accept(fd, addr, addrlen);
99 info->userdata = (
void *)(uiptr)(u32)new_fd;
100 info->ops = &__ps2ipee_fdman_ops_socket;
104int __ps2ipeeBindHelper(
void *userdata,
const struct sockaddr *name, socklen_t namelen)
108 fd = __ps2ipeeGetFdHelper(userdata);
115 res = lwip_bind(fd, name, namelen);
123int __ps2ipeeCloseHelper(
void *userdata)
127 fd = __ps2ipeeGetFdHelper(userdata);
134 res = lwip_close(fd);
142int __ps2ipeeConnectHelper(
void *userdata,
const struct sockaddr *name, socklen_t namelen)
146 fd = __ps2ipeeGetFdHelper(userdata);
153 res = lwip_connect(fd, name, namelen);
161int __ps2ipeeListenHelper(
void *userdata,
int backlog)
165 fd = __ps2ipeeGetFdHelper(userdata);
172 res = lwip_listen(fd, backlog);
180int __ps2ipeeRecvHelper(
void *userdata,
void *
mem,
size_t len,
int flags)
184 fd = __ps2ipeeGetFdHelper(userdata);
191 res = lwip_recv(fd,
mem, len, flags);
199int __ps2ipeeRecvfromHelper(
void *userdata,
void *
mem,
size_t len,
int flags,
struct sockaddr *from, socklen_t *fromlen)
203 fd = __ps2ipeeGetFdHelper(userdata);
210 res = lwip_recvfrom(fd,
mem, len, flags, from, fromlen);
218int __ps2ipeeRecvmsgHelper(
void *userdata,
struct msghdr *msg,
int flags)
224int __ps2ipeeSendHelper(
void *userdata,
const void *dataptr,
size_t size,
int flags)
228 fd = __ps2ipeeGetFdHelper(userdata);
235 res = lwip_send(fd, dataptr, size, flags);
243int __ps2ipeeSendtoHelper(
void *userdata,
const void *dataptr,
size_t size,
int flags,
const struct sockaddr *to, socklen_t tolen)
247 fd = __ps2ipeeGetFdHelper(userdata);
254 res = lwip_sendto(fd, dataptr, size, flags, to, tolen);
262int __ps2ipeeSendmsgHelper(
void *userdata,
const struct msghdr *msg,
int flags) {
267int __ps2ipeeIoctlHelper(
void *userdata,
int cmd,
void *argp)
271 fd = __ps2ipeeGetFdHelper(userdata);
278 res = lwip_ioctl(fd, cmd, argp);
286int __ps2ipeeGetsocknameHelper(
void *userdata,
struct sockaddr* name, socklen_t* namelen)
290 fd = __ps2ipeeGetFdHelper(userdata);
297 res = lwip_getsockname(fd, name, namelen);
305int __ps2ipeeGetpeernameHelper(
void *userdata,
struct sockaddr *name, socklen_t *namelen)
309 fd = __ps2ipeeGetFdHelper(userdata);
316 res = lwip_getpeername(fd, name, namelen);
324int __ps2ipeeGetsockoptHelper(
void *userdata,
int level,
int optname,
void* optval, socklen_t* optlen)
328 fd = __ps2ipeeGetFdHelper(userdata);
335 res = lwip_getsockopt(fd, level, optname, optval, optlen);
343int __ps2ipeeSetsockoptHelper(
void *userdata,
int level,
int optname,
const void *optval, socklen_t optlen)
347 fd = __ps2ipeeGetFdHelper(userdata);
354 res = lwip_setsockopt(fd, level, optname, optval, optlen);
362int __ps2ipeeShutdownHelper(
void *userdata,
int how)
366 fd = __ps2ipeeGetFdHelper(userdata);
373 res = lwip_shutdown(fd, how);
381int __ps2ipeeReadHelper(
void *userdata,
void *
mem,
int len)
385 fd = __ps2ipeeGetFdHelper(userdata);
392 res = lwip_read(fd,
mem, len);
400int __ps2ipeeWriteHelper(
void *userdata,
const void *
mem,
int len)
404 fd = __ps2ipeeGetFdHelper(userdata);
411 res = lwip_write(fd,
mem, len);
419struct hostent *ps2ip_gethostbyaddr(
const void *addr,
int len,
int type) {
425void __ps2ipeeOpsInitializeImpl(
void)
427 memset(&__ps2ipee_fdman_socket_ops, 0,
sizeof(__ps2ipee_fdman_socket_ops));
428 __ps2ipee_fdman_socket_ops.setconfig = ps2ip_setconfig;
429 __ps2ipee_fdman_socket_ops.getconfig = ps2ip_getconfig;
430 __ps2ipee_fdman_socket_ops.dns_setserver = dns_setserver;
431 __ps2ipee_fdman_socket_ops.dns_getserver = dns_getserver;
432 __ps2ipee_fdman_socket_ops.socket = __ps2ipeeSocketHelper;
433 __ps2ipee_fdman_socket_ops.select = lwip_select;
434 __ps2ipee_fdman_socket_ops.gethostbyaddr = ps2ip_gethostbyaddr;
435 __ps2ipee_fdman_socket_ops.gethostbyname = lwip_gethostbyname;
436 __ps2ipee_fdman_socket_ops.gethostbyname_r = lwip_gethostbyname_r;
437 __ps2ipee_fdman_socket_ops.freeaddrinfo = lwip_freeaddrinfo;
438 __ps2ipee_fdman_socket_ops.getaddrinfo = lwip_getaddrinfo;
440 memset(&__ps2ipee_fdman_inet_ops, 0,
sizeof(__ps2ipee_fdman_inet_ops));
441 __ps2ipee_fdman_inet_ops.inet_addr = __ps2ipeeInetAddrHelper;
443 __ps2ipee_fdman_inet_ops.inet_ntoa_r = ip4addr_ntoa_r;
444 __ps2ipee_fdman_inet_ops.inet_aton = ip4addr_aton;
446 memset(&__ps2ipee_fdman_ops_socket, 0,
sizeof(__ps2ipee_fdman_ops_socket));
447 __ps2ipee_fdman_ops_socket.getfd = __ps2ipeeGetFdHelper;
448 __ps2ipee_fdman_ops_socket.fcntl_f_setfl = __ps2ipeeFcntlfsetflHelper;
450 __ps2ipee_fdman_ops_socket.accept = __ps2ipeeAcceptHelper;
451 __ps2ipee_fdman_ops_socket.bind = __ps2ipeeBindHelper;
452 __ps2ipee_fdman_ops_socket.close = __ps2ipeeCloseHelper;
453 __ps2ipee_fdman_ops_socket.connect = __ps2ipeeConnectHelper;
454 __ps2ipee_fdman_ops_socket.listen = __ps2ipeeListenHelper;
455 __ps2ipee_fdman_ops_socket.recv = __ps2ipeeRecvHelper;
456 __ps2ipee_fdman_ops_socket.recvfrom = __ps2ipeeRecvfromHelper;
457 __ps2ipee_fdman_ops_socket.recvmsg = __ps2ipeeRecvmsgHelper;
458 __ps2ipee_fdman_ops_socket.send = __ps2ipeeSendHelper;
459 __ps2ipee_fdman_ops_socket.sendto = __ps2ipeeSendtoHelper;
460 __ps2ipee_fdman_ops_socket.sendmsg = __ps2ipeeSendmsgHelper;
461 __ps2ipee_fdman_ops_socket.ioctl = __ps2ipeeIoctlHelper;
462 __ps2ipee_fdman_ops_socket.getsockname = __ps2ipeeGetsocknameHelper;
463 __ps2ipee_fdman_ops_socket.getpeername = __ps2ipeeGetpeernameHelper;
464 __ps2ipee_fdman_ops_socket.getsockopt = __ps2ipeeGetsockoptHelper;
465 __ps2ipee_fdman_ops_socket.setsockopt = __ps2ipeeSetsockoptHelper;
466 __ps2ipee_fdman_ops_socket.shutdown = __ps2ipeeShutdownHelper;
467 __ps2ipee_fdman_ops_socket.read = __ps2ipeeReadHelper;
468 __ps2ipee_fdman_ops_socket.write = __ps2ipeeWriteHelper;
472static _libcglue_fdman_socket_ops_t *_backup_libcglue_fdman_socket_ops;
473static _libcglue_fdman_inet_ops_t *_backup_libcglue_fdman_inet_ops;
475void _ps2sdk_ps2ipee_init(
void)
477 _backup_libcglue_fdman_socket_ops = _libcglue_fdman_socket_ops;
478 _libcglue_fdman_socket_ops = &__ps2ipee_fdman_socket_ops;
485 _backup_libcglue_fdman_inet_ops = _libcglue_fdman_inet_ops;
486 _libcglue_fdman_inet_ops = &__ps2ipee_fdman_inet_ops;
489void _ps2sdk_ps2ipee_deinit(
void)
491 _libcglue_fdman_socket_ops = _backup_libcglue_fdman_socket_ops;
492 _libcglue_fdman_inet_ops = _backup_libcglue_fdman_inet_ops;
char * ip4addr_ntoa(const ip4_addr_t *addr)