libtins  4.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
exceptions.h
1 /*
2  * Copyright (c) 2017, Matias Fontanini
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  */
29 
30 #ifndef TINS_EXCEPTIONS_H
31 #define TINS_EXCEPTIONS_H
32 
33 #include <string>
34 #include <stdexcept>
35 
36 namespace Tins {
37 
41 class exception_base : public std::runtime_error {
42 public:
44  : std::runtime_error(std::string()) { }
45 
46  exception_base(const std::string& message)
47  : std::runtime_error(message) { }
48 
49  exception_base(const char* message)
50  : std::runtime_error(message) { }
51 };
52 
57 public:
58  option_not_found() : exception_base("Option not found") { }
59 };
60 
65 public:
66  malformed_packet() : exception_base("Malformed packet") { }
67 };
68 
73 public:
74  serialization_error() : exception_base("Serialization error") { }
75 };
76 
80 class pdu_not_found : public exception_base {
81 public:
82  pdu_not_found() : exception_base("PDU not found") { }
83 };
84 
90 public:
91  invalid_interface() : exception_base("Invalid interface") { }
92 };
93 
99 public:
100  invalid_address() : exception_base("Invalid address") { }
101 };
102 
107 public:
108  invalid_option_value() : exception_base("Invalid option value") { }
109 };
110 
115 public:
116  field_not_present() : exception_base("Field not present") { }
117 };
118 
123 public:
124  socket_open_error(const std::string& msg)
125  : exception_base(msg) { }
126 };
127 
132 public:
133  socket_close_error(const std::string& msg)
134  : exception_base(msg) { }
135 };
136 
141 public:
142  socket_write_error(const std::string& msg)
143  : exception_base(msg) { }
144 };
145 
151 public:
152  invalid_socket_type() : exception_base("The provided socket type is invalid") { }
153 };
154 
160 public:
161  unknown_link_type() : exception_base("The sniffed link layer PDU type is unknown") { }
162 };
163 
168 public:
169  malformed_option() : exception_base("Malformed option") { }
170 };
171 
176 public:
177  bad_tins_cast() : exception_base("Bad Tins cast") { }
178 };
179 
185 public:
186  protocol_disabled() : exception_base("Protocol disabled") { }
187 };
188 
194 public:
195  feature_disabled() : exception_base("Feature disabled") { }
196 };
197 
203 public:
204  option_payload_too_large() : exception_base("Option payload too large") { }
205 };
206 
210 class pcap_error : public exception_base {
211 public:
212  pcap_error(const char* message) : exception_base(message) {
213 
214  }
215 
216  pcap_error(const std::string& message) : exception_base(message) {
217 
218  }
219 };
220 
225 public:
226  invalid_pcap_filter(const char* message) : exception_base(message) {
227 
228  }
229 };
230 
236 public:
237  pdu_not_serializable() : exception_base("PDU not serializable") { }
238 };
239 
244 public:
245  pcap_open_failed() : exception_base("Failed to create pcap handle") { }
246 };
247 
253 public:
254  unsupported_function() : exception_base("Function is not supported on this OS") { }
255 };
256 
261 public:
262  invalid_domain_name() : exception_base("Invalid domain name") { }
263 };
264 
269 public:
270  stream_not_found() : exception_base("Stream not found") { }
271 };
272 
277 public:
278  callback_not_set() : exception_base("Callback not set") { }
279 };
280 
285 public:
286  invalid_packet() : exception_base("Invalid packet") { }
287 };
288 
289 namespace Crypto {
290 namespace WPA2 {
295  public:
296  invalid_handshake() : exception_base("Invalid WPA2 handshake") { }
297  };
298 } // WPA2
299 } // Crypto
300 
301 } // Tins
302 
303 #endif // TINS_EXCEPTIONS_H
Exception thrown when sniffing a protocol that has been disabled at compile time. ...
Definition: exceptions.h:184
Exception thrown when a PDU is not found when using PDU::rfind_pdu.
Definition: exceptions.h:80
Generic pcap error.
Definition: exceptions.h:210
Exception thrown when a field is not present in frame.
Definition: exceptions.h:114
Exception thrown when serializing a packet fails.
Definition: exceptions.h:72
Exception thrown when serialiation of a non-serializable PDU is attempted.
Definition: exceptions.h:235
Exception thrown when a stream is not found.
Definition: exceptions.h:268
Exception thrown when a malformed packet is parsed.
Definition: exceptions.h:64
Exception thrown when opening a pcap handle fails.
Definition: exceptions.h:243
Exception thrown when an invalid string representation of an address is provided. ...
Definition: exceptions.h:98
Exception thrown when an invalid domain name is parsed.
Definition: exceptions.h:260
Exception thrown when PacketSender fails to open a socket.
Definition: exceptions.h:122
Exception thrown when a feature has been disabled at compile time.
Definition: exceptions.h:193
Exception thrown when a function not supported on the current OS is called.
Definition: exceptions.h:252
Exception thrown when an invalid WPA2 handshake is found.
Definition: exceptions.h:294
Exception thrown when an invalid socket type is provided to PacketSender.
Definition: exceptions.h:150
Base class for all libtins exceptions.
Definition: exceptions.h:41
Exception thrown when a malformed option is found.
Definition: exceptions.h:167
Exception thrown when PacketSender fails to write on a socket.
Definition: exceptions.h:140
Exception thrown when an invalid pcap filter is compiled.
Definition: exceptions.h:224
Exception thrown when a required callback for an object is not set.
Definition: exceptions.h:276
Exception thrown when PacketSender fails to close a socket.
Definition: exceptions.h:131
Exception thrown when an invalid packet is provided to some function.
Definition: exceptions.h:284
Exception thrown when a PDU option is set using an incorrect value.
Definition: exceptions.h:106
Exception thrown when PDU::send requires a valid interface, but an invalid is used.
Definition: exceptions.h:89
Exception thrown when a call to tins_cast fails.
Definition: exceptions.h:175
Exception thrown when an option is not found.
Definition: exceptions.h:56
Exception thrown when a payload is too large to fit into a PDUOption.
Definition: exceptions.h:202