1*76404edcSAsim Jamshed #ifndef __DEBUG_H_ 2*76404edcSAsim Jamshed #define __DEBUG_H_ 3*76404edcSAsim Jamshed 4*76404edcSAsim Jamshed #include <errno.h> 5*76404edcSAsim Jamshed #include <stdio.h> 6*76404edcSAsim Jamshed #include <assert.h> 7*76404edcSAsim Jamshed #include "mtcp.h" 8*76404edcSAsim Jamshed #include "tcp_in.h" 9*76404edcSAsim Jamshed 10*76404edcSAsim Jamshed #ifdef DBGTEMP 11*76404edcSAsim Jamshed 12*76404edcSAsim Jamshed #define TRACE_TEMP(f, m...) { \ 13*76404edcSAsim Jamshed fprintf(stderr, "[CPU %d][%10s:%4d] " f, mtcp->ctx->cpu, \ 14*76404edcSAsim Jamshed __FUNCTION__, __LINE__, ##m); \ 15*76404edcSAsim Jamshed } 16*76404edcSAsim Jamshed 17*76404edcSAsim Jamshed #else 18*76404edcSAsim Jamshed 19*76404edcSAsim Jamshed #define TRACE_TEMP(f, m...) (void)0 20*76404edcSAsim Jamshed 21*76404edcSAsim Jamshed #endif /* DBGTEMP*/ 22*76404edcSAsim Jamshed 23*76404edcSAsim Jamshed #ifdef DBGERR 24*76404edcSAsim Jamshed 25*76404edcSAsim Jamshed #define TRACE_ERROR(f, m...) { \ 26*76404edcSAsim Jamshed fprintf(stderr, "[%10s:%4d] " f, __FUNCTION__, __LINE__, ##m); \ 27*76404edcSAsim Jamshed } 28*76404edcSAsim Jamshed 29*76404edcSAsim Jamshed #else 30*76404edcSAsim Jamshed 31*76404edcSAsim Jamshed #define TRACE_ERROR(f, m...) (void)0 32*76404edcSAsim Jamshed 33*76404edcSAsim Jamshed #endif /* DBGERR */ 34*76404edcSAsim Jamshed 35*76404edcSAsim Jamshed #ifdef DBGCERR 36*76404edcSAsim Jamshed 37*76404edcSAsim Jamshed #define CTRACE_ERROR(f, m...) { \ 38*76404edcSAsim Jamshed fprintf(stderr, "[CPU %d][%10s:%4d] " f, mtcp->ctx->cpu, __FUNCTION__, __LINE__, ##m); \ 39*76404edcSAsim Jamshed } 40*76404edcSAsim Jamshed 41*76404edcSAsim Jamshed #else 42*76404edcSAsim Jamshed 43*76404edcSAsim Jamshed #define CTRACE_ERROR(f, m...) (void)0 44*76404edcSAsim Jamshed 45*76404edcSAsim Jamshed #endif /* DBGERR */ 46*76404edcSAsim Jamshed 47*76404edcSAsim Jamshed #ifdef DBGMSG 48*76404edcSAsim Jamshed 49*76404edcSAsim Jamshed #define TRACE_DBG(f, m...) {\ 50*76404edcSAsim Jamshed thread_printf(mtcp, mtcp->log_fp, "[%10s:%4d] " \ 51*76404edcSAsim Jamshed f, __FUNCTION__, __LINE__, ##m); \ 52*76404edcSAsim Jamshed } 53*76404edcSAsim Jamshed 54*76404edcSAsim Jamshed #else 55*76404edcSAsim Jamshed 56*76404edcSAsim Jamshed #define TRACE_DBG(f, m...) (void)0 57*76404edcSAsim Jamshed 58*76404edcSAsim Jamshed #endif /* DBGMSG */ 59*76404edcSAsim Jamshed 60*76404edcSAsim Jamshed #ifdef INFO 61*76404edcSAsim Jamshed 62*76404edcSAsim Jamshed #define TRACE_INFO(f, m...) { \ 63*76404edcSAsim Jamshed fprintf(stderr, "[%10s:%4d] " f,__FUNCTION__, __LINE__, ##m); \ 64*76404edcSAsim Jamshed } 65*76404edcSAsim Jamshed 66*76404edcSAsim Jamshed #else 67*76404edcSAsim Jamshed 68*76404edcSAsim Jamshed #define TRACE_INFO(f, m...) (void)0 69*76404edcSAsim Jamshed 70*76404edcSAsim Jamshed #endif /* INFO */ 71*76404edcSAsim Jamshed 72*76404edcSAsim Jamshed #define TRACE_CONFIG(f, m...) fprintf(stderr, f, ##m) 73*76404edcSAsim Jamshed 74*76404edcSAsim Jamshed #ifdef DBGLOG 75*76404edcSAsim Jamshed #define TRACE_LOG(f, m...) TRACE_INFO(f, ##m) 76*76404edcSAsim Jamshed #else 77*76404edcSAsim Jamshed #define TRACE_LOG(f, m...) (void)0 78*76404edcSAsim Jamshed #endif 79*76404edcSAsim Jamshed 80*76404edcSAsim Jamshed #ifdef MONITOR 81*76404edcSAsim Jamshed #define TRACE_MONITOR(f, m...) TRACE_FUNC("MONITOR", f, ##m) 82*76404edcSAsim Jamshed #else 83*76404edcSAsim Jamshed #define TRACE_MONITOR(f, m...) (void)0 84*76404edcSAsim Jamshed #endif 85*76404edcSAsim Jamshed 86*76404edcSAsim Jamshed #ifdef STREAM 87*76404edcSAsim Jamshed #define TRACE_STREAM(f, m...) TRACE_FUNC("STREAM", f, ##m) 88*76404edcSAsim Jamshed #else 89*76404edcSAsim Jamshed #define TRACE_STREAM(f, m...) (void)0 90*76404edcSAsim Jamshed #endif 91*76404edcSAsim Jamshed 92*76404edcSAsim Jamshed #ifdef STATE 93*76404edcSAsim Jamshed #define TRACE_STATE(f, m...) TRACE_FUNC("STATE", f, ##m) 94*76404edcSAsim Jamshed #else 95*76404edcSAsim Jamshed #define TRACE_STATE(f, m...) (void)0 96*76404edcSAsim Jamshed #endif 97*76404edcSAsim Jamshed 98*76404edcSAsim Jamshed #ifdef SNDBUF 99*76404edcSAsim Jamshed #define TRACE_SNDBUF(f, m...) TRACE_FUNC("SNDBUF", f, ##m) 100*76404edcSAsim Jamshed #else 101*76404edcSAsim Jamshed #define TRACE_SNDBUF(f, m...) (void)0 102*76404edcSAsim Jamshed #endif 103*76404edcSAsim Jamshed 104*76404edcSAsim Jamshed #ifdef RCVBUF 105*76404edcSAsim Jamshed #define TRACE_RCVBUF(f, m...) TRACE_FUNC("RCVBUF", f, ##m) 106*76404edcSAsim Jamshed #else 107*76404edcSAsim Jamshed #define TRACE_RCVBUF(f, m...) (void)0 108*76404edcSAsim Jamshed #endif 109*76404edcSAsim Jamshed 110*76404edcSAsim Jamshed #ifdef CLWND 111*76404edcSAsim Jamshed #define TRACE_CLWND(f, m...) TRACE_FUNC("CLWND", f, ##m) 112*76404edcSAsim Jamshed #else 113*76404edcSAsim Jamshed #define TRACE_CLWND(f, m...) (void)0 114*76404edcSAsim Jamshed #endif 115*76404edcSAsim Jamshed 116*76404edcSAsim Jamshed #ifdef LOSS 117*76404edcSAsim Jamshed #define TRACE_LOSS(f, m...) TRACE_FUNC("LOSS", f, ##m) 118*76404edcSAsim Jamshed #else 119*76404edcSAsim Jamshed #define TRACE_LOSS(f, m...) (void)0 120*76404edcSAsim Jamshed #endif 121*76404edcSAsim Jamshed 122*76404edcSAsim Jamshed #ifdef SACK 123*76404edcSAsim Jamshed #define TRACE_SACK(f, m...) TRACE_FUNC("SACK", f, ##m) 124*76404edcSAsim Jamshed #else 125*76404edcSAsim Jamshed #define TRACE_SACK(f, m...) (void)0 126*76404edcSAsim Jamshed #endif 127*76404edcSAsim Jamshed 128*76404edcSAsim Jamshed #ifdef TSTAMP 129*76404edcSAsim Jamshed #define TRACE_TSTAMP(f, m...) TRACE_FUNC("TSTAMP", f, ##m) 130*76404edcSAsim Jamshed #else 131*76404edcSAsim Jamshed #define TRACE_TSTAMP(f, m...) (void)0 132*76404edcSAsim Jamshed #endif 133*76404edcSAsim Jamshed 134*76404edcSAsim Jamshed #ifdef RTT 135*76404edcSAsim Jamshed #define TRACE_RTT(f, m...) TRACE_FUNC("RTT", f, ##m) 136*76404edcSAsim Jamshed #else 137*76404edcSAsim Jamshed #define TRACE_RTT(f, m...) (void)0 138*76404edcSAsim Jamshed #endif 139*76404edcSAsim Jamshed 140*76404edcSAsim Jamshed #ifdef RTO 141*76404edcSAsim Jamshed #define TRACE_RTO(f, m...) TRACE_FUNC("RTO", f, ##m) 142*76404edcSAsim Jamshed #else 143*76404edcSAsim Jamshed #define TRACE_RTO(f, m...) (void)0 144*76404edcSAsim Jamshed #endif 145*76404edcSAsim Jamshed 146*76404edcSAsim Jamshed #ifdef CONG 147*76404edcSAsim Jamshed #define TRACE_CONG(f, m...) TRACE_FUNC("CONG", f, ##m) 148*76404edcSAsim Jamshed #else 149*76404edcSAsim Jamshed #define TRACE_CONG(f, m...) (void)0 150*76404edcSAsim Jamshed #endif 151*76404edcSAsim Jamshed 152*76404edcSAsim Jamshed #ifdef EPOLL 153*76404edcSAsim Jamshed #define TRACE_EPOLL(f, m...) TRACE_FUNC("EPOLL", f, ##m) 154*76404edcSAsim Jamshed #else 155*76404edcSAsim Jamshed #define TRACE_EPOLL(f, m...) (void)0 156*76404edcSAsim Jamshed #endif 157*76404edcSAsim Jamshed 158*76404edcSAsim Jamshed #ifdef FSTAT 159*76404edcSAsim Jamshed #define TRACE_FSTAT(f, m...) TRACE_FUNC("FSTAT", f, ##m) 160*76404edcSAsim Jamshed #else 161*76404edcSAsim Jamshed #define TRACE_FSTAT(f, m...) (void)0 162*76404edcSAsim Jamshed #endif 163*76404edcSAsim Jamshed 164*76404edcSAsim Jamshed #ifdef APP 165*76404edcSAsim Jamshed #define TRACE_APP(f, m...) TRACE_FUNC("APP", f, ##m) 166*76404edcSAsim Jamshed #else 167*76404edcSAsim Jamshed #define TRACE_APP(f, m...) (void)0 168*76404edcSAsim Jamshed #endif 169*76404edcSAsim Jamshed 170*76404edcSAsim Jamshed #ifdef DBGFIN 171*76404edcSAsim Jamshed #define TRACE_FIN(f, m...) TRACE_FUNC("FIN", f, ##m) 172*76404edcSAsim Jamshed #else 173*76404edcSAsim Jamshed #define TRACE_FIN(f, m...) (void)0 174*76404edcSAsim Jamshed #endif 175*76404edcSAsim Jamshed 176*76404edcSAsim Jamshed #ifdef TSTAT 177*76404edcSAsim Jamshed #define TRACE_TSTAT(f, m...) TRACE_FUNC("TSTAT", f, ##m) 178*76404edcSAsim Jamshed #else 179*76404edcSAsim Jamshed #define TRACE_TSTAT(f, m...) (void)0 180*76404edcSAsim Jamshed #endif 181*76404edcSAsim Jamshed 182*76404edcSAsim Jamshed #ifdef LOOP 183*76404edcSAsim Jamshed #define TRACE_LOOP(f, m...) TRACE_FUNC("LOOP", "ts: %u, "f, cur_ts, ##m) 184*76404edcSAsim Jamshed #else 185*76404edcSAsim Jamshed #define TRACE_LOOP(f, m...) (void)0 186*76404edcSAsim Jamshed #endif 187*76404edcSAsim Jamshed 188*76404edcSAsim Jamshed #ifdef ROUND 189*76404edcSAsim Jamshed #define TRACE_ROUND(f, m...) TRACE_FUNC("ROUND", f, ##m) 190*76404edcSAsim Jamshed #else 191*76404edcSAsim Jamshed #define TRACE_ROUND(f, m...) (void)0 192*76404edcSAsim Jamshed #endif 193*76404edcSAsim Jamshed 194*76404edcSAsim Jamshed #ifdef SELECT 195*76404edcSAsim Jamshed #define TRACE_SELECT(f, m...) TRACE_FUNC("SELECT", f, ##m) 196*76404edcSAsim Jamshed #else 197*76404edcSAsim Jamshed #define TRACE_SELECT(f, m...) (void)0 198*76404edcSAsim Jamshed #endif 199*76404edcSAsim Jamshed 200*76404edcSAsim Jamshed #ifdef API 201*76404edcSAsim Jamshed #define TRACE_API(f, m...) TRACE_FUNC("API", f, ##m) 202*76404edcSAsim Jamshed #else 203*76404edcSAsim Jamshed #define TRACE_API(f, m...) (void)0 204*76404edcSAsim Jamshed #endif 205*76404edcSAsim Jamshed 206*76404edcSAsim Jamshed #ifdef DBGFUNC 207*76404edcSAsim Jamshed 208*76404edcSAsim Jamshed #define TRACE_FUNC(n, f, m...) { \ 209*76404edcSAsim Jamshed thread_printf(mtcp, mtcp->log_fp, "[%6s: %10s:%4d] " \ 210*76404edcSAsim Jamshed f, n, __FUNCTION__, __LINE__, ##m); \ 211*76404edcSAsim Jamshed } 212*76404edcSAsim Jamshed 213*76404edcSAsim Jamshed #else 214*76404edcSAsim Jamshed 215*76404edcSAsim Jamshed #define TRACE_FUNC(f, m...) (void)0 216*76404edcSAsim Jamshed 217*76404edcSAsim Jamshed #endif /* DBGFUNC */ 218*76404edcSAsim Jamshed 219*76404edcSAsim Jamshed void 220*76404edcSAsim Jamshed DumpPacket(mtcp_manager_t mtcp, char *buf, int len, char *step, int ifindex); 221*76404edcSAsim Jamshed 222*76404edcSAsim Jamshed void 223*76404edcSAsim Jamshed DumpIPPacket(mtcp_manager_t mtcp, const struct iphdr *iph, int len); 224*76404edcSAsim Jamshed 225*76404edcSAsim Jamshed void 226*76404edcSAsim Jamshed DumpIPPacketToFile(FILE *fout, const struct iphdr *iph, int len); 227*76404edcSAsim Jamshed 228*76404edcSAsim Jamshed void 229*76404edcSAsim Jamshed flush_log_data(mtcp_manager_t mtcp); 230*76404edcSAsim Jamshed 231*76404edcSAsim Jamshed void 232*76404edcSAsim Jamshed thread_printf(mtcp_manager_t mtcp, FILE* f_idx, const char* _Format, ...); 233*76404edcSAsim Jamshed 234*76404edcSAsim Jamshed #endif /* __DEBUG_H_ */ 235