Index: net/dns/mdns_client_unittest.cc |
diff --git a/net/dns/mdns_client_unittest.cc b/net/dns/mdns_client_unittest.cc |
index e002bbe796a40bdfb6d5954626c668fa174c351f..ae1a8d915dbc57c9b5fc90d7a265bb2b7334a93d 100644 |
--- a/net/dns/mdns_client_unittest.cc |
+++ b/net/dns/mdns_client_unittest.cc |
@@ -6,6 +6,7 @@ |
#include <vector> |
#include "base/location.h" |
+#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
@@ -36,201 +37,104 @@ namespace net { |
namespace { |
-const uint8 kSamplePacket1[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x02, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x00, // TTL (4 bytes) is 1 second; |
- 0x00, 0x01, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'h', 'e', 'l', 'l', 'o', |
- 0xc0, 0x0c, |
- |
- // Answer 2 |
- 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', |
- 0xc0, 0x14, // Pointer to "._tcp.local" |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds. |
- 0x24, 0x75, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'h', 'e', 'l', 'l', 'o', |
- 0xc0, 0x32 |
-}; |
+const uint8_t kSamplePacket1[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x02, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
-const uint8 kCorruptedPacketBadQuestion[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x01, // One question |
- 0x00, 0x02, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Question is corrupted and cannot be read. |
- 0x99, 'h', 'e', 'l', 'l', 'o', |
- 0x00, |
- 0x00, 0x00, |
- 0x00, 0x00, |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x99, // RDLENGTH is impossible |
- 0x05, 'h', 'e', 'l', 'l', 'o', |
- 0xc0, 0x0c, |
- |
- // Answer 2 |
- 0x08, '_', 'p', 'r', // Useless trailing data. |
-}; |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x00, // TTL (4 bytes) is 1 second; |
+ 0x00, 0x01, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c, |
-const uint8 kCorruptedPacketUnsalvagable[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x02, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x99, // RDLENGTH is impossible |
- 0x05, 'h', 'e', 'l', 'l', 'o', |
- 0xc0, 0x0c, |
- |
- // Answer 2 |
- 0x08, '_', 'p', 'r', // Useless trailing data. |
-}; |
+ // Answer 2 |
+ 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', 0xc0, |
+ 0x14, // Pointer to "._tcp.local" |
+ 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds. |
+ 0x24, 0x75, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x32}; |
+ |
+const uint8_t kCorruptedPacketBadQuestion[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x01, // One question |
+ 0x00, 0x02, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Question is corrupted and cannot be read. |
+ 0x99, 'h', 'e', 'l', 'l', 'o', 0x00, 0x00, 0x00, 0x00, 0x00, |
-const uint8 kCorruptedPacketDoubleRecord[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x02, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x06, 'p', 'r', 'i', 'v', 'e', 't', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x01, // TYPE is A. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x04, // RDLENGTH is 4 |
- 0x05, 0x03, |
- 0xc0, 0x0c, |
- |
- // Answer 2 -- Same key |
- 0x06, 'p', 'r', 'i', 'v', 'e', 't', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x01, // TYPE is A. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x04, // RDLENGTH is 4 |
- 0x02, 0x03, |
- 0x04, 0x05, |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x99, // RDLENGTH is impossible |
+ 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c, |
+ |
+ // Answer 2 |
+ 0x08, '_', 'p', 'r', // Useless trailing data. |
}; |
-const uint8 kCorruptedPacketSalvagable[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x02, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format. |
- 0xc0, 0x0c, |
- |
- // Answer 2 |
- 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', |
- 0xc0, 0x14, // Pointer to "._tcp.local" |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds. |
- 0x24, 0x75, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'h', 'e', 'l', 'l', 'o', |
- 0xc0, 0x32 |
+const uint8_t kCorruptedPacketUnsalvagable[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x02, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x99, // RDLENGTH is impossible |
+ 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c, |
+ |
+ // Answer 2 |
+ 0x08, '_', 'p', 'r', // Useless trailing data. |
}; |
-const uint8 kSamplePacket2[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x02, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'z', 'z', 'z', 'z', 'z', |
- 0xc0, 0x0c, |
- |
- // Answer 2 |
- 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', |
- 0xc0, 0x14, // Pointer to "._tcp.local" |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'z', 'z', 'z', 'z', 'z', |
- 0xc0, 0x32 |
+const uint8_t kCorruptedPacketDoubleRecord[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x02, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x06, 'p', 'r', 'i', 'v', 'e', 't', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, |
+ 0x00, 0x01, // TYPE is A. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x04, // RDLENGTH is 4 |
+ 0x05, 0x03, 0xc0, 0x0c, |
+ |
+ // Answer 2 -- Same key |
+ 0x06, 'p', 'r', 'i', 'v', 'e', 't', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, |
+ 0x00, 0x01, // TYPE is A. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x04, // RDLENGTH is 4 |
+ 0x02, 0x03, 0x04, 0x05, |
}; |
-const uint8 kSamplePacket3[] = { |
+const uint8_t kCorruptedPacketSalvagable[] = { |
// Header |
0x00, 0x00, // ID is zeroed out |
0x81, 0x80, // Standard query response, RA, no error |
@@ -240,159 +144,186 @@ const uint8 kSamplePacket3[] = { |
0x00, 0x00, // 0 additional RRs |
// Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', // |
- 0x04, '_', 't', 'c', 'p', // |
- 0x05, 'l', 'o', 'c', 'a', 'l', // |
- 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
0x00, 0x01, // CLASS is IN. |
- 0x00, 0x00, // TTL (4 bytes) is 1 second; |
- 0x00, 0x01, // |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'h', 'e', 'l', 'l', 'o', // |
- 0xc0, 0x0c, // |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format. |
+ 0xc0, 0x0c, |
+ |
+ // Answer 2 |
+ 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', 0xc0, |
+ 0x14, // Pointer to "._tcp.local" |
+ 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds. |
+ 0x24, 0x75, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x32}; |
+ |
+const uint8_t kSamplePacket2[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x02, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x0c, |
// Answer 2 |
- 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', // |
- 0xc0, 0x14, // Pointer to "._tcp.local" |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x00, // TTL (4 bytes) is 3 seconds. |
- 0x00, 0x03, // |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'h', 'e', 'l', 'l', 'o', // |
+ 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', 0xc0, |
+ 0x14, // Pointer to "._tcp.local" |
+ 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x32}; |
+ |
+const uint8_t kSamplePacket3[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x02, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', // |
+ 0x04, '_', 't', 'c', 'p', // |
+ 0x05, 'l', 'o', 'c', 'a', 'l', // |
+ 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x00, // TTL (4 bytes) is 1 second; |
+ 0x00, 0x01, // |
+ 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'h', 'e', 'l', 'l', 'o', // |
+ 0xc0, 0x0c, // |
+ |
+ // Answer 2 |
+ 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', // |
+ 0xc0, 0x14, // Pointer to "._tcp.local" |
+ 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x00, // TTL (4 bytes) is 3 seconds. |
+ 0x00, 0x03, // |
+ 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'h', 'e', 'l', 'l', 'o', // |
0xc0, 0x32}; |
-const uint8 kQueryPacketPrivet[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x00, 0x00, // No flags. |
- 0x00, 0x01, // One question. |
- 0x00, 0x00, // 0 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Question |
- // This part is echoed back from the respective query. |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
+const uint8_t kQueryPacketPrivet[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x00, 0x00, // No flags. |
+ 0x00, 0x01, // One question. |
+ 0x00, 0x00, // 0 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Question |
+ // This part is echoed back from the respective query. |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
}; |
-const uint8 kQueryPacketPrivetA[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x00, 0x00, // No flags. |
- 0x00, 0x01, // One question. |
- 0x00, 0x00, // 0 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Question |
- // This part is echoed back from the respective query. |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x01, // TYPE is A. |
- 0x00, 0x01, // CLASS is IN. |
+const uint8_t kQueryPacketPrivetA[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x00, 0x00, // No flags. |
+ 0x00, 0x01, // One question. |
+ 0x00, 0x00, // 0 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Question |
+ // This part is echoed back from the respective query. |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A. |
+ 0x00, 0x01, // CLASS is IN. |
}; |
-const uint8 kSamplePacketAdditionalOnly[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x00, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x01, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'h', 'e', 'l', 'l', 'o', |
- 0xc0, 0x0c, |
+const uint8_t kSamplePacketAdditionalOnly[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x00, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x01, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c, |
}; |
-const uint8 kSamplePacketNsec[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x01, // 1 RR (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x2f, // TYPE is NSEC. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
- 0x24, 0x74, |
- 0x00, 0x06, // RDLENGTH is 6 bytes. |
- 0xc0, 0x0c, |
- 0x00, 0x02, 0x00, 0x08 // Only A record present |
+const uint8_t kSamplePacketNsec[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x01, // 1 RR (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x2f, // TYPE is NSEC. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds. |
+ 0x24, 0x74, 0x00, 0x06, // RDLENGTH is 6 bytes. |
+ 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x08 // Only A record present |
}; |
-const uint8 kSamplePacketAPrivet[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x01, // 1 RR (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x01, // TYPE is A. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x00, // TTL (4 bytes) is 5 seconds |
- 0x00, 0x05, |
- 0x00, 0x04, // RDLENGTH is 4 bytes. |
- 0xc0, 0x0c, |
- 0x00, 0x02, |
+const uint8_t kSamplePacketAPrivet[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x01, // 1 RR (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x00, // TTL (4 bytes) is 5 seconds |
+ 0x00, 0x05, 0x00, 0x04, // RDLENGTH is 4 bytes. |
+ 0xc0, 0x0c, 0x00, 0x02, |
}; |
-const uint8 kSamplePacketGoodbye[] = { |
- // Header |
- 0x00, 0x00, // ID is zeroed out |
- 0x81, 0x80, // Standard query response, RA, no error |
- 0x00, 0x00, // No questions (for simplicity) |
- 0x00, 0x01, // 2 RRs (answers) |
- 0x00, 0x00, // 0 authority RRs |
- 0x00, 0x00, // 0 additional RRs |
- |
- // Answer 1 |
- 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', |
- 0x04, '_', 't', 'c', 'p', |
- 0x05, 'l', 'o', 'c', 'a', 'l', |
- 0x00, |
- 0x00, 0x0c, // TYPE is PTR. |
- 0x00, 0x01, // CLASS is IN. |
- 0x00, 0x00, // TTL (4 bytes) is zero; |
- 0x00, 0x00, |
- 0x00, 0x08, // RDLENGTH is 8 bytes. |
- 0x05, 'z', 'z', 'z', 'z', 'z', |
- 0xc0, 0x0c, |
+const uint8_t kSamplePacketGoodbye[] = { |
+ // Header |
+ 0x00, 0x00, // ID is zeroed out |
+ 0x81, 0x80, // Standard query response, RA, no error |
+ 0x00, 0x00, // No questions (for simplicity) |
+ 0x00, 0x01, // 2 RRs (answers) |
+ 0x00, 0x00, // 0 authority RRs |
+ 0x00, 0x00, // 0 additional RRs |
+ |
+ // Answer 1 |
+ 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05, |
+ 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR. |
+ 0x00, 0x01, // CLASS is IN. |
+ 0x00, 0x00, // TTL (4 bytes) is zero; |
+ 0x00, 0x00, 0x00, 0x08, // RDLENGTH is 8 bytes. |
+ 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x0c, |
}; |
-std::string MakeString(const uint8* data, unsigned size) { |
+std::string MakeString(const uint8_t* data, unsigned size) { |
return std::string(reinterpret_cast<const char*>(data), size); |
} |
@@ -480,8 +411,8 @@ class MDnsTest : public ::testing::Test { |
const RecordParsed* record)); |
protected: |
- void ExpectPacket(const uint8* packet, unsigned size); |
- void SimulatePacketReceive(const uint8* packet, unsigned size); |
+ void ExpectPacket(const uint8_t* packet, unsigned size); |
+ void SimulatePacketReceive(const uint8_t* packet, unsigned size); |
scoped_ptr<MDnsClientImpl> test_client_; |
IPEndPoint mdns_ipv4_endpoint_; |
@@ -508,11 +439,11 @@ void MDnsTest::SetUp() { |
test_client_->StartListening(&socket_factory_); |
} |
-void MDnsTest::SimulatePacketReceive(const uint8* packet, unsigned size) { |
+void MDnsTest::SimulatePacketReceive(const uint8_t* packet, unsigned size) { |
socket_factory_.SimulateReceive(packet, size); |
} |
-void MDnsTest::ExpectPacket(const uint8* packet, unsigned size) { |
+void MDnsTest::ExpectPacket(const uint8_t* packet, unsigned size) { |
EXPECT_CALL(socket_factory_, OnSendTo(MakeString(packet, size))) |
.Times(2); |
} |