xrpld
Loading...
Searching...
No Matches
IPEndpointCommon.h
1#pragma once
2
3#include <xrpl/basics/random.h>
4#include <xrpl/beast/net/IPAddressV4.h>
5#include <xrpl/beast/net/IPAddressV6.h>
6#include <xrpl/beast/net/IPEndpoint.h>
7
8#include <cstdint>
9
10namespace beast::ip {
11
12inline Endpoint
13randomEP(bool v4 = true)
14{
15 using namespace xrpl;
16 auto dv4 = []() -> AddressV4::bytes_type {
17 return {
18 {static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
19 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
20 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
21 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX))}};
22 };
23 auto dv6 = []() -> AddressV6::bytes_type {
24 return {
25 {static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
26 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
27 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
28 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
29 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
30 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
31 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
32 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
33 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
34 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
35 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
36 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
37 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
38 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
39 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX)),
40 static_cast<std::uint8_t>(randInt<int>(1, UINT8_MAX))}};
41 };
42 return Endpoint{
43 v4 ? Address{AddressV4{dv4()}} : Address{AddressV6{dv6()}},
44 randInt<std::uint16_t>(1, UINT16_MAX)};
45}
46
47} // namespace beast::ip
A version-independent IP address and port combination.
Definition IPEndpoint.h:24
boost::asio::ip::address Address
Definition IPAddress.h:20
boost::asio::ip::address_v6 AddressV6
Definition IPAddressV6.h:7
Endpoint randomEP(bool v4=true)
boost::asio::ip::address_v4 AddressV4
Definition IPAddressV4.h:7
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
Integral randInt(Engine &engine, Integral min, Integral max)
Return a uniformly distributed random integer.