Subversion Repositories HelenOS

Compare Revisions

No changes between revisions

Ignore whitespace Rev 4271 → Rev 4307

/branches/network/uspace/srv/net/include/arp_interface.h/arp_messages.h
33,100 → 33,21
/** @file
*/
 
#ifndef __NET_ARP_MESSAGES_H__
#define __NET_ARP_MESSAGES_H__
#ifndef __NET_ARP_INTERFACE_H__
#define __NET_ARP_INTERFACE_H__
 
#include <async.h>
#include <errno.h>
 
#include <ipc/ipc.h>
 
#include "../messages.h"
 
#include "../structures/measured_strings.h"
 
#include "device.h"
 
typedef enum{
/* ( device_id, nil_service, proto ), measured_strings_send( proto_addr ) */
NET_ARP_DEVICE = NET_ARP_FIRST,
/* ( device_id, protocol ), measured_strings_send( target ), measured_strings_return( translation ) */
NET_ARP_TRANSLATE,
/* ( device_id ) */
NET_ARP_CLEAR_DEVICE,
/* () */
NET_ARP_CLEAN_CACHE,
} arp_messages;
int arp_device_req( int arp_phone, device_id_t device_id, services_t protocol, services_t netif, measured_string_ref address );
int arp_translate_req( int arp_phone, device_id_t device_id, services_t protocol, measured_string_ref address, measured_string_ref * translation, char ** data );
int arp_clear_device_req( int arp_phone, device_id_t device_id );
int arp_clean_cache_req( int arp_phone );
int arp_connect_module( services_t service );
int arp_task_get_id( void );
 
static inline int arp_device_req( int arp_phone, device_id_t device_id, services_t protocol, services_t netif, measured_string_ref address );
static inline int arp_translate_req( int arp_phone, device_id_t device_id, services_t protocol, measured_string_ref address, measured_string_ref * translation, char ** data );
static inline int arp_clear_device_req( int arp_phone, device_id_t device_id );
static inline int arp_clean_cache_req( int arp_phone );
 
#if ARP_BUNDLE
 
#include "../il/arp/arp_wrappers.h"
 
/** Returns the protocol service message parameter.
*/
#define ARP_GET_PROTO( call ) ( services_t ) IPC_GET_ARG2( * call )
 
static inline int arp_device_req( int arp_phone, device_id_t device_id, services_t protocol, services_t netif, measured_string_ref address ){
return arp_device_wrapper( device_id, netif, protocol, address );
}
 
static inline int arp_translate_req( int arp_phone, device_id_t device_id, services_t protocol, measured_string_ref address, measured_string_ref * translation, char ** data ){
return arp_translate_wrapper( device_id, protocol, address, translation, data );
}
 
static inline int arp_clear_device_req( int arp_phone, device_id_t device_id ){
return arp_clear_device_wrapper( device_id );
}
 
static inline int arp_clean_cache_req( int arp_phone ){
return arp_clean_cache_wrapper();
}
 
#else
 
static inline int arp_device_req( int arp_phone, device_id_t device_id, services_t protocol, services_t netif, measured_string_ref address ){
aid_t message_id;
ipcarg_t result;
 
message_id = async_send_3( arp_phone, NET_ARP_DEVICE, device_id, protocol, netif, NULL );
measured_strings_send( arp_phone, address, 1 );
async_wait_for( message_id, & result );
return result;
}
 
static inline int arp_translate_req( int arp_phone, device_id_t device_id, services_t protocol, measured_string_ref address, measured_string_ref * translation, char ** data ){
aid_t message_id;
ipcarg_t result;
int string;
 
if( !( address && data )) return EBADMEM;
message_id = async_send_2( arp_phone, NET_ARP_TRANSLATE, device_id, protocol, NULL );
measured_strings_send( arp_phone, address, 1 );
string = measured_strings_return( arp_phone, translation, data, 1 );
async_wait_for( message_id, & result );
if(( string == EOK ) && ( result != EOK )){
free( * translation );
free( * data );
}
return result;
}
 
static inline int arp_clear_device_req( int arp_phone, device_id_t device_id ){
return async_req_1_0( arp_phone, NET_ARP_CLEAR_DEVICE, device_id );
}
 
static inline int arp_clean_cache_req( int arp_phone ){
return async_req_0_0( arp_phone, NET_ARP_CLEAN_CACHE );
}
 
#endif
 
#endif
 
/** @}
*/
Property changes:
Added: svn:mergeinfo