From cfa6ab0593a02c3d4d0d959c771f72430f1adf67 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 30 May 2000 22:47:33 +0000 Subject: Added ipa_absolutize() which converts link-scope addresses to global scope ones according to prefix assigned to the corresponding interface. --- lib/ipv6.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'lib/ipv6.c') diff --git a/lib/ipv6.c b/lib/ipv6.c index b666ddd..88c54eb 100644 --- a/lib/ipv6.c +++ b/lib/ipv6.c @@ -322,6 +322,17 @@ ip_pton(char *a, ip_addr *o) return 1; } +void ipv6_absolutize(ip_addr *a, ip_addr *ifa) +{ + if ((a->addr[0] & 0xffc00000) == 0xfe800000 && /* a is link-scope */ + ((ifa->addr[0] & 0xe0000000) == 0x20000000 | /* ifa is AGU ... */ + (ifa->addr[0] & 0xffc00000) == 0xfec00000)) /* ... or site-scope */ + { + a->addr[0] = ifa->addr[0]; /* Copy the prefix, leave interface ID */ + a->addr[1] = ifa->addr[1]; + } +} + #ifdef TEST #include "bitops.c" -- cgit v1.2.3