/branches/network/uspace/srv/net/il/il_messages.h |
---|
75,12 → 75,12 |
/*@{*/ |
/** Returns the protocol number message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define IL_GET_PROTO( call ) ( int ) IPC_GET_ARG1( * call ) |
/** Returns the registering service message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define IL_GET_SERVICE( call ) ( services_t ) IPC_GET_ARG2( * call ) |
/branches/network/uspace/srv/net/il/arp/arp_messages.h |
---|
72,7 → 72,7 |
/*@{*/ |
/** Returns the protocol service message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define ARP_GET_NETIF( call ) ( services_t ) IPC_GET_ARG2( * call ) |
/branches/network/uspace/srv/net/il/arp/arp.c |
---|
74,9 → 74,9 |
/** Creates new protocol specific data. |
* Allocates and returns the needed memory block as the proto parameter. |
* @param proto The allocated protocol specific data. Output parameter. |
* @param service The protocol module service. Input parameter. |
* @param address The actual protocol device address. Input parameter. |
* @param[out] proto The allocated protocol specific data. |
* @param[in] service The protocol module service. |
* @param[in] address The actual protocol device address. |
* @returns EOK on success. |
* @returns ENOMEM if there is not enough memory left. |
*/ |
83,9 → 83,9 |
int arp_proto_create( arp_proto_ref * proto, services_t service, measured_string_ref address ); |
/** Clears the device specific data. |
* @param device The device specific data. |
* @param[in] device The device specific data. |
*/ |
void clear_device( arp_device_ref device ); |
void arp_clear_device( arp_device_ref device ); |
/** @name Message processing functions |
*/ |
93,10 → 93,10 |
/** Registers the device. |
* Creates new device entry in the cache or updates the protocol address if the device with the device identifier and the driver service exists. |
* @param device_id The device identifier. Input parameter. |
* @param service The device driver service. Input parameter. |
* @param protocol The protocol service. Input parameter. |
* @param address The actual device protocol address. |
* @param[in] device_id The device identifier. |
* @param[in] service The device driver service. |
* @param[in] protocol The protocol service. |
* @param[in] address The actual device protocol address. |
* @returns EOK on success. |
* @returns EEXIST if another device with the same device identifier and different driver service exists. |
* @returns ENOMEM if there is not enough memory left. |
106,9 → 106,9 |
/** Returns the hardware address for the given protocol address. |
* Sends the ARP request packet if the hardware address is not found in the cache. |
* @param device_id The device identifier. Input parameter. |
* @param protocol The protocol service. Input parameter. |
* @param target The target protocol address. Input parameter. |
* @param[in] device_id The device identifier. |
* @param[in] protocol The protocol service. |
* @param[in] target The target protocol address. |
* @returns The hardware address of the target. |
* @returns NULL if the target parameter is NULL. |
* @returns NULL if the device is not found. |
120,8 → 120,8 |
/** Processes the received ARP packet. |
* Updates the source hardware address if the source entry exists or the packet is targeted to my protocol address. |
* Responses to the ARP request if the packet is the ARP request and is targeted to my address. |
* @param device_id The source device identifier. Input parameter. |
* @param packet The received packet. Input/output parameter. |
* @param[in] device_id The source device identifier. |
* @param[in,out] packet The received packet. |
* @returns EOK on success and the packet is no longer needed. |
* @returns 1 on success and the packet has been reused. |
* @returns EINVAL if the packet is too small to carry an ARP packet. |
133,8 → 133,8 |
int arp_receive_message( device_id_t device_id, packet_t packet ); |
/** Updates the device content length according to the new MTU value. |
* @param device_id The device identifier. Input parameter. |
* @param mtu The new mtu value. Input parameter. |
* @param[in] device_id The device identifier. |
* @param[in] mtu The new mtu value. |
* @returns ENOENT if device is not found. |
* @returns EOK on success. |
*/ |
161,7 → 161,7 |
fibril_rwlock_write_unlock( & arp_globals.lock ); |
return ENOENT; |
} |
clear_device( device ); |
arp_clear_device( device ); |
printf( "Device %d cleared\n", device_id ); |
fibril_rwlock_write_unlock( & arp_globals.lock ); |
return EOK; |
195,7 → 195,7 |
for( count = arp_cache_count( & arp_globals.cache ) - 1; count >= 0; -- count ){ |
device = arp_cache_get_index( & arp_globals.cache, count ); |
if( device ){ |
clear_device( device ); |
arp_clear_device( device ); |
if( device->addr_data ) free( device->addr_data ); |
if( device->broadcast_data ) free( device->broadcast_data ); |
} |
481,7 → 481,7 |
return EOK; |
} |
void clear_device( arp_device_ref device ){ |
void arp_clear_device( arp_device_ref device ){ |
int count; |
arp_proto_ref proto; |
/branches/network/uspace/srv/net/il/arp/arp_module.c |
---|
64,7 → 64,7 |
/** Starts the ARP module. |
* Initializes the client connection serving function, initializes the module, registers the module service and starts the async manager, processing IPC messages in an infinite loop. |
* @param client_connection The client connection processing function. The module skeleton propagates its own one. Input parameter. |
* @param[in] client_connection The client connection processing function. The module skeleton propagates its own one. |
* @returns EOK on successful module termination. |
* @returns Other error codes as defined for the arp_initialize() function. |
* @returns Other error codes as defined for the REGISTER_ME() macro function. |
72,10 → 72,10 |
int module_start( async_client_conn_t client_connection ); |
/** Processes the ARP message. |
* @param callid The message identifier. Input parameter. |
* @param call The message parameters. Input parameter. |
* @param answer The message answer parameters. Output parameter. |
* @param answer_count The last parameter for the actual answer in the answer parameter. Output parameter. |
* @param[in] callid The message identifier. |
* @param[in] call The message parameters. |
* @param[out] answer The message answer parameters. |
* @param[out] answer_count The last parameter for the actual answer in the answer parameter. |
* @returns EOK on success. |
* @returns Other error codes as defined for the arp_message() function. |
*/ |
/branches/network/uspace/srv/net/il/arp/arp_module.h |
---|
41,7 → 41,7 |
#include <ipc/ipc.h> |
/** Initializes the ARP module. |
* @param client_connection The client connection processing function. The module skeleton propagates its own one. Input parameter. |
* @param[in] client_connection The client connection processing function. The module skeleton propagates its own one. |
* @returns EOK on success. |
* @returns ENOMEM if there is not enough memory left. |
*/ |
48,10 → 48,10 |
int arp_initialize( async_client_conn_t client_connection ); |
/** Processes the ARP message. |
* @param callid The message identifier. Input parameter. |
* @param call The message parameters. Input parameter. |
* @param answer The message answer parameters. Output parameter. |
* @param answer_count The last parameter for the actual answer in the answer parameter. Output parameter. |
* @param[in] callid The message identifier. |
* @param[in] call The message parameters. |
* @param[out] answer The message answer parameters. |
* @param[out] answer_count The last parameter for the actual answer in the answer parameter. |
* @returns EOK on success. |
* @returns ENOTSUP if the message is not known. |
* @see arp_interface.h |
/branches/network/uspace/srv/net/il/ip/ip_module.h |
---|
41,7 → 41,7 |
#include <ipc/ipc.h> |
/** Initializes the IP module. |
* @param client_connection The client connection processing function. The module skeleton propagates its own one. Input parameter. |
* @param[in] client_connection The client connection processing function. The module skeleton propagates its own one. |
* @returns EOK on success. |
* @returns ENOMEM if there is not enough memory left. |
*/ |
48,10 → 48,10 |
int ip_initialize( async_client_conn_t client_connection ); |
/** Processes the IP message. |
* @param callid The message identifier. Input parameter. |
* @param call The message parameters. Input parameter. |
* @param answer The message answer parameters. Output parameter. |
* @param answer_count The last parameter for the actual answer in the answer parameter. Output parameter. |
* @param[in] callid The message identifier. |
* @param[in] call The message parameters. |
* @param[out] answer The message answer parameters. |
* @param[out] answer_count The last parameter for the actual answer in the answer parameter. |
* @returns EOK on success. |
* @returns ENOTSUP if the message is not known. |
* @see ip_interface.h |
/branches/network/uspace/srv/net/il/ip/ip_messages.h |
---|
69,31 → 69,30 |
/*@{*/ |
/** Returns the gateway message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define IP_GET_GATEWAY( call ) ({ in_addr_t addr; addr.s_addr = IPC_GET_ARG2( * call ); addr; }) |
/** Returns the address message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define IP_GET_ADDRESS( call ) ({ in_addr_t addr; addr.s_addr = IPC_GET_ARG3( * call ); addr; }) |
/** Returns the network mask message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define IP_GET_NETMASK( call ) ({ in_addr_t addr; addr.s_addr = IPC_GET_ARG4( * call ); addr; }) |
/** Returns the protocol message parameter. |
* @param call The message call structure. Input parameter. |
* @param[in] call The message call structure. |
*/ |
#define IP_GET_PROTOCOL( call ) (( ip_protocol_t ) IPC_GET_ARG1( * call )) |
/** Sets the header length in the message answer. |
* @param answer The message answer structure. Output parameter. |
* @param[out] answer The message answer structure. |
*/ |
#define IP_SET_HEADERLEN( answer ) (( size_t * ) & IPC_GET_ARG2( * answer )) |
/*@}*/ |
#endif |
/branches/network/uspace/srv/net/il/ip/ip_header.h |
---|
41,43 → 41,43 |
#include <byteorder.h> |
#include <sys/types.h> |
/** Returns the actual IP header length. |
* @param header The IP packet header. Input parameter. |
/** Returns the actual IP header length in bytes. |
* @param[in] header The IP packet header. |
*/ |
#define IP_HEADER_LENGTH( header ) (( header )->header_length * 4u ) |
/** Returns the actual IP header length. |
* @param header The IP packet header. Input parameter. |
/** Returns the IP header length. |
* @param[in] length The IP header length in bytes. |
*/ |
#define IP_COMPUTE_HEADER_LENGTH( length ) (( uint8_t ) (( length ) / 4u )) |
/** Returns the actual IP packet total length. |
* @param header The IP packet header. Input parameter. |
* @param[in] header The IP packet header. |
*/ |
#define IP_TOTAL_LENGTH( header ) ntohs(( header )->total_length ) |
/** Returns the actual IP packet data length. |
* @param header The IP packet header. Input parameter. |
* @param[in] header The IP packet header. |
*/ |
#define IP_HEADER_DATA_LENGTH( header ) ( IP_TOTAL_LENGTH( header ) - IP_HEADER_LENGTH( header )) |
/** Returns the IP packet header checksum. |
* @param header The IP packet header. Input parameter. |
* @param[in] header The IP packet header. |
*/ |
#define IP_HEADER_CHECKSUM( header ) ( htons( ip_checksum(( uint8_t * )( header ), IP_HEADER_LENGTH( header )))) |
/** Returns the fragment offest. |
* @param header The IP packet header. Input parameter. |
* @param[in] header The IP packet header. |
*/ |
#define IP_FRAGMENT_OFFSET( header ) (((( header )->fragment_offset_high << 8 ) + ( header )->fragment_offset_low ) * 8u ) |
/** Returns the fragment offest high bits. |
* @param length The prefixed data total length. Input parameter. |
* @param[in] length The prefixed data total length. |
*/ |
#define IP_COMPUTE_FRAGMENT_OFFSET_HIGH( length ) (((( length ) / 8u ) & 0x1F00 ) >> 8 ) |
/** Returns the fragment offest low bits. |
* @param length The prefixed data total length. Input parameter. |
* @param[in] length The prefixed data total length. |
*/ |
#define IP_COMPUTE_FRAGMENT_OFFSET_LOW( length ) ((( length ) / 8u ) & 0xFF ) |
/branches/network/uspace/srv/net/il/ip/ip.c |
---|
33,7 → 33,6 |
/** @file |
* IP module implementation. |
* @see arp.h |
* \todo |
*/ |
#include <async.h> |
137,8 → 136,8 |
GENERIC_FIELD_IMPLEMENT( ip_routes, ip_route_t ) |
/** Updates the device content length according to the new MTU value. |
* @param device_id The device identifier. Input parameter. |
* @param mtu The new mtu value. Input parameter. |
* @param[in] device_id The device identifier. |
* @param[in] mtu The new mtu value. |
* @returns EOK on success. |
* @returns ENOENT if device is not found. |
*/ |
145,19 → 144,30 |
int ip_mtu_changed_message( device_id_t device_id, size_t mtu ); |
/** Updates the device state. |
* @param device_id The device identifier. Input parameter. |
* @param state The new state value. Input parameter. |
* @param[in] device_id The device identifier. |
* @param[in] state The new state value. |
* @returns EOK on success. |
* @returns ENOENT if device is not found. |
*/ |
int ip_device_state_message( device_id_t device_id, device_state_t state ); |
/** Registers the transport layer protocol. |
* The traffic of this protocol will be supplied using either the receive function or IPC message. |
* @param[in] protocol The transport layer module protocol. |
* @param[in] service The transport layer module service. |
* @param[in] phone The transport layer module phone. |
* @param[in] tl_received_msg The receiving function. |
* @returns EOK on success. |
* @returns EINVAL if the protocol parameter and/or the service parameter is zero (0). |
* @returns EINVAL if the phone parameter is not a positive number and the tl_receive_msg is NULL. |
* @returns ENOMEM if there is not enough memory left. |
*/ |
int ip_register( int protocol, services_t service, int phone, tl_received_msg_t tl_received_msg ); |
/** Initializes a new network interface specific data. |
* Connects to the network interface layer module, reads the netif configuration, starts an ARP module if needed and sets the netif routing table. |
* The device identifier and the nil service has to be set. |
* @param ip_netif Network interface specific data. Input/output parameter. |
* @param[in,out] ip_netif Network interface specific data. |
* @returns EOK on success. |
* @returns ENOTSUP if DHCP is configured. |
* @returns ENOTSUP if IPv6 is configured. |
171,22 → 181,126 |
*/ |
int ip_netif_initialize( ip_netif_ref ip_netif ); |
/** Sends the packet or the packet queue via the specified route. |
* The ICMP_HOST_UNREACH error notification may be sent if route hardware destination address is found. |
* @param[in,out] packet The packet to be sent. |
* @param[in] netif The target network interface. |
* @param[in] route The target route. |
* @param[in] src The source address. |
* @param[in] dest The destination address. |
* @param[in] error The error module service. |
* @returns EOK on success. |
* @returns Other error codes as defined for the arp_translate_req() function. |
* @returns Other error codes as defined for the ip_prepare_packet() function. |
*/ |
int ip_send_route( packet_t packet, ip_netif_ref netif, ip_route_ref route, in_addr_t * src, in_addr_t dest, services_t error ); |
/** Prepares the outgoing packet or the packet queue. |
* The packet queue is a fragmented packet |
* Updates the first packet's IP header. |
* Prefixes the additional packets with fragment headers. |
* @param[in] source The source address. |
* @param[in] dest The destination address. |
* @param[in,out] packet The packet to be sent. |
* @param[in] destination The destination hardware address. |
* @returns EOK on success. |
* @returns EINVAL if the packet is too small to contain the IP header. |
* @returns EINVAL if the packet is too long than the IP allows. |
* @returns ENOMEM if there is not enough memory left. |
* @returns Other error codes as defined for the packet_set_addr() function. |
*/ |
int ip_prepare_packet( in_addr_t * source, in_addr_t dest, packet_t packet, measured_string_ref destination ); |
/** Checks the packet queue lengths and fragments the packets if needed. |
* The ICMP_FRAG_NEEDED error notification may be sent if the packet needs to be fragmented and the fragmentation is not allowed. |
* @param[in,out] packet The packet or the packet queue to be checked. |
* @param[in] prefix The minimum prefix size. |
* @param[in] content The maximum content size. |
* @param[in] suffix The minimum suffix size. |
* @param[in] addr_len The minimum address length. |
* @param[in] error The error module service. |
* @returns The packet or the packet queue of the allowed length. |
* @returns NULL if there are no packets left. |
*/ |
packet_t ip_split_packet( packet_t packet, size_t prefix, size_t content, size_t suffix, socklen_t addr_len, services_t error ); |
/** Checks the packet length and fragments it if needed. |
* The new fragments are queued before the original packet. |
* @param[in,out] packet The packet to be checked. |
* @param[in] length The maximum packet length. |
* @param[in] prefix The minimum prefix size. |
* @param[in] suffix The minimum suffix size. |
* @param[in] addr_len The minimum address length. |
* @returns EOK on success. |
* @returns EINVAL if the packet_get_addr() function fails. |
* @returns EINVAL if the packet does not contain the IP header. |
* @returns EPERM if the packet needs to be fragmented and the fragmentation is not allowed. |
* @returns ENOMEM if there is not enough memory left. |
* @returns ENOMEM if there is no packet available. |
* @returns ENOMEM if the packet is too small to contain the IP header. |
* @returns Other error codes as defined for the packet_trim() function. |
* @returns Other error codes as defined for the ip_create_middle_header() function. |
* @returns Other error codes as defined for the ip_fragment_packet_data() function. |
*/ |
int ip_fragment_packet( packet_t packet, size_t length, size_t prefix, size_t suffix, socklen_t addr_len ); |
/** Fragments the packet from the end. |
* @param[in] packet The packet to be fragmented. |
* @param[in,out] new_packet The new packet fragment. |
* @param[in,out] header The original packet header. |
* @param[in,out] new_header The new packet fragment header. |
* @param[in] length The new fragment length. |
* @param[in] src The source address. |
* @param[in] dest The destiantion address. |
* @param[in] addrlen The address length. |
* @returns EOK on success. |
* @returns ENOMEM if the target packet is too small. |
* @returns Other error codes as defined for the packet_set_addr() function. |
* @returns Other error codes as defined for the pq_insert_after() function. |
*/ |
int ip_fragment_packet_data( packet_t packet, packet_t new_packet, ip_header_ref header, ip_header_ref new_header, size_t length, const struct sockaddr * src, const struct sockaddr * dest, socklen_t addrlen ); |
/** Prefixes a middle fragment header based on the last fragment header to the packet. |
* @param[in] packet The packet to be prefixed. |
* @param[in] last The last header to be copied. |
* @returns The prefixed middle header. |
* @returns NULL on error. |
*/ |
ip_header_ref ip_create_middle_header( packet_t packet, ip_header_ref last ); |
/** Copies the fragment header. |
* Copies only the header itself and relevant IP options. |
* @param[out] last The created header. |
* @param[in] first The original header to be copied. |
*/ |
void ip_create_last_header( ip_header_ref last, ip_header_ref first ); |
/** Returns the network interface's IP address. |
* @param[in] netif The network interface. |
* @returns The IP address. |
* @returns NULL if no IP address was found. |
*/ |
in_addr_t * ip_netif_address( ip_netif_ref netif ); |
/** Searches all network interfaces if there is a suitable route. |
* @param[in] destination The destination address. |
* @returns The found route. |
* @returns NULL if no route was found. |
*/ |
ip_route_ref ip_find_route( in_addr_t destination ); |
/** Searches the network interfaces if there is a suitable route. |
* @param[in] netif The network interface to be searched for routes. May be NULL. |
* @param[in] destination The destination address. |
* @returns The found route. |
* @returns NULL if no route was found. |
*/ |
ip_route_ref ip_netif_find_route( ip_netif_ref netif, in_addr_t destination ); |
/** Processes the received IP packet. |
* @param device_id The source device identifier. Input parameter. |
* @param packet The received packet. Input/output parameter. |
/** Processes the received IP packet or the packet queue one by one. |
* The packet is either passed to another module or released on error. |
* @param[in] device_id The source device identifier. |
* @param[in,out] packet The received packet. |
* @returns EOK on success and the packet is no longer needed. |
* @returns EINVAL if the packet is too small to carry the IP packet. |
* @returns EINVAL if the received address lengths differs from the registered values. |
196,14 → 310,84 |
*/ |
int ip_receive_message( device_id_t device_id, packet_t packet ); |
/** Processes the received packet. |
* The packet is either passed to another module or released on error. |
* The ICMP_PARAM_POINTER error notification may be sent if the checksum is invalid. |
* The ICMP_EXC_TTL error notification may be sent if the TTL is less than two (2). |
* The ICMP_HOST_UNREACH error notification may be sent if no route was found. |
* The ICMP_HOST_UNREACH error notification may be sent if the packet is for another host and the routing is disabled. |
* @param[in] device_id The source device identifier. |
* @param[in] packet The received packet to be processed. |
* @returns EOK on success. |
* @returns EINVAL if the TTL is less than two (2). |
* @returns EINVAL if the checksum is invalid. |
* @returns EAFNOSUPPORT if the address family is not supported. |
* @returns ENOENT if no route was found. |
* @returns ENOENT if the packet is for another host and the routing is disabled. |
*/ |
int ip_process_packet( device_id_t device_id, packet_t packet ); |
/** Returns the packet destination address from the IP header. |
* @param[in] header The packet IP header to be read. |
* @returns The packet destination address. |
*/ |
in_addr_t ip_get_destination( ip_header_ref header ); |
/** Delivers the packet to the local host. |
* The packet is either passed to another module or released on error. |
* The ICMP_PROT_UNREACH error notification may be sent if the protocol is not found. |
* @param[in] device_id The source device identifier. |
* @param[in] packet The packet to be delivered. |
* @param[in] header The first packet IP header. May be NULL. |
* @param[in] error The packet error service. |
* @returns EOK on success. |
* @returns ENOTSUP if the packet is a fragment. |
* @returns EAFNOSUPPORT if the address family is not supported. |
* @returns ENOENT if the target protocol is not found. |
* @returns Other error codes as defined for the packet_set_addr() function. |
* @returns Other error codes as defined for the packet_trim() function. |
* @returns Other error codes as defined for the protocol specific tl_received_msg function. |
*/ |
int ip_deliver_local( device_id_t device_id, packet_t packet, ip_header_ref header, services_t error ); |
/** Prepares the ICMP notification packet. |
* Releases additional packets and keeps only the first one. |
* All packets is released on error. |
* @param[in] error The packet error service. |
* @param[in] packet The packet or the packet queue to be reported as faulty. |
* @param[in] header The first packet IP header. May be NULL. |
* @returns The found ICMP phone. |
* @returns EINVAL if the error parameter is set. |
* @returns EINVAL if the ICMP phone is not found. |
* @returns EINVAL if the ip_prepare_icmp() fails. |
*/ |
int ip_prepare_icmp_and_get_phone( services_t error, packet_t packet, ip_header_ref header ); |
/** Returns the ICMP phone. |
* Searches the registered protocols. |
* @returns The found ICMP phone. |
* @returns ENOENT if the ICMP is not registered. |
*/ |
int ip_get_icmp_phone( void ); |
/** Prepares the ICMP notification packet. |
* Releases additional packets and keeps only the first one. |
* @param[in] packet The packet or the packet queue to be reported as faulty. |
* @param[in] header The first packet IP header. May be NULL. |
* @returns EOK on success. |
* @returns EINVAL if there are no data in the packet. |
* @returns EINVAL if the packet is a fragment. |
* @returns ENOMEM if the packet is too short to contain the IP header. |
* @returns EAFNOSUPPORT if the address family is not supported. |
* @returns Other error codes as defined for the packet_set_addr(). |
*/ |
int ip_prepare_icmp( packet_t packet, ip_header_ref header ); |
/** Releases the packet and returns the result. |
* @param[in] packet The packet queue to be released. |
* @param[in] result The result to be returned. |
* @return The result parameter. |
*/ |
int ip_release_and_return( packet_t packet, int result ); |
int ip_initialize( async_client_conn_t client_connection ){ |
1050,7 → 1234,7 |
dest = ( struct sockaddr * ) & dest_in; |
break; |
*/ default: |
return EAFNOSUPPORT; |
return ip_release_and_return( packet, EAFNOSUPPORT ); |
} |
ERROR_PROPAGATE( packet_set_addr( packet, NULL, ( uint8_t * ) & addr, addrlen )); |
route = ip_find_route( dest ); |
/branches/network/uspace/srv/net/il/ip/ip_module.c |
---|
64,7 → 64,7 |
/** Starts the IP module. |
* Initializes the client connection serving function, initializes the module, registers the module service and starts the async manager, processing IPC messages in an infinite loop. |
* @param client_connection The client connection processing function. The module skeleton propagates its own one. Input parameter. |
* @param[in] client_connection The client connection processing function. The module skeleton propagates its own one. |
* @returns EOK on successful module termination. |
* @returns Other error codes as defined for the ip_initialize() function. |
* @returns Other error codes as defined for the REGISTER_ME() macro function. |
72,10 → 72,10 |
int module_start( async_client_conn_t client_connection ); |
/** Processes the IP message. |
* @param callid The message identifier. Input parameter. |
* @param call The message parameters. Input parameter. |
* @param answer The message answer parameters. Output parameter. |
* @param answer_count The last parameter for the actual answer in the answer parameter. Output parameter. |
* @param[in] callid The message identifier. |
* @param[in] call The message parameters. |
* @param[out] answer The message answer parameters. |
* @param[out] answer_count The last parameter for the actual answer in the answer parameter. |
* @returns EOK on success. |
* @returns Other error codes as defined for the ip_message() function. |
*/ |