summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2008-01-14 00:16:24 +0000
committerFederico Lucifredi <flucifredi@acm.org>2008-01-14 00:16:24 +0000
commitb60a876be239a6280b76e5ebc2755727f8bf3275 (patch)
treea1eb803d8ba3fc0b52fe5867c4576c2463cceb2f
parent399619282dc9b97893d9483890582097bd5fdf62 (diff)
skipping reverse lookups.
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico@1707 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--avahi-core/wide-area.c16
-rw-r--r--avahi-core/wide-area.h2
2 files changed, 15 insertions, 3 deletions
diff --git a/avahi-core/wide-area.c b/avahi-core/wide-area.c
index a906115..0e42a15 100644
--- a/avahi-core/wide-area.c
+++ b/avahi-core/wide-area.c
@@ -821,8 +821,12 @@ AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned
/* TODO: should this be located in this file? */
/* call as wide_area_publish(<record/>,"dynamic.endorfine.org",<id/>, <socket/>) */
-void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int fd) {
+int avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int fd) {
char result;
+
+ char *backup;
+ char globalname[AVAHI_DOMAIN_NAME_MAX]; /* size accounts for escapes if any */
+
AvahiDnsPacket *p;
AvahiKey *k;
@@ -868,7 +872,14 @@ void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int
}
/* give record global DNS name under our domain */
- printf("record name: %s\n", r->key->name);
+ printf("record name: %s\n", r->key->name); /*tracing*/
+
+ if(strstr(r->key->name, ".arpa") == (r->key->name + strlen(r->key->name - 5)){
+ printf("arpa?: %s\n", r->key->name); /*tracing*/
+ return(0); /* skip over ".arpa" records */
+ }
+
+ strcpy(globalname, r->key->name);
if(r->key->type == AVAHI_DNS_TYPE_A) { /* standardize TTLs independent of record for wide-area */
result = avahi_dns_packet_append_record(p, r, 0, 1); /* bind max TTL to 1 sec */
@@ -915,4 +926,5 @@ void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int
/* avahi_send_dns_packet_ipv4(<socket/>, <interface/>, <packet/>, <srcaddr/>, <dstaddr/>, <dstport/>);*/
avahi_send_dns_packet_ipv4(fd, AVAHI_IF_UNSPEC, p, NULL, &a.data.ipv4, AVAHI_DNS_PORT);
+ return 0;
}
diff --git a/avahi-core/wide-area.h b/avahi-core/wide-area.h
index 8fc1a9c..3396743 100644
--- a/avahi-core/wide-area.h
+++ b/avahi-core/wide-area.h
@@ -107,7 +107,7 @@ void avahi_wide_area_cleanup(AvahiWideAreaLookupEngine *e);
int avahi_wide_area_has_servers(AvahiWideAreaLookupEngine *e);
AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned char* key, unsigned keylength, AvahiDnsPacket *p, unsigned algorithm, uint16_t id);
-void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int fd);
+int avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int fd);
AvahiWideAreaLookup *avahi_wide_area_lookup_new(AvahiWideAreaLookupEngine *e, AvahiKey *key, AvahiWideAreaLookupCallback callback, void *userdata);
void avahi_wide_area_lookup_free(AvahiWideAreaLookup *q);