在以下的情况下,是否可以提取目标IP地址和源IP地址?我能够从in_buffer
中提取以太网源地址和目标地址。如果可能的话,请给予建议。
sockaddr_ll sockaddr = sockaddr_ll();
sockaddr.sll_family = PF_PACKET;
sockaddr.sll_protocol = htons(ETH_P_ALL);
// is the interface index of the interface
sockaddr.sll_ifindex = if_nametoindex(argv[1]);
sockaddr.sll_hatype = 1;
boost::asio::io_service io_service;
raw_protocol_t::socket socket(io_service, raw_protocol_t(PF_PACKET, SOCK_RAW));
socket.bind(raw_endpoint_t(&sockaddr, sizeof(sockaddr)));
boost::asio::generic::raw_protocol::socket::receive_buffer_size option;
socket.get_option(option);
std::string in_buffer(option.value(), '\0');
raw_endpoint_t rep = raw_endpoint_t();
while (true)
{
size_t len = socket.receive_from(boost::asio::buffer(&in_buffer[0], in_buffer.size()), rep);
}