ps2sdk  1.1
A collection of Open Source libraries used for developing applications on Sony's PlayStation 2® (PS2).
netman.c
Go to the documentation of this file.
1 #include <errno.h>
2 #include <string.h>
3 #include <kernel.h>
4 #include <netman.h>
5 #include <netman_rpc.h>
6 
7 #include "internal.h"
8 #include "rpc_client.h"
9 #include "rpc_server.h"
10 
12 static unsigned char IsInitialized=0, IsNetStackInitialized=0;
13 static char NIFLinkState = 0;
14 
15 /* Upon stack registration on the IOP side, this function will be called.
16  But the network stack won't be updated then because the RPC wouldn't have been completely initialized,
17  which would prevent the stack from performing some actions like sending Gratuitous Arp packets.
18 
19  The NIF status updated will be sent again when the RPC is fully initialized, as shown in NetManRegisterNetworkStack(). */
20 void NetManToggleGlobalNetIFLinkState(unsigned char state)
21 {
22  NIFLinkState = state;
23 
25 }
26 
28 {
29  return NIFLinkState;
30 }
31 
33 {
35  {
36  if(NIFLinkState)
38  else
40  }
41 }
42 
43 int NetManInit(void)
44 {
45  int result;
46 
47  if(!IsInitialized)
48  {
49  if((result=NetManInitRPCServer())==0)
50  {
52  }
53  }else result = 0;
54 
55  return result;
56 }
57 
58 void NetManDeinit(void)
59 {
60  if(IsInitialized)
61  {
63 
66  IsInitialized = 0;
67  }
68 }
69 
71 {
72  int result;
73 
74  if((result=NetManInit())==0)
75  {
77  {
79  {
80  memcpy(&MainNetProtStack, stack, sizeof(MainNetProtStack));
82  if((result=NetManRPCAllocRxBuffers()) == 0)
84  }
85  }
86  else result=0;
87  }
88 
89  return result;
90 }
91 
93 {
95  {
97  memset(&MainNetProtStack, 0, sizeof(MainNetProtStack));
98 
100  }
101 }
102 
103 void NetManNetIFXmit(void)
104 {
105  if(IsInitialized)
107 }
108 
109 int NetManIoctl(unsigned int command, void *arg, unsigned int arg_len, void *output, unsigned int length)
110 {
111  return IsInitialized?NetManRpcIoctl(command, arg, arg_len, output, length):-1;
112 }
113 
114 void *NetManNetProtStackAllocRxPacket(unsigned int length, void **payload)
115 {
117 }
118 
120 {
122 }
123 
125 {
128 }
129 
130 int NetManTxPacketNext(void **payload)
131 {
132  return IsInitialized?MainNetProtStack.NextTxPacket(payload):-1;
133 }
134 
136 {
137  if(IsInitialized)
139 }
140 
141 int NetManTxPacketAfter(void **payload)
142 {
143  return IsInitialized?MainNetProtStack.AfterTxPacket(payload):-1;
144 }
145 
146 void NetManNetProtStackReallocRxPacket(void *packet, unsigned int length)
147 {
149 }
packet_t packet
Definition: font.c:24
s32 command
Definition: libpad.c:156
static char NIFLinkState
Definition: netman.c:13
int NetManTxPacketAfter(void **payload)
Definition: netman.c:141
void NetManNetIFXmit(void)
Definition: netman.c:103
static unsigned char IsNetStackInitialized
Definition: netman.c:12
void * NetManNetProtStackAllocRxPacket(unsigned int length, void **payload)
Definition: netman.c:114
void NetManUnregisterNetworkStack(void)
Definition: netman.c:92
void NetManUpdateStackNIFLinkState(void)
Definition: netman.c:32
int NetManGetGlobalNetIFLinkState(void)
Definition: netman.c:27
static struct NetManNetProtStack MainNetProtStack
Definition: netman.c:11
int NetManIoctl(unsigned int command, void *arg, unsigned int arg_len, void *output, unsigned int length)
Definition: netman.c:109
int NetManTxPacketNext(void **payload)
Definition: netman.c:130
static unsigned char IsInitialized
Definition: netman.c:12
void NetManToggleGlobalNetIFLinkState(unsigned char state)
Definition: netman.c:20
void NetManNetProtStackFreeRxPacket(void *packet)
Definition: netman.c:119
int NetManRegisterNetworkStack(const struct NetManNetProtStack *stack)
Definition: netman.c:70
void NetManNetProtStackReallocRxPacket(void *packet, unsigned int length)
Definition: netman.c:146
void NetManNetProtStackEnQRxPacket(void *packet)
Definition: netman.c:124
int NetManInit(void)
Definition: netman.c:43
void NetManDeinit(void)
Definition: netman.c:58
void NetManTxPacketDeQ(void)
Definition: netman.c:135
s32 result
Definition: rpc_client.c:23
int NetManRPCUnregisterNetworkStack(void)
Definition: rpc_client.c:142
int NetManRPCRegisterNetworkStack(void)
Definition: rpc_client.c:109
int NetManRpcIoctl(unsigned int command, void *arg, unsigned int arg_len, void *output, unsigned int length)
Definition: rpc_client.c:173
void NetManDeinitRPCClient(void)
Definition: rpc_client.c:160
int NetManInitRPCClient(void)
Definition: rpc_client.c:57
void NetManRpcNetIFXmit(void)
Definition: rpc_client.c:284
int NetManInitRPCServer(void)
Definition: rpc_server.c:209
int NetManRPCAllocRxBuffers(void)
Definition: rpc_server.c:65
void NetManDeinitRPCServer(void)
Definition: rpc_server.c:236
void(* FreeRxPacket)(void *packet)
Definition: netman.h:20
void *(* AllocRxPacket)(unsigned int size, void **payload)
Definition: netman.h:19
void(* LinkStateDown)(void)
Definition: netman.h:18
void(* LinkStateUp)(void)
Definition: netman.h:17
void(* DeQTxPacket)(void)
Definition: netman.h:23
void(* ReallocRxPacket)(void *packet, unsigned int size)
Definition: netman.h:25
void(* EnQRxPacket)(void *packet)
Definition: netman.h:21
int(* NextTxPacket)(void **payload)
Definition: netman.h:22
int(* AfterTxPacket)(void **payload)
Definition: netman.h:24
#define NULL
Definition: tamtypes.h:91