source: mainline/uspace/srv/net/il/ip/ip.h@ 91478aa

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 91478aa was 91478aa, checked in by Lukas Mejdrech <lukasmejdrech@…>, 15 years ago
  • unify packet dimension interfaces
  • Property mode set to 100644
File size: 4.8 KB
RevLine 
[21580dd]1/*
2 * Copyright (c) 2009 Lukas Mejdrech
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup ip
30 * @{
31 */
32
33/** @file
34 * IP module.
35 */
36
37#ifndef __NET_IP_H__
38#define __NET_IP_H__
39
40#include <fibril_synch.h>
41
42#include <ipc/ipc.h>
43#include <ipc/services.h>
44
45#include "../../include/device.h"
46#include "../../include/inet.h"
47#include "../../include/ip_interface.h"
48
49#include "../../structures/int_map.h"
50#include "../../structures/generic_field.h"
51#include "../../structures/module_map.h"
52
53/** Type definition of the IP global data.
54 * @see ip_globals
55 */
56typedef struct ip_globals ip_globals_t;
57
58/** Type definition of the IP network interface specific data.
59 * @see ip_netif
60 */
61typedef struct ip_netif ip_netif_t;
62
63/** Type definition of the IP network interface specific data pointer.
64 * @see ip_netif
65 */
66typedef ip_netif_t * ip_netif_ref;
67
68/** Type definition of the IP protocol specific data.
69 * @see ip_proto
70 */
71typedef struct ip_proto ip_proto_t;
72
73/** Type definition of the IP protocol specific data pointer.
74 * @see ip_proto
75 */
76typedef ip_proto_t * ip_proto_ref;
77
78/** Type definition of the IP route specific data.
79 * @see ip_route
80 */
81typedef struct ip_route ip_route_t;
82
83/** Type definition of the IP route specific data pointer.
84 * @see ip_route
85 */
86typedef ip_route_t * ip_route_ref;
87
88/** IP network interfaces.
89 * Maps devices to the IP network interface specific data.
90 * @see device.h
91 */
92DEVICE_MAP_DECLARE( ip_netifs, ip_netif_t )
93
94/** IP registered protocols.
95 * Maps protocols to the IP protocol specific data.
96 * @see int_map.h
97 */
98INT_MAP_DECLARE( ip_protos, ip_proto_t )
99
100/** IP routing table.
101 * @see generic_field.h
102 */
103GENERIC_FIELD_DECLARE( ip_routes, ip_route_t )
104
105/** IP network interface specific data.
106 */
107struct ip_netif{
108 /** Device identifier.
109 */
110 device_id_t device_id;
111 /** Netif module service.
112 */
113 services_t service;
114 /** Netif module phone.
115 */
116 int phone;
117 /** ARP module.
118 * Assigned if using ARP.
119 */
120 module_ref arp;
121 /** IP version.
122 */
123 int ipv;
124 /** Indicates whether using DHCP.
125 */
126 int dhcp;
127 /** Indicates whether IP routing is enabled.
128 */
129 int routing;
130 /** Device state.
131 */
132 device_state_t state;
133 /** Broadcast address.
134 */
135 in_addr_t broadcast;
136 /** Routing table.
137 */
138 ip_routes_t routes;
[91478aa]139 /** Packet dimension.
[21580dd]140 */
[91478aa]141 packet_dimension_t packet_dimension;
[21580dd]142};
143
144/** IP protocol specific data.
145 */
146struct ip_proto{
147 /** Protocol number.
148 */
149 int protocol;
150 /** Protocol module service.
151 */
152 services_t service;
153 /** Protocol module phone.
154 */
155 int phone;
156 /** Protocol packet receiving function.
157 */
158 tl_received_msg_t received_msg;
159};
160
161/** IP route specific data.
162 */
163struct ip_route{
164 /** Target address.
165 */
166 in_addr_t address;
167 /** Target network mask.
168 */
169 in_addr_t netmask;
170 /** Gateway.
171 */
172 in_addr_t gateway;
173 /** Parent netif.
174 */
175 ip_netif_ref netif;
176};
177
178/** IP global data.
179 */
180struct ip_globals{
181 /** Networking module phone.
182 */
183 int net_phone;
184 /** Registered network interfaces.
185 */
186 ip_netifs_t netifs;
187 /** Netifs safeyt lock.
188 */
189 fibril_rwlock_t netifs_lock;
190 /** Registered protocols.
191 */
192 ip_protos_t protos;
193 /** Protocols safety lock.
194 */
195 fibril_rwlock_t protos_lock;
196 /** Default gateway.
197 */
198 ip_route_t gateway;
199 /** Known support modules.
200 */
201 modules_t modules;
202 /** Default client connection function for support modules.
203 */
204 async_client_conn_t client_connection;
205 /** Packet counter.
206 */
207 uint16_t packet_counter;
208 /** Safety lock.
209 */
210 fibril_rwlock_t lock;
211};
212
213#endif
214
215/** @}
216 */
Note: See TracBrowser for help on using the repository browser.