IP module interface. More...
#include <async.h>
#include <ipc/services.h>
#include "../include/device.h"
#include "../structures/packet/packet.h"
#include "in.h"
#include "ip_codes.h"
#include "socket_codes.h"
IP module interface | |
This interface is used by other modules. | |
typedef void * | ip_pseudo_header_ref |
Type definition of the internet pseudo header pointer. | |
typedef int(* | tl_received_msg_t )(device_id_t device_id, packet_t packet, services_t receiver, services_t error) |
The transport layer notification function type definition. | |
int | ip_bind_service (services_t service, int protocol, services_t me, async_client_conn_t receiver, tl_received_msg_t tl_received_msg) |
Creates bidirectional connection with the ip module service and registers the message receiver. | |
int | ip_device_req (int ip_phone, device_id_t device_id, services_t netif) |
Registers the new device. | |
int | ip_send_msg (int ip_phone, device_id_t device_id, packet_t packet, services_t sender, services_t error) |
Sends the packet queue. | |
int | ip_connect_module (services_t service) |
Connects to the IP module. | |
int | ip_add_route_req (int ip_phone, device_id_t device_id, in_addr_t address, in_addr_t netmask, in_addr_t gateway) |
Adds a route to the device routing table. | |
int | ip_set_gateway_req (int ip_phone, device_id_t device_id, in_addr_t gateway) |
Sets the default gateway. | |
int | ip_packet_size_req (int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension) |
Returns the device packet dimension for sending. | |
int | ip_received_error_msg (int ip_phone, device_id_t device_id, packet_t packet, services_t target, services_t error) |
Notifies the IP module about the received error notification packet. | |
int | ip_get_route_req (int ip_phone, ip_protocol_t protocol, const struct sockaddr *destination, socklen_t addrlen, device_id_t *device_id, ip_pseudo_header_ref *header, size_t *headerlen) |
Returns the device identifier and the IP pseudo header based on the destination address. |
IP module interface.
The same interface is used for standalone remote modules as well as for bundle modules. The standalone remote modules have to be compiled with the ip_remote.c source file. The bundle modules with the ip.c source file.