Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 3886 → Rev 3901

/branches/network/uspace/srv/net/il/ip/ip_messages.h
37,6 → 37,8
#ifndef __NET_IP_MESSAGES_H__
#define __NET_IP_MESSAGES_H__
 
#include <async.h>
 
#include <ipc/ipc.h>
 
#include "../../err.h"
67,22 → 69,7
async_req_5_5( ip_phone, NET_IP_ECHO, ( arg1 ), ( arg2 ), ( arg3 ), ( arg4 ), ( arg5 ), ( answer1 ), ( answer2 ), ( answer3 ), ( answer4 ), ( answer5 ))
 
#define ip_send( ip_phone, device_id, packet ) \
{ \
ERROR_DECLARE; \
\
aid_t message; \
ipc_call_t answer; \
ipcarg_t result; \
\
message = async_send_1(( ip_phone ), NET_IP_SEND, ( device_id ), & answer ); \
if( ERROR_OCCURED( packet_send(( packet ), ( ip_phone )))){ \
async_wait_for( message, NULL ); \
result = ERROR_CODE; \
}else{ \
async_wait_for( message, & result ); \
} \
result; \
}
async_msg_1( ip_phone, NET_IP_SEND, packet_get_id( packet ))
 
#endif
 
/branches/network/uspace/srv/net/il/ip/ip.c
49,7 → 49,7
#include "../../include/socket.h"
#include "../../netif/device.h"
#include "../../structures/measured_strings.h"
#include "../../structures/packet/packet.h"
#include "../../structures/packet/packet_client.h"
 
#include "ip.h"
#include "ip_messages.h"
58,6 → 58,7
#define DEFAULT_IPV 4
 
#define IPC_GET_DEVICE( call ) ( device_id_t ) IPC_GET_ARG1( * call )
#define IPC_GET_PACKET( call ) ( packet_id_t ) IPC_GET_ARG1( * call )
#define IPC_GET_PROTO( call ) ( int ) IPC_GET_ARG1( * call )
#define IPC_GET_SERVICE( call ) ( services_t ) IPC_GET_ARG2( * call )
#define IPC_GET_STATE( call ) ( device_state_t ) IPC_GET_ARG2( * call )
213,12 → 214,9
// TODO packer received
case NET_IL_RECEIVED:
case NET_NIL_RECEIVED:
if( ERROR_OCCURED( result = packet_receive( & packet ))){
ipc_answer_0( callid, ERROR_CODE );
continue;
if( ! ERROR_OCCURED( result = packet_translate( ip_globals.networking_phone, & packet, IPC_GET_PACKET( & call )))){
//result = ip_receive_message( IPC_GET_DEVICE( call ), packet );
}
//result = ip_receive_message( IPC_GET_DEVICE( call ), packet );
packet_destroy( packet );
ipc_answer_0( callid, result );
}
}
249,6 → 247,7
int ip_send_message( device_id_t device_id, packet_t packet ){
// TODO send packet
printf( "Packet to send via %d: %s", device_id, packet_get_data( packet ));
packet_release( ip_globals.networking_phone, packet_get_id( packet ));
return EOK;
}
 
269,7 → 268,10
case IPC_M_CONNECT_TO_ME:
return ip_register_message( IPC_GET_PROTO( call ), IPC_GET_PHONE( call ));
case NET_IP_SEND:
ERROR_PROPAGATE( packet_receive( & packet ));
if( ERROR_OCCURED( packet_translate( ip_globals.networking_phone, & packet, IPC_GET_PACKET( call )))){
printf( "\nIP send E %d", ERROR_CODE );
return ERROR_CODE;
}
return ip_send_message( IPC_GET_DEVICE( call ), packet );
}
return ENOTSUP;
/branches/network/uspace/srv/net/il/ip/Makefile
48,6 → 48,7
../../modules.c \
../../structures/measured_strings.c \
../../structures/packet/packet.c \
../../structures/packet/packet_client.c \
../../sockaddr.c
 
DEFS += -D IP_BUNDLE=1 -D $(NAME)_message=module_message -D $(NAME)_start_module=module_start -D $(NAME)_print_name=module_print_name
/branches/network/uspace/srv/net/il/ip/ip_module.c
42,6 → 42,8
#include "../../err.h"
#include "../../modules.h"
 
#include "../../structures/packet/packet.h"
 
#include "ip.h"
#include "ip_module.h"
 
63,6 → 65,7
 
async_set_client_connection( client_connection );
ip_globals.networking_phone = connect_to_service( SERVICE_NETWORKING );
ERROR_PROPAGATE( pm_init());
ERROR_PROPAGATE( ip_initialize());
ERROR_PROPAGATE( REGISTER_ME( SERVICE_IP, & phonehash ));