-getting rid of duplication of record type values / enum GNUNET_GNS_RecordType
[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 given zone, instead of the default zone?
75    */
76   uint32_t have_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   /* int */ uint32_t type;
87   
88   /**
89    * The key for shorten, if 'have_key' is set 
90    */
91   struct GNUNET_CRYPTO_EccPrivateKey shorten_key;
92
93   /* Followed by the name to look up */
94 };
95
96
97 /**
98  * Message from GNS service to client: new results.
99  */
100 struct GNUNET_GNS_ClientLookupResultMessage
101 {
102   /**
103     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT
104    */
105   struct GNUNET_MessageHeader header;
106
107   /**
108    * Unique identifier for this request (for key collisions).
109    */
110   uint32_t id GNUNET_PACKED;
111
112   /**
113    * The number of records contained in response
114    */  
115   uint32_t rd_count;
116
117   /* followed by rd_count GNUNET_NAMESTORE_RecordData structs*/
118
119 };
120
121
122 /**
123  * Message from client to GNS service to shorten names.
124  */
125 struct GNUNET_GNS_ClientShortenMessage
126 {
127   /**
128    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN
129    */
130   struct GNUNET_MessageHeader header;
131
132   /**
133    * Unique identifier for this request
134    */
135   uint32_t id GNUNET_PACKED;
136
137   /**
138    * If use_default_zone is empty this zone is used for lookup
139    */
140   struct GNUNET_CRYPTO_ShortHashCode zone;
141
142   /**
143    * Shorten zone
144    */
145   struct GNUNET_CRYPTO_ShortHashCode shorten_zone;
146
147   /**
148    * Private zone
149    */
150   struct GNUNET_CRYPTO_ShortHashCode private_zone;
151
152   /**
153    * Should we look up in the default zone?
154    */
155   uint32_t use_default_zone GNUNET_PACKED;
156   
157   /* Followed by the name to shorten up */
158 };
159
160
161 /**
162  * Message from GNS service to client: shorten result.
163  */
164 struct GNUNET_GNS_ClientShortenResultMessage
165 {
166   /**
167    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT
168    */
169   struct GNUNET_MessageHeader header;
170
171   /**
172    * Unique identifier for this request (for key collisions).
173    */
174   uint32_t id GNUNET_PACKED;
175
176   /* followed by the shortened name or '\0' for no result*/
177
178 };
179
180
181 /**
182  * Message from client to GNS service to lookup an authority of a name.
183  */
184 struct GNUNET_GNS_ClientGetAuthMessage
185 {
186   /**
187    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH
188    */
189   struct GNUNET_MessageHeader header;
190
191   /**
192    * Unique identifier for this request
193    */
194   uint32_t id GNUNET_PACKED;
195
196   /* Followed by the name to get authority for */
197 };
198
199
200 /**
201  * Message from GNS service to client: authority result.
202  */
203 struct GNUNET_GNS_ClientGetAuthResultMessage
204 {
205   /**
206    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT
207    */
208   struct GNUNET_MessageHeader header;
209
210   /**
211    * Unique identifier for this request (for key collisions).
212    */
213   uint32_t id GNUNET_PACKED;
214
215   /* followed by the authority part of the name or '\0' for no result*/
216
217 };
218
219 GNUNET_NETWORK_STRUCT_END
220
221 #endif