143f233d4623885ebee9c355fece48ba87a20038
[oweals/gnunet.git] / src / namestore / namestore.h
1 /*
2      This file is part of GNUnet.
3      (C) 2009 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 3, 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 /**
22  * @file namestore/namestore.h
23  * @brief common internal definitions for namestore service
24  * @author Matthias Wachs
25  */
26 #ifndef NAMESTORE_H
27 #define NAMESTORE_H
28
29 /*
30  * Collect message types here, move to protocols later
31  */
32 #define GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME 431
33 #define GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME_RESPONSE 432
34
35 GNUNET_NETWORK_STRUCT_BEGIN
36 /**
37  * Connect to namestore service
38  */
39 struct StartMessage
40 {
41
42   /**
43    * Type will be GNUNET_MESSAGE_TYPE_NAMESTORE_START
44    */
45   struct GNUNET_MessageHeader header;
46
47 };
48 GNUNET_NETWORK_STRUCT_END
49
50
51 GNUNET_NETWORK_STRUCT_BEGIN
52 /**
53  * Generic namestore message with op id
54  */
55 struct GenericMessage
56 {
57   /**
58    * Type will be GNUNET_MESSAGE_TYPE_NAMESTORE_*
59    */
60   struct GNUNET_MessageHeader header;
61
62   /**
63    * Operation ID in NBO
64    */
65   uint32_t op_id;
66 };
67 GNUNET_NETWORK_STRUCT_END
68
69
70
71 GNUNET_NETWORK_STRUCT_BEGIN
72 /**
73  * Connect to namestore service
74  */
75 struct LookupNameMessage
76 {
77   /**
78    * Type will be GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME
79    */
80   struct GNUNET_MessageHeader header;
81
82   /**
83    * Operation ID in NBO
84    */
85   uint32_t op_id;
86
87   /* The zone */
88   GNUNET_HashCode zone;
89
90   /* Requested record type */
91   uint32_t record_type;
92
93   /* Requested record type */
94   uint32_t name_len;
95 };
96 GNUNET_NETWORK_STRUCT_END
97
98
99
100 GNUNET_NETWORK_STRUCT_BEGIN
101
102 /**
103  * Lookup response
104  * Memory layout:
105  * [struct LookupNameResponseMessage][struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded][char *name][rc_count * struct GNUNET_NAMESTORE_RecordData][struct GNUNET_CRYPTO_RsaSignature]
106  */
107
108 struct LookupNameResponseMessage
109 {
110   /**
111    * Type will be GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME_RESPONSE
112    */
113   struct GNUNET_MessageHeader header;
114
115   /**
116    * Operation ID in NBO
117    */
118   uint32_t op_id;
119
120   struct GNUNET_TIME_AbsoluteNBO expire;
121
122   uint16_t name_len;
123
124   uint16_t contains_sig;
125
126   /* Requested record type */
127   uint32_t rc_count;
128 };
129
130
131 GNUNET_NETWORK_STRUCT_END
132
133
134 /* end of namestore.h */
135 #endif