void GpuArray_fprintf(FILE *fd, const GpuArray *a) { unsigned int i; int comma = 0; fprintf(fd, "GpuArray <%p, data: %p (%p)> nd=%d\n", a, a->data, *((void **)a->data), a->nd); fprintf(fd, "\tdims: %p, str: %p\n", a->dimensions, a->strides); fprintf(fd, "\tITEMSIZE: %zd\n", GpuArray_ITEMSIZE(a)); fprintf(fd, "\tTYPECODE: %d\n", a->typecode); fprintf(fd, "\tOFFSET: %" SPREFIX "u\n", a->offset); fprintf(fd, "\tHOST_DIMS: "); for (i = 0; i < a->nd; ++i) { fprintf(fd, "%zu\t", a->dimensions[i]); } fprintf(fd, "\n\tHOST_STRIDES: "); for (i = 0; i < a->nd; ++i) { fprintf(fd, "%zd\t", a->strides[i]); } fprintf(fd, "\nFLAGS:"); #define PRINTFLAG(flag) if (a->flags & flag) { \ if (comma) fputc(',', fd); \ fprintf(fd, " " #flag); \ comma = 1; \ } PRINTFLAG(GA_C_CONTIGUOUS); if (!GpuArray_is_c_contiguous(a) && ISSET(a->flags, GA_C_CONTIGUOUS)) fputc('!', fd); PRINTFLAG(GA_F_CONTIGUOUS); if (!GpuArray_is_f_contiguous(a) && ISSET(a->flags, GA_F_CONTIGUOUS)) fputc('!', fd); PRINTFLAG(GA_ALIGNED); PRINTFLAG(GA_WRITEABLE); #undef PRINTFLAG fputc('\n', fd); }
void packetDetails_tcp(uint8_t *packetData) { tcpHeader = (tcpHeader_t*)(packetData); printf("TCP header\n"); PRINTINFO("Source port"); PRINTPORT(tcpHeader->sourcePort); PRINTINFO("Destination port"); PRINTPORT(tcpHeader->destinationPort); PRINTINFO("Sequence number"); PRINTHEX32(swap_uint32(tcpHeader->sequenceNumber)); PRINTINFO("Acknowledgement number"); PRINTHEX32(swap_uint32(tcpHeader->acknowledgementNumber)); // Flags uint16_t flag = swap_uint16(tcpHeader->flags); PRINTFLAG("Header length"); PRINTUINT8(((flag & TCP_headerLength) >> TCP_headerLengthPos)*4); PRINTFLAG("Reserved"); PRINTHEX16((flag & TCP_reserved) >> TCP_reservedPos); PRINTFLAG("URG"); printf("%s\n", flagSetOrNot((flag & TCP_urg) >> TCP_urgPos)); PRINTFLAG("ACK"); printf("%s\n", flagSetOrNot((flag & TCP_ack) >> TCP_ackPos)); PRINTFLAG("PSH"); printf("%s\n", flagSetOrNot((flag & TCP_push) >> TCP_pushPos)); PRINTFLAG("RST"); printf("%s\n", flagSetOrNot((flag & TCP_reset) >> TCP_resetPos)); PRINTFLAG("SYN"); printf("%s\n", flagSetOrNot((flag & TCP_syn) >> TCP_synPos)); PRINTFLAG("FIN"); printf("%s\n", flagSetOrNot((flag & TCP_fin) >> TCP_synPos)); PRINTINFO("Window size"); PRINTUINT16(swap_uint16(tcpHeader->windowSize)); PRINTINFO("Checksum"); PRINTHEX16(swap_uint16(tcpHeader->checksum)); PRINTINFO("Urgent pointer"); PRINTUINT16(swap_uint16(tcpHeader->urgentPointer)); packetDetails_data(packetData + TCP_LENGTH, (swap_uint16(ipHeader->totalLength) - (ipHeader->headerLength)*4 - TCP_LENGTH)); }
void packetDetails_ip(uint8_t *packetData) { printf("IP header \n"); ipHeader = (ipHeader_t*)(packetData); PRINTINFO("Version"); PRINTUINT8(ipHeader->version); PRINTINFO("Header length"); PRINTUINT8(ipHeader->headerLength * 4); PRINTINFO("Type of service"); PRINTHEX8(ipHeader->typeOfService); PRINTINFO("Total length"); PRINTUINT16(swap_uint16(ipHeader->totalLength)); PRINTINFO("Identification"); printf("0x%04" PRIx16 " (%" PRIu16 ")\n", swap_uint16(ipHeader->identification), swap_uint16(ipHeader->identification)); // Flags uint16_t flag = swap_uint16(ipHeader->flags); PRINTFLAG("Reserved bit"); printf("%s\n", flagSetOrNot((flag & IP_reservedFlag) >> IP_reservedFlagPos)); PRINTFLAG("Don't fragment"); printf("%s\n", flagSetOrNot((flag & IP_dontFragment) >> IP_dontFragmentPos)); PRINTFLAG("More fragments"); printf("%s\n", flagSetOrNot((flag & IP_moreFragments) >> IP_moreFragmentsPos)); PRINTFLAG("Fragment offset"); PRINTHEX16(flag & IP_fragmentOffset); PRINTINFO("Time to live"); PRINTUINT8(ipHeader->timeToLive); PRINTINFO("Protocol"); printf("%s (%" PRIu8 ")\n", determineIpProtocol(ipHeader->protocol), ipHeader->protocol); PRINTINFO("Checksum"); PRINTHEX16(swap_uint16(ipHeader->checksum)); PRINTINFO("Source address"); for(i=0; i<3; i++) printf("%" PRIu8 ".", ipHeader->sourceAddress[i]); printf("%" PRIu8 "\n", ipHeader->sourceAddress[3]); PRINTINFO("Destination address"); for(i=0; i<3; i++) printf("%" PRIu8 ".", ipHeader->destinationAddress[i]); printf("%" PRIu8 "\n", ipHeader->destinationAddress[3]); uint8_t sizeOfIP = ipHeader->headerLength * 4; switch(ipHeader->protocol) { case 6: packetDetails_tcp(packetData + sizeOfIP); break; case 17: packetDetails_udp(packetData + sizeOfIP); break; } }