diff --git a/include/ipv6.h b/include/ipv6.h index dfb2337..e4bcc83 100644 --- a/include/ipv6.h +++ b/include/ipv6.h @@ -262,10 +262,12 @@ public: */ PDUType pdu_type() const { return pdu_flag; } + #ifndef BSD /** * \sa PDU::send() */ void send(PacketSender &sender); + #endif /** * Adds an extension header. diff --git a/src/ipv6.cpp b/src/ipv6.cpp index 782cdb4..484cba8 100644 --- a/src/ipv6.cpp +++ b/src/ipv6.cpp @@ -168,6 +168,7 @@ void IPv6::write_serialization(uint8_t *buffer, uint32_t total_sz, const PDU *pa } } +#ifndef BSD void IPv6::send(PacketSender &sender) { struct sockaddr_in6 link_addr; PacketSender::SocketType type = PacketSender::IPV6_SOCKET; @@ -179,6 +180,7 @@ void IPv6::send(PacketSender &sender) { sender.send_l3(*this, (struct sockaddr*)&link_addr, sizeof(link_addr), type); } +#endif void IPv6::add_ext_header(const ipv6_ext_header &header) { ext_headers.push_back(header); diff --git a/src/packet_sender.cpp b/src/packet_sender.cpp index 7ce6196..a01e347 100644 --- a/src/packet_sender.cpp +++ b/src/packet_sender.cpp @@ -85,6 +85,7 @@ PacketSender::PacketSender(uint32_t recv_timeout, uint32_t usec) _timeout_usec(usec) { _types[IP_SOCKET] = IPPROTO_RAW; + _types[IPV6_SOCKET] = IPPROTO_RAW; _types[ICMP_SOCKET] = IPPROTO_ICMP; } @@ -162,7 +163,7 @@ void PacketSender::open_l3_socket(SocketType type) { throw InvalidSocketTypeError(); if(_sockets[type] == INVALID_RAW_SOCKET) { int sockfd; - sockfd = socket(AF_INET, SOCK_RAW, socktype); + sockfd = socket((type == IPV6_SOCKET) ? AF_INET6 : AF_INET, SOCK_RAW, socktype); if (sockfd < 0) throw SocketOpenError(make_error_string());