00001 /* 00002 * Copyright (c) 2001-2003 Swedish Institute of Computer Science. 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without modification, 00006 * are permitted provided that the following conditions are met: 00007 * 00008 * 1. Redistributions of source code must retain the above copyright notice, 00009 * this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright notice, 00011 * this list of conditions and the following disclaimer in the documentation 00012 * and/or other materials provided with the distribution. 00013 * 3. The name of the author may not be used to endorse or promote products 00014 * derived from this software without specific prior written permission. 00015 * 00016 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 00017 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 00018 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 00019 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00020 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 00021 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00022 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00023 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 00024 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 00025 * OF SUCH DAMAGE. 00026 * 00027 * This file is part of the lwIP TCP/IP stack. 00028 * 00029 * Author: Adam Dunkels <adam@sics.se> 00030 * 00031 * CHANGELOG: this file has been modified by Sergio Perez Alcañiz <serpeal@disca.upv.es> 00032 * Departamento de Informática de Sistemas y Computadores 00033 * Universidad Politécnica de Valencia 00034 * Valencia (Spain) 00035 * Date: April 2003 00036 * 00037 */ 00038 00039 #ifndef __LWIP_INET_H__ 00040 #define __LWIP_INET_H__ 00041 00042 #include "lwip/arch.h" 00043 00044 #include "lwip/opt.h" 00045 #include "lwip/pbuf.h" 00046 #include "lwip/ip_addr.h" 00047 00048 u16_t inet_chksum(void *dataptr, u16_t len); 00049 u16_t inet_chksum_pbuf(struct pbuf *p); 00050 u16_t inet_chksum_pseudo(struct pbuf *p, 00051 struct ip_addr *src, struct ip_addr *dest, 00052 u8_t proto, u16_t proto_len); 00053 00054 u32_t inet_addr(const char *cp); 00055 int inet_aton(const char *cp, struct in_addr *addr); 00056 char *inet_ntoa(struct in_addr in); 00057 00058 #ifdef HTONS 00059 #undef HTONS 00060 #endif /* HTONS */ 00061 #ifdef NTOHS 00062 #undef NTOHS 00063 #endif /* NTOHS */ 00064 #ifdef HTONL 00065 #undef HTONL 00066 #endif /* HTONL */ 00067 #ifdef NTOHL 00068 #undef NTOHL 00069 #endif /* NTOHL */ 00070 00071 #ifndef HTONS 00072 # if BYTE_ORDER == BIG_ENDIAN 00073 # define HTONS(n) (n) 00074 # define htons(n) HTONS(n) 00075 # else /* BYTE_ORDER == BIG_ENDIAN */ 00076 # define HTONS(n) (((((u16_t)(n) & 0xff)) << 8) | (((u16_t)(n) & 0xff00) >> 8)) 00077 # endif /* BYTE_ORDER == BIG_ENDIAN */ 00078 #endif /* HTONS */ 00079 00080 #ifdef NTOHS 00081 #undef NTOHS 00082 #endif /* NTOHS */ 00083 00084 #ifdef ntohs 00085 #undef ntohs 00086 #endif /* ntohs */ 00087 00088 #define NTOHS HTONS 00089 #define ntohs htons 00090 00091 00092 #ifndef HTONL 00093 # if BYTE_ORDER == BIG_ENDIAN 00094 # define HTONL(n) (n) 00095 # define htonl(n) HTONL(n) 00096 # else /* BYTE_ORDER == BIG_ENDIAN */ 00097 # define HTONL(n) (((((u32_t)(n) & 0xff)) << 24) | \ 00098 ((((u32_t)(n) & 0xff00)) << 8) | \ 00099 ((((u32_t)(n) & 0xff0000)) >> 8) | \ 00100 ((((u32_t)(n) & 0xff000000)) >> 24)) 00101 # endif /* BYTE_ORDER == BIG_ENDIAN */ 00102 #endif /* HTONL */ 00103 00104 #ifdef ntohl 00105 #undef ntohl 00106 #endif /* ntohl */ 00107 00108 #ifdef NTOHL 00109 #undef NTOHL 00110 #endif /* NTOHL */ 00111 00112 #define NTOHL HTONL 00113 #define ntohl htonl 00114 00115 #ifndef _MACHINE_ENDIAN_H_ 00116 #ifndef _NETINET_IN_H 00117 #ifndef _LINUX_BYTEORDER_GENERIC_H 00118 00119 #if BYTE_ORDER == LITTLE_ENDIAN 00120 #define htons HTONS 00121 #define htonl HTONL 00122 //uint16_t htons(u16_t n); 00123 //uint32_t htonl(u32_t n); 00124 //unsigned short int htons(u16_t n); 00125 //unsigned int htonl(u32_t n); 00126 //u16_t htons(u16_t n); 00127 //u32_t htonl(u32_t n); 00128 #else 00129 #endif /* BYTE_ORDER == LITTLE_ENDIAN */ 00130 00131 #endif /* _LINUX_BYTEORDER_GENERIC_H */ 00132 #endif /* _NETINET_IN_H */ 00133 #endif /* _MACHINE_ENDIAN_H_ */ 00134 00135 #endif /* __LWIP_INET_H__ */ 00136