Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 883f7eb9 authored by Henri Chataing's avatar Henri Chataing
Browse files

RootCanal: Implement simple PCAP filtering

Remove personal information such as the device
name from the PCAP entries. ACL, SCO, and ISO packets are cleared
since their contents is not that useful for debugging
RootCanal.

Test: Manual
Bug: 261188171
Change-Id: I1c98550b168f74dbfac0c54df8425e97635a52d0
parent a497114a
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -40,6 +40,14 @@ class PacketBuilder : public BasePacketBuilder, protected EndianInserter<little_

  // Classes which need fragmentation should define a function like this:
  // std::forward_list<DerivedBuilder>& Fragment(size_t max_size);

  // Serialize the packet to a byte vector.
  std::vector<uint8_t> SerializeToBytes() const {
    std::vector<uint8_t> output;
    BitInserter it(output);
    Serialize(it);
    return output;
  }
};

}  // namespace packet
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ PacketView<little_endian>::PacketView(const std::forward_list<class View> fragme
}

template <bool little_endian>
PacketView<little_endian>::PacketView(std::shared_ptr<std::vector<uint8_t>> packet)
PacketView<little_endian>::PacketView(std::shared_ptr<const std::vector<uint8_t>> packet)
    : fragments_({View(packet, 0, packet->size())}), length_(packet->size()) {}

template <bool little_endian>
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ class PacketView {
 public:
  explicit PacketView(std::forward_list<View> fragments);
  PacketView(const PacketView& PacketView) = default;
  explicit PacketView(std::shared_ptr<std::vector<uint8_t>> packet);
  explicit PacketView(std::shared_ptr<const std::vector<uint8_t>> packet);
  PacketView<little_endian>() = delete;
  virtual ~PacketView() = default;

+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ filegroup {
        "lib/crypto/crypto.cc",
        "lib/hci/address.cc",
        "lib/hci/class_of_device.cc",
        "lib/hci/pcap_filter.cc",
    ],
}

+3 −1
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ DEFINE_string(default_commands_file, "",
              "commands file which root-canal runs it as default");
DEFINE_bool(enable_hci_sniffer, false, "enable hci sniffer");
DEFINE_bool(enable_baseband_sniffer, false, "enable baseband sniffer");
DEFINE_bool(enable_pcap_filter, false, "enable PCAP filter");

constexpr uint16_t kTestPort = 6401;
constexpr uint16_t kHciServerPort = 6402;
@@ -131,7 +132,8 @@ int main(int argc, char** argv) {
      std::make_shared<PosixAsyncSocketServer>(link_ble_server_port, &am),
      std::make_shared<PosixAsyncSocketConnector>(&am),
      FLAGS_controller_properties_file, FLAGS_default_commands_file,
      FLAGS_enable_hci_sniffer, FLAGS_enable_baseband_sniffer);
      FLAGS_enable_hci_sniffer, FLAGS_enable_baseband_sniffer,
      FLAGS_enable_pcap_filter);
  std::promise<void> barrier;
  std::future<void> barrier_future = barrier.get_future();
  root_canal.initialize(std::move(barrier));
Loading