Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/net/include/protocol_map.h

    r95e3fd0b r849ed54  
    2727 */
    2828
    29 /** @addtogroup libnet
    30  * @{
     29/** @addtogroup net_nil
     30 *  @{
    3131 */
    3232
    3333/** @file
    34  * Internetwork layer services - network interface layer service type
    35  * translation.
     34 *  Internetwork layer services - network interface layer service type translation.
    3635 */
    3736
    38 #ifndef LIBNET_PROTOCOL_MAP_H_
    39 #define LIBNET_PROTOCOL_MAP_H_
     37#ifndef __NET_PROTOCOL_MAP_H__
     38#define __NET_PROTOCOL_MAP_H__
     39
     40#include <ipc/services.h>
    4041
    4142#include <ethernet_lsap.h>
     
    4344#include <net_hardware.h>
    4445
    45 #include <ipc/services.h>
     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}
    4668
    47 extern eth_type_t protocol_map(services_t, services_t);
    48 extern services_t protocol_unmap(services_t, int);
    49 extern eth_type_t lsap_map(eth_lsap_t);
    50 extern eth_lsap_t lsap_unmap(eth_type_t);
    51 extern hw_type_t hardware_map(services_t);
     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}
    52138
    53139#endif
Note: See TracChangeset for help on using the changeset viewer.