1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-29 13:04:28 +01:00

Implement IPv6::recv_response

This commit is contained in:
Matias Fontanini
2018-02-25 10:42:16 -08:00
parent e4f747164c
commit f29566d6d9
4 changed files with 17 additions and 6 deletions

View File

@@ -296,17 +296,18 @@ void IPv6::write_serialization(uint8_t* buffer, uint32_t total_sz) {
#ifndef BSD
void IPv6::send(PacketSender& sender, const NetworkInterface &) {
struct sockaddr_in6 link_addr;
PacketSender::SocketType type = PacketSender::IPV6_SOCKET;
sockaddr_in6 link_addr;
const PacketSender::SocketType type = PacketSender::IPV6_SOCKET;
link_addr.sin6_family = AF_INET6;
link_addr.sin6_port = 0;
memcpy((uint8_t*)&link_addr.sin6_addr, header_.dst_addr, address_type::address_size);
if (inner_pdu() && inner_pdu()->pdu_type() == PDU::ICMP) {
type = PacketSender::ICMP_SOCKET;
}
sender.send_l3(*this, (struct sockaddr*)&link_addr, sizeof(link_addr), type);
}
PDU* IPv6::recv_response(PacketSender& sender, const NetworkInterface &) {
const PacketSender::SocketType type = PacketSender::ICMPV6_SOCKET;
return sender.recv_l3(*this, 0, sizeof(sockaddr_in6), type);
}
#endif
void IPv6::add_ext_header(const ext_header& header) {