]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lwip.git/blobdiff - src/include/ipv4/lwip/inet.h
partially fixed bug #37585: IPv6 compatibility (in socket structs)
[pes-rpp/rpp-lwip.git] / src / include / ipv4 / lwip / inet.h
index 1c3bda181c757f4bb08a9478fc05afdcc9151212..ec6d0909a5c63e810f1ca935bd8fba3efd763db9 100644 (file)
 extern "C" {
 #endif
 
+/* If your port already typedef's in_addr_t, define IN_ADDR_T_DEFINED
+   to prevent this code from redefining it. */
+#if !defined(in_addr_t) && !defined(IN_ADDR_T_DEFINED)
+typedef u32_t in_addr_t;
+#endif
 /** For compatibility with BSD code */
 struct in_addr {
-  u32_t s_addr;
+  in_addr_t s_addr;
 };
 
 /** 255.255.255.255 */
@@ -91,11 +96,14 @@ struct in_addr {
 
 #define inet_addr_from_ipaddr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr))
 #define inet_addr_to_ipaddr(target_ipaddr, source_inaddr)   (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr))
+/* ATTENTION: the next define only works because both s_addr and ip_addr_t are an u32_t effectively! */
+#define inet_addr_to_ipaddr_p(target_ipaddr_p, source_inaddr)   ((target_ipaddr_p) = (ip_addr_t*)&((source_inaddr)->s_addr))
 
 /* directly map this to the lwip internal functions */
 #define inet_addr(cp)         ipaddr_addr(cp)
-#define inet_aton(cp, addr)   ipaddr_aton(cp, (struct ip_addr*)addr)
-#define inet_ntoa(addr)       ipaddr_ntoa((struct ip_addr*)&(addr))
+#define inet_aton(cp, addr)   ipaddr_aton(cp, (ip_addr_t*)addr)
+#define inet_ntoa(addr)       ipaddr_ntoa((ip_addr_t*)&(addr))
+#define inet_ntoa_r(addr, buf, buflen) ipaddr_ntoa_r((ip_addr_t*)&(addr), buf, buflen)
 
 #ifdef __cplusplus
 }