GNUnet  0.11.x
core.h
Go to the documentation of this file.
1 /*
2  This file is part of GNUnet.
3  Copyright (C) 2009-2014 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 
26 #ifndef CORE_H
27 #define CORE_H
28 
29 #include "gnunet_bandwidth_lib.h"
31 #include "gnunet_crypto_lib.h"
32 #include "gnunet_time_lib.h"
33 
37 #define DEBUG_CORE GNUNET_EXTRA_LOGGING
38 
45 #define GNUNET_CORE_OPTION_NOTHING 0
46 
50 #define GNUNET_CORE_OPTION_SEND_STATUS_CHANGE 4
51 
55 #define GNUNET_CORE_OPTION_SEND_FULL_INBOUND 8
56 
61 #define GNUNET_CORE_OPTION_SEND_HDR_INBOUND 16
62 
66 #define GNUNET_CORE_OPTION_SEND_FULL_OUTBOUND 32
67 
72 #define GNUNET_CORE_OPTION_SEND_HDR_OUTBOUND 64
73 
74 
76 
84 {
89 
94 };
95 
96 
102 {
107 
112 
117 };
118 
119 
125 {
130 
135 
139  struct GNUNET_PeerIdentity peer;
140 };
141 
142 
148 {
153 
158 
162  struct GNUNET_PeerIdentity peer;
163 };
164 
165 
176 {
182 
186  struct GNUNET_PeerIdentity peer;
187 
188  /* Followed by payload (message or just header), variable size */
189 };
190 
191 
197 {
202 
207 
213 
217  struct GNUNET_PeerIdentity peer;
218 
223 
227  uint16_t size GNUNET_PACKED;
228 
233 };
234 
235 
242 {
247 
254  uint16_t size GNUNET_PACKED;
255 
260 
264  struct GNUNET_PeerIdentity peer;
265 };
266 
267 
273 {
278 
284 
290 
294  struct GNUNET_PeerIdentity peer;
295 };
296 
297 
303 {
308 
313 
317  struct GNUNET_PeerIdentity peer;
318 
323 };
324 
325 
327 #endif
328 /* end of core.h */
#define GNUNET_NETWORK_STRUCT_BEGIN
Define as empty, GNUNET_PACKED should suffice, but this won't work on W32.
#define GNUNET_NETWORK_STRUCT_END
Define as empty, GNUNET_PACKED should suffice, but this won't work on W32;.
#define GNUNET_PACKED
gcc-ism to get packed structs.
cryptographic primitives for GNUnet
Message sent by the service to clients to notify them about a peer connecting.
Definition: core.h:125
struct GNUNET_PeerIdentity peer
Identity of the connecting peer.
Definition: core.h:139
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_NOTIFY_CONNECT.
Definition: core.h:129
uint32_t reserved
Always zero.
Definition: core.h:134
Message sent by the service to clients to notify them about a peer disconnecting.
Definition: core.h:148
uint32_t reserved
Always zero.
Definition: core.h:157
struct GNUNET_PeerIdentity peer
Identity of the connecting peer.
Definition: core.h:162
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_NOTIFY_DISCONNECT.
Definition: core.h:152
Header for all communications.
The identity of the host (wraps the signing key of the peer).
Time for absolute time used by GNUnet, in microseconds and in network byte order.
Message transmitted core clients to gnunet-service-core to start the interaction.
Definition: core.h:84
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_INIT.
Definition: core.h:88
uint32_t options
Options, see GNUNET_CORE_OPTION_ values.
Definition: core.h:93
Message transmitted by the gnunet-service-core process to its clients in response to an INIT message.
Definition: core.h:102
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_INIT_REPLY.
Definition: core.h:106
struct GNUNET_PeerIdentity my_identity
Public key of the local peer.
Definition: core.h:116
uint32_t reserved
Always zero.
Definition: core.h:111
Message sent by the service to monitor clients to notify them about a peer changing status.
Definition: core.h:303
struct GNUNET_PeerIdentity peer
Identity of the peer.
Definition: core.h:317
uint32_t state
New peer state, an enum GNUNET_CORE_KxState in NBO.
Definition: core.h:312
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_MONITOR_NOTIFY.
Definition: core.h:307
struct GNUNET_TIME_AbsoluteNBO timeout
How long will we stay in this state (if nothing else happens)?
Definition: core.h:322
Message sent by the service to clients to notify them about messages being received or transmitted.
Definition: core.h:176
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_NOTIFY_INBOUND or GNUNET_MESSAGE_TYPE_CORE_NOTIFY_OUTBOUND.
Definition: core.h:181
struct GNUNET_PeerIdentity peer
Identity of the receiver or sender.
Definition: core.h:186
Core notifying client that it is allowed to now transmit a message to the given target (response to G...
Definition: core.h:242
uint16_t smr_id
smr_id from the request.
Definition: core.h:259
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_SEND_READY.
Definition: core.h:246
struct GNUNET_PeerIdentity peer
Identity of the intended target.
Definition: core.h:264
uint16_t size
How many bytes are allowed for transmission? Guaranteed to be at least as big as the requested size,...
Definition: core.h:254
Client notifying core about the maximum-priority message it has in the queue for a particular target.
Definition: core.h:197
uint32_t priority
How important is this message?
Definition: core.h:206
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST.
Definition: core.h:201
struct GNUNET_PeerIdentity peer
Identity of the intended target.
Definition: core.h:217
uint16_t size
How large is the message?
Definition: core.h:227
uint16_t smr_id
Counter for this peer to match SMRs to replies.
Definition: core.h:232
uint32_t reserved
Always zero.
Definition: core.h:222
struct GNUNET_TIME_AbsoluteNBO deadline
By what time would the sender really like to see this message transmitted?
Definition: core.h:212
Client asking core to transmit a particular message to a particular target (response to GNUNET_MESSAG...
Definition: core.h:273
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_SEND.
Definition: core.h:277
struct GNUNET_TIME_AbsoluteNBO deadline
By what time would the sender really like to see this message transmitted?
Definition: core.h:289
uint32_t priority
How important is this message? Contains a enum GNUNET_MQ_PriorityPreferences in NBO.
Definition: core.h:283
struct GNUNET_PeerIdentity peer
Identity of the intended receiver.
Definition: core.h:294