-less malloc more stack
[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 GNUNET_NETWORK_STRUCT_BEGIN
36
37 /**
38  * Message from client to GNS service to lookup records.
39  */
40 struct GNUNET_GNS_ClientLookupMessage
41 {
42   /**
43     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP
44    */
45   struct GNUNET_MessageHeader header;
46
47   /**
48    * Unique identifier for this request (for key collisions).
49    */
50   uint32_t id GNUNET_PACKED;
51
52   /**
53    * the type of record to look up
54    */
55   // FIXME: bad type - should be of GNUNET_GNS_RecordType
56   enum GNUNET_GNS_RecordType type;
57
58   /* Followed by the name to look up */
59 };
60
61
62 /**
63  * Message from GNS service to client: new results.
64  */
65 struct GNUNET_GNS_ClientLookupResultMessage
66 {
67   /**
68     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT
69    */
70   struct GNUNET_MessageHeader header;
71
72   /**
73    * Unique identifier for this request (for key collisions).
74    */
75   uint32_t id GNUNET_PACKED;
76
77   /**
78    * The number of records contained in response
79    */  
80   uint32_t rd_count;
81
82   // FIXME: what format has a GNS_Record?
83   /* followed by rd_count GNUNET_NAMESTORE_RecordData structs*/
84
85 };
86
87 /**
88  * Message from client to GNS service to shorten names.
89  */
90 struct GNUNET_GNS_ClientShortenMessage
91 {
92   /**
93     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN
94    */
95   struct GNUNET_MessageHeader header;
96
97   /**
98    * Unique identifier for this request
99    */
100   uint32_t id GNUNET_PACKED;
101
102   /* Followed by the name to shorten up */
103 };
104
105
106 /**
107  * Message from GNS service to client: shorten result.
108  */
109 struct GNUNET_GNS_ClientShortenResultMessage
110 {
111   /**
112     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT
113    */
114   struct GNUNET_MessageHeader header;
115
116   /**
117    * Unique identifier for this request (for key collisions).
118    */
119   uint32_t id GNUNET_PACKED;
120
121   /* followed by the shortened name or '\0' for no result*/
122
123 };
124
125 /**
126  * Message from client to GNS service to lookup an authority of a name.
127  */
128 struct GNUNET_GNS_ClientGetAuthMessage
129 {
130   /**
131     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH
132    */
133   struct GNUNET_MessageHeader header;
134
135   /**
136    * Unique identifier for this request
137    */
138   uint32_t id GNUNET_PACKED;
139
140   /* Followed by the name to get authority for */
141 };
142
143
144 /**
145  * Message from GNS service to client: authority result.
146  */
147 struct GNUNET_GNS_ClientGetAuthResultMessage
148 {
149   /**
150     * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT
151    */
152   struct GNUNET_MessageHeader header;
153
154   /**
155    * Unique identifier for this request (for key collisions).
156    */
157   uint32_t id GNUNET_PACKED;
158
159   /* followed by the authority part of the name or '\0' for no result*/
160
161 };
162 GNUNET_NETWORK_STRUCT_END
163
164 #endif