sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
ps2ip.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright (c) 2003 Marcus R. Brown <mrbrown@0xd6.org>
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16
17#ifndef __PS2IP_H__
18#define __PS2IP_H__
19
20#include <types.h>
21#include <irx.h>
22
23/* Real, verbatim upstream: common/tcpip.h was never actually deleted
24 during this session's earlier "tcpip.h retired..." work (see
25 FEEDBACK.md) - only its automatic, blanket inclusion from OTHER
26 headers (libcglue's sys/socket.h, mainly) was removed, since THAT
27 conflicted with the real, vendored lwip headers those same
28 consumers also pull in. This header (and sdk-world/smbman's own
29 already-working vendored copy of it) is a real, standalone
30 consumer that does NOT also include real lwip headers in the same
31 TU - deliberately including tcpip.h here directly, exactly like
32 real upstream, for t_ip_info + POSIX socket types (struct sockaddr,
33 socklen_t, fd_set, struct timeval), is correct and conflict-free. */
34#include <tcpip.h>
35
36#include <sys/time.h>
37
38/* From include/lwip/sockets.h: */
39
40extern int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
41extern int lwip_bind(int s, struct sockaddr *name, socklen_t namelen);
42extern int lwip_close(int s);
43extern int lwip_connect(int s, struct sockaddr *name, socklen_t namelen);
44extern int lwip_listen(int s, int backlog);
45extern int lwip_recv(int s, void *mem, int len, unsigned int flags);
46extern int lwip_recvfrom(int s, void *mem, int len, unsigned int flags,
47 struct sockaddr *from, socklen_t *fromlen);
48extern int lwip_send(int s, void *dataptr, int size, unsigned int flags);
49extern int lwip_sendto(int s, void *dataptr, int size, unsigned int flags,
50 struct sockaddr *to, socklen_t tolen);
51extern int lwip_socket(int domain, int type, int protocol);
52extern int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
53 struct timeval *timeout);
54extern int lwip_ioctl(int s, long cmd, void *argp);
55extern int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);
56extern int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);
57extern int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
58extern int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
59
60extern int ps2ip_setconfig(const t_ip_info* ip_info);
61extern int ps2ip_getconfig(char* netif_name,t_ip_info* ip_info);
62extern void ps2ip_input(struct pbuf *p, struct netif *inp);
63
64extern int lwip_shutdown(int s, int how);
65extern int lwip_fcntl(int s, int cmd, int val);
66
67/* From include/netif/etharp.h: */
68extern err_t etharp_output(struct netif *netif, struct pbuf *q, const ip_addr_t *ipaddr);
69
70/* From include/lwip/tcpip.h: */
71extern err_t tcpip_input(struct pbuf *p, struct netif *inp);
72
74typedef void (*tcpip_callback_fn)(void *ctx);
75
76extern err_t tcpip_callback(tcpip_callback_fn function, void *ctx);
77
78/* From include/lwip/netif.h: */
79extern struct netif *netif_add(struct netif *netif,
80#if LWIP_IPV4
81 const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw,
82#endif /* LWIP_IPV4 */
84
85/* Returns a network interface given its name. The name is of the form
86 "et0", where the first two letters are the "name" field in the
87 netif structure, and the digit is in the num field in the same
88 structure. */
89extern struct netif* netif_find(const char *name);
90extern void netif_set_default(struct netif *netif);
91extern void netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr);
92extern void netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask);
93extern void netif_set_gw(struct netif *netif, const ip4_addr_t *gw);
94extern void netif_set_up(struct netif *netif);
95extern void netif_set_down(struct netif *netif);
96
97extern void netif_set_link_up(struct netif *netif);
98extern void netif_set_link_down(struct netif *netif);
99
100/* From include/lwip/pbuf.h: */
101extern struct pbuf* pbuf_alloc(pbuf_layer l, u16 size, pbuf_type type);
102extern void pbuf_realloc(struct pbuf *p, u16 size);
103extern u8 pbuf_header(struct pbuf *p, s16 header_size);
104extern void pbuf_ref(struct pbuf *p);
105extern u8 pbuf_free(struct pbuf *p);
106extern u8 pbuf_clen(struct pbuf *p);
107extern void pbuf_chain(struct pbuf *h, struct pbuf *t);
108extern struct pbuf* pbuf_dechain(struct pbuf *p);
109extern struct pbuf* pbuf_take(struct pbuf *f);
110extern struct pbuf* pbuf_coalesce(struct pbuf *p, pbuf_layer layer);
111
112/* From include/lwip/inet.h: */
113/* directly map this to the lwip internal functions */
114#define inet_addr(cp) ipaddr_addr(cp)
115#define inet_aton(cp, addr) ip4addr_aton(cp, (ip4_addr_t*)addr)
116#define inet_ntoa(addr) ip4addr_ntoa((const ip4_addr_t*)&(addr))
117#define inet_ntoa_r(addr, buf, buflen) ip4addr_ntoa_r((const ip4_addr_t*)&(addr), buf, buflen)
118
119extern u32 ipaddr_addr(const char *cp);
120extern int ip4addr_aton(const char *cp, ip4_addr_t *addr);
122extern char *ip4addr_ntoa(const ip4_addr_t *addr);
123extern char *ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen);
124
125#ifdef PS2IP_DNS
126/* From include/lwip/netdb.h: */
127extern struct hostent *lwip_gethostbyname(const char *name);
128extern int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
129 size_t buflen, struct hostent **result, int *h_errnop);
130extern void lwip_freeaddrinfo(struct addrinfo *ai);
131extern int lwip_getaddrinfo(const char *nodename,
132 const char *servname,
133 const struct addrinfo *hints,
134 struct addrinfo **res);
135
136/* From include/lwip/dns.h: */
137extern void dns_setserver(u8 numdns, const ip_addr_t *dnsserver);
138extern const ip_addr_t* dns_getserver(u8 numdns);
139#endif
140
141/* Compatibility macros. */
142
143#define accept lwip_accept
144#define bind lwip_bind
145#define disconnect lwip_close
146#define closesocket lwip_close
147#define shutdown lwip_shutdown
148#define connect lwip_connect
149#define listen lwip_listen
150#define recv lwip_recv
151#define recvfrom lwip_recvfrom
152#define send lwip_send
153#define sendto lwip_sendto
154#define socket lwip_socket
155#define select lwip_select
156#define ioctlsocket lwip_ioctl
157#define fcntlsocket lwip_fcntl
158#define gethostbyname lwip_gethostbyname
159#define gethostbyname_r lwip_gethostbyname_r
160#define freeaddrinfo lwip_freeaddrinfo
161#define getaddrinfo lwip_getaddrinfo
162
163// ntba2
164#define getsockname lwip_getsockname
165#define getpeername lwip_getpeername
166#define getsockopt lwip_getsockopt
167#define setsockopt lwip_setsockopt
168
169#define ipaddr4_aton(...) ip4addr_aton(__VA_ARGS__)
170
171#define ps2ip_IMPORTS_start DECLARE_IMPORT_TABLE(ps2ip, 2, 6)
172#define ps2ip_IMPORTS_end END_IMPORT_TABLE
173
174#define I_lwip_accept DECLARE_IMPORT(4, lwip_accept)
175#define I_lwip_bind DECLARE_IMPORT(5, lwip_bind)
176#define I_lwip_close DECLARE_IMPORT(6, lwip_close)
177#define I_lwip_connect DECLARE_IMPORT(7, lwip_connect)
178#define I_lwip_listen DECLARE_IMPORT(8, lwip_listen)
179#define I_lwip_recv DECLARE_IMPORT(9, lwip_recv)
180#define I_lwip_recvfrom DECLARE_IMPORT(10, lwip_recvfrom)
181#define I_lwip_send DECLARE_IMPORT(11, lwip_send)
182#define I_lwip_sendto DECLARE_IMPORT(12, lwip_sendto)
183#define I_lwip_socket DECLARE_IMPORT(13, lwip_socket)
184#define I_lwip_select DECLARE_IMPORT(14, lwip_select)
185#define I_lwip_ioctl DECLARE_IMPORT(15, lwip_ioctl)
186#define I_lwip_getpeername DECLARE_IMPORT(16, lwip_getpeername)
187#define I_lwip_getsockname DECLARE_IMPORT(17, lwip_getsockname)
188#define I_lwip_getsockopt DECLARE_IMPORT(18, lwip_getsockopt)
189#define I_lwip_setsockopt DECLARE_IMPORT(19, lwip_setsockopt)
190#define I_ps2ip_setconfig DECLARE_IMPORT(20, ps2ip_setconfig)
191#define I_ps2ip_getconfig DECLARE_IMPORT(21, ps2ip_getconfig)
192#define I_ps2ip_input DECLARE_IMPORT(22, ps2ip_input)
193#define I_lwip_shutdown DECLARE_IMPORT(46, lwip_shutdown)
194#define I_lwip_fcntl DECLARE_IMPORT(47, lwip_fcntl)
195#define I_etharp_output DECLARE_IMPORT(23, etharp_output)
196#define I_tcpip_input DECLARE_IMPORT(25, tcpip_input)
197#define I_tcpip_callback DECLARE_IMPORT(56, tcpip_callback)
198#define I_netif_add DECLARE_IMPORT(26, netif_add)
199#define I_netif_find DECLARE_IMPORT(27, netif_find)
200#define I_netif_set_default DECLARE_IMPORT(28, netif_set_default)
201#define I_netif_set_ipaddr DECLARE_IMPORT(29, netif_set_ipaddr)
202#define I_netif_set_netmask DECLARE_IMPORT(30, netif_set_netmask)
203#define I_netif_set_gw DECLARE_IMPORT(31, netif_set_gw)
204#define I_netif_set_up DECLARE_IMPORT(32, netif_set_up)
205#define I_netif_set_down DECLARE_IMPORT(33, netif_set_down)
206#define I_netif_set_link_up DECLARE_IMPORT(54, netif_set_link_up)
207#define I_netif_set_link_down DECLARE_IMPORT(55, netif_set_link_down)
208#define I_pbuf_alloc DECLARE_IMPORT(34, pbuf_alloc)
209#define I_pbuf_realloc DECLARE_IMPORT(35, pbuf_realloc)
210#define I_pbuf_header DECLARE_IMPORT(36, pbuf_header)
211#define I_pbuf_ref DECLARE_IMPORT(37, pbuf_ref)
212#define I_pbuf_free DECLARE_IMPORT(38, pbuf_free)
213#define I_pbuf_clen DECLARE_IMPORT(39, pbuf_clen)
214#define I_pbuf_chain DECLARE_IMPORT(40, pbuf_chain)
215#define I_pbuf_dechain DECLARE_IMPORT(41, pbuf_dechain)
216#define I_pbuf_take DECLARE_IMPORT(42, pbuf_take)
217#define I_pbuf_coalesce DECLARE_IMPORT(57, pbuf_coalesce)
218#define I_ipaddr_addr DECLARE_IMPORT(24, ipaddr_addr)
219#define I_ip4addr_aton DECLARE_IMPORT(43, ip4addr_aton)
220#define I_ip4addr_ntoa DECLARE_IMPORT(44, ip4addr_ntoa)
221#define I_ip4addr_ntoa_r DECLARE_IMPORT(45, ip4addr_ntoa_r)
222#define I_lwip_gethostbyname DECLARE_IMPORT(48, lwip_gethostbyname)
223#define I_lwip_gethostbyname_r DECLARE_IMPORT(49, lwip_gethostbyname_r)
224#define I_lwip_freeaddrinfo DECLARE_IMPORT(50, lwip_freeaddrinfo)
225#define I_lwip_getaddrinfo DECLARE_IMPORT(51, lwip_getaddrinfo)
226#define I_dns_setserver DECLARE_IMPORT(52, dns_setserver)
227#define I_dns_getserver DECLARE_IMPORT(53, dns_getserver)
228
229#define I_inet_addr I_ipaddr_addr
230#define I_ipaddr4_aton I_ip4addr_aton
231#define I_inet_aton I_ip4addr_aton
232#define I_inet_ntoa I_ip4addr_ntoa
233#define I_inet_ntoa_r I_ip4addr_ntoa_r
234
235#endif /* __PS2IP_H__ */
err_t(*) netif_input_fn(struct pbuf *p, struct netif *inp)
Definition tcpip.h:1207
err_t(*) netif_init_fn(struct netif *netif)
Definition tcpip.h:1200
err_t tcpip_callback(tcpip_callback_fn function, void *ctx)
Definition tcpip.c:323
err_t tcpip_input(struct pbuf *p, struct netif *inp)
Definition tcpip.c:297
void netif_set_link_down(struct netif *netif)
Definition netif.c:1056
struct netif * netif_find(const char *name)
Definition netif.c:1755
void netif_set_down(struct netif *netif)
Definition netif.c:949
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
Definition netif.c:287
void netif_set_default(struct netif *netif)
Definition netif.c:849
void netif_set_link_up(struct netif *netif)
Definition netif.c:1018
void netif_set_up(struct netif *netif)
Definition netif.c:871
struct pbuf * pbuf_coalesce(struct pbuf *p, pbuf_layer layer)
Definition pbuf.c:1318
void pbuf_ref(struct pbuf *p)
Definition pbuf.c:833
void pbuf_chain(struct pbuf *h, struct pbuf *t)
Definition pbuf.c:900
u8 pbuf_free(struct pbuf *p)
Definition pbuf.c:729
pbuf_type
Definition tcpip.h:207
pbuf_layer
Definition tcpip.h:178
void(*) tcpip_callback_fn(void *ctx)
Definition ps2ip.h:74
u8 pbuf_header(struct pbuf *p, s16 header_size)
Definition pbuf.c:651
struct pbuf * pbuf_dechain(struct pbuf *p)
Definition pbuf.c:917
char * ip4addr_ntoa(const ip4_addr_t *addr)
struct ip4_addr ip4_addr_t
Definition ps2ip_rpc.h:41
Definition mem.c:336
netif_input_fn input
Definition tcpip.h:1290
void * state
Definition tcpip.h:1325
Definition tcpip.h:234
Definition time.h:30