GNUnet 0.21.0
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_util_lib.h"
30#include "gnunet_time_lib.h"
31
35#define DEBUG_CORE GNUNET_EXTRA_LOGGING
36
43#define GNUNET_CORE_OPTION_NOTHING 0
44
48#define GNUNET_CORE_OPTION_SEND_STATUS_CHANGE 4
49
53#define GNUNET_CORE_OPTION_SEND_FULL_INBOUND 8
54
59#define GNUNET_CORE_OPTION_SEND_HDR_INBOUND 16
60
64#define GNUNET_CORE_OPTION_SEND_FULL_OUTBOUND 32
65
70#define GNUNET_CORE_OPTION_SEND_HDR_OUTBOUND 64
71
72
74
82{
87
92};
93
94
100{
105
110
115};
116
117
123{
128
133
138};
139
140
146{
151
156
161};
162
163
174{
180
185
186 /* Followed by payload (message or just header), variable size */
187};
188
189
195{
200
205
211
216
221
226
231};
232
233
240{
245
253
258
263};
264
265
271{
276
282
288
293};
294
295
301{
306
311
316
321};
322
323
325#endif
326/* end of core.h */
Functions related to time.
#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.
Message sent by the service to clients to notify them about a peer connecting.
Definition: core.h:123
struct GNUNET_PeerIdentity peer
Identity of the connecting peer.
Definition: core.h:137
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_NOTIFY_CONNECT.
Definition: core.h:127
uint32_t reserved
Always zero.
Definition: core.h:132
Message sent by the service to clients to notify them about a peer disconnecting.
Definition: core.h:146
uint32_t reserved
Always zero.
Definition: core.h:155
struct GNUNET_PeerIdentity peer
Identity of the connecting peer.
Definition: core.h:160
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_NOTIFY_DISCONNECT.
Definition: core.h:150
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:82
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_INIT.
Definition: core.h:86
uint32_t options
Options, see GNUNET_CORE_OPTION_ values.
Definition: core.h:91
Message transmitted by the gnunet-service-core process to its clients in response to an INIT message.
Definition: core.h:100
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_INIT_REPLY.
Definition: core.h:104
struct GNUNET_PeerIdentity my_identity
Public key of the local peer.
Definition: core.h:114
uint32_t reserved
Always zero.
Definition: core.h:109
Message sent by the service to monitor clients to notify them about a peer changing status.
Definition: core.h:301
struct GNUNET_PeerIdentity peer
Identity of the peer.
Definition: core.h:315
uint32_t state
New peer state, an enum GNUNET_CORE_KxState in NBO.
Definition: core.h:310
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_MONITOR_NOTIFY.
Definition: core.h:305
struct GNUNET_TIME_AbsoluteNBO timeout
How long will we stay in this state (if nothing else happens)?
Definition: core.h:320
Message sent by the service to clients to notify them about messages being received or transmitted.
Definition: core.h:174
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_NOTIFY_INBOUND or GNUNET_MESSAGE_TYPE_CORE_NOTIFY_OUTBOUND.
Definition: core.h:179
struct GNUNET_PeerIdentity peer
Identity of the receiver or sender.
Definition: core.h:184
Core notifying client that it is allowed to now transmit a message to the given target (response to G...
Definition: core.h:240
uint16_t smr_id
smr_id from the request.
Definition: core.h:257
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_SEND_READY.
Definition: core.h:244
struct GNUNET_PeerIdentity peer
Identity of the intended target.
Definition: core.h:262
uint16_t size
How many bytes are allowed for transmission? Guaranteed to be at least as big as the requested size,...
Definition: core.h:252
Client notifying core about the maximum-priority message it has in the queue for a particular target.
Definition: core.h:195
uint32_t priority
How important is this message?
Definition: core.h:204
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST.
Definition: core.h:199
struct GNUNET_PeerIdentity peer
Identity of the intended target.
Definition: core.h:215
uint16_t size
How large is the message?
Definition: core.h:225
uint16_t smr_id
Counter for this peer to match SMRs to replies.
Definition: core.h:230
uint32_t reserved
Always zero.
Definition: core.h:220
struct GNUNET_TIME_AbsoluteNBO deadline
By what time would the sender really like to see this message transmitted?
Definition: core.h:210
Client asking core to transmit a particular message to a particular target (response to GNUNET_MESSAG...
Definition: core.h:271
struct GNUNET_MessageHeader header
Header with type GNUNET_MESSAGE_TYPE_CORE_SEND.
Definition: core.h:275
struct GNUNET_TIME_AbsoluteNBO deadline
By what time would the sender really like to see this message transmitted?
Definition: core.h:287
uint32_t priority
How important is this message? Contains a enum GNUNET_MQ_PriorityPreferences in NBO.
Definition: core.h:281
struct GNUNET_PeerIdentity peer
Identity of the intended receiver.
Definition: core.h:292