8a615f43e88bd11f306107b8e0aa64e1d5c9d7e5
[oweals/gnunet.git] / src / gns / gns.h
1 /*
2       This file is part of GNUnet
3       Copyright (C) 2012-2013 GNUnet e.V.
4
5       GNUnet is free software: you can redistribute it and/or modify it
6       under the terms of the GNU Affero General Public License as published
7       by the Free Software Foundation, either version 3 of the License,
8       or (at your 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       Affero General Public License for more details.
14      
15       You should have received a copy of the GNU Affero General Public License
16       along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 /**
19  * @file gns/gns.h
20  * @brief IPC messages between GNS API and GNS service
21  * @author Martin Schanzenbach
22  */
23 #ifndef GNS_H
24 #define GNS_H
25
26 #include "gnunet_gns_service.h"
27
28 /**
29  * Name of the GNS TLD.
30  */
31 #define GNUNET_GNS_TLD "gnu"
32
33 /**
34  * Name of the zone key TLD.
35  */
36 #define GNUNET_GNS_TLD_ZKEY "zkey"
37
38 /**
39  * TLD name used to indicate relative names.
40  */
41 #define GNUNET_GNS_TLD_PLUS "+"
42
43
44 GNUNET_NETWORK_STRUCT_BEGIN
45
46 /**
47  * Message from client to GNS service to lookup records.
48  */
49 struct LookupMessage
50 {
51   /**
52    * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP
53    */
54   struct GNUNET_MessageHeader header;
55
56   /**
57    * Unique identifier for this request (for key collisions).
58    */
59   uint32_t id GNUNET_PACKED;
60
61   /**
62    * Zone that is to be used for lookup
63    */
64   struct GNUNET_CRYPTO_EcdsaPublicKey zone;
65
66   /**
67    * Local options for where to look for results
68    * (an `enum GNUNET_GNS_LocalOptions` in NBO).
69    */
70   int16_t options GNUNET_PACKED;
71
72   /**
73    * Always 0.
74    */
75   int16_t reserved GNUNET_PACKED;
76
77   /**
78    * the type of record to look up
79    */
80   int32_t type GNUNET_PACKED;
81
82   /* Followed by the zero-terminated name to look up */
83 };
84
85
86 /**
87  * Message from GNS service to client: new results.
88  */
89 struct LookupResultMessage
90 {
91   /**
92     * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT
93    */
94   struct GNUNET_MessageHeader header;
95
96   /**
97    * Unique identifier for this request (for key collisions).
98    */
99   uint32_t id GNUNET_PACKED;
100
101   /**
102    * The number of records contained in response
103    */
104   uint32_t rd_count GNUNET_PACKED;
105
106   /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
107
108 };
109
110
111 GNUNET_NETWORK_STRUCT_END
112
113 #endif