我想将全局地址转换为链路级地址(或者甚至可以做相反的事情),我在uip6.c文件中有以下函数。我想要将rep ( rep为我提供前缀为fe80的lladdress )转换为srcaddr (其中srcaddr为我提供全局地址,前缀为aaaa),反之亦然。
void
cmpr_addr(void)
{
uip_ds6_route_t *rep;
rep = uip_ds6_route_lookup(&UIP_IP_BUF->srcipaddr);
printf("nexthop: ");
PRINT6ADDR(uip_ds6_route_nexthop(rep));
printf("\n ");
printf("srcaddr: ");
PRINT6ADDR(&UIP_IP_BUF->srcipaddr);
printf("\n ");
}我之前检查过,没有内置的函数可以做到这一点。
发布于 2018-03-05 09:06:01
这不可能。设备的本地链路地址和它可能拥有的任何公共地址之间没有关系--它们是以完全不同的方式获得的。
发布于 2018-03-05 17:21:04
以下代码适用于我:
uip_ds6_route_t *rep;
uip_ipaddr_t copy;
uip_ipaddr_copy(©, &UIP_IP_BUF->srcipaddr);
rep = uip_ds6_route_lookup(&UIP_IP_BUF->srcipaddr);
printf("nexthop: ");
PRINT6ADDR(uip_ds6_route_nexthop(rep));
printf("\n ");
printf("srcaddr: ");
copy.u8[0]=0xfe;
copy.u8[1]=0x80;
//copy.u16[0]=0xfe80;
PRINT6ADDR(©);
printf("\n ");
if (uip_ipaddr_cmp(©, uip_ds6_route_nexthop(rep)))
printf("\nYes Child Node");
else
printf("\nNo Child Node");https://stackoverflow.com/questions/49102091
复制相似问题