00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef __LWIP_IP_ADDR_H__
00033 #define __LWIP_IP_ADDR_H__
00034
00035 #include "lwip/opt.h"
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00041 #define IP_ADDR_ANY 0
00042
00043 #ifdef PACK_STRUCT_USE_INCLUDES
00044 # include "arch/bpstruct.h"
00045 #endif
00046 PACK_STRUCT_BEGIN
00047 struct ip_addr {
00048 PACK_STRUCT_FIELD(u32_t addr[4]);
00049 } PACK_STRUCT_STRUCT;
00050 PACK_STRUCT_END
00051 #ifdef PACK_STRUCT_USE_INCLUDES
00052 # include "arch/epstruct.h"
00053 #endif
00054
00055
00056
00057
00058
00059 #ifdef PACK_STRUCT_USE_INCLUDES
00060 # include "arch/bpstruct.h"
00061 #endif
00062 PACK_STRUCT_BEGIN
00063 struct ip_addr2 {
00064 PACK_STRUCT_FIELD(u16_t addrw[2]);
00065 } PACK_STRUCT_STRUCT;
00066 PACK_STRUCT_END
00067 #ifdef PACK_STRUCT_USE_INCLUDES
00068 # include "arch/epstruct.h"
00069 #endif
00070
00071 #define IP6_ADDR(ipaddr, a,b,c,d,e,f,g,h) do { (ipaddr)->addr[0] = htonl((u32_t)((a & 0xffff) << 16) | (b & 0xffff)); \
00072 (ipaddr)->addr[1] = htonl(((c & 0xffff) << 16) | (d & 0xffff)); \
00073 (ipaddr)->addr[2] = htonl(((e & 0xffff) << 16) | (f & 0xffff)); \
00074 (ipaddr)->addr[3] = htonl(((g & 0xffff) << 16) | (h & 0xffff)); } while(0)
00075
00076 u8_t ip_addr_netcmp(struct ip_addr *addr1, struct ip_addr *addr2,
00077 struct ip_addr *mask);
00078 u8_t ip_addr_cmp(struct ip_addr *addr1, struct ip_addr *addr2);
00079 void ip_addr_set(struct ip_addr *dest, struct ip_addr *src);
00080 u8_t ip_addr_isany(struct ip_addr *addr);
00081
00082 #define ip_addr_debug_print(debug, ipaddr) \
00083 LWIP_DEBUGF(debug, ("%"X32_F":%"X32_F":%"X32_F":%"X32_F":%"X32_F":%"X32_F":%"X32_F":%"X32_F"\n", \
00084 (ntohl(ipaddr->addr[0]) >> 16) & 0xffff, \
00085 ntohl(ipaddr->addr[0]) & 0xffff, \
00086 (ntohl(ipaddr->addr[1]) >> 16) & 0xffff, \
00087 ntohl(ipaddr->addr[1]) & 0xffff, \
00088 (ntohl(ipaddr->addr[2]) >> 16) & 0xffff, \
00089 ntohl(ipaddr->addr[2]) & 0xffff, \
00090 (ntohl(ipaddr->addr[3]) >> 16) & 0xffff, \
00091 ntohl(ipaddr->addr[3]) & 0xffff));
00092
00093 #ifdef __cplusplus
00094 }
00095 #endif
00096
00097 #endif