Line data Source code
1 : #ifndef HEADER_fd_src_util_net_fd_ip6_h 2 : #define HEADER_fd_src_util_net_fd_ip6_h 3 : 4 : #include "../bits/fd_bits.h" 5 : 6 : static inline void 7 : fd_ip6_addr_ip4_mapped( uchar ip6_addr[16], 8 3 : uint const ip4_addr ) { 9 3 : memset( ip6_addr, 0, 10 ); 10 3 : ip6_addr[ 10 ] = (uchar)0xff; 11 3 : ip6_addr[ 11 ] = (uchar)0xff; 12 3 : memcpy( ip6_addr+12, &ip4_addr, 4 ); 13 3 : } 14 : 15 : static inline int 16 243 : fd_ip6_addr_is_ip4_mapped( uchar const ip6_addr[16] ) { 17 243 : return ( 18 243 : (ip6_addr[ 0 ]==0x00) & (ip6_addr[ 1 ]==0x00) & 19 243 : (ip6_addr[ 2 ]==0x00) & (ip6_addr[ 3 ]==0x00) & 20 243 : (ip6_addr[ 4 ]==0x00) & (ip6_addr[ 5 ]==0x00) & 21 243 : (ip6_addr[ 6 ]==0x00) & (ip6_addr[ 7 ]==0x00) & 22 243 : (ip6_addr[ 8 ]==0x00) & (ip6_addr[ 9 ]==0x00) & 23 243 : (ip6_addr[ 10 ]==0xff) & (ip6_addr[ 11 ]==0xff) 24 243 : ); 25 243 : } 26 : 27 : static inline uint 28 3 : fd_ip6_addr_to_ip4( uchar const ip6_addr[16] ) { 29 3 : uint ip4_addr; 30 3 : memcpy( &ip4_addr, ip6_addr+12, 4 ); 31 3 : return ip4_addr; 32 3 : } 33 : 34 : #endif /* HEADER_fd_src_util_net_fd_ip6_h */