void myReadProc(const MIDIPacketList *packetList, void* readProcRefCon, void* srcConnRefCon) { MIDIPacket *packet = (MIDIPacket*)packetList->packet; int i, j; int count = packetList->numPackets; for (j=0; j<count; j++) { printPacketInfo(packet); packet = MIDIPacketNext(packet); } }
void processPacket(char *p) { struct iphdr *ip = (struct iphdr *)(p + 4); // skip 4 tun info bytes if (isNewConnection(ip)) printPacketInfo(ip); free(p); return; }
void printIpPacketInfo(struct ip_packet *pkt, struct sockaddr_storage *saddr) { if (pkt == NULL) { fprintf(stderr, "Unable to print info for null packet\n"); return; } printf("Pri %hhu : Sz %lu : Dst %lu %iu : Src %lu %iu", pkt->priority, pkt->length, pkt->dest, pkt->destPort, pkt->src, pkt->srcPort); printPacketInfo((struct packet *)pkt->payload, saddr); /* printf(" Packet from %s:%u (%lu payload bytes):\n",ipstr,ipport,pkt->len); printf(" type = %c\n", pkt->type); printf(" seq = %lu\n", pkt->seq); printf(" len = %lu\n", pkt->len); printf(" data = %s\n", pkt->payload); puts(""); */ }
void sendPacketTo(int sockfd, struct packet *pkt, struct sockaddr *addr) { struct packet *spkt = serializePacket(pkt); size_t bytesSent = sendto(sockfd, spkt, PACKET_SIZE, 0, addr, sizeof *addr); if (bytesSent == -1) { perror("Sendto error"); fprintf(stderr, "Error sending packet\n"); } else { const char *typeStr; if (pkt->type == 'R') typeStr = "**REQUEST**"; else if (pkt->type == 'D') typeStr = "DATA"; else if (pkt->type == 'E') typeStr = "**END***"; else typeStr = "UNDEFINED"; printf("-> [Sent %s packet] ", typeStr); printPacketInfo(pkt, (struct sockaddr_storage *)addr); } }