34 lines
843 B
C++
34 lines
843 B
C++
|
#pragma once
|
||
|
|
||
|
/** A peer of a bound (server) instance of UdpVpn */
|
||
|
|
||
|
#include <netinet/in.h>
|
||
|
#include "util.hpp"
|
||
|
|
||
|
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);
|
||
|
|
||
|
const sockaddr_in6& get_ext_addr() const { return _ext_addr; }
|
||
|
const in6_addr& get_int_addr() const { return _int_addr; }
|
||
|
|
||
|
size_t write(const char* data, size_t len);
|
||
|
|
||
|
private:
|
||
|
UdpVpn* _vpn;
|
||
|
sockaddr_in6 _ext_addr;
|
||
|
in6_addr _int_addr;
|
||
|
};
|