32 #include "ipv6/ip64-addr.h" 39 static uip_ip6addr_t ip64_prefix = {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0, 0, 0, 0}};
40 static uint8_t ip64_prefix_len = 96;
50 ip64_addr_copy6(uip_ip6addr_t *dest,
const uip_ip6addr_t *src)
52 memcpy(dest, src,
sizeof(uip_ip6addr_t));
57 uip_ip6addr_t *ipv6addr)
64 ipv6addr->u8[12] = ipv4addr->u8[0];
65 ipv6addr->u8[13] = ipv4addr->u8[1];
66 ipv6addr->u8[14] = ipv4addr->u8[2];
67 ipv6addr->u8[15] = ipv4addr->u8[3];
68 printf(
"ip64_addr_4to6: IPv6-encoded IPv4 address %d.%d.%d.%d\n",
69 ipv4addr->u8[0], ipv4addr->u8[1],
70 ipv4addr->u8[2], ipv4addr->u8[3]);
77 ip64_addr_6to4(
const uip_ip6addr_t *ipv6addr,
84 if(ip64_addr_is_ip64(ipv6addr)) {
85 ipv4addr->u8[0] = ipv6addr->u8[12];
86 ipv4addr->u8[1] = ipv6addr->u8[13];
87 ipv4addr->u8[2] = ipv6addr->u8[14];
88 ipv4addr->u8[3] = ipv6addr->u8[15];
90 printf(
"ip64_addr_6to4: IPv6-encoded IPv4 address %d.%d.%d.%d\n",
91 ipv4addr->u8[0], ipv4addr->u8[1],
92 ipv4addr->u8[2], ipv4addr->u8[3]);
102 ip64_addr_is_ip64(
const uip_ip6addr_t *ipv6addr)
104 return uip_ipaddr_prefixcmp(ipv6addr, &ip64_prefix, ip64_prefix_len);
108 ip64_addr_set_prefix(
const uip_ip6addr_t *prefix, uint8_t prefix_len)
111 ip64_prefix_len = prefix_len;
Representation of an IP address.
#define uip_ipaddr_copy(dest, src)
Copy an IP address from one place to another.