src/protocols/rendezvous/mdns.h

Mon, 12 Apr 2004 01:17:10 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Mon, 12 Apr 2004 01:17:10 +0000
changeset 8636
d49af923e2ce
parent 8634
2781838b4e10
child 8735
01248ea222d3
permissions
-rw-r--r--

[gaim-migrate @ 9388]
I finished all my overflow checking and what not. If anyone else
wants to look over it feel free... Null resource records (buddy
icons) should be getting sent now, too. I'm not really sure why
I'm not showing up in my iChat buddy list. Gaim rendezvous people
show up in gaim rendezvous buddy lists, I think.

Eh, I still have to deal with caching and handling queries.

And then messaging.

8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /**
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
2 * @file mdns.h Multicast DNS connection code used by rendezvous.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
3 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
4 * gaim
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
5 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
6 * Gaim is the legal property of its developers, whose names are too numerous
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
8 * source distribution.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * (at your option) any later version.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
18 * GNU General Public License for more details.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
19 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
23 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
24 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
25
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26 #ifndef _MDNS_H_
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
27 #define _MDNS_H_
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
28
8546
59e40a3b08bf [gaim-migrate @ 9288]
Mark Doliner <markdoliner@pidgin.im>
parents: 8487
diff changeset
29 #include "internal.h"
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
30 #include "debug.h"
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
31
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
32 /*
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
33 * Some #define's stolen from libfaim. Used to put
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
34 * binary data (bytes, shorts and ints) into an array.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
35 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 #define util_put8(buf, data) ((*(buf) = (unsigned char)(data)&0xff),1)
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
37 #define util_put16(buf, data) ( \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38 (*(buf) = (unsigned char)((data)>>8)&0xff), \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
39 (*((buf)+1) = (unsigned char)(data)&0xff), \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40 2)
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
41 #define util_put32(buf, data) ( \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
42 (*((buf)) = (unsigned char)((data)>>24)&0xff), \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
43 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
45 (*((buf)+3) = (unsigned char)(data)&0xff), \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46 4)
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
47 #define util_get8(buf) ((*(buf))&0xff)
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
48 #define util_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
49 #define util_get32(buf) ((((*(buf))<<24)&0xff000000) + \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
50 (((*((buf)+1))<<16)&0x00ff0000) + \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
51 (((*((buf)+2))<< 8)&0x0000ff00) + \
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
52 (((*((buf)+3) )&0x000000ff)))
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
53
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
54 /*
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
55 * Merriam-Webster's
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
56 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
57 #define RENDEZVOUS_RRTYPE_A 1
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
58 #define RENDEZVOUS_RRTYPE_NS 2
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59 #define RENDEZVOUS_RRTYPE_CNAME 5
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
60 #define RENDEZVOUS_RRTYPE_NULL 10
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
61 #define RENDEZVOUS_RRTYPE_PTR 12
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
62 #define RENDEZVOUS_RRTYPE_TXT 16
8594
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
63 #define RENDEZVOUS_RRTYPE_SRV 33
8636
d49af923e2ce [gaim-migrate @ 9388]
Mark Doliner <markdoliner@pidgin.im>
parents: 8634
diff changeset
64 #define RENDEZVOUS_RRTYPE_ALL 255
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
65
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
66 /*
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
67 * Express for Men's
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
68 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
69 typedef struct _Header {
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
70 unsigned short id;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
71 unsigned short flags;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
72 unsigned short numquestions;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
73 unsigned short numanswers;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
74 unsigned short numauthority;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
75 unsigned short numadditional;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
76 } Header;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
77
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
78 typedef struct _Question {
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
79 gchar *name;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
80 unsigned short type;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
81 unsigned short class;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
82 } Question;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
83
8594
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
84 typedef struct _ResourceRecord {
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
85 gchar *name;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
86 unsigned short type;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
87 unsigned short class;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
88 int ttl;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
89 unsigned short rdlength;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
90 void *rdata;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
91 } ResourceRecord;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
92
8631
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
93 typedef struct _ResourceRecordRDataTXTNode {
8629
0c35c1e5a316 [gaim-migrate @ 9381]
Mark Doliner <markdoliner@pidgin.im>
parents: 8612
diff changeset
94 char *name;
0c35c1e5a316 [gaim-migrate @ 9381]
Mark Doliner <markdoliner@pidgin.im>
parents: 8612
diff changeset
95 char *value;
8631
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
96 } ResourceRecordRDataTXTNode;
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
97
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
98 typedef GSList ResourceRecordRDataTXT;
8629
0c35c1e5a316 [gaim-migrate @ 9381]
Mark Doliner <markdoliner@pidgin.im>
parents: 8612
diff changeset
99
8631
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
100 typedef struct _ResourceRecordRDataSRV {
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
101 unsigned short port;
8634
2781838b4e10 [gaim-migrate @ 9386]
Mark Doliner <markdoliner@pidgin.im>
parents: 8631
diff changeset
102 char *target;
8631
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
103 } ResourceRecordRDataSRV;
8594
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
104
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
105 typedef struct _ResourceRecordSRV {
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
106 unsigned int priority;
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
107 unsigned int weight;
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
108 unsigned int port;
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
109 gchar *target;
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
110 } ResourceRecordSRV;
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
111
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
112 typedef struct _DNSPacket {
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
113 Header header;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
114 Question *questions;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
115 ResourceRecord *answers;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
116 ResourceRecord *authority;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
117 ResourceRecord *additional;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
118 } DNSPacket;
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
119
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
120 /*
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
121 * Bring in 'Da Noise, Bring in 'Da Functions
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
122 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
123
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
124 /**
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
125 * Create a multicast socket that can be used for sending and
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
126 * receiving multicast DNS packets. The socket joins the
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
127 * link-local multicast group (224.0.0.251).
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
128 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
129 * @return The file descriptor of the new socket, or -1 if
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
130 * there was an error establishing the socket.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
131 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
132 int mdns_establish_socket();
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
133
8612
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
134
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
135 /**
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
136 * Sends a multicast DNS datagram. Generally this is called
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
137 * by other convenience functions such as mdns_query(), however
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
138 * a client CAN construct its own DNSPacket if it wishes.
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
139 *
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
140 * @param fd The file descriptor of a pre-established socket to
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
141 * be used for sending the outgoing mDNS datagram.
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
142 * @param dns The DNS datagram you wish to send.
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
143 * @return 0 on success, otherwise return the error number.
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
144 */
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
145 int mdns_send_dns(int fd, const DNSPacket *dns);
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
146
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
147 /**
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
148 * Send a multicast DNS query for the given domain across the given
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
149 * socket.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
150 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
151 * @param fd The file descriptor of a pre-established socket to
8612
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
152 * be used for sending the outgoing mDNS datagram.
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
153 * @param domain This is the domain name you wish to query. It should
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
154 * be of the format "_presence._tcp.local" for example.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
155 * @return 0 if sucessful.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
156 */
8636
d49af923e2ce [gaim-migrate @ 9388]
Mark Doliner <markdoliner@pidgin.im>
parents: 8634
diff changeset
157 int mdns_query(int fd, const char *domain, unsigned short type);
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
158
8636
d49af923e2ce [gaim-migrate @ 9388]
Mark Doliner <markdoliner@pidgin.im>
parents: 8634
diff changeset
159 int mdns_advertise_null(int fd, const char *name, const char *data, unsigned short rdlength);
8612
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
160 int mdns_advertise_ptr(int fd, const char *name, const char *domain);
8629
0c35c1e5a316 [gaim-migrate @ 9381]
Mark Doliner <markdoliner@pidgin.im>
parents: 8612
diff changeset
161 int mdns_advertise_txt(int fd, const char *name, const GSList *txt);
8631
f45bad880ec2 [gaim-migrate @ 9383]
Mark Doliner <markdoliner@pidgin.im>
parents: 8629
diff changeset
162 int mdns_advertise_srv(int fd, const char *name, unsigned short port, const char *target);
8612
3af40ff62900 [gaim-migrate @ 9363]
Mark Doliner <markdoliner@pidgin.im>
parents: 8594
diff changeset
163
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
164 /**
8594
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
165 * Read a UDP packet from the given file descriptor and parse it
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
166 * into a DNSPacket.
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
167 *
8594
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
168 * @param fd A UDP listening socket to read from.
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
169 * @return A newly allocated DNSPacket. This should be freed with
b51dae7b7aa0 [gaim-migrate @ 9345]
Mark Doliner <markdoliner@pidgin.im>
parents: 8546
diff changeset
170 * mdns_free() when no longer needed.
8487
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
171 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
172 DNSPacket *mdns_read(int fd);
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
173
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
174 /**
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
175 * Free a DNSPacket structure.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
176 *
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
177 * @param dns The DNSPacket that you want to free.
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
178 */
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
179 void mdns_free(DNSPacket *dns);
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
180
0c272c2bf8a8 [gaim-migrate @ 9222]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
181 #endif /* _MDNS_H_ */

mercurial