-fixes, interceptor now speaks zkey
[oweals/gnunet.git] / src / include / gnunet_protocols.h
1 /*
2      This file is part of GNUnet.
3      (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 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 2, 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 include/gnunet_protocols.h
23  * @brief constants for network protocols
24  * @author Christian Grothoff
25  */
26
27 #ifndef GNUNET_PROTOCOLS_H
28 #define GNUNET_PROTOCOLS_H
29
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #if 0                           /* keep Emacsens' auto-indent happy */
34 }
35 #endif
36 #endif
37
38 /*******************************************************************************
39  * UTIL message types
40  ******************************************************************************/
41
42 /**
43  * Test if service is online.
44  */
45 #define GNUNET_MESSAGE_TYPE_TEST 1
46
47 /**
48  * Dummy messages for testing / benchmarking.
49  */
50 #define GNUNET_MESSAGE_TYPE_DUMMY 2
51
52 /*******************************************************************************
53  * RESOLVER message types
54  ******************************************************************************/
55
56 /**
57  * Request DNS resolution.
58  */
59 #define GNUNET_MESSAGE_TYPE_RESOLVER_REQUEST 4
60
61 /**
62  * Response to a DNS resolution request.
63  */
64 #define GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE 5
65
66 /*******************************************************************************
67  * ARM message types
68  ******************************************************************************/
69
70 /**
71  * Request to ARM to start a service.
72  */
73 #define GNUNET_MESSAGE_TYPE_ARM_START 8
74
75 /**
76  * Request to ARM to stop a service.
77  */
78 #define GNUNET_MESSAGE_TYPE_ARM_STOP 9
79
80 /**
81  * Request ARM service itself to shutdown.
82  */
83 #define GNUNET_MESSAGE_TYPE_ARM_SHUTDOWN 10
84
85 /**
86  * Response from ARM.
87  */
88 #define GNUNET_MESSAGE_TYPE_ARM_RESULT 11
89
90 /**
91  * Request to ARM to list all currently running services
92  */
93 #define GNUNET_MESSAGE_TYPE_ARM_LIST 12
94
95 /**
96  * Response from ARM for listing currently running services
97  */
98 #define GNUNET_MESSAGE_TYPE_ARM_LIST_RESULT 13
99
100 /*******************************************************************************
101  * HELLO message types
102  ******************************************************************************/
103
104 /**
105  * HELLO message used for communicating peer addresses.
106  * Managed by libgnunethello.
107  */
108 #define GNUNET_MESSAGE_TYPE_HELLO 16
109
110 /*******************************************************************************
111  * FRAGMENTATION message types
112  ******************************************************************************/
113
114 /**
115  * FRAGMENT of a larger message.
116  * Managed by libgnunetfragment.
117  */
118 #define GNUNET_MESSAGE_TYPE_FRAGMENT 18
119
120 /**
121  * Acknowledgement of a FRAGMENT of a larger message.
122  * Managed by libgnunetfragment.
123  */
124 #define GNUNET_MESSAGE_TYPE_FRAGMENT_ACK 19
125
126 /*******************************************************************************
127  * Transport-WLAN message types
128  ******************************************************************************/
129
130 /**
131  * Type of messages between the gnunet-wlan-helper and the daemon
132  *
133  */
134 #define GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA 40
135
136 /**
137  * Control messages between the gnunet-wlan-helper and the daemon
138  */
139 #define GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL 41
140
141 /**
142  * Type of messages for advertisement over wlan
143  */
144 #define GNUNET_MESSAGE_TYPE_WLAN_ADVERTISEMENT 42
145
146 /**
147  * Type of messages for data over the wlan
148  */
149 #define GNUNET_MESSAGE_TYPE_WLAN_DATA 43
150
151
152 /*******************************************************************************
153  * Transport-DV message types
154  ******************************************************************************/
155
156 /**
157  * DV service to DV Plugin message, when a message is
158  * unwrapped by the DV service and handed to the plugin
159  * for processing
160  */
161 #define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_RECEIVE 44
162
163 /**
164  * DV Plugin to DV service message, indicating a message
165  * should be sent out.
166  */
167 #define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_SEND 45
168
169 /**
170  * DV service to DV api message, containing a confirmation
171  * or failure of a DV_SEND message.
172  */
173 #define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_SEND_RESULT 46
174
175 /**
176  * P2P DV message encapsulating some real message
177  */
178 #define GNUNET_MESSAGE_TYPE_DV_DATA 47
179
180 /**
181  * P2P DV message gossipping peer information
182  */
183 #define GNUNET_MESSAGE_TYPE_DV_GOSSIP 48
184
185 /**
186  * DV Plugin to DV service message, indicating
187  * startup.
188  */
189 #define GNUNET_MESSAGE_TYPE_DV_START 49
190
191 /**
192  * P2P DV message notifying connected peers of a disconnect
193  */
194 #define GNUNET_MESSAGE_TYPE_DV_DISCONNECT 50
195
196 /*******************************************************************************
197  * Transport-UDP message types
198  ******************************************************************************/
199
200 /**
201  * Normal UDP message type.
202  */
203 #define GNUNET_MESSAGE_TYPE_TRANSPORT_UDP_MESSAGE 56
204
205 /**
206  * UDP ACK.
207  */
208 #define GNUNET_MESSAGE_TYPE_TRANSPORT_UDP_ACK 57
209
210 /*******************************************************************************
211  * Transport-TCP message types
212  ******************************************************************************/
213
214 /**
215  * TCP NAT probe message, send from NAT'd peer to
216  * other peer to establish bi-directional communication
217  */
218 #define GNUNET_MESSAGE_TYPE_TRANSPORT_TCP_NAT_PROBE 60
219
220 /**
221  * Welcome message between TCP transports.
222  */
223 #define GNUNET_MESSAGE_TYPE_TRANSPORT_TCP_WELCOME 61
224
225 /**
226  * Message to force transport to update bandwidth assignment (LEGACY)
227  */
228 #define GNUNET_MESSAGE_TYPE_TRANSPORT_ATS 62
229
230 /*******************************************************************************
231  * NAT message types
232  ******************************************************************************/
233
234 /**
235  * Message to ask NAT server to perform traversal test
236  */
237 #define GNUNET_MESSAGE_TYPE_NAT_TEST 63
238
239 /*******************************************************************************
240  * CORE message types
241  ******************************************************************************/
242
243 /**
244  * Initial setup message from core client to core.
245  */
246 #define GNUNET_MESSAGE_TYPE_CORE_INIT 64
247
248 /**
249  * Response from core to core client to INIT message.
250  */
251 #define GNUNET_MESSAGE_TYPE_CORE_INIT_REPLY 65
252
253 /**
254  * Notify clients about new peer-to-peer connections (before
255  * key exchange and authentication).
256  */
257 #define GNUNET_MESSAGE_TYPE_CORE_NOTIFY_PRE_CONNECT 66
258
259 /**
260  * Notify clients about new peer-to-peer connections (triggered
261  * after key exchange).
262  */
263 #define GNUNET_MESSAGE_TYPE_CORE_NOTIFY_CONNECT 67
264
265 /**
266  * Notify clients about peer disconnecting.
267  */
268 #define GNUNET_MESSAGE_TYPE_CORE_NOTIFY_DISCONNECT 68
269
270 /**
271  * Notify clients about peer status change.
272  */
273 #define GNUNET_MESSAGE_TYPE_CORE_NOTIFY_STATUS_CHANGE 69
274
275 /**
276  * Notify clients about incoming P2P messages.
277  */
278 #define GNUNET_MESSAGE_TYPE_CORE_NOTIFY_INBOUND 70
279
280 /**
281  * Notify clients about outgoing P2P transmissions.
282  */
283 #define GNUNET_MESSAGE_TYPE_CORE_NOTIFY_OUTBOUND 71
284
285 /**
286  * Request from client to transmit message.
287  */
288 #define GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST 74
289
290 /**
291  * Confirmation from core that message can now be sent
292  */
293 #define GNUNET_MESSAGE_TYPE_CORE_SEND_READY 75
294
295 /**
296  * Client with message to transmit (after SEND_READY confirmation
297  * was received).
298  */
299 #define GNUNET_MESSAGE_TYPE_CORE_SEND 76
300
301
302 /**
303  * Request for peer iteration from CORE service.
304  */
305 #define GNUNET_MESSAGE_TYPE_CORE_ITERATE_PEERS 78
306
307 /**
308  * Last reply from core to request for peer iteration from CORE service.
309  */
310 #define GNUNET_MESSAGE_TYPE_CORE_ITERATE_PEERS_END 79
311
312 /**
313  * Check whether a given peer is currently connected to CORE.
314  */
315 #define GNUNET_MESSAGE_TYPE_CORE_PEER_CONNECTED 80
316
317 /**
318  * Session key exchange between peers.
319  */
320 #define GNUNET_MESSAGE_TYPE_CORE_SET_KEY 81
321
322 /**
323  * Encapsulation for an encrypted message between peers.
324  */
325 #define GNUNET_MESSAGE_TYPE_CORE_ENCRYPTED_MESSAGE 82
326
327 /**
328  * Check that other peer is alive (challenge).
329  */
330 #define GNUNET_MESSAGE_TYPE_CORE_PING 83
331
332 /**
333  * Confirmation that other peer is alive.
334  */
335 #define GNUNET_MESSAGE_TYPE_CORE_PONG 84
336
337 /**
338  * Request by the other peer to terminate the connection.
339  */
340 #define GNUNET_MESSAGE_TYPE_CORE_HANGUP 85
341
342 /**
343  * gzip-compressed type map of the sender
344  */
345 #define GNUNET_MESSAGE_TYPE_CORE_COMPRESSED_TYPE_MAP 86
346
347 /**
348  * uncompressed type map of the sender
349  */
350 #define GNUNET_MESSAGE_TYPE_CORE_BINARY_TYPE_MAP 87
351
352 /*******************************************************************************
353  * DATASTORE message types
354  ******************************************************************************/
355
356 /**
357  * Message sent by datastore client on join.
358  */
359 #define GNUNET_MESSAGE_TYPE_DATASTORE_RESERVE 92
360
361 /**
362  * Message sent by datastore client on join.
363  */
364 #define GNUNET_MESSAGE_TYPE_DATASTORE_RELEASE_RESERVE 93
365
366 /**
367  * Message sent by datastore to client informing about status
368  * processing a request
369  * (in response to RESERVE, RELEASE_RESERVE, PUT, UPDATE and REMOVE requests).
370  */
371 #define GNUNET_MESSAGE_TYPE_DATASTORE_STATUS 94
372
373 /**
374  * Message sent by datastore client to store data.
375  */
376 #define GNUNET_MESSAGE_TYPE_DATASTORE_PUT 95
377
378 /**
379  * Message sent by datastore client to update data.
380  */
381 #define GNUNET_MESSAGE_TYPE_DATASTORE_UPDATE 96
382
383 /**
384  * Message sent by datastore client to get data.
385  */
386 #define GNUNET_MESSAGE_TYPE_DATASTORE_GET 97
387
388 /**
389  * Message sent by datastore client to get random data.
390  */
391 #define GNUNET_MESSAGE_TYPE_DATASTORE_GET_REPLICATION 98
392
393 /**
394  * Message sent by datastore client to get random data.
395  */
396 #define GNUNET_MESSAGE_TYPE_DATASTORE_GET_ZERO_ANONYMITY 99
397
398 /**
399  * Message sent by datastore to client providing requested data
400  * (in response to GET or GET_RANDOM request).
401  */
402 #define GNUNET_MESSAGE_TYPE_DATASTORE_DATA 100
403
404 /**
405  * Message sent by datastore to client signaling end of matching data.
406  * This message will also be sent for "GET_RANDOM", even though
407  * "GET_RANDOM" returns at most one data item.
408  */
409 #define GNUNET_MESSAGE_TYPE_DATASTORE_DATA_END 101
410
411 /**
412  * Message sent by datastore client to remove data.
413  */
414 #define GNUNET_MESSAGE_TYPE_DATASTORE_REMOVE 102
415
416 /**
417  * Message sent by datastore client to drop the database.
418  */
419 #define GNUNET_MESSAGE_TYPE_DATASTORE_DROP 103
420
421
422 /*******************************************************************************
423  * FS message types
424  ******************************************************************************/
425
426 /**
427  * Message sent by fs client to start indexing.
428  */
429 #define GNUNET_MESSAGE_TYPE_FS_INDEX_START 128
430
431 /**
432  * Affirmative response to a request for start indexing.
433  */
434 #define GNUNET_MESSAGE_TYPE_FS_INDEX_START_OK 129
435
436 /**
437  * Response to a request for start indexing that
438  * refuses.
439  */
440 #define GNUNET_MESSAGE_TYPE_FS_INDEX_START_FAILED 130
441
442 /**
443  * Request from client for list of indexed files.
444  */
445 #define GNUNET_MESSAGE_TYPE_FS_INDEX_LIST_GET 131
446
447 /**
448  * Reply to client with an indexed file name.
449  */
450 #define GNUNET_MESSAGE_TYPE_FS_INDEX_LIST_ENTRY 132
451
452 /**
453  * Reply to client indicating end of list.
454  */
455 #define GNUNET_MESSAGE_TYPE_FS_INDEX_LIST_END 133
456
457 /**
458  * Request from client to unindex a file.
459  */
460 #define GNUNET_MESSAGE_TYPE_FS_UNINDEX 134
461
462 /**
463  * Reply to client indicating unindex receipt.
464  */
465 #define GNUNET_MESSAGE_TYPE_FS_UNINDEX_OK 135
466
467 /**
468  * Client asks FS service to start a (keyword) search.
469  */
470 #define GNUNET_MESSAGE_TYPE_FS_START_SEARCH 136
471
472 /**
473  * P2P request for content (one FS to another).
474  */
475 #define GNUNET_MESSAGE_TYPE_FS_GET 137
476
477 /**
478  * P2P response with content or active migration of content.  Also
479  * used between the service and clients (in response to START_SEARCH).
480  */
481 #define GNUNET_MESSAGE_TYPE_FS_PUT 138
482
483 /**
484  * Peer asks us to stop migrating content towards it for a while.
485  */
486 #define GNUNET_MESSAGE_TYPE_FS_MIGRATION_STOP 139
487
488
489 /*******************************************************************************
490  * DHT message types
491  ******************************************************************************/
492
493 /**
494  * Client wants to store item in DHT.
495  */
496 #define GNUNET_MESSAGE_TYPE_DHT_CLIENT_PUT 142
497
498 /**
499  * Client wants to lookup item in DHT.
500  */
501 #define GNUNET_MESSAGE_TYPE_DHT_CLIENT_GET 143
502
503 /**
504  * Client wants to stop search in DHT.
505  */
506 #define GNUNET_MESSAGE_TYPE_DHT_CLIENT_GET_STOP 144
507
508 /**
509  * Service returns result to client.
510  */
511 #define GNUNET_MESSAGE_TYPE_DHT_CLIENT_RESULT 145
512
513 /**
514  * Peer is storing data in DHT.
515  */
516 #define GNUNET_MESSAGE_TYPE_DHT_P2P_PUT 146
517
518 /**
519  * Peer tries to find data in DHT.
520  */
521 #define GNUNET_MESSAGE_TYPE_DHT_P2P_GET 147
522
523 /**
524  * Data is returned to peer from DHT.
525  */
526 #define GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT 148
527
528 /**
529  * Request / receive information about transiting GETs
530  */
531 #define GNUNET_MESSAGE_TYPE_DHT_MONITOR_GET             149
532
533 /**
534  * Request / receive information about transiting GET responses
535  */
536 #define GNUNET_MESSAGE_TYPE_DHT_MONITOR_GET_RESP        150
537
538 /**
539  * Request / receive information about transiting PUTs
540  */
541 #define GNUNET_MESSAGE_TYPE_DHT_MONITOR_PUT             151
542
543 /**
544  * Request / receive information about transiting PUT responses (TODO)
545  */
546 #define GNUNET_MESSAGE_TYPE_DHT_MONITOR_PUT_RESP        152
547
548
549 /*******************************************************************************
550  * HOSTLIST message types
551  ******************************************************************************/
552
553 /**
554  * Hostlist advertisement message
555  */
556 #define GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT 160
557
558
559 /*******************************************************************************
560  * STATISTICS message types
561  ******************************************************************************/
562
563 /**
564  * Set a statistical value.
565  */
566 #define GNUNET_MESSAGE_TYPE_STATISTICS_SET 168
567
568 /**
569  * Get a statistical value(s).
570  */
571 #define GNUNET_MESSAGE_TYPE_STATISTICS_GET 169
572
573 /**
574  * Response to a STATISTICS_GET message (with value).
575  */
576 #define GNUNET_MESSAGE_TYPE_STATISTICS_VALUE 170
577
578 /**
579  * Response to a STATISTICS_GET message (end of value stream).
580  */
581 #define GNUNET_MESSAGE_TYPE_STATISTICS_END 171
582
583 /**
584  * Watch changes to a statistical value.  Message format is the same
585  * as for GET, except that the subsystem and entry name must be given.
586  */
587 #define GNUNET_MESSAGE_TYPE_STATISTICS_WATCH 172
588
589 /**
590  * Changes to a watched value.
591  */
592 #define GNUNET_MESSAGE_TYPE_STATISTICS_WATCH_VALUE 173
593
594
595 /*******************************************************************************
596  * VPN message types
597  ******************************************************************************/
598
599 /**
600  * Type of messages between the gnunet-vpn-helper and the daemon
601  */
602 #define GNUNET_MESSAGE_TYPE_VPN_HELPER 185
603
604 /**
605  * Type of messages containing an ICMP packet for a service.
606  */
607 #define GNUNET_MESSAGE_TYPE_VPN_ICMP_TO_SERVICE 190
608
609 /**
610  * Type of messages containing an ICMP packet for the Internet.
611  */
612 #define GNUNET_MESSAGE_TYPE_VPN_ICMP_TO_INTERNET 191
613
614 /**
615  * Type of messages containing an ICMP packet for the VPN
616  */
617 #define GNUNET_MESSAGE_TYPE_VPN_ICMP_TO_VPN 192
618
619 /**
620  * Type of messages containing an DNS request for a DNS exit service.
621  */
622 #define GNUNET_MESSAGE_TYPE_VPN_DNS_TO_INTERNET 193
623
624 /**
625  * Type of messages containing an DNS reply from a DNS exit service.
626  */
627 #define GNUNET_MESSAGE_TYPE_VPN_DNS_FROM_INTERNET 194
628
629 /**
630  * Type of messages containing an TCP packet for a service.
631  */
632 #define GNUNET_MESSAGE_TYPE_VPN_TCP_TO_SERVICE_START 195
633
634 /**
635  * Type of messages containing an TCP packet for the Internet.
636  */
637 #define GNUNET_MESSAGE_TYPE_VPN_TCP_TO_INTERNET_START 196
638
639 /**
640  * Type of messages containing an TCP packet of an established connection.
641  */
642 #define GNUNET_MESSAGE_TYPE_VPN_TCP_DATA_TO_EXIT 197
643
644 /**
645  * Type of messages containing an TCP packet of an established connection.
646  */
647 #define GNUNET_MESSAGE_TYPE_VPN_TCP_DATA_TO_VPN 198
648
649 /**
650  * Type of messages containing an UDP packet for a service.
651  */
652 #define GNUNET_MESSAGE_TYPE_VPN_UDP_TO_SERVICE 199
653
654 /**
655  * Type of messages containing an UDP packet for the Internet.
656  */
657 #define GNUNET_MESSAGE_TYPE_VPN_UDP_TO_INTERNET 200
658
659 /**
660  * Type of messages containing an UDP packet from a remote host
661  */
662 #define GNUNET_MESSAGE_TYPE_VPN_UDP_REPLY 201
663
664
665 /**
666  * Client asks VPN service to setup an IP to redirect traffic
667  * via an exit node to some global IP address.
668  */
669 #define GNUNET_MESSAGE_TYPE_VPN_CLIENT_REDIRECT_TO_IP 202
670
671 /**
672  * Client asks VPN service to setup an IP to redirect traffic
673  * to some peer offering a service.
674  */
675 #define GNUNET_MESSAGE_TYPE_VPN_CLIENT_REDIRECT_TO_SERVICE 203
676
677 /**
678  * VPN service responds to client with an IP to use for the
679  * requested redirection.
680  */
681 #define GNUNET_MESSAGE_TYPE_VPN_CLIENT_USE_IP 204
682
683
684 /*******************************************************************************
685  * VPN-DNS message types
686  ******************************************************************************/
687
688
689 /**
690  * Initial message from client to DNS service for registration.
691  */
692 #define GNUNET_MESSAGE_TYPE_DNS_CLIENT_INIT 211
693
694 /**
695  * Type of messages between the gnunet-helper-dns and the service
696  */
697 #define GNUNET_MESSAGE_TYPE_DNS_CLIENT_REQUEST 212
698
699 /**
700  * Type of messages between the gnunet-helper-dns and the service
701  */
702 #define GNUNET_MESSAGE_TYPE_DNS_CLIENT_RESPONSE 213
703
704 /**
705  * Type of messages between the gnunet-helper-dns and the service
706  */
707 #define GNUNET_MESSAGE_TYPE_DNS_HELPER 214
708
709
710 /*******************************************************************************
711  * MESH message types
712  ******************************************************************************/
713
714 /**
715  * Type of message used to transport messages throug a MESH-tunnel (LEGACY)
716  */
717 #define GNUNET_MESSAGE_TYPE_MESH 215
718
719 /**
720  * Type of message used to send another peer which messages we want to receive
721  * through a mesh-tunnel (LEGACY)
722  */
723 #define GNUNET_MESSAGE_TYPE_MESH_HELLO 216
724
725 /**
726  * Request the creation of a path
727  */
728 #define GNUNET_MESSAGE_TYPE_MESH_PATH_CREATE            256
729
730 /**
731  * Request the modification of an existing path
732  */
733 #define GNUNET_MESSAGE_TYPE_MESH_PATH_CHANGE            257
734
735 /**
736  * Notify that a connection of a path is no longer valid
737  */
738 #define GNUNET_MESSAGE_TYPE_MESH_PATH_BROKEN            258
739
740 /**
741  * At some point, the route will spontaneously change
742  */
743 #define GNUNET_MESSAGE_TYPE_MESH_PATH_CHANGED           259
744
745 /**
746  * Transport data in the mesh (origin->end) unicast
747  */
748 #define GNUNET_MESSAGE_TYPE_MESH_UNICAST                260
749
750 /**
751  * Transport data to all peers in a tunnel
752  */
753 #define GNUNET_MESSAGE_TYPE_MESH_MULTICAST              261
754
755 /**
756  * Transport data back in the mesh (end->origin)
757  */
758 #define GNUNET_MESSAGE_TYPE_MESH_TO_ORIGIN              262
759
760 /**
761  * Send origin an ACK that the path is complete
762  */
763 #define GNUNET_MESSAGE_TYPE_MESH_PATH_ACK               263
764
765 /**
766  * Avoid path timeouts
767  */
768 #define GNUNET_MESSAGE_TYPE_MESH_PATH_KEEPALIVE         264
769
770 /**
771  * Request the destuction of a path
772  */
773 #define GNUNET_MESSAGE_TYPE_MESH_PATH_DESTROY           265
774
775 /**
776  * Request the destruction of a whole tunnel
777  */
778 #define GNUNET_MESSAGE_TYPE_MESH_TUNNEL_DESTROY         266
779
780 /**
781  * We need flow control
782  */
783 #define GNUNET_MESSAGE_TYPE_MESH_SPEED_NOTIFY           270
784
785 /**
786  * Connect to the mesh service, specifying subscriptions
787  */
788 #define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT          272
789
790 /**
791  * Ask the mesh service to create a new tunnel
792  */
793 #define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATE    273
794
795 /**
796  * Ask the mesh service to destroy a tunnel
797  */
798 #define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_DESTROY   274
799
800 /**
801  * Ask the mesh service to add a peer to an existing tunnel
802  */
803 #define GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_ADD         275
804
805 /**
806  * Ask the mesh service to remove a peer from a tunnel
807  */
808 #define GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_DEL         276
809
810 /**
811  * Ask the mesh service to add a peer offering a service to an existing tunnel
812  */
813 #define GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_ADD_BY_TYPE 277
814
815 /**
816  * 640kb should be enough for everybody
817  */
818 #define GNUNET_MESSAGE_TYPE_MESH_RESERVE_END            288
819
820
821
822 /*******************************************************************************
823  * CHAT message types START
824  ******************************************************************************/
825
826 /**
827  * Message sent from client to join a chat room.
828  */
829 #define GNUNET_MESSAGE_TYPE_CHAT_JOIN_REQUEST 300
830
831 /**
832  * Message sent to client to indicate joining of another room member.
833  */
834 #define GNUNET_MESSAGE_TYPE_CHAT_JOIN_NOTIFICATION 301
835
836 /**
837  * Message sent to client to indicate leaving of another room member.
838  */
839 #define GNUNET_MESSAGE_TYPE_CHAT_LEAVE_NOTIFICATION 302
840
841 /**
842  * Notification sent by service to client indicating that we've received a chat
843  * message.
844  */
845 #define GNUNET_MESSAGE_TYPE_CHAT_MESSAGE_NOTIFICATION 303
846
847 /**
848  * Request sent by client to transmit a chat message to another room members.
849  */
850 #define GNUNET_MESSAGE_TYPE_CHAT_TRANSMIT_REQUEST 304
851
852 /**
853  * Receipt sent from a message receiver to the service to confirm delivery of
854  * a chat message.
855  */
856 #define GNUNET_MESSAGE_TYPE_CHAT_CONFIRMATION_RECEIPT 305
857
858 /**
859  * Notification sent from the service to the original sender
860  * to acknowledge delivery of a chat message.
861  */
862 #define GNUNET_MESSAGE_TYPE_CHAT_CONFIRMATION_NOTIFICATION 306
863
864 /**
865  * P2P message sent to indicate joining of another room member.
866  */
867 #define GNUNET_MESSAGE_TYPE_CHAT_P2P_JOIN_NOTIFICATION 307
868
869 /**
870  * P2P message sent to indicate leaving of another room member.
871  */
872 #define GNUNET_MESSAGE_TYPE_CHAT_P2P_LEAVE_NOTIFICATION 308
873
874 /**
875  * P2P message sent to a newly connected peer to request its known clients in
876  * order to synchronize room members.
877  */
878 #define GNUNET_MESSAGE_TYPE_CHAT_P2P_SYNC_REQUEST 309
879
880 /**
881  * Notification sent from one peer to another to indicate that we have received
882  * a chat message.
883  */
884 #define GNUNET_MESSAGE_TYPE_CHAT_P2P_MESSAGE_NOTIFICATION 310
885
886 /**
887  * P2P receipt confirming delivery of a chat message.
888  */
889 #define GNUNET_MESSAGE_TYPE_CHAT_P2P_CONFIRMATION_RECEIPT 311
890
891
892 /*******************************************************************************
893  * NSE (network size estimation) message types
894  ******************************************************************************/
895
896 /**
897  * client->service message indicating start
898  */
899 #define GNUNET_MESSAGE_TYPE_NSE_START 321
900
901 /**
902  * P2P message sent from nearest peer
903  */
904 #define GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD 322
905
906 /**
907  * service->client message indicating
908  */
909 #define GNUNET_MESSAGE_TYPE_NSE_ESTIMATE 323
910
911
912 /*******************************************************************************
913  * PEERINFO message types
914  ******************************************************************************/
915
916 /**
917  * Request update and listing of a peer.
918  */
919 #define GNUNET_MESSAGE_TYPE_PEERINFO_GET 330
920
921 /**
922  * Request update and listing of all peers.
923  */
924 #define GNUNET_MESSAGE_TYPE_PEERINFO_GET_ALL 331
925
926 /**
927  * Information about one of the peers.
928  */
929 #define GNUNET_MESSAGE_TYPE_PEERINFO_INFO 332
930
931 /**
932  * End of information about other peers.
933  */
934 #define GNUNET_MESSAGE_TYPE_PEERINFO_INFO_END 333
935
936 /**
937  * Start notifying this client about all changes to
938  * the known peers until it disconnects.
939  */
940 #define GNUNET_MESSAGE_TYPE_PEERINFO_NOTIFY 334
941
942 /*******************************************************************************
943  * ATS message types
944  ******************************************************************************/
945
946 /**
947  * Type of the 'struct ClientStartMessage' sent by clients to ATS to
948  * identify the type of the client.
949  */
950 #define GNUNET_MESSAGE_TYPE_ATS_START 340
951
952 /**
953  * Type of the 'struct RequestAddressMessage' sent by clients to ATS
954  * to request an address to help connect.
955  */
956 #define GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS 341
957
958 /**
959  * Type of the 'struct RequestAddressMessage' sent by clients to ATS
960  * to request an address to help connect.
961  */
962 #define GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL 342
963
964 /**
965  * Type of the 'struct AddressUpdateMessage' sent by clients to ATS
966  * to inform ATS about performance changes.
967  */
968 #define GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE 343
969
970 /**
971  * Type of the 'struct AddressDestroyedMessage' sent by clients to ATS
972  * to inform ATS about an address being unavailable.
973  */
974 #define GNUNET_MESSAGE_TYPE_ATS_ADDRESS_DESTROYED 344
975
976 /**
977  * Type of the 'struct AddressSuggestionMessage' sent by ATS to clients
978  * to suggest switching to a different address.
979  */
980 #define GNUNET_MESSAGE_TYPE_ATS_ADDRESS_SUGGESTION 345
981
982 /**
983  * Type of the 'struct PeerInformationMessage' sent by ATS to clients
984  * to inform about QoS for a particular connection.
985  */
986 #define GNUNET_MESSAGE_TYPE_ATS_PEER_INFORMATION 346
987
988 /**
989  * Type of the 'struct ReservationRequestMessage' sent by clients to ATS
990  * to ask for inbound bandwidth reservations.
991  */
992 #define GNUNET_MESSAGE_TYPE_ATS_RESERVATION_REQUEST 347
993
994 /**
995  * Type of the 'struct ReservationResultMessage' sent by ATS to clients
996  * in response to a reservation request.
997  */
998 #define GNUNET_MESSAGE_TYPE_ATS_RESERVATION_RESULT 348
999
1000 /**
1001  * Type of the 'struct ChangePreferenceMessage' sent by clients to ATS
1002  * to ask for allocation preference changes.
1003  */
1004 #define GNUNET_MESSAGE_TYPE_ATS_PREFERENCE_CHANGE 349
1005
1006 /**
1007  * Type of the 'struct SessionReleaseMessage' sent by ATS to client
1008  * to confirm that a session ID was destroyed.
1009  */
1010 #define GNUNET_MESSAGE_TYPE_ATS_SESSION_RELEASE 350
1011
1012 /**
1013  * Type of the 'struct AddressUseMessage' sent by ATS to client
1014  * to confirm that an address is used or not used anymore
1015  */
1016 #define GNUNET_MESSAGE_TYPE_ATS_ADDRESS_IN_USE 351
1017
1018
1019
1020
1021 /*******************************************************************************
1022  * TRANSPORT message types
1023  ******************************************************************************/
1024
1025 /**
1026  * Message from the core saying that the transport
1027  * server should start giving it messages.  This
1028  * should automatically trigger the transmission of
1029  * a HELLO message.
1030  */
1031 #define GNUNET_MESSAGE_TYPE_TRANSPORT_START 360
1032
1033 /**
1034  * Message from TRANSPORT notifying about a
1035  * client that connected to us.
1036  */
1037 #define GNUNET_MESSAGE_TYPE_TRANSPORT_CONNECT 361
1038
1039 /**
1040  * Message from TRANSPORT notifying about a
1041  * client that disconnected from us.
1042  */
1043 #define GNUNET_MESSAGE_TYPE_TRANSPORT_DISCONNECT 362
1044
1045 /**
1046  * Request to TRANSPORT to transmit a message.
1047  */
1048 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SEND 363
1049
1050 /**
1051  * Confirmation from TRANSPORT that message for transmission has been
1052  * queued (and that the next message to this peer can now be passed to
1053  * the service).  Note that this confirmation does NOT imply that the
1054  * message was fully transmitted.
1055  */
1056 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_OK 364
1057
1058 /**
1059  * Message from TRANSPORT notifying about a
1060  * message that was received.
1061  */
1062 #define GNUNET_MESSAGE_TYPE_TRANSPORT_RECV 365
1063
1064 /**
1065  * Message telling transport to limit its receive rate.
1066  */
1067 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SET_QUOTA 366
1068
1069 /**
1070  * Request to look addresses of peers in server.
1071  */
1072 #define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING 367
1073
1074 /**
1075  * Response to the address lookup request.
1076  */
1077 #define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY 368
1078
1079 /**
1080  * Register a client that wants to do blacklisting.
1081  */
1082 #define GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_INIT 369
1083
1084 /**
1085  * Query to a blacklisting client (is this peer blacklisted)?
1086  */
1087 #define GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_QUERY 370
1088
1089 /**
1090  * Reply from blacklisting client (answer to blacklist query).
1091  */
1092 #define GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_REPLY 371
1093
1094 /**
1095  * Transport PING message
1096  */
1097 #define GNUNET_MESSAGE_TYPE_TRANSPORT_PING 372
1098
1099 /**
1100  * Transport PONG message
1101  */
1102 #define GNUNET_MESSAGE_TYPE_TRANSPORT_PONG 373
1103
1104 /**
1105  * Message for transport service from a client asking that a
1106  * connection be initiated with another peer.
1107  */
1108 #define GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_CONNECT 374
1109
1110 /**
1111  * Transport CONNECT message exchanged between transport services to
1112  * indicate that a session should be marked as 'connected'.
1113  */
1114 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT 375
1115
1116 /**
1117  * Transport CONNECT_ACK message exchanged between transport services to
1118  * indicate that a CONNECT message was accepted
1119  */
1120 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK 376
1121
1122 /**
1123  * Transport CONNECT_ACK message exchanged between transport services to
1124  * indicate that a CONNECT message was accepted
1125  */
1126 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_ACK 377
1127
1128 /**
1129  * Transport DISCONNECT message exchanged between transport services to
1130  * indicate that a connection should be dropped.
1131  */
1132 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_DISCONNECT 378
1133
1134 /**
1135  * Request to monitor addresses used by a peer or all peers.
1136  */
1137 #define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE 380
1138
1139 /**
1140  * Message send by a peer to notify the other to keep the session alive
1141  * and measure latency in a regular interval
1142  */
1143 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_KEEPALIVE 381
1144
1145 /**
1146  * Response to a GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_KEEPALIVE message to
1147  * measure latency in a regular interval
1148  */
1149 #define GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_KEEPALIVE_RESPONSE 382
1150
1151
1152 /**
1153  * Request to iterate over all known addresses.
1154  */
1155 #define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE 383
1156
1157 /**
1158  * Message send by a peer to notify the other to keep the session alive.
1159  */
1160 #define GNUNET_MESSAGE_TYPE_TRANSPORT_BROADCAST_BEACON 384
1161
1162 /*******************************************************************************
1163  * STREAM LIRBRARY MESSAGES
1164  ******************************************************************************/
1165
1166 /**
1167  * Message containing data exchanged between stream end-points over mesh.
1168  */
1169 #define GNUNET_MESSAGE_TYPE_STREAM_DATA 400
1170
1171 /**
1172  * ACK message
1173  */
1174 #define GNUNET_MESSAGE_TYPE_STREAM_ACK 401
1175
1176 /**
1177  * Handshake hello message
1178  */
1179 #define GNUNET_MESSAGE_TYPE_STREAM_HELLO 402
1180
1181 /**
1182  * Handshake hello acknowledgement message
1183  */
1184 #define GNUNET_MESSAGE_TYPE_STREAM_HELLO_ACK 403
1185
1186 /**
1187  * Reset message
1188  */
1189 #define GNUNET_MESSAGE_TYPE_STREAM_RESET 404
1190
1191 /**
1192  * Transmit close message (data transmission no longer possible after this
1193  * message) 
1194  */
1195 #define GNUNET_MESSAGE_TYPE_STREAM_TRANSMIT_CLOSE 405
1196
1197 /**
1198  * Transmit close acknowledgement message
1199  */
1200 #define GNUNET_MESSAGE_TYPE_STREAM_TRANSMIT_CLOSE_ACK 406
1201
1202 /**
1203  * Receive close message (data is no loger read by the receiver after this
1204  * message) 
1205  */
1206 #define GNUNET_MESSAGE_TYPE_STREAM_RECEIVE_CLOSE 407
1207
1208 /**
1209  * Receive close acknowledgement message
1210  */
1211 #define GNUNET_MESSAGE_TYPE_STREAM_RECEIVE_CLOSE_ACK 408
1212
1213 /**
1214  * Stream close message (data is no longer sent or read after this message)
1215  */
1216 #define GNUNET_MESSAGE_TYPE_STREAM_CLOSE 409
1217
1218 /**
1219  * Close acknowledgement message
1220  */
1221 #define GNUNET_MESSAGE_TYPE_STREAM_CLOSE_ACK 410
1222
1223 /*******************************************************************************
1224  * FS-PUBLISH-HELPER IPC Messages
1225  ******************************************************************************/
1226
1227 /**
1228  * Progress information from the helper: found a file
1229  */
1230 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_PROGRESS_FILE 420
1231
1232 /**
1233  * Progress information from the helper: found a directory
1234  */
1235 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_PROGRESS_DIRECTORY 421
1236
1237 /**
1238  * Error signal from the helper.
1239  */
1240 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_ERROR 422
1241
1242 /**
1243  * Signal that helper skipped a file.
1244  */
1245 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_SKIP_FILE 423
1246
1247 /**
1248  * Signal that helper is done scanning the directory tree.
1249  */
1250 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_COUNTING_DONE 424
1251
1252 /**
1253  * Extracted meta data from the helper.
1254  */
1255 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_META_DATA 425
1256
1257 /**
1258  * Signal that helper is done.
1259  */
1260 #define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_FINISHED 426
1261
1262 /*******************************************************************************
1263  * NAMESTORE message types
1264  ******************************************************************************/
1265
1266 /**
1267  * Request update and listing of a peer.
1268  */
1269 #define GNUNET_MESSAGE_TYPE_NAMESTORE_START 430
1270
1271 /**
1272  *  Next available: 440
1273  */
1274
1275 /*******************************************************************************
1276  * TODO: we need a way to register message types centrally (via some webpage).
1277  * For now: unofficial extensions should start at 48k, internal extensions
1278  * define here should leave some room (4-10 additional messages to the previous
1279  * extension).
1280  ******************************************************************************/
1281
1282 /**
1283  * Type used to match 'all' message types.
1284  */
1285 #define GNUNET_MESSAGE_TYPE_ALL 65535
1286
1287
1288 #if 0                           /* keep Emacsens' auto-indent happy */
1289 {
1290 #endif
1291 #ifdef __cplusplus
1292 }
1293 #endif
1294
1295 /* ifndef GNUNET_PROTOCOLS_H */
1296 #endif
1297 /* end of gnunet_protocols.h */