static void tcpdump(uint8_t *pkt, uint16_t len) { char prt[41]; if (((struct uip_eth_hdr *)pkt)->type == UIP_HTONS(UIP_ETHTYPE_IP)) { tcpdump_format(pkt + 14, len - 14, prt, sizeof(prt)); printf_P(PSTR("%s\n"), prt); } else if (((struct uip_eth_hdr *)pkt)->type == UIP_HTONS(UIP_ETHTYPE_ARP)) { printf_P(PSTR("ARP\n")); } else { printf_P(PSTR("Ethertype: %04x\n"), uip_ntohs(((struct uip_eth_hdr *)pkt)->type)); } #if TCPDUMP_RAWPKT for (uint8_t i = 0; i < 64; i++) { if (i >= len) { printf_P(PSTR("**")); break; } printf("%02x ", *(pkt + i)); if ((i > 0) && !((i + 1) % 4)) { printf_P(PSTR(" ")); } } printf("\n"); #endif }
/*---------------------------------------------------------------------------*/ static void print_packet(uint8_t *packet, int len) { char buf[2000]; if(should_print) { tcpdump_format(packet, len, buf, sizeof(buf)); printf("%s\n", buf); } }
/*---------------------------------------------------------------------------*/ static void print_packet(char* prefix, uint8_t *packet, int len) { char buf[2000]; if(should_print) { tcpdump_format(packet, len, buf, sizeof(buf)); fprintf(stderr, "%s: %s\n", prefix, buf); } }