30,8 → 30,8 |
* @{ |
*/ |
|
/** |
* @file |
/** @file |
* IP module. |
*/ |
|
#ifndef __NET_IP_H__ |
50,35 → 50,97 |
#include "../../structures/generic_field.h" |
#include "../../structures/module_map.h" |
|
/** Type definition of the IP global data. |
* @see ip_globals |
*/ |
typedef struct ip_globals ip_globals_t; |
|
/** Type definition of the IP network interface specific data. |
* @see ip_netif |
*/ |
typedef struct ip_netif ip_netif_t; |
|
/** Type definition of the IP network interface specific data pointer. |
* @see ip_netif |
*/ |
typedef ip_netif_t * ip_netif_ref; |
|
/** Type definition of the IP protocol specific data. |
* @see ip_proto |
*/ |
typedef struct ip_proto ip_proto_t; |
|
/** Type definition of the IP protocol specific data pointer. |
* @see ip_proto |
*/ |
typedef ip_proto_t * ip_proto_ref; |
|
/** Type definition of the IP route specific data. |
* @see ip_route |
*/ |
typedef struct ip_route ip_route_t; |
|
/** Type definition of the IP route specific data pointer. |
* @see ip_route |
*/ |
typedef ip_route_t * ip_route_ref; |
|
typedef struct ip_globals ip_globals_t; |
|
/** IP network interfaces. |
* Maps devices to the IP network interface specific data. |
* @see device.h |
*/ |
DEVICE_MAP_DECLARE( ip_netifs, ip_netif_t ) |
|
/** IP registered protocols. |
* Maps protocols to the IP protocol specific data. |
* @see int_map.h |
*/ |
INT_MAP_DECLARE( ip_protos, ip_proto_t ) |
|
/** IP routing table. |
* @see generic_field.h |
*/ |
GENERIC_FIELD_DECLARE( ip_routes, ip_route_t ) |
|
/** IP network interface specific data. |
*/ |
struct ip_netif{ |
/** Device identifier. |
*/ |
device_id_t device_id; |
/** Netif module service. |
*/ |
services_t service; |
/** Netif module phone. |
*/ |
int phone; |
/** ARP module. |
* Assigned if using ARP. |
*/ |
module_ref arp; |
/** IP version. |
*/ |
int ipv; |
/** Indicates whether using DHCP. |
*/ |
int dhcp; |
/** Indicates whether IP routing is enabled. |
*/ |
int routing; |
/** Device state. |
*/ |
device_state_t state; |
/** Broadcast address. |
*/ |
in_addr_t broadcast; |
/** First DNS address. |
*/ |
in_addr_t dns1; |
/** Second DNS address. |
*/ |
in_addr_t dns2; |
/** Routing table. |
*/ |
ip_routes_t routes; |
/** Reserved packet prefix length. |
*/ |
95,30 → 157,72 |
size_t addr_len; |
}; |
|
/** IP protocol specific data. |
*/ |
struct ip_proto{ |
/** Protocol number. |
*/ |
int protocol; |
/** Protocol module service. |
*/ |
services_t service; |
/** Protocol module phone. |
*/ |
int phone; |
/** Protocol packet receiving function. |
*/ |
tl_received_msg_t received_msg; |
}; |
|
/** IP route specific data. |
*/ |
struct ip_route{ |
/** Target address. |
*/ |
in_addr_t address; |
/** Target network mask. |
*/ |
in_addr_t netmask; |
/** Gateway. |
*/ |
in_addr_t gateway; |
/** Parent netif. |
*/ |
ip_netif_ref netif; |
}; |
|
/** IP global data. |
*/ |
struct ip_globals{ |
/** Networking module phone. |
*/ |
int net_phone; |
/** Registered network interfaces. |
*/ |
ip_netifs_t netifs; |
/** Netifs safeyt lock. |
*/ |
fibril_rwlock_t netifs_lock; |
/** Registered protocols. |
*/ |
ip_protos_t protos; |
/** Protocols safety lock. |
*/ |
fibril_rwlock_t protos_lock; |
/** Default gateway. |
*/ |
ip_route_t gateway; |
/** Known support modules. |
*/ |
modules_t modules; |
/** Default client connection function for support modules. |
*/ |
async_client_conn_t client_connection; |
/** Packet counter. |
*/ |
uint16_t packet_counter; |
/** Safety lock. |
*/ |
fibril_rwlock_t lock; |
}; |
|