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"
/* ipa_from_u32 and ipa_to_u32 replaced by ipa_build */
#define ipa_build(a,b,c,d) _MI(a,b,c,d)
#define ipa_compare(x,y) ipv6_compare(x,y)
+#define ipa_absolutize(x,y) ipv6_absolutize(x,y)
ip_addr ipv6_mkmask(unsigned);
unsigned ipv6_mklen(ip_addr *);
void ipv6_ntoh(ip_addr *);
int ipv6_compare(ip_addr, ip_addr);
int ipv4_pton_u32(char *, u32 *);
+void ipv6_absolutize(ip_addr *, ip_addr *);
/*
* This hash function looks well, but once IPv6 enters