#include #include #include #include #include #include #include #include #include #include void err(char*buf) { printf("%s\n", buf); _exit(1); } #undef HAVE_DEBUG #undef HAVE_NOCRYPTO #undef HAVE_NOCACHE #define HAVE_NOHASH #include "utils.h" #include "table.h" #include "tree.h" #include "types.h" #include "p4emu_hdr.h" #include "p4emu_tab.h" #include "p4emu_fwd.h" #include "p4emu_msg.h" void sendPack(unsigned char *bufD, int bufS, int port) { } void setMtu(int port, int mtu) { } void setState(int port, int sta) { } int getState(int port) { return 1; } void getStats(int port, unsigned char*buf, unsigned char*pre, int*len) { } int main(int argc, char **argv) { unsigned char origD[16384]; dataPorts = 1; cpuPort = 1; initIface(0, "bench"); initTables(); struct packetContext ctx; ctx.stat = ifaceStat[0]; initContext(&ctx); fflush(stdout); int origS = 0; if (argc < 3) err("usage: "); FILE* fil = fopen(argv[1], "r"); if (fil == NULL) err("error opening commands"); for (;;) { char* lin = NULL; size_t len = 0; if (getline(&lin, &len, fil) < 0) break; doOneCommand(&ctx, (unsigned char*) lin); free(lin); } fclose(fil); fil = fopen(argv[2], "r"); if (fil == NULL) err("error opening bytes"); for (;;) { char* lin = NULL; size_t len = 0; if (getline(&lin, &len, fil) < 0) break; for (int i = 0;; i++) { if (lin[i] == 0) break; if (lin[i] == 32) continue; if (sscanf(&lin[i], "%hhx", &origD[origS]) != 1) continue; origS++; i++; } free(lin); } fclose(fil); memcpy(&ctx.bufD[preBuff], &origD[0], origS); __llvm_profile_reset_counters(); processDataPacket(&ctx, origS, 0); __llvm_profile_set_filename(argv[3]); }