Merge branch 'master' of git+ssh://gnunet.org/gnunet
[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      SPDX-License-Identifier: AGPL3.0-or-later
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 GNUNET_NETWORK_STRUCT_BEGIN
32
33 /**
34  * Message from client to GNS service to lookup records.
35  */
36 struct LookupMessage
37 {
38   /**
39    * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP
40    */
41   struct GNUNET_MessageHeader header;
42
43   /**
44    * Unique identifier for this request (for key collisions).
45    */
46   uint32_t id GNUNET_PACKED;
47
48   /**
49    * Zone that is to be used for lookup
50    */
51   struct GNUNET_CRYPTO_EcdsaPublicKey zone;
52
53   /**
54    * Local options for where to look for results
55    * (an `enum GNUNET_GNS_LocalOptions` in NBO).
56    */
57   int16_t options GNUNET_PACKED;
58
59   /**
60    * Always 0.
61    */
62   int16_t reserved GNUNET_PACKED;
63
64   /**
65    * the type of record to look up
66    */
67   int32_t type GNUNET_PACKED;
68
69   /* Followed by the zero-terminated name to look up */
70 };
71
72
73 /**
74  * Message from GNS service to client: new results.
75  */
76 struct LookupResultMessage
77 {
78   /**
79     * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT
80    */
81   struct GNUNET_MessageHeader header;
82
83   /**
84    * Unique identifier for this request (for key collisions).
85    */
86   uint32_t id GNUNET_PACKED;
87
88   /**
89    * The number of records contained in response
90    */
91   uint32_t rd_count GNUNET_PACKED;
92
93   /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
94
95 };
96
97
98 GNUNET_NETWORK_STRUCT_END
99
100 #endif