congestvpn/VpnPeer.cpp

31 lines
827 B
C++
Raw Normal View History

2020-06-05 16:14:05 +02:00
#include "VpnPeer.hpp"
#include "UdpVpn.hpp"
#include <cstdint>
#include <cstring>
#include <functional>
VpnPeer::VpnPeer(UdpVpn* vpn, const sockaddr_in6& ext_addr,
const in6_addr& int_addr)
2020-06-10 18:49:36 +02:00
: _vpn(vpn), _ext_addr(ext_addr), _int_addr(int_addr), _next_seqno(0)
2020-06-05 16:14:05 +02:00
{}
void VpnPeer::set_int_addr(const in6_addr& int_addr) {
memcpy(&_int_addr, &int_addr, sizeof(_int_addr));
}
2020-06-05 16:14:05 +02:00
size_t VpnPeer::write(const char* data, size_t len) {
ssize_t nsent;
nsent = sendto(_vpn->get_socket_fd(), data, len, MSG_CONFIRM,
(const struct sockaddr*) &_ext_addr, sizeof(_ext_addr));
if(nsent < 0)
throw NetError("Could not send UDP packet", errno, true);
return (size_t) nsent;
}
2020-06-05 17:31:02 +02:00
size_t VpnPeer::write(const VpnPacket& packet) {
return write(packet.get_data(), packet.get_data_size());
}