diff --git a/ethertype-dump.c b/ethertype-dump.c index 3c3280e..4499385 100644 --- a/ethertype-dump.c +++ b/ethertype-dump.c @@ -15,34 +15,6 @@ #include #include -uint32_t crc32_table[256]; - -void precompute_crc32_table(void) { - for (size_t index = 0; index < 256; index++) { - uint32_t value = index; - - for (size_t i = 0; i < 8; i++) { - uint32_t low_bit = value & 1; - value = value >> 1; - if (low_bit) { - value ^= 0xEDB88320; - } - } - - crc32_table[index] = value; - } -} - -uint32_t crc32(unsigned char *buf, size_t len) { - uint32_t value = 0xffffffff; - - for (size_t index = 0; index < len; index++) { - value = crc32_table[(value & 0xff) ^ buf[index]] ^ (value >> 8); - } - - return value ^ 0xffffffff; -} - char hexify(int nybble) { assert(0 <= nybble && nybble <= 16); return "0123456789abcdef"[nybble]; @@ -64,9 +36,6 @@ int main(int argc, char **argv) { exit(1); } - // Set up CRC32 - precompute_crc32_table(); - // Create a packet socket errno = 0; int packet_socket = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); @@ -104,7 +73,6 @@ int main(int argc, char **argv) { if (frame_length == -1) { err(1, "recv"); } - size_t frame_data_length = frame_length <= 1522 ? frame_length : 1522; if (frame_length < 64) { errno = 0; @@ -114,17 +82,6 @@ int main(int argc, char **argv) { continue; } - // Compute the CRC32 of the frame - uint32_t crc32_residue = crc32(frame, frame_data_length); - - if (crc32_residue != 0xc704dd7b) { - errno = 0; - if (printf("CRC failed (%04"PRIx32")\n", crc32_residue) == -1) { - err(1, "printf"); - } - continue; - } - // Extract the MACs // 012345 012345 // dest source