32,6 → 32,7 |
|
/** @file |
*/ |
|
#include <async.h> |
#include <errno.h> |
#include <stdio.h> |
39,28 → 40,37 |
#include <ipc/services.h> |
//#include <sys/mman.h> |
|
#include "../err.h" |
#include "../messages.h" |
#include "../modules.h" |
#include "../netif/netif_device_id_type.h" |
|
#include "ip.h" |
|
struct { |
ipc_callid_t tcp_accepted; |
} ip_globals; |
ip_globals_t ip_globals; |
|
DEVICE_MAP_IMPLEMENT( ip_netifs, ip_netif_t ) |
|
/** Initializes the module. |
*/ |
int ip_initialize( void ){ |
ip_netifs_initialize( & ip_globals.netifs ); |
return EOK; |
} |
|
int ip_call( ipc_callid_t callid ){ |
ip_globals.tcp_accepted = callid; |
return EOK; |
} |
|
int ip_message( ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t arg3, ipcarg_t *result1, ipcarg_t *result2, ipcarg_t *result3 ){ |
int ip_message( ipc_callid_t callid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t arg3, ipcarg_t * result1, ipcarg_t * result2, ipcarg_t * result3 ){ |
ERROR_DECLARE; |
|
ip_netif_ref ip_netif; |
|
// printf( "\nIP message %d", method ); |
switch( method ){ |
// case IPC_M_CONNECT_ME_TO: |
// case IPC_M_CONNECT_TO_ME: |
case IPC_M_PHONE_HUNGUP: |
return EOK; |
case NET_IP_ECHO: |
68,6 → 78,23 |
if( result2 ) * result2 = arg2; |
if( result3 ) * result3 = arg3; |
return EOK; |
case NET_IL_DEVICE: |
ip_netif = ( ip_netif_ref ) malloc( sizeof( ip_netif_t )); |
if( ! ip_netif ) return ENOMEM; |
ip_netif->device_id = arg1; |
ip_netif->phone = connect_to_service( arg2 ); |
if( ERROR_OCCURED( ipc_call_sync_1_0( ip_netif->phone, NET_LL_REGISTER, arg1 ))){ |
free( ip_netif ); |
return ERROR_CODE; |
} |
if( ERROR_OCCURED( ip_netifs_add( & ip_globals.netifs, ip_netif->device_id, ip_netif ))){ |
free( ip_netif ); |
return ERROR_CODE; |
} |
return EOK; |
case NET_IP_TCP_REGISTER: |
ip_globals.tcp_phone = ipc_connect_to_me( callid, 0, 0, 0, 0 ); |
return EOK; |
} |
return ENOTSUP; |
} |