summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2008-01-10 23:00:09 +0000
committerFederico Lucifredi <flucifredi@acm.org>2008-01-10 23:00:09 +0000
commit5eb8e0a05a101a5451f5ceb8ceac5e7ea8479ae7 (patch)
treeed544a8e6097d3fda5943093911cccafe3d42e31
parent4bd1e4e857167383c7366c9edf30d524f16cf392 (diff)
resync
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico@1686 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--avahi-core/entry.c6
-rw-r--r--avahi-core/wide-area.c47
2 files changed, 40 insertions, 13 deletions
diff --git a/avahi-core/entry.c b/avahi-core/entry.c
index 0cda113..f6287cb 100644
--- a/avahi-core/entry.c
+++ b/avahi-core/entry.c
@@ -235,8 +235,12 @@ static AvahiEntry * server_add_internal(
/* can generate a temporary random ID via rand() / (RAND_MAX / 65536) */
/* call as wide_area_publish(<record/>,"dynamic.endorfine.org",<id/>, <socket/>) */
printf("---mark--- (1)\n");
- avahi_wide_area_publish(r, "dynamic.endorfine.org", s->wide_area_lookup_engine->next_id++, s->wide_area_lookup_engine->fd_ipv4);
+ if (s->wide_area_lookup_engine != NULL)
+ printf("---!NULL--- (1)\n");
+ printf("id: \"%d\", \"%d\"\n", s->wide_area_lookup_engine->next_id, s->wide_area_lookup_engine->fd_ipv4);
+ printf("---mark--- (1e)\n");
+ avahi_wide_area_publish(r, "dynamic.endorfine.org", s->wide_area_lookup_engine->next_id++, s->wide_area_lookup_engine->fd_ipv4);
/* printf("next_id: \"%d\"\n",s->wide_area_lookup_engine->next_id ); */
diff --git a/avahi-core/wide-area.c b/avahi-core/wide-area.c
index 10fc397..389f7c4 100644
--- a/avahi-core/wide-area.c
+++ b/avahi-core/wide-area.c
@@ -694,6 +694,8 @@ AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned
r->data.tsig.original_id = id; /* MUST match DNS transaction ID, but it is not hashed */
+ printf("---mark--- (3)\n");
+
switch (algorithm){
case AVAHI_TSIG_HMAC_MD5 :
@@ -739,6 +741,7 @@ AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned
return NULL;
}
+
/*generate MAC */
switch (algorithm){
@@ -758,13 +761,21 @@ AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned
return NULL;
}
+ printf("size:%d\n", (unsigned int)p->size);
+ if ((unsigned char *)p->data == NULL)
+ printf("---NULL--- (3)\n");
+
/*feed all the data to be hashed in */
/*HMAC_Update(&ctx, <data/>, <length/>);*/
HMAC_Update(&ctx, (unsigned char *)p->data, (unsigned int)p->size); /*packet in wire format*/
+ printf("---mark--- (3b)\n");
+
canonic = c_to_canonical_string(keyname); /* key name in canonical wire format (DNS labels) */
HMAC_Update(&ctx, canonic, strlen(canonic) +1);
+ printf("---mark--- (3c)\n");
+
HMAC_Update(&ctx, uint16_to_canonical_string(AVAHI_DNS_CLASS_ANY), 2); /* class - always ANY for TSIG*/
HMAC_Update(&ctx, uint32_to_canonical_string(0), 4); /* TTL - always 0 for TSIG */
@@ -772,6 +783,8 @@ AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned
canonic = c_to_canonical_string(r->data.tsig.algorithm_name); /* IANA algorithm name in canonical wire format (DNS labels)*/
HMAC_Update(&ctx, canonic, strlen(canonic) +1);
+ printf("---mark--- (3d)\n");
+
HMAC_Update(&ctx, time_t_to_canonical_string(r->data.tsig.time_signed), 6); /*uint48 representation of unix time */
HMAC_Update(&ctx, uint16_to_canonical_string(r->data.tsig.fudge), 2);
@@ -793,10 +806,11 @@ 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) {
+ char result;
AvahiDnsPacket *p;
AvahiKey *k;
- AvahiAddress *a;
+ AvahiAddress a;
AvahiRecord *tsig;
@@ -805,13 +819,15 @@ void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int
0x24, 0x21, 0x6c, 0xa4, 0xd0, 0x1e, 0x88, 0x38 };
/* TODO: in merged version into upstream, address needs to be an external configurable pulled from /etc */
+
/* testing with farpoint.endorfine.org statically configured */
- avahi_address_parse("69.56.173.108", AVAHI_PROTO_UNSPEC, a);
+
+ avahi_address_parse("69.56.173.108", AVAHI_PROTO_UNSPEC, &a);
/* TODO: revisit record for wide-area - change ".local" and IPaddr as appropriate */
- printf("---mark--- (2)\n");
p = avahi_dns_packet_new_update(0); /* TODO: revisit MTU */
+
if (!p) { /*OOM check */
avahi_log_error("avahi_dns_packet_new_update() failed.");
assert(p);
@@ -827,32 +843,39 @@ void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int
assert(k);
}
- avahi_dns_packet_append_key(p, k, 0); /* add zone record */
+ result = avahi_dns_packet_append_key(p, k, 0); /* add zone record */
avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_ZOCOUNT, 1); /*increment record count for ZOCOUNT */
- if (!p) { /*OOM check */
+ if (!result) {
avahi_log_error("appending of rdata failed.");
- assert(p);
+ assert(result);
}
if(r->key->type == AVAHI_DNS_TYPE_A) { /* standardize TTLs independent of record for wide-area */
- avahi_dns_packet_append_record(p, r, 0, 1); /* bind max TTL to 1 sec */
+ result = avahi_dns_packet_append_record(p, r, 0, 1); /* bind max TTL to 1 sec */
} else {
- avahi_dns_packet_append_record(p, r, 0, 3); /* bind max TTL to 3 secs */
+ result = avahi_dns_packet_append_record(p, r, 0, 3); /* bind max TTL to 3 secs */
}
- avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_UPCOUNT, 1); /*increment record count for UPCOUNT */
+ avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_UPCOUNT, 1); /*increment record count for UPCOUNT */
- if (!p) { /*OOM check */
+ if (!result) {
avahi_log_error("appending of rdata failed.");
- assert(p);
+ assert(result);
}
+ printf("---mark--- (2)\n");
+ printf("(2)result=%d\n", result);
+ if (p->data == NULL)
+ printf("---NULL--- (2)\n");
+
/* get it MAC signed */
tsig = avahi_tsig_sign_packet("dynamic.endorfine.org", key, sizeof(key), p, AVAHI_TSIG_HMAC_MD5, id);
/* r = tsig_sign_packet(keyname, key, keylength, packet, hmac_algorithm, id) */
+ printf("---mark--- (4)\n");
+
if (!tsig) { /*OOM check */
avahi_log_error("tsig record generation failed.");
assert(tsig);
@@ -870,6 +893,6 @@ void avahi_wide_area_publish(AvahiRecord *r, const char *zone, uint16_t id, int
/* put packet on the wire */
/* 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);
+ avahi_send_dns_packet_ipv4(fd, AVAHI_IF_UNSPEC, p, NULL, &a.data.ipv4, AVAHI_DNS_PORT);
}