uncrustify as demanded.
[oweals/gnunet.git] / src / nat-auto / nat-auto.h
1 /*
2      This file is part of GNUnet.
3      Copyright (C) 2011, 2016, 2017 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
21 /**
22  * @file src/nat-auto/nat-auto.h
23  * @brief Messages for interaction with gnunet-nat-auto-service
24  * @author Christian Grothoff
25  *
26  */
27 #ifndef NAT_AUTO_H
28 #define NAT_AUTO_H
29 #include "gnunet_util_lib.h"
30
31
32
33 GNUNET_NETWORK_STRUCT_BEGIN
34
35 /**
36  * Request to test NAT traversal, sent to the gnunet-nat-server
37  * (not the service!).
38  */
39 struct GNUNET_NAT_AUTO_TestMessage {
40   /**
41    * Header with type #GNUNET_MESSAGE_TYPE_NAT_TEST
42    */
43   struct GNUNET_MessageHeader header;
44
45   /**
46    * IPv4 target IP address
47    */
48   uint32_t dst_ipv4;
49
50   /**
51    * Port to use, 0 to send dummy ICMP response.
52    */
53   uint16_t dport;
54
55   /**
56    * Data to send OR advertised-port (in NBO) to use for dummy ICMP.
57    */
58   uint16_t data;
59
60   /**
61    * #GNUNET_YES for TCP, #GNUNET_NO for UDP.
62    */
63   int32_t is_tcp;
64 };
65
66
67 /**
68  * Client requesting automatic configuration.
69  */
70 struct GNUNET_NAT_AUTO_AutoconfigRequestMessage {
71   /**
72    * Header with type #GNUNET_MESSAGE_TYPE_NAT_REQUEST_AUTO_CFG
73    */
74   struct GNUNET_MessageHeader header;
75
76   /* Followed by configuration (diff, serialized, compressed) */
77 };
78
79
80 /**
81  * Service responding with proposed configuration.
82  */
83 struct GNUNET_NAT_AUTO_AutoconfigResultMessage {
84   /**
85    * Header with type #GNUNET_MESSAGE_TYPE_NAT_AUTO_CFG_RESULT
86    */
87   struct GNUNET_MessageHeader header;
88
89   /**
90    * An `enum GNUNET_NAT_StatusCode` in NBO.
91    */
92   int32_t status_code GNUNET_PACKED;
93
94   /**
95    * An `enum GNUNET_NAT_Type` in NBO.
96    */
97   int32_t type GNUNET_PACKED;
98
99   /* Followed by configuration (diff, serialized, compressed) */
100 };
101
102
103 GNUNET_NETWORK_STRUCT_END
104
105 #endif