when zone does not match, do not run through the loop anyway
[oweals/gnunet.git] / src / peerstore / peerstore.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 peerstore/peerstore.h
20  * @brief IPC messages
21  * @author Omar Tarabai
22  */
23
24 #ifndef PEERSTORE_H_
25 #define PEERSTORE_H_
26
27 #include "gnunet_peerstore_service.h"
28
29
30 GNUNET_NETWORK_STRUCT_BEGIN
31 /**
32  * Message carrying a PEERSTORE record message
33  */
34 struct StoreRecordMessage
35 {
36
37   /**
38    * GNUnet message header
39    */
40   struct GNUNET_MessageHeader header;
41
42   /**
43    * #GNUNET_YES if peer id value set, #GNUNET_NO otherwise
44    */
45   uint16_t peer_set GNUNET_PACKED;
46
47   /**
48    * Size of the sub_system string
49    * Allocated at position 0 after this struct
50    */
51   uint16_t sub_system_size GNUNET_PACKED;
52
53   /**
54    * Peer Identity
55    */
56   struct GNUNET_PeerIdentity peer;
57
58   /**
59    * Expiry time of entry
60    */
61   struct GNUNET_TIME_AbsoluteNBO expiry;
62
63   /**
64    * Size of the key string
65    * Allocated at position 1 after this struct
66    */
67   uint16_t key_size GNUNET_PACKED;
68
69   /**
70    * Size of value blob
71    * Allocated at position 2 after this struct
72    */
73   uint16_t value_size GNUNET_PACKED;
74
75   /**
76    * Options, needed only in case of a
77    * store operation
78    */
79   uint32_t /* enum GNUNET_PEERSTORE_StoreOption */ options GNUNET_PACKED;
80
81   /* Followed by key and value */
82
83 };
84
85
86 /**
87  * Message carrying record key hash
88  */
89 struct StoreKeyHashMessage
90 {
91
92   /**
93    * GNUnet message header
94    */
95   struct GNUNET_MessageHeader header;
96
97   /**
98    * Always 0, for alignment.
99    */
100   uint32_t reserved GNUNET_PACKED;
101
102   /**
103    * Hash of a record key
104    */
105   struct GNUNET_HashCode keyhash;
106
107 };
108
109 GNUNET_NETWORK_STRUCT_END
110 #endif