ps2sdk  1.1
A collection of Open Source libraries used for developing applications on Sony's PlayStation 2® (PS2).
ps2ipc.c
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright 2001-2004, ps2dev - http://www.ps2dev.org
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
16 #include <tamtypes.h>
17 #include <string.h>
18 #include <kernel.h>
19 #include <sifrpc.h>
20 
21 #include <ps2ips.h>
22 #include <ps2ip_rpc.h>
23 
24 static int _init_check = 0;
25 static int lock_sema = -1;
27 static struct {
28  union {
30  s32 s; //Generic socket parameter.
31  cmd_pkt cmd_pkt; //Generic command packet, used by multiple functions.
38  char netif_name[8];
44  char hostname[256];
49  u8 buffer[512];
50  };
51 } _rpc_buffer __attribute__((aligned(64)));
52 static int _intr_data[32] __attribute__((aligned(64)));
53 
55 
56 //Copied from LWIP, to be independent of the full LWIP source.
57 /* used by IP4_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */
59 
60 int ps2ip_init(void)
61 {
62  ee_sema_t sema;
63 
64  while(1)
65  {
66  if(SifBindRpc(&_ps2ip, PS2IP_IRX, 0) < 0)
67  return -1;
68 
69  if(_ps2ip.server != NULL)
70  break;
71 
72  nopdelay();
73  }
74 
75  sema.init_count = 1;
76  sema.max_count = 1;
77  sema.option = (u32)"ps2ipc";
78  sema.attr = 0;
79  lock_sema = CreateSema(&sema);
80 
81  _init_check = 1;
82 
83  return 0;
84 }
85 
86 void ps2ip_deinit(void)
87 {
88  if (lock_sema >= 0)
90  lock_sema = -1;
91 
92  _init_check = 0;
93 }
94 
95 int accept(int s, struct sockaddr *addr, int *addrlen)
96 {
97  int result;
98  cmd_pkt *pkt = &_rpc_buffer.cmd_pkt;
99 
100  if(!_init_check) return -1;
101 
103 
104  pkt->socket = s;
105 
106  if (SifCallRpc(&_ps2ip, PS2IPS_ID_ACCEPT, 0, (void*)pkt, sizeof(s32), (void*)pkt, sizeof(cmd_pkt), NULL, NULL) < 0)
107  {
109  return -1;
110  }
111 
112  if(addr != NULL)
113  {
114  if(pkt->len < *addrlen) *addrlen = pkt->len;
115  memcpy((void *)addr, (void *)&pkt->sockaddr, *addrlen);
116  }
117 
118  result = pkt->socket;
119 
121 
122  return result;
123 }
124 
125 int bind(int s, struct sockaddr *name, int namelen)
126 {
127  cmd_pkt *pkt = &_rpc_buffer.cmd_pkt;
128  int result;
129 
130  if(!_init_check) return -1;
131 
133 
134  pkt->socket = s;
135  pkt->len = namelen;
136  memcpy((void *)&pkt->sockaddr, (void *)name, sizeof(struct sockaddr));
137 
138  if (SifCallRpc(&_ps2ip, PS2IPS_ID_BIND, 0, (void*)pkt, sizeof(cmd_pkt), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
139  {
141  return -1;
142  }
143 
144  result = _rpc_buffer.result;
145 
147 
148  return result;
149 }
150 
151 int disconnect(int s)
152 {
153  int result;
154 
155  if(!_init_check) return -1;
156 
158 
159  _rpc_buffer.s = s;
160 
161  if (SifCallRpc(&_ps2ip, PS2IPS_ID_DISCONNECT, 0, (void*)&_rpc_buffer.s, sizeof(s32), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
162  {
164  return -1;
165  }
166 
167  result = _rpc_buffer.result;
168 
170 
171  return result;
172 }
173 
174 int connect(int s, struct sockaddr *name, int namelen)
175 {
176  int result;
177  cmd_pkt *pkt = &_rpc_buffer.cmd_pkt;
178 
179  if(!_init_check) return -1;
180 
182 
183  pkt->socket = s;
184  pkt->len = namelen;
185  memcpy((void *)&pkt->sockaddr, (void *)name, sizeof(struct sockaddr));
186 
187  if (SifCallRpc(&_ps2ip, PS2IPS_ID_CONNECT, 0, (void*)pkt, sizeof(cmd_pkt), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
188  {
190  return -1;
191  }
192 
193  result = _rpc_buffer.result;
194 
196 
197  return result;
198 }
199 
200 int listen(int s, int backlog)
201 {
202  int result;
203  listen_pkt *pkt = &_rpc_buffer.listen_pkt;
204 
205  if(!_init_check) return -1;
206 
208 
209  pkt->s = s;
210  pkt->backlog = backlog;
211 
212  if (SifCallRpc(&_ps2ip, PS2IPS_ID_LISTEN, 0, (void*)pkt, sizeof(listen_pkt), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
213  {
215  return -1;
216  }
217 
218  result = _rpc_buffer.result;
219 
221 
222  return result;
223 }
224 
225 static void recv_intr(void *data_raw)
226 {
227  rests_pkt *rests = UNCACHED_SEG(data_raw);
228  int i;
229 
230  if(rests->ssize)
231  for(i = 0; i < rests->ssize; i++)
232  rests->sbuf[i] = rests->sbuffer[i];
233 
234  if(rests->esize)
235  for(i = 0; i < rests->esize; i++)
236  rests->ebuf[i] = rests->ebuffer[i];
237 }
238 
239 
240 int recv(int s, void *mem, int len, unsigned int flags)
241 {
242  int result;
243  s_recv_pkt *send_pkt = &_rpc_buffer.s_recv_pkt;
244  r_recv_pkt *recv_pkt = &_rpc_buffer.r_recv_pkt;
245 
246  if(!_init_check) return -1;
247 
249 
250  send_pkt->socket = s;
251  send_pkt->length = len;
252  send_pkt->flags = flags;
253  send_pkt->ee_addr = mem;
254  send_pkt->intr_data = _intr_data;
255 
256  if( !IS_UNCACHED_SEG(mem))
257  SifWriteBackDCache(mem, len);
258 
259  if (SifCallRpc(&_ps2ip, PS2IPS_ID_RECV, 0, (void*)send_pkt, sizeof(s_recv_pkt),
260  (void*)recv_pkt, sizeof(r_recv_pkt), recv_intr, _intr_data) < 0)
261  {
263  return -1;
264  }
265 
266  result = recv_pkt->ret;
267 
269 
270  return result;
271 }
272 
273 int recvfrom(int s, void *mem, int len, unsigned int flags,
274  struct sockaddr *from, int *fromlen)
275 {
276  int result;
277  s_recv_pkt *send_pkt = &_rpc_buffer.s_recv_pkt;
278  r_recv_pkt *recv_pkt = &_rpc_buffer.r_recv_pkt;
279 
280  if(!_init_check) return -1;
281 
283 
284  send_pkt->socket = s;
285  send_pkt->length = len;
286  send_pkt->flags = flags;
287  send_pkt->ee_addr = mem;
288  send_pkt->intr_data = _intr_data;
289 
290  if( !IS_UNCACHED_SEG(mem))
291  SifWriteBackDCache(mem, len);
292 
293  if (SifCallRpc(&_ps2ip, PS2IPS_ID_RECVFROM, 0, (void*)send_pkt, sizeof(s_recv_pkt),
294  (void*)recv_pkt, sizeof(r_recv_pkt), recv_intr, _intr_data) < 0)
295  {
297  return -1;
298  }
299 
300  memcpy((void *)from, (void *)&recv_pkt->sockaddr, sizeof(struct sockaddr));
301  *fromlen = sizeof(struct sockaddr);
302 
303  result = recv_pkt->ret;
304 
306 
307  return result;
308 }
309 
310 int send(int s, void *dataptr, int size, unsigned int flags)
311 {
312  int result;
313  send_pkt *pkt = &_rpc_buffer.send_pkt;
314  int miss;
315 
317 
318  pkt->socket = s;
319  pkt->length = size;
320  pkt->flags = flags;
321  pkt->ee_addr = dataptr;
322 
323  if((u32)dataptr & 0x3f)
324  {
325  miss = 64 - ((u32)dataptr & 0x3f);
326  if(miss > size) miss = size;
327 
328  } else {
329 
330  miss = 0;
331  }
332 
333  pkt->malign = miss;
334 
335  if( !IS_UNCACHED_SEG(dataptr))
336  SifWriteBackDCache(dataptr, size);
337 
338  memcpy((void *)pkt->malign_buff, UNCACHED_SEG(dataptr), miss);
339 
340  if (SifCallRpc(&_ps2ip, PS2IPS_ID_SEND, 0, (void*)pkt, sizeof(send_pkt),
341  (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
342  {
344  return -1;
345  }
346 
347  result = _rpc_buffer.result;
348 
350 
351  return result;
352 }
353 
354 int sendto(int s, void *dataptr, int size, unsigned int flags,
355  struct sockaddr *to, int tolen)
356 {
357  int result;
358  send_pkt *pkt = &_rpc_buffer.send_pkt;
359  int miss;
360 
362 
363  pkt->socket = s;
364  pkt->length = size;
365  pkt->flags = flags;
366  pkt->ee_addr = dataptr;
367  memcpy((void *)&pkt->sockaddr, (void *)to, sizeof(struct sockaddr));
368 
369  if((u32)dataptr & 0x3f)
370  {
371  miss = 64 - ((u32)dataptr & 0x3f);
372  if(miss > size) miss = size;
373 
374  } else {
375 
376  miss = 0;
377  }
378 
379  pkt->malign = miss;
380 
381  if( !IS_UNCACHED_SEG(dataptr))
382  SifWriteBackDCache(dataptr, size);
383 
384  memcpy((void *)pkt->malign_buff, UNCACHED_SEG(dataptr), miss);
385 
386  if (SifCallRpc(&_ps2ip, PS2IPS_ID_SENDTO, 0, (void*)pkt, sizeof(send_pkt),
387  (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
388  {
390  return -1;
391  }
392 
393  result = _rpc_buffer.result;
394 
396 
397  return result;
398 }
399 
400 int socket(int domain, int type, int protocol)
401 {
402  int result;
403  socket_pkt *pkt = &_rpc_buffer.socket_pkt;
404 
405  if(!_init_check) return -1;
406 
408 
409  pkt->domain = domain;
410  pkt->type = type;
411  pkt->protocol = protocol;
412 
413  if (SifCallRpc(&_ps2ip, PS2IPS_ID_SOCKET, 0, (void*)pkt, sizeof(socket_pkt), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
414  {
416  return -1;
417  }
418 
419  result = _rpc_buffer.result;
420 
422 
423  return result;
424 }
425 
427 {
428  int result;
429 
430  if(!_init_check) return -1;
431 
433 
434  // return config
435  memcpy(&_rpc_buffer.ip_info, ip_info, sizeof(t_ip_info));
436 
437  if (SifCallRpc(&_ps2ip, PS2IPS_ID_SETCONFIG, 0, (void*)&_rpc_buffer.ip_info, sizeof(t_ip_info), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
438  {
440  return -1;
441  }
442 
443  result = _rpc_buffer.result;
444 
446 
447  return result;
448 }
449 
451 {
452  if(!_init_check) return -1;
453 
455 
456  // call with netif name
457  strncpy(_rpc_buffer.netif_name, netif_name, sizeof(_rpc_buffer.netif_name));
458  _rpc_buffer.netif_name[sizeof(_rpc_buffer.netif_name) - 1] = '\0';
459 
460  if (SifCallRpc(&_ps2ip, PS2IPS_ID_GETCONFIG, 0, (void*)_rpc_buffer.netif_name, sizeof(_rpc_buffer.netif_name), (void*)&_rpc_buffer.ip_info, sizeof(t_ip_info), NULL, NULL) < 0)
461  {
463  return -1;
464  }
465 
466  // return config
467  memcpy(ip_info, &_rpc_buffer.ip_info, sizeof(t_ip_info));
468 
470 
471  return 1;
472 }
473 
474 int select(int maxfdp1, struct fd_set *readset, struct fd_set *writeset, struct fd_set *exceptset, struct timeval *timeout)
475 {
476  int result;
477  select_pkt *pkt = &_rpc_buffer.select_pkt;
478 
479  if(!_init_check) return -1;
480 
482 
483  pkt->maxfdp1 = maxfdp1;
484  pkt->readset_p = readset;
485  pkt->writeset_p = writeset;
486  pkt->exceptset_p = exceptset;
487  pkt->timeout_p = timeout;
488  if( timeout )
489  pkt->timeout = *timeout;
490 
491  if( readset )
492  pkt->readset = *readset;
493 
494  if( writeset )
495  pkt->writeset = *writeset;
496 
497  if( exceptset )
498  pkt->exceptset = *exceptset;
499 
500  if (SifCallRpc(&_ps2ip, PS2IPS_ID_SELECT, 0, (void*)pkt, sizeof(select_pkt), (void*)pkt, sizeof(select_pkt), NULL, NULL) < 0)
501  {
503  return -1;
504  }
505 
506  if( timeout )
507  *timeout = pkt->timeout;
508 
509  if( readset )
510  *readset = pkt->readset;
511 
512  if( writeset )
513  *writeset = pkt->writeset;
514 
515  if( exceptset )
516  *exceptset = pkt->exceptset;
517 
518  result = pkt->result;
519 
521 
522  return result;
523 }
524 
525 int ioctlsocket(int s, long cmd, void *argp)
526 {
527  int result;
528  ioctl_pkt *pkt = &_rpc_buffer.ioctl_pkt;
529 
530  if(!_init_check) return -1;
531 
533 
534  pkt->s = s;
535  pkt->cmd = (s32)cmd;
536  pkt->argp = argp;
537  if( argp )
538  pkt->value = *(s32*)argp;
539 
540  if (SifCallRpc(&_ps2ip, PS2IPS_ID_IOCTL, 0, (void*)pkt, sizeof(ioctl_pkt), (void*)pkt, sizeof(ioctl_pkt), NULL, NULL) < 0)
541  {
543  return -1;
544  }
545 
546  if( argp )
547  *(s32*)argp = pkt->value;
548 
549  result = pkt->result;
550 
552 
553  return result;
554 }
555 
556 int getsockname(int s, struct sockaddr *name, int *namelen)
557 {
558  int result;
559  cmd_pkt *pkt = &_rpc_buffer.cmd_pkt;
560 
561  if(!_init_check) return -1;
562 
564 
565  pkt->socket = s;
566 
567  if (SifCallRpc(&_ps2ip, PS2IPS_ID_GETSOCKNAME, 0, (void*)pkt, sizeof(pkt->socket), (void*)pkt, sizeof(cmd_pkt), NULL, NULL) < 0)
568  {
570  return -1;
571  }
572 
573  if(pkt->len < *namelen) *namelen = pkt->len;
574  memcpy((void *)name, (void *)&pkt->sockaddr, *namelen);
575 
576  result = pkt->socket;
577 
579 
580  return result;
581 }
582 
583 int getpeername(int s, struct sockaddr *name, int *namelen)
584 {
585  int result;
586  cmd_pkt *pkt = &_rpc_buffer.cmd_pkt;
587 
588  if(!_init_check) return -1;
589 
591 
592  pkt->socket = s;
593 
594  if (SifCallRpc(&_ps2ip, PS2IPS_ID_GETPEERNAME, 0, (void*)pkt, sizeof(pkt->socket), (void*)pkt, sizeof(cmd_pkt), NULL, NULL) < 0)
595  {
597  return -1;
598  }
599 
600  if(pkt->len < *namelen) *namelen = pkt->len;
601  memcpy((void *)name, (void *)&pkt->sockaddr, *namelen);
602 
603  result = pkt->socket;
604 
606 
607  return result;
608 }
609 
610 int getsockopt(int s, int level, int optname, void* optval, socklen_t* optlen)
611 {
612  getsockopt_pkt *pkt = &_rpc_buffer.getsockopt_pkt;
613  getsockopt_res_pkt *res_pkt = &_rpc_buffer.getsockopt_res_pkt;
614  int result;
615 
616  if(!_init_check) return -1;
617 
619 
620  pkt->s = s;
621  pkt->level = level;
622  pkt->optname = optname;
623 
624  if (SifCallRpc(&_ps2ip, PS2IPS_ID_GETSOCKOPT, 0, (void*)pkt, sizeof(getsockopt_pkt), (void*)res_pkt, sizeof(getsockopt_res_pkt), NULL, NULL) < 0)
625  {
627  return -1;
628  }
629 
630  if(res_pkt->optlen < *optlen) *optlen = res_pkt->optlen;
631  memcpy((void*)optval, res_pkt->buffer, *optlen);
632 
633  result = res_pkt->result;
634 
636 
637  return result;
638 }
639 
640 int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
641 {
642  setsockopt_pkt *pkt = &_rpc_buffer.setsockopt_pkt;
643  int result;
644 
645  if(!_init_check) return -1;
646 
648 
649  pkt->s = s;
650  pkt->s = level;
651  pkt->optname = optname;
652  pkt->optlen = optlen;
653 
654  memcpy(pkt->buffer, optval, optlen);
655 
656  if (SifCallRpc(&_ps2ip, PS2IPS_ID_SETSOCKOPT, 0, (void*)pkt, sizeof(setsockopt_pkt), (void*)&_rpc_buffer.result, sizeof(s32), NULL, NULL) < 0)
657  {
659  return -1;
660  }
661 
662  result = _rpc_buffer.result;
663 
665 
666  return result;
667 }
668 
669 #ifdef PS2IP_DNS
670 struct hostent *gethostbyname(const char *name)
671 {
672  gethostbyname_res_pkt *res_pkt = &_rpc_buffer.gethostbyname_res_pkt;
673  struct hostent *result;
674  static ip_addr_t addr;
675  static ip_addr_t *addr_list[2];
676  static struct hostent hostent;
677 
678  if(!_init_check) return NULL;
679 
681 
682  result = NULL;
683  strncpy(_rpc_buffer.hostname, name, sizeof(_rpc_buffer.hostname));
684  _rpc_buffer.hostname[sizeof(_rpc_buffer.hostname) - 1] = '\0';
685  if(SifCallRpc(&_ps2ip, PS2IPS_ID_GETHOSTBYNAME, 0, (void*)_rpc_buffer.hostname, sizeof(_rpc_buffer.hostname), (void*)res_pkt, sizeof(gethostbyname_res_pkt), NULL, NULL) >=0)
686  {
687  if(res_pkt->result == 0)
688  {
689  hostent.h_addrtype = res_pkt->hostent.h_addrtype;
690  hostent.h_length = res_pkt->hostent.h_length;
691  hostent.h_name = (char*)name;
693  memcpy(&addr, &res_pkt->hostent.h_addr, sizeof(addr));
694  addr_list[0] = &addr;
695  addr_list[1] = NULL;
696  hostent.h_addr_list = (char**)&addr_list;
697  result = &hostent;
698  }
699  }
700 
702 
703  return result;
704 }
705 
706 void dns_setserver(u8 numdns, ip_addr_t *dnsserver)
707 {
708  dns_setserver_pkt *pkt = &_rpc_buffer.dns_setserver_pkt;
709 
710  if(!_init_check) return;
711 
713 
714  pkt->numdns = numdns;
715  pkt->dnsserver = *dnsserver;
716 
717  SifCallRpc(&_ps2ip, PS2IPS_ID_DNS_SETSERVER, 0, (void*)pkt, sizeof(dns_setserver_pkt), NULL, 0, NULL, NULL);
718 
719  if (numdns < DNS_MAX_SERVERS)
720  dns_servers[numdns] = (dnsserver != NULL) ? (*dnsserver) : *IP4_ADDR_ANY;
721 
723 }
724 
726 {
727  dns_getserver_res_pkt *res_pkt = &_rpc_buffer.dns_getserver_res_pkt;
728  ip_addr_t *dns;
729 
730  if ((!_init_check) || (numdns >= DNS_MAX_SERVERS))
731  return IP4_ADDR_ANY;
732 
734 
735  _rpc_buffer.numdns = numdns;
736  dns = &dns_servers[numdns];
737 
738  //If this fails, use the cached copy.
739  if(SifCallRpc(&_ps2ip, PS2IPS_ID_DNS_GETSERVER, 0, (void*)&_rpc_buffer.numdns, sizeof(u8), (void*)res_pkt, sizeof(dns_getserver_res_pkt), NULL, NULL) >=0)
740  ip_addr_copy(*dns, res_pkt->dnsserver);
741 
743 
744  return dns;
745 }
746 #endif
s32 CreateSema(ee_sema_t *sema)
s32 SignalSema(s32 sema_id)
s32 DeleteSema(s32 sema_id)
static void nopdelay(void)
Definition: kernel.h:141
s32 WaitSema(s32 sema_id)
#define UNCACHED_SEG(x)
Definition: kernel.h:35
#define IS_UNCACHED_SEG(x)
Definition: kernel.h:38
@ PS2IPS_ID_IOCTL
Definition: ps2ip_rpc.h:30
@ PS2IPS_ID_SEND
Definition: ps2ip_rpc.h:24
@ PS2IPS_ID_ACCEPT
Definition: ps2ip_rpc.h:17
@ PS2IPS_ID_SETCONFIG
Definition: ps2ip_rpc.h:27
@ PS2IPS_ID_GETHOSTBYNAME
Definition: ps2ip_rpc.h:35
@ PS2IPS_ID_GETCONFIG
Definition: ps2ip_rpc.h:28
@ PS2IPS_ID_CONNECT
Definition: ps2ip_rpc.h:20
@ PS2IPS_ID_RECV
Definition: ps2ip_rpc.h:22
@ PS2IPS_ID_LISTEN
Definition: ps2ip_rpc.h:21
@ PS2IPS_ID_GETPEERNAME
Definition: ps2ip_rpc.h:32
@ PS2IPS_ID_SENDTO
Definition: ps2ip_rpc.h:25
@ PS2IPS_ID_RECVFROM
Definition: ps2ip_rpc.h:23
@ PS2IPS_ID_SETSOCKOPT
Definition: ps2ip_rpc.h:34
@ PS2IPS_ID_SELECT
Definition: ps2ip_rpc.h:29
@ PS2IPS_ID_DISCONNECT
Definition: ps2ip_rpc.h:19
@ PS2IPS_ID_BIND
Definition: ps2ip_rpc.h:18
@ PS2IPS_ID_GETSOCKOPT
Definition: ps2ip_rpc.h:33
@ PS2IPS_ID_GETSOCKNAME
Definition: ps2ip_rpc.h:31
@ PS2IPS_ID_SOCKET
Definition: ps2ip_rpc.h:26
#define PS2IP_IRX
Definition: ps2ip_rpc.h:14
socket_pkt socket_pkt
Definition: ps2ipc.c:36
int recvfrom(int s, void *mem, int len, unsigned int flags, struct sockaddr *from, int *fromlen)
Definition: ps2ipc.c:273
static ip_addr_t dns_servers[DNS_MAX_SERVERS]
Definition: ps2ipc.c:54
char netif_name[8]
Definition: ps2ipc.c:38
static void recv_intr(void *data_raw)
Definition: ps2ipc.c:225
dns_getserver_res_pkt dns_getserver_res_pkt
Definition: ps2ipc.c:47
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
Definition: ps2ipc.c:640
int select(int maxfdp1, struct fd_set *readset, struct fd_set *writeset, struct fd_set *exceptset, struct timeval *timeout)
Definition: ps2ipc.c:474
s_recv_pkt s_recv_pkt
Definition: ps2ipc.c:33
int ioctlsocket(int s, long cmd, void *argp)
Definition: ps2ipc.c:525
int recv(int s, void *mem, int len, unsigned int flags)
Definition: ps2ipc.c:240
gethostbyname_res_pkt gethostbyname_res_pkt
Definition: ps2ipc.c:45
u8 numdns
Definition: ps2ipc.c:48
static struct @46 _rpc_buffer
int ps2ip_setconfig(t_ip_info *ip_info)
Definition: ps2ipc.c:426
void ps2ip_deinit(void)
Definition: ps2ipc.c:86
int ps2ip_init(void)
Definition: ps2ipc.c:60
r_recv_pkt r_recv_pkt
Definition: ps2ipc.c:34
int send(int s, void *dataptr, int size, unsigned int flags)
Definition: ps2ipc.c:310
static SifRpcClientData_t _ps2ip
Definition: ps2ipc.c:26
int getpeername(int s, struct sockaddr *name, int *namelen)
Definition: ps2ipc.c:583
const ip_addr_t ip_addr_any
Definition: ps2ipc.c:58
static int _init_check
Definition: ps2ipc.c:24
char hostname[256]
Definition: ps2ipc.c:44
static int _intr_data[32]
Definition: ps2ipc.c:52
int sendto(int s, void *dataptr, int size, unsigned int flags, struct sockaddr *to, int tolen)
Definition: ps2ipc.c:354
getsockopt_pkt getsockopt_pkt
Definition: ps2ipc.c:41
int ps2ip_getconfig(char *netif_name, t_ip_info *ip_info)
Definition: ps2ipc.c:450
int bind(int s, struct sockaddr *name, int namelen)
Definition: ps2ipc.c:125
static int lock_sema
Definition: ps2ipc.c:25
dns_setserver_pkt dns_setserver_pkt
Definition: ps2ipc.c:46
int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
Definition: ps2ipc.c:610
setsockopt_pkt setsockopt_pkt
Definition: ps2ipc.c:43
int connect(int s, struct sockaddr *name, int namelen)
Definition: ps2ipc.c:174
ioctl_pkt ioctl_pkt
Definition: ps2ipc.c:40
send_pkt send_pkt
Definition: ps2ipc.c:35
getsockopt_res_pkt getsockopt_res_pkt
Definition: ps2ipc.c:42
select_pkt select_pkt
Definition: ps2ipc.c:39
s32 s
Definition: ps2ipc.c:30
int listen(int s, int backlog)
Definition: ps2ipc.c:200
int disconnect(int s)
Definition: ps2ipc.c:151
int getsockname(int s, struct sockaddr *name, int *namelen)
Definition: ps2ipc.c:556
int accept(int s, struct sockaddr *addr, int *addrlen)
Definition: ps2ipc.c:95
t_ip_info ip_info
Definition: ps2ipc.c:37
listen_pkt listen_pkt
Definition: ps2ipc.c:32
int socket(int domain, int type, int protocol)
Definition: ps2ipc.c:400
cmd_pkt cmd_pkt
Definition: ps2ipc.c:31
u8 buffer[512]
Definition: ps2ipc.c:49
s32 result
Definition: ps2ipc.c:29
struct hostent * gethostbyname(const char *name)
void dns_setserver(u8 numdns, ip_addr_t *dnsserver)
const ip_addr_t * dns_getserver(u8 numdns)
void SifWriteBackDCache(void *ptr, int size)
int SifBindRpc(SifRpcClientData_t *client, int rpc_number, int mode)
int SifCallRpc(SifRpcClientData_t *client, int rpc_number, int mode, void *send, int ssize, void *receive, int rsize, SifRpcEndFunc_t end_function, void *end_param)
struct t_SifRpcServerData * server
Definition: sifrpc.h:142
s32 socket
Definition: ps2ip_rpc.h:89
struct sockaddr sockaddr
Definition: ps2ip_rpc.h:90
s32 len
Definition: ps2ip_rpc.h:91
int init_count
Definition: kernel.h:218
int max_count
Definition: kernel.h:217
u32 option
Definition: kernel.h:221
u32 attr
Definition: kernel.h:220
Definition: tcpip.h:1602
int h_addrtype
Definition: tcpip.h:1706
char * h_name
Definition: tcpip.h:1703
char ** h_addr_list
Definition: tcpip.h:1708
int h_length
Definition: tcpip.h:1707
char ** h_aliases
Definition: tcpip.h:1704
void * argp
Definition: ps2ip_rpc.h:145
s32 result
Definition: ps2ip_rpc.h:142
u32 value
Definition: ps2ip_rpc.h:146
s32 backlog
Definition: ps2ip_rpc.h:101
struct sockaddr sockaddr
Definition: ps2ip_rpc.h:85
u8 sbuffer[64]
Definition: fileXio.h:74
void * sbuf
Definition: fileXio.h:72
int ssize
Definition: fileXio.h:70
u8 ebuffer[64]
Definition: fileXio.h:75
void * ebuf
Definition: fileXio.h:73
int esize
Definition: fileXio.h:71
struct fd_set * readset_p
Definition: ps2ip_rpc.h:131
struct fd_set exceptset
Definition: ps2ip_rpc.h:136
struct timeval * timeout_p
Definition: ps2ip_rpc.h:129
struct fd_set * writeset_p
Definition: ps2ip_rpc.h:132
struct timeval timeout
Definition: ps2ip_rpc.h:130
struct fd_set readset
Definition: ps2ip_rpc.h:134
struct fd_set writeset
Definition: ps2ip_rpc.h:135
s32 maxfdp1
Definition: ps2ip_rpc.h:126
s32 result
Definition: ps2ip_rpc.h:127
struct fd_set * exceptset_p
Definition: ps2ip_rpc.h:133
void * ee_addr
Definition: ps2ip_rpc.h:68
s32 malign
Definition: ps2ip_rpc.h:70
s32 socket
Definition: ps2ip_rpc.h:65
struct sockaddr sockaddr
Definition: ps2ip_rpc.h:69
u8 malign_buff[64]
Definition: ps2ip_rpc.h:72
s32 flags
Definition: ps2ip_rpc.h:67
s32 length
Definition: ps2ip_rpc.h:66
u8 buffer[128]
Definition: ps2ip_rpc.h:121
s32 domain
Definition: ps2ip_rpc.h:50
s32 type
Definition: ps2ip_rpc.h:51
s32 protocol
Definition: ps2ip_rpc.h:52
#define NULL
Definition: tamtypes.h:91
signed int s32
Definition: tamtypes.h:58
unsigned int u32
Definition: tamtypes.h:30
unsigned char u8
Definition: tamtypes.h:23
#define IPADDR4_INIT(u32val)
Definition: tcpip.h:748
int socklen_t
Definition: tcpip.h:1350
#define ip_addr_copy(dest, src)
Definition: tcpip.h:760
#define DNS_MAX_SERVERS
Definition: tcpip.h:61
#define IPADDR_ANY
Definition: tcpip.h:215
ip4_addr_t ip_addr_t
Definition: tcpip.h:747
#define IP4_ADDR_ANY
Definition: tcpip.h:847