congestvpn/VpnPeer.hpp

42 lines
1.1 KiB
C++
Raw Normal View History

2020-06-05 16:14:05 +02:00
#pragma once
/** A peer of a bound (server) instance of UdpVpn */
#include <netinet/in.h>
#include "util.hpp"
2020-06-05 17:31:02 +02:00
#include "VpnPacket.hpp"
2020-06-05 16:14:05 +02:00
class UdpVpn;
class VpnPeer {
public:
class NetError : public MsgException {
public:
NetError(
const std::string& msg,
int code=0,
bool is_perror=false)
: MsgException(msg, code, is_perror) {}
};
VpnPeer(UdpVpn* vpn, const sockaddr_in6& ext_addr,
const in6_addr& int_addr);
2020-06-05 16:14:05 +02:00
const sockaddr_in6& get_ext_addr() const { return _ext_addr; }
const in6_addr& get_int_addr() const { return _int_addr; }
void set_int_addr(const in6_addr& int_addr);
2020-06-05 16:14:05 +02:00
size_t write(const char* data, size_t len);
2020-06-05 17:31:02 +02:00
size_t write(const VpnPacket& packet);
2020-06-05 16:14:05 +02:00
2020-06-10 18:49:36 +02:00
uint32_t peek_next_seqno() const { return _next_seqno; }
uint32_t next_seqno() { return _next_seqno++; }
2020-06-05 16:14:05 +02:00
private:
UdpVpn* _vpn;
sockaddr_in6 _ext_addr;
in6_addr _int_addr;
2020-06-10 18:49:36 +02:00
uint32_t _next_seqno;
2020-06-05 16:14:05 +02:00
};