source: mainline/uspace/srv/net/include/protocol_map.h@ 1a0fb3f8

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 1a0fb3f8 was 21580dd, checked in by Lukas Mejdrech <lukas@…>, 15 years ago

Merged with network branch svn://svn.helenos.org/HelenOS/branches/network revision 4759; ipc_share_* and ipc_data_* changed to async_*; client connection in module.c returns on IPC_M_PHONE_HUNGUP; * Qemu scripts renamed to net-qe.*; (the dp8390 does not respond)

  • Property mode set to 100644
File size: 4.2 KB
Line 
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 net_nil
30 * @{
31 */
32
33/** @file
34 * Internetwork layer services - network interface layer service type translation.
35 */
36
37#ifndef __NET_PROTOCOL_MAP_H__
38#define __NET_PROTOCOL_MAP_H__
39
40#include <ipc/services.h>
41
42#include "ethernet_lsap.h"
43#include "ethernet_protocols.h"
44#include "hardware.h"
45
46/** Maps the internetwork layer service to the network interface layer type.
47 * @param[in] nil Network interface layer service.
48 * @param[in] il Internetwork layer service.
49 * @returns Network interface layer type of the internetworking layer service.
50 * @returns 0 if mapping is not found.
51 */
52static inline eth_type_t protocol_map( services_t nil, services_t il ){
53 switch( nil ){
54 case SERVICE_ETHERNET:
55 case SERVICE_DP8390:
56 switch( il ){
57 case SERVICE_IP:
58 return ETH_P_IP;
59 case SERVICE_ARP:
60 return ETH_P_ARP;
61 default:
62 return 0;
63 }
64 default:
65 return 0;
66 }
67}
68
69/** Maps the network interface layer type to the internetwork layer service.
70 * @param[in] nil Network interface layer service.
71 * @param[in] protocol Network interface layer type.
72 * @returns Internetwork layer service of the network interface layer type.
73 * @returns 0 if mapping is not found.
74 */
75static inline services_t protocol_unmap( services_t nil, int protocol ){
76 switch( nil ){
77 case SERVICE_ETHERNET:
78 case SERVICE_DP8390:
79 switch( protocol ){
80 case ETH_P_IP:
81 return SERVICE_IP;
82 case ETH_P_ARP:
83 return SERVICE_ARP;
84 default:
85 return 0;
86 }
87 default:
88 return 0;
89 }
90}
91
92/** Maps the link service access point identifier to the Ethernet protocol identifier.
93 * @param[in] lsap Link service access point identifier.
94 * @returns Ethernet protocol identifier of the link service access point identifier.
95 * @returns ETH_LSAP_NULL if mapping is not found.
96 */
97static inline eth_type_t lsap_map( eth_lsap_t lsap ){
98 switch( lsap ){
99 case ETH_LSAP_IP:
100 return ETH_P_IP;
101 case ETH_LSAP_ARP:
102 return ETH_P_ARP;
103 default:
104 return ETH_LSAP_NULL;
105 }
106}
107
108/** Maps the Ethernet protocol identifier to the link service access point identifier.
109 * @param[in] ethertype Ethernet protocol identifier.
110 * @returns Link service access point identifier.
111 * @returns 0 if mapping is not found.
112 */
113static inline eth_lsap_t lsap_unmap( eth_type_t ethertype ){
114 switch( ethertype ){
115 case ETH_P_IP:
116 return ETH_LSAP_IP;
117 case ETH_P_ARP:
118 return ETH_LSAP_ARP;
119 default:
120 return 0;
121 }
122}
123
124/** Maps the network interface layer services to the hardware types.
125 * @param[in] nil The network interface service.
126 * @returns The hardware type of the network interface service.
127 * @returns 0 if mapping is not found.
128 */
129static inline hw_type_t hardware_map( services_t nil ){
130 switch( nil ){
131 case SERVICE_ETHERNET:
132 case SERVICE_DP8390:
133 return HW_ETHER;
134 default:
135 return 0;
136 }
137}
138
139#endif
140
141/** @}
142 */
Note: See TracBrowser for help on using the repository browser.