-typo
[oweals/gnunet.git] / src / gns / gns.h
1 /*
2       This file is part of GNUnet
3       (C) 2012 Christian Grothoff (and other contributing authors)
4
5       GNUnet is free software; you can redistribute it and/or modify
6       it under the terms of the GNU General Public License as published
7       by the Free Software Foundation; either version 2, or (at your
8       option) any later version.
9
10       GNUnet is distributed in the hope that it will be useful, but
11       WITHOUT ANY WARRANTY; without even the implied warranty of
12       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13       General Public License for more details.
14
15       You should have received a copy of the GNU General Public License
16       along with GNUnet; see the file COPYING.  If not, write to the
17       Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18       Boston, MA 02111-1307, USA.
19  */
20 /**
21  * @file gns/gns.h
22  * @brief IPC messages between GNS API and GNS service
23  * @author Martin Schanzenbach
24  */
25 #ifndef GNS_H
26 #define GNS_H
27
28 #include "gnunet_gns_service.h"
29
30 /**
31  * Name of the GADS TLD.
32  */
33 #define GNUNET_GNS_TLD "gads"
34
35 /**
36  * Name of the zone key TLD.
37  */
38 #define GNUNET_GNS_TLD_ZKEY "zkey"
39
40 /**
41  * TLD name used to indicate relative names.
42  */
43 #define GNUNET_GNS_TLD_PLUS "+"
44
45
46 GNUNET_NETWORK_STRUCT_BEGIN
47
48 /**
49  * Message from client to GNS service to lookup records.
50  */
51 struct GNUNET_GNS_ClientLookupMessage
52 {
53   /**
54    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP
55    */
56   struct GNUNET_MessageHeader header;
57
58   /**
59    * Unique identifier for this request (for key collisions).
60    */
61   uint32_t id GNUNET_PACKED;
62
63   /**
64    * If use_default_zone is empty this zone is used for lookup
65    */
66   struct GNUNET_CRYPTO_ShortHashCode zone;
67
68   /**
69    * Only check cached results
70    */
71   uint32_t only_cached GNUNET_PACKED;
72
73   /**
74    * Should we look up in the default zone?
75    */
76   uint32_t use_default_zone GNUNET_PACKED;
77
78   /**
79    * Is a shorten key attached?
80    */
81   uint32_t have_key GNUNET_PACKED;
82
83   /**
84    * the type of record to look up
85    */
86   /* enum GNUNET_GNS_RecordType */ uint32_t type;
87
88   /* Followed by the key for shorten (optional) see have_key */
89
90   /* Followed by the name to look up */
91 };
92
93
94 /**
95  * Message from GNS service to client: new results.
96  */
97 struct GNUNET_GNS_ClientLookupResultMessage
98 {
99   /**
100     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT
101    */
102   struct GNUNET_MessageHeader header;
103
104   /**
105    * Unique identifier for this request (for key collisions).
106    */
107   uint32_t id GNUNET_PACKED;
108
109   /**
110    * The number of records contained in response
111    */  
112   uint32_t rd_count;
113
114   /* followed by rd_count GNUNET_NAMESTORE_RecordData structs*/
115
116 };
117
118
119 /**
120  * Message from client to GNS service to shorten names.
121  */
122 struct GNUNET_GNS_ClientShortenMessage
123 {
124   /**
125    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN
126    */
127   struct GNUNET_MessageHeader header;
128
129   /**
130    * Unique identifier for this request
131    */
132   uint32_t id GNUNET_PACKED;
133
134   /**
135    * If use_default_zone is empty this zone is used for lookup
136    */
137   struct GNUNET_CRYPTO_ShortHashCode zone;
138
139   /**
140    * Shorten zone
141    */
142   struct GNUNET_CRYPTO_ShortHashCode shorten_zone;
143
144   /**
145    * Private zone
146    */
147   struct GNUNET_CRYPTO_ShortHashCode private_zone;
148
149   /**
150    * Should we look up in the default zone?
151    */
152   uint32_t use_default_zone GNUNET_PACKED;
153   
154   /* Followed by the name to shorten up */
155 };
156
157
158 /**
159  * Message from GNS service to client: shorten result.
160  */
161 struct GNUNET_GNS_ClientShortenResultMessage
162 {
163   /**
164    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT
165    */
166   struct GNUNET_MessageHeader header;
167
168   /**
169    * Unique identifier for this request (for key collisions).
170    */
171   uint32_t id GNUNET_PACKED;
172
173   /* followed by the shortened name or '\0' for no result*/
174
175 };
176
177
178 /**
179  * Message from client to GNS service to lookup an authority of a name.
180  */
181 struct GNUNET_GNS_ClientGetAuthMessage
182 {
183   /**
184    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH
185    */
186   struct GNUNET_MessageHeader header;
187
188   /**
189    * Unique identifier for this request
190    */
191   uint32_t id GNUNET_PACKED;
192
193   /* Followed by the name to get authority for */
194 };
195
196
197 /**
198  * Message from GNS service to client: authority result.
199  */
200 struct GNUNET_GNS_ClientGetAuthResultMessage
201 {
202   /**
203    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT
204    */
205   struct GNUNET_MessageHeader header;
206
207   /**
208    * Unique identifier for this request (for key collisions).
209    */
210   uint32_t id GNUNET_PACKED;
211
212   /* followed by the authority part of the name or '\0' for no result*/
213
214 };
215
216 GNUNET_NETWORK_STRUCT_END
217
218 #endif