projects
/
project
/
mdnsd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ipv6 cleanup
[project/mdnsd.git]
/
dns.c
diff --git
a/dns.c
b/dns.c
index
961c2d0
..
1ff5d53
100644
(file)
--- a/
dns.c
+++ b/
dns.c
@@
-66,7
+66,7
@@
dns_type_string(uint16_t type)
}
void
}
void
-dns_send_question(struct interface *iface, const char *question, int type)
+dns_send_question(struct interface *iface, const char *question, int type
, int unicast
)
{
static struct dns_header h;
static struct dns_question q;
{
static struct dns_header h;
static struct dns_question q;
@@
-86,7
+86,7
@@
dns_send_question(struct interface *iface, const char *question, int type)
int len;
h.questions = cpu_to_be16(1);
int len;
h.questions = cpu_to_be16(1);
- q.class = cpu_to_be16(1);
+ q.class = cpu_to_be16(
((unicast) ? (CLASS_UNICAST) : (0)) |
1);
q.type = cpu_to_be16(type);
len = dn_comp(question, (void *) name_buffer, sizeof(name_buffer), NULL, NULL);
q.type = cpu_to_be16(type);
len = dn_comp(question, (void *) name_buffer, sizeof(name_buffer), NULL, NULL);
@@
-95,10
+95,9
@@
dns_send_question(struct interface *iface, const char *question, int type)
iov[1].iov_len = len;
iov[1].iov_len = len;
+ DBG(1, "Q <- %s %s\n", dns_type_string(type), question);
if (interface_send_packet(iface, iov, ARRAY_SIZE(iov)) < 0)
if (interface_send_packet(iface, iov, ARRAY_SIZE(iov)) < 0)
- fprintf(stderr, "failed to send question\n");
- else
- DBG(1, "Q <- %s %s\n", dns_type_string(type), question);
+ perror("failed to send question :");
}
}
@@
-320,6
+319,9
@@
parse_question(struct interface *iface, char *name, struct dns_question *q)
{
char *host;
{
char *host;
+ if ((q->class & CLASS_UNICAST) && iface->multicast)
+ iface = iface->peer;
+
DBG(1, "Q -> %s %s\n", dns_type_string(q->type), name);
switch (q->type) {
DBG(1, "Q -> %s %s\n", dns_type_string(q->type), name);
switch (q->type) {