Я неопытный и с Contiki и C, но я пытаюсь сделать следующее:Создание нового адреса IPv6 из UIP адреса Contiki в C
В принципе, я получаю структуру, событие, которое имеет тип, id и uip ip6address.
Используя это событие, я хочу построить многоадресный адрес uip ipv6 с фиксированным префиксом (ff1e).
На данный момент у меня есть следующий код:
static uip_ds6_maddr_t *
derive_mcast_addr(struct eventstruc* event)
{
int ff1e;
//Fixed multicast prefix to be used by LooCI.
uint8_t mlcPrefix = ff1e;
//Type of the event
uint8_t eventType = event->type;
//Publisher Component ID of the sender
uint8_t * srccomp = event->source_cid;
// IPv6 address of the sender
uip_ip6addr_t * srcaddr = event->source_node);
// A derived multicast address is
// mlcPrefix + ":" + eventType + ":" +srccomp + ":0:" + (last 64bits srcAddr)
}
Я уверен, если этот код является достойным и о том, как получить последние 64 бит адреса Src, тем более, что они не могут быть в ожидаемый формат.
Например, если исходный адрес 0: 0: 0: 0: 0, то мне просто нужна часть 0: 0: 0: 0. Если бы это было, скажем, 2001 :: a00: 27ff: fef7: 30a7, мне просто понадобилось бы a00: 27ff: fef7: 30a7.
Кроме того, есть добавленная сложность Contiki UIP ...
Кто-нибудь есть достойные идеи?
Наконец-то! Кто-то, кто обращает внимание на то, что означает флаги и области действия для многоадресной рассылки IPv6, и не просто делает что-то недействительным! Если, конечно, вам просто не повезло :) –