0,0 → 1,132 |
/* |
* Copyright (c) 2009 Lukas Mejdrech |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
|
/** @addtogroup arp |
* @{ |
*/ |
|
/** @file |
*/ |
|
#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" |
|
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: |
Added: svn:eol-style |
+native |
\ No newline at end of property |