首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Contiki中将本地链路地址转换为全局地址

如何在Contiki中将本地链路地址转换为全局地址
EN

Stack Overflow用户
提问于 2018-03-05 08:49:06
回答 2查看 241关注 0票数 0

我想将全局地址转换为链路级地址(或者甚至可以做相反的事情),我在uip6.c文件中有以下函数。我想要将rep ( rep为我提供前缀为fe80的lladdress )转换为srcaddr (其中srcaddr为我提供全局地址,前缀为aaaa),反之亦然。

代码语言:javascript
复制
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 ");   
}

我之前检查过,没有内置的函数可以做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2018-03-05 09:06:01

这不可能。设备的本地链路地址和它可能拥有的任何公共地址之间没有关系--它们是以完全不同的方式获得的。

票数 0
EN

Stack Overflow用户

发布于 2018-03-05 17:21:04

以下代码适用于我:

代码语言:javascript
复制
uip_ds6_route_t *rep;

uip_ipaddr_t copy;

uip_ipaddr_copy(&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(&copy);
printf("\n ");

if (uip_ipaddr_cmp(&copy, uip_ds6_route_nexthop(rep)))
printf("\nYes Child Node");
else
printf("\nNo Child Node");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49102091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档