33,21 → 33,100 |
/** @file |
*/ |
|
#ifndef __NET_ARP_INTERFACE_H__ |
#define __NET_ARP_INTERFACE_H__ |
#ifndef __NET_ARP_MESSAGES_H__ |
#define __NET_ARP_MESSAGES_H__ |
|
#include <async.h> |
#include <errno.h> |
|
#include <ipc/ipc.h> |
|
#include "../messages.h" |
|
#include "../structures/measured_strings.h" |
|
#include "device.h" |
|
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 ); |
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; |
|
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: |
Deleted: svn:mergeinfo |