void process(Packet p) { Timestamp t = p.timestamp(); if (p.pdu()->find_pdu<Dot11ProbeRequest>(PDU::DOT11_PROBE_REQ)) { Dot11ProbeRequest request = p.pdu()->rfind_pdu<Dot11ProbeRequest>(PDU::DOT11_PROBE_REQ); std::string src_addr = vendor_string(request.addr2()); { std::lock_guard<std::mutex> lock(map_mutex); if (devices.count(src_addr) == 0) std::cout << "New device [" << src_addr << "] found at " << t.seconds() << std::endl; devices[src_addr] = t; } } else if (p.pdu()->find_pdu<Dot11Data>(PDU::DOT11_DATA)) { Dot11Data frame = p.pdu()->rfind_pdu<Dot11Data>(PDU::DOT11_DATA); std::string src_addr = vendor_string(frame.addr2()); { std::lock_guard<std::mutex> lock(map_mutex); if (devices.count(src_addr) == 1) devices[src_addr] = t; } } }