pw_router: add lock safety annotations

No-Docs-Update-Reason: No functional change.
Change-Id: If5a3b06e831baedd1fbd952fedda31fe1ebe6662
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/40246
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
diff --git a/pw_router/BUILD.gn b/pw_router/BUILD.gn
index a30eb7a..bcf934a 100644
--- a/pw_router/BUILD.gn
+++ b/pw_router/BUILD.gn
@@ -30,6 +30,7 @@
   public_deps = [
     ":egress",
     ":packet_parser",
+    "$dir_pw_sync:lock_annotations",
     "$dir_pw_sync:mutex",
     dir_pw_metric,
   ]
diff --git a/pw_router/public/pw_router/static_router.h b/pw_router/public/pw_router/static_router.h
index 6697456..9c0925d 100644
--- a/pw_router/public/pw_router/static_router.h
+++ b/pw_router/public/pw_router/static_router.h
@@ -20,6 +20,7 @@
 #include "pw_router/egress.h"
 #include "pw_router/packet_parser.h"
 #include "pw_status/status.h"
+#include "pw_sync/lock_annotations.h"
 #include "pw_sync/mutex.h"
 
 namespace pw::router {
@@ -62,11 +63,11 @@
   //   NOT_FOUND - No registered route for the packet.
   //   UNAVAILABLE - Route egress did not accept packet.
   //
-  Status RoutePacket(ConstByteSpan packet);
+  Status RoutePacket(ConstByteSpan packet) PW_LOCKS_EXCLUDED(mutex_);
 
  private:
-  PacketParser& parser_;
-  std::span<const Route> routes_;
+  PacketParser& parser_ PW_GUARDED_BY(mutex_);
+  const std::span<const Route> routes_;
   sync::Mutex mutex_;
   PW_METRIC_GROUP(metrics_, "static_router");
   PW_METRIC(metrics_, parser_errors_, "parser_errors", 0u);