| 22 | }; |
| 23 | |
| 24 | bool match_swapper(const u8* p, std::size_t left) { |
| 25 | // "swapper" = 7 bytes; then ("/0" or "\0\0") = 2 bytes; then 7x NUL. |
| 26 | if (left < 16) return false; |
| 27 | if (std::memcmp(p, "swapper", 7) != 0) return false; |
| 28 | bool tail_ok = (p[7] == '/' && p[8] == '0') || |
| 29 | (p[7] == 0 && p[8] == 0); |
| 30 | if (!tail_ok) return false; |
| 31 | for (int i = 9; i < 16; ++i) if (p[i] != 0) return false; |
| 32 | return true; |
| 33 | } |
| 34 | |
| 35 | std::vector<PAddr> scan_swapper(const PhysicalLayer& phys) { |
| 36 | std::vector<PAddr> hits; |