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