+
+static AvahiAddress *get_address(const AvahiRecord *r, AvahiAddress *a) {
+ assert(r);
+
+ switch (r->key->type) {
+ case AVAHI_DNS_TYPE_A:
+ a->proto = AVAHI_PROTO_INET;
+ a->data.ipv4 = r->data.a.address;
+ break;
+
+ case AVAHI_DNS_TYPE_AAAA:
+ a->proto = AVAHI_PROTO_INET6;
+ a->data.ipv6 = r->data.aaaa.address;
+ break;
+
+ default:
+ return NULL;
+ }
+
+ return a;
+}
+
+int avahi_record_is_link_local_address(const AvahiRecord *r) {
+ AvahiAddress a;
+
+ assert(r);
+
+ if (!get_address(r, &a))
+ return 0;
+
+ return avahi_address_is_link_local(&a);
+}