-ip6_address_is_loopback (ip6_address_t * a)
-{
- uword is_loopback;
- u8 save = a->as_u8[15];
- a->as_u8[15] = save ^ 1;
- is_loopback = ip6_address_is_zero (a);
- a->as_u8[15] = save;
- return is_loopback;
+ip6_address_is_loopback (const ip6_address_t * a)
+{
+ return (a->as_u64[0] == 0 &&
+ a->as_u32[2] == 0 &&
+ a->as_u16[6] == 0 && a->as_u8[14] == 0 && a->as_u8[15] == 1);