error handling
[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 GNUNET_NETWORK_STRUCT_BEGIN
33
34 /**
35  * Request to test NAT traversal, sent to the gnunet-nat-server
36  * (not the service!).
37  */
38 struct GNUNET_NAT_AUTO_TestMessage
39 {
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   /**
73    * Header with type #GNUNET_MESSAGE_TYPE_NAT_REQUEST_AUTO_CFG
74    */
75   struct GNUNET_MessageHeader header;
76
77   /* Followed by configuration (diff, serialized, compressed) */
78 };
79
80
81 /**
82  * Service responding with proposed configuration.
83  */
84 struct GNUNET_NAT_AUTO_AutoconfigResultMessage
85 {
86   /**
87    * Header with type #GNUNET_MESSAGE_TYPE_NAT_AUTO_CFG_RESULT
88    */
89   struct GNUNET_MessageHeader header;
90
91   /**
92    * An `enum GNUNET_NAT_StatusCode` in NBO.
93    */
94   int32_t status_code GNUNET_PACKED;
95
96   /**
97    * An `enum GNUNET_NAT_Type` in NBO.
98    */
99   int32_t type GNUNET_PACKED;
100
101   /* Followed by configuration (diff, serialized, compressed) */
102 };
103
104
105 GNUNET_NETWORK_STRUCT_END
106
107 #endif