remove 'illegal' (non-reentrant) log logic from signal handler
[oweals/gnunet.git] / src / gns / gns.h
1 /*
2       This file is part of GNUnet
3       Copyright (C) 2012-2020 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    * Recursion depth limit, i.e. how many more
61    * GNS zones may be traversed during the resolution
62    * of this name.
63    */
64   uint16_t recursion_depth_limit GNUNET_PACKED;
65
66   /**
67    * the type of record to look up
68    */
69   int32_t type GNUNET_PACKED;
70
71   /* Followed by the zero-terminated name to look up */
72 };
73
74
75 /**
76  * Message from GNS service to client: new results.
77  */
78 struct LookupResultMessage
79 {
80   /**
81    * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT
82    */
83   struct GNUNET_MessageHeader header;
84
85   /**
86    * Unique identifier for this request (for key collisions).
87    */
88   uint32_t id GNUNET_PACKED;
89
90   /**
91    * The number of records contained in response. Zero for
92    * NXDOMAIN (as GNS always returns all records, there is
93    * no "NO DATA" case).
94    */
95   uint32_t rd_count GNUNET_PACKED;
96
97   /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
98 };
99
100
101 GNUNET_NETWORK_STRUCT_END
102
103 #endif