-consistently use struct GNUNET_HashCode
[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 #include "gnunet_gns_service.h"
22
23 /**
24  * @file gns/gns.h
25  * @brief IPC messages between GNS API and GNS service
26  * @author Martin Schanzenbach
27  */
28 #ifndef GNS_H
29 #define GNS_H
30
31 #define GNUNET_GNS_TLD "gnunet"
32 #define GNUNET_GNS_TLD_ZKEY "zkey"
33 #define GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL 3600
34
35 #define MAX_DNS_LABEL_LENGTH 63
36 #define MAX_DNS_NAME_LENGTH 253
37
38 GNUNET_NETWORK_STRUCT_BEGIN
39
40 /**
41  * Message from client to GNS service to lookup records.
42  */
43 struct GNUNET_GNS_ClientLookupMessage
44 {
45   /**
46     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP
47    */
48   struct GNUNET_MessageHeader header;
49
50   /**
51    * Unique identifier for this request (for key collisions).
52    */
53   uint32_t id GNUNET_PACKED;
54
55   /**
56    * Only check cached results
57    */
58   uint32_t only_cached GNUNET_PACKED;
59
60   /**
61    * Should we look up in the default zone?
62    */
63   uint32_t use_default_zone GNUNET_PACKED;
64
65   /**
66    * If use_default_zone is empty this zone is used for lookup
67    */
68   struct GNUNET_CRYPTO_ShortHashCode zone;
69
70   /**
71    * Should we use a shorten zone?
72    */
73   uint32_t use_shorten_zone GNUNET_PACKED;
74
75   /**
76    * If use_shorten_zone is set use this zone for shortening
77    */
78   struct GNUNET_CRYPTO_ShortHashCode shorten_zone;
79
80   /**
81    * the type of record to look up
82    */
83   enum GNUNET_GNS_RecordType type;
84
85   /* Followed by the name to look up */
86 };
87
88
89 /**
90  * Message from GNS service to client: new results.
91  */
92 struct GNUNET_GNS_ClientLookupResultMessage
93 {
94   /**
95     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT
96    */
97   struct GNUNET_MessageHeader header;
98
99   /**
100    * Unique identifier for this request (for key collisions).
101    */
102   uint32_t id GNUNET_PACKED;
103
104   /**
105    * The number of records contained in response
106    */  
107   uint32_t rd_count;
108
109   // FIXME: what format has a GNS_Record?
110   /* followed by rd_count GNUNET_NAMESTORE_RecordData structs*/
111
112 };
113
114 /**
115  * Message from client to GNS service to shorten names.
116  */
117 struct GNUNET_GNS_ClientShortenMessage
118 {
119   /**
120     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN
121    */
122   struct GNUNET_MessageHeader header;
123
124   /**
125    * Unique identifier for this request
126    */
127   uint32_t id GNUNET_PACKED;
128
129   /**
130    * Should we look up in the default zone?
131    */
132   uint32_t use_default_zone 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    * Should we use a shorten zone?
141    */
142   uint32_t use_shorten_zone GNUNET_PACKED;
143
144   /**
145    * If use_shorten_zone is set use this zone for shortening
146    */
147   struct GNUNET_CRYPTO_ShortHashCode shorten_zone;
148   
149   /* Followed by the name to shorten up */
150 };
151
152
153 /**
154  * Message from GNS service to client: shorten result.
155  */
156 struct GNUNET_GNS_ClientShortenResultMessage
157 {
158   /**
159     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT
160    */
161   struct GNUNET_MessageHeader header;
162
163   /**
164    * Unique identifier for this request (for key collisions).
165    */
166   uint32_t id GNUNET_PACKED;
167
168   /* followed by the shortened name or '\0' for no result*/
169
170 };
171
172 /**
173  * Message from client to GNS service to lookup an authority of a name.
174  */
175 struct GNUNET_GNS_ClientGetAuthMessage
176 {
177   /**
178     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH
179    */
180   struct GNUNET_MessageHeader header;
181
182   /**
183    * Unique identifier for this request
184    */
185   uint32_t id GNUNET_PACKED;
186
187   /* Followed by the name to get authority for */
188 };
189
190
191 /**
192  * Message from GNS service to client: authority result.
193  */
194 struct GNUNET_GNS_ClientGetAuthResultMessage
195 {
196   /**
197     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT
198    */
199   struct GNUNET_MessageHeader header;
200
201   /**
202    * Unique identifier for this request (for key collisions).
203    */
204   uint32_t id GNUNET_PACKED;
205
206   /* followed by the authority part of the name or '\0' for no result*/
207
208 };
209 GNUNET_NETWORK_STRUCT_END
210
211 #endif