Network interface layer module interface. More...
#include <async.h>
#include <errno.h>
#include <ipc/ipc.h>
#include "../messages.h"
#include "../structures/measured_strings.h"
#include "../structures/packet/packet.h"
#include "../nil/nil_messages.h"
#include "device.h"
Network interface layer module interface | |
This interface is used by other modules. | |
#define | nil_get_addr_req(nil_phone, device_id, address, data) generic_get_addr_req(nil_phone, NET_NIL_ADDR, device_id, address, data) |
Returns the device local hardware address. | |
#define | nil_get_broadcast_addr_req(nil_phone, device_id, address, data) generic_get_addr_req(nil_phone, NET_NIL_BROADCAST_ADDR, device_id, address, data) |
Returns the device broadcast hardware address. | |
#define | nil_send_msg(nil_phone, device_id, packet, sender) generic_send_msg(nil_phone, NET_NIL_SEND, device_id, packet_get_id(packet), sender, 0) |
Sends the packet queue. | |
#define | nil_packet_size_req(nil_phone, device_id, packet_dimension) generic_packet_size_req(nil_phone, NET_NIL_PACKET_SPACE, device_id, packet_dimension) |
Returns the device packet dimension for sending. | |
#define | nil_device_req(nil_phone, device_id, mtu, netif_service) generic_device_req(nil_phone, NET_NIL_DEVICE, device_id, mtu, netif_service) |
Registers new device or updates the MTU of an existing one. | |
#define | nil_bind_service(service, device_id, me, receiver) bind_service(service, device_id, me, 0, receiver); |
Creates bidirectional connection with the network interface layer module and registers the message receiver. | |
int | nil_device_state_msg (int nil_phone, device_id_t device_id, int state) |
Notifies the network interface layer about the device state change. | |
int | nil_received_msg (int nil_phone, device_id_t device_id, packet_t packet, services_t target) |
Passes the packet queue to the network interface layer. |
Network interface layer module interface.
The same interface is used for standalone remote device modules as well as for bundle device modules. The standalone remote device modules have to be compiled with the nil_remote.c source file. The bundle device modules with the appropriate network interface layer source file (eth.c etc.). The upper layers cannot be bundled with the network interface layer.