glitch in the license text detected by hyazinthe, thank you!
[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 /**
16  * @file gns/gns.h
17  * @brief IPC messages between GNS API and GNS service
18  * @author Martin Schanzenbach
19  */
20 #ifndef GNS_H
21 #define GNS_H
22
23 #include "gnunet_gns_service.h"
24
25 /**
26  * Name of the GNS TLD.
27  */
28 #define GNUNET_GNS_TLD "gnu"
29
30 /**
31  * Name of the zone key TLD.
32  */
33 #define GNUNET_GNS_TLD_ZKEY "zkey"
34
35 /**
36  * TLD name used to indicate relative names.
37  */
38 #define GNUNET_GNS_TLD_PLUS "+"
39
40
41 GNUNET_NETWORK_STRUCT_BEGIN
42
43 /**
44  * Message from client to GNS service to lookup records.
45  */
46 struct LookupMessage
47 {
48   /**
49    * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP
50    */
51   struct GNUNET_MessageHeader header;
52
53   /**
54    * Unique identifier for this request (for key collisions).
55    */
56   uint32_t id GNUNET_PACKED;
57
58   /**
59    * Zone that is to be used for lookup
60    */
61   struct GNUNET_CRYPTO_EcdsaPublicKey zone;
62
63   /**
64    * Local options for where to look for results
65    * (an `enum GNUNET_GNS_LocalOptions` in NBO).
66    */
67   int16_t options GNUNET_PACKED;
68
69   /**
70    * Always 0.
71    */
72   int16_t reserved GNUNET_PACKED;
73
74   /**
75    * the type of record to look up
76    */
77   int32_t type GNUNET_PACKED;
78
79   /* Followed by the zero-terminated name to look up */
80 };
81
82
83 /**
84  * Message from GNS service to client: new results.
85  */
86 struct LookupResultMessage
87 {
88   /**
89     * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT
90    */
91   struct GNUNET_MessageHeader header;
92
93   /**
94    * Unique identifier for this request (for key collisions).
95    */
96   uint32_t id GNUNET_PACKED;
97
98   /**
99    * The number of records contained in response
100    */
101   uint32_t rd_count GNUNET_PACKED;
102
103   /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
104
105 };
106
107
108 GNUNET_NETWORK_STRUCT_END
109
110 #endif