IPV6 address

Hi,

I want to edit the IPV6 address with a new EUI64. Which is the correct way to edit the IPV6 address? I tried to edit the Long HWaddr with gnrc_netapi_set but it doesn't automatically update inet6 addr. Do I have to update each value (ie Short/Long addr and inet6 addr) or is there a way to provide an EUI64 value and get those value updated?

Cheers,

Hi Baptiste!

I want to edit the IPV6 address with a new EUI64. Which is the correct way to edit the IPV6 address? I tried to edit the Long HWaddr with gnrc_netapi_set but it doesn't automatically update inet6 addr. Do I have to update each value (ie Short/Long addr and inet6 addr) or is there a way to provide an EUI64 value and get those value updated?

Not sure, what you're trying to achieve. The IPv6 link-local address is calculated at boot time from the node's EUI-64 address and won't be updated automatically by just changing the node's HW addresses later on. You can however remove the IPv6 address from the given interface and add a new one. Another way would be to preconfigure a different EUI-64 at build time.

Cheers, Oleg

Not sure, what you're trying to achieve. The IPv6 link-local address is calculated at boot time from the node's EUI-64 address and won't be updated automatically by just changing the node's HW addresses later on. You can however remove the IPv6 address from the given interface and add a new one. Another way would be to preconfigure a different EUI-64 at build time.

I wanted to update all ifconfig (Pv6 link-local address, Short address, Long HW address) information from a new EUI-64. I see that it's what RIOT does at build time then. So I should edit the EUI64 before IPV6-link-local address is calculated. What should I edit? (and where in Riot source code)

Baptiste,

I wanted to update all ifconfig (Pv6 link-local address, Short address, Long HW address) information from a new EUI-64. I see that it's what RIOT does at build time then. So I should edit the EUI64 before IPV6-link-local address is calculated. What should I edit? (and where in Riot source code)

take a look at, e.g.

Cheers, Oleg

Thanks Oleg, I will have a look at it.

Oleg, where did RIOT find those values for CPUID: #define SAMD21_CPUID_WORD0 (*(volatile uint32_t *)0x0080A00C) #define SAMD21_CPUID_WORD1 (*(volatile uint32_t *)0x0080A040) #define SAMD21_CPUID_WORD2 (*(volatile uint32_t *)0x0080A044) #define SAMD21_CPUID_WORD3 (*(volatile uint32_t *)0x0080A048)

Basically, if I fill the CPUID with my new EUI64 (in correct order) at boot time (before reset at86rf2xx), it will update all iface values (I tried it) or I should edit cpuid_get as I want.

Last question, I saw that RIOT automatically edits the universal/local (U/L) flag (bit 7) in the OUI portion Long HWaddr: 5a:5a:XX inet addr fe80::585a:XX

If I've got a global EUI64, not local, how should I proceed to tell RIOT to not create local address? Or did I misunderstand something?

Baptiste

Oleg, where did RIOT find those values for CPUID: #define SAMD21_CPUID_WORD0 (*(volatile uint32_t *)0x0080A00C) #define SAMD21_CPUID_WORD1 (*(volatile uint32_t *)0x0080A040) #define SAMD21_CPUID_WORD2 (*(volatile uint32_t *)0x0080A044) #define SAMD21_CPUID_WORD3 (*(volatile uint32_t *)0x0080A048)

My bad, I didn't see it was addresses corresponding to the serial number of the board!

Ok I edit my question: How to add a global unique IPV6 address to RIOT iface? (IPV6 will be built from a unique EUI64)

Hi Baptiste,