我正在尝试改进RPL协议,因此实现了新的控制消息。我能够发送整数,但不能发送IP地址。谁能帮助医学?我正在位于rpl-icmp6.c
的文件contiki/core/net/rpl
中工作。
这是我的第一个接收数据的函数:
static void
tru_input(void)
{
int trustValue;
uip_ipaddr_t *trustAddr;
unsigned char *buffer;
buffer = UIP_ICMP_PAYLOAD;
trustValue = buffer[0];
memcpy(&trustAddr, buffer[1], 16);
PRINT6ADDR(trustAddr);
}
这是发送数据的功能:
void
tru_output(uip_ipaddr_t *addr, uip_ipaddr_t *trustAddr, int *trustValue)
{
unsigned char *buffer;
buffer = UIP_ICMP_PAYLOAD;
buffer[0] = &trustValue;
memcpy(buffer[1], &trustAddr, 16);
uip_icmp6_send(addr, ICMP6_RPL, RPL_CODE_TRU, 1);
}
我收到一个java.lang.ArrayIndexOutOfBoundsException:-1。有人能帮助我吗?
编辑:
这是我的新代码:
static void
tru_input(void)
{
int trustValue;
uip_ipaddr_t trustAddr;
unsigned char *buffer;
buffer = UIP_ICMP_PAYLOAD;
trustValue = buffer[0];
memcpy(&trustAddr, buffer + 1, 16);
PRINT6ADDR(trustAddr);
PRINTF("\n");
}
/*---------------------------------------------------------------------------*/
void
tru_output(uip_ipaddr_t *addr, uip_ipaddr_t *trustAddr, int trustValue)
{
/*Array OF byte: Find out how to enter all the bytes into the PAYLOAD. */
unsigned char *buffer;
buffer = UIP_ICMP_PAYLOAD;
buffer[0] = trustValue;
memcpy(buffer + 1, trustAddr, 16);
uip_icmp6_send(addr, ICMP6_RPL, RPL_CODE_TRU, 17);
}