-void start_trace(int port, struct interface *interface, char *caller, char *dialing, int direction, int category, int serial, char *name)
+void _start_trace(const char *__file, int __line, int port, struct interface *interface, const char *caller, const char *dialing, int direction, int category, int serial, const char *name)
- trace.sec = now_tv.tv_sec;
- trace.usec = now_tv.tv_usec;
+ if (!trace.name[0])
+ SCPY(trace.name, "<unknown>");
+ gettimeofday(¤t_time, NULL);
+ trace.sec = current_time.tv_sec;
+ trace.usec = current_time.tv_usec;
* if subelement is given, element will also contain a subelement
* if multiple subelements belong to same element, name must be equal for all subelements
*/
* if subelement is given, element will also contain a subelement
* if multiple subelements belong to same element, name must be equal for all subelements
*/
-void add_trace(char *name, char *sub, const char *fmt, ...)
+void _add_trace(const char *__file, int __line, const char *name, const char *sub, const char *fmt, ...)
SCPY(trace.element[trace.elements].name, name);
if (sub) if (sub[0])
SCPY(trace.element[trace.elements].sub, sub);
SCPY(trace.element[trace.elements].name, name);
if (sub) if (sub[0])
SCPY(trace.element[trace.elements].sub, sub);
va_start(args, fmt);
VUNPRINT(trace.element[trace.elements].value, sizeof(trace.element[trace.elements].value)-1, fmt, args);
va_end(args);
va_start(args, fmt);
VUNPRINT(trace.element[trace.elements].value, sizeof(trace.element[trace.elements].value)-1, fmt, args);
va_end(args);
if (port != trace.port) return(NULL);
if (interface) if (interface[0] && trace.interface[0])
if (!!strcasecmp(interface, trace.interface)) return(NULL);
if (port != trace.port) return(NULL);
if (interface) if (interface[0] && trace.interface[0])
if (!!strcasecmp(interface, trace.interface)) return(NULL);
SCAT(trace_string, "------------------------------------------------------------------------------\n");
/* "Port: 1 (BRI PTMP TE)" */
SCAT(trace_string, "------------------------------------------------------------------------------\n");
/* "Port: 1 (BRI PTMP TE)" */
SPRINT(buffer, "Port: %d (%s %s %s)", trace.port, (mISDNport->pri)?"PRI":"BRI", (mISDNport->ptp)?"PTP":"PTMP", (mISDNport->ntmode)?"NT":"TE");
/* copy interface, if we have a port */
if (mISDNport->ifport) if (mISDNport->ifport->interface)
SPRINT(buffer, "Port: %d (%s %s %s)", trace.port, (mISDNport->pri)?"PRI":"BRI", (mISDNport->ptp)?"PTP":"PTMP", (mISDNport->ntmode)?"NT":"TE");
/* copy interface, if we have a port */
if (mISDNport->ifport) if (mISDNport->ifport->interface)
/* " Interface: 'Ext'" */
SPRINT(buffer, " Interface: '%s'", trace.interface);
SCAT(trace_string, buffer);
} else
SCAT(trace_string, " Interface: ---");
/* " Interface: 'Ext'" */
SPRINT(buffer, " Interface: '%s'", trace.interface);
SCAT(trace_string, buffer);
} else
SCAT(trace_string, " Interface: ---");
/* " Caller: '021256493'" */
SPRINT(buffer, " Caller: '%s'\n", trace.caller);
SCAT(trace_string, buffer);
/* " Caller: '021256493'" */
SPRINT(buffer, " Caller: '%s'\n", trace.caller);
SCAT(trace_string, buffer);
SPRINT(buffer, "Time: %02d.%02d.%02d %02d:%02d:%02d.%03d", tm->tm_mday, tm->tm_mon+1, tm->tm_year%100, tm->tm_hour, tm->tm_min, tm->tm_sec, trace.usec/1000);
SCAT(trace_string, buffer);
SPRINT(buffer, "Time: %02d.%02d.%02d %02d:%02d:%02d.%03d", tm->tm_mday, tm->tm_mon+1, tm->tm_year%100, tm->tm_hour, tm->tm_min, tm->tm_sec, trace.usec/1000);
SCAT(trace_string, buffer);
/* " Direction: out" */
SPRINT(buffer, " Direction: %s", (trace.direction==DIRECTION_OUT)?"OUT":"IN");
SCAT(trace_string, buffer);
} else
SCAT(trace_string, " Direction: ---");
/* " Direction: out" */
SPRINT(buffer, " Direction: %s", (trace.direction==DIRECTION_OUT)?"OUT":"IN");
SCAT(trace_string, buffer);
} else
SCAT(trace_string, " Direction: ---");
/* " Dialing: '57077'" */
SPRINT(buffer, " Dialing: '%s'\n", trace.dialing);
SCAT(trace_string, buffer);
/* " Dialing: '57077'" */
SPRINT(buffer, " Dialing: '%s'\n", trace.dialing);
SCAT(trace_string, buffer);
tm = localtime(&ti);
SPRINT(buffer, "%02d.%02d.%02d %02d:%02d:%02d.%03d ", tm->tm_mday, tm->tm_mon+1, tm->tm_year%100, tm->tm_hour, tm->tm_min, tm->tm_sec, trace.usec/1000);
SCAT(trace_string, buffer);
}
/* "CH(45): CC_SETUP (net->user)" */
tm = localtime(&ti);
SPRINT(buffer, "%02d.%02d.%02d %02d:%02d:%02d.%03d ", tm->tm_mday, tm->tm_mon+1, tm->tm_year%100, tm->tm_hour, tm->tm_min, tm->tm_sec, trace.usec/1000);
SCAT(trace_string, buffer);
}
/* "CH(45): CC_SETUP (net->user)" */
SPRINT(buffer, " %s", trace.element[i].name);
if (i) if (!strcmp(trace.element[i].name, trace.element[i-1].name))
buffer[0] = '\0';
SPRINT(buffer, " %s", trace.element[i].name);
if (i) if (!strcmp(trace.element[i].name, trace.element[i-1].name))
buffer[0] = '\0';
- while(i < trace.elements)
- {
- SPRINT(buffer, " %s%s", trace.element[i].name, spaces[strlen(trace.element[i].name)]);
+ while(i < trace.elements) {
+ SPRINT(buffer, " %s%s", trace.element[i].name, &spaces[strlen(trace.element[i].name)]);
if (i) if (!strcmp(trace.element[i].name, trace.element[i-1].name))
SPRINT(buffer, " ");
SCAT(trace_string, buffer);
if (trace.element[i].sub[0])
if (i) if (!strcmp(trace.element[i].name, trace.element[i-1].name))
SPRINT(buffer, " ");
SCAT(trace_string, buffer);
if (trace.element[i].sub[0])
- SPRINT(buffer, " : %s%s = ", trace.element[i].sub, spaces[strlen(trace.element[i].sub)]);
+ SPRINT(buffer, " : %s%s = ", trace.element[i].sub, &spaces[strlen(trace.element[i].sub)]);
{
char *string;
FILE *fp;
struct admin_list *admin;
struct admin_queue *response, **responsep; /* response pointer */
{
char *string;
FILE *fp;
struct admin_list *admin;
struct admin_queue *response, **responsep; /* response pointer */
- if (options.deb || options.log[0])
- {
- string = print_trace(1, 0, NULL, NULL, NULL, 0);
- if (string)
- {
+ if (options.deb || options.log[0]) {
+ string = print_trace(1, -1, NULL, NULL, NULL, 0);
+ if (string) {
- debug(NULL, 0, "trace", string);
+ debug(NULL, NULL, 0, "TRACE", string);
- if (fp)
- {
- fwrite(string, strlen(string), 1, fp);
+ if (fp) {
+ ret = fwrite(string, strlen(string), 1, fp);
string = print_trace(admin->trace.detail, admin->trace.port, admin->trace.interface, admin->trace.caller, admin->trace.dialing, admin->trace.category);
string = print_trace(admin->trace.detail, admin->trace.port, admin->trace.interface, admin->trace.caller, admin->trace.dialing, admin->trace.category);
/* seek to end of response list */
response = admin->response;
responsep = &admin->response;
/* seek to end of response list */
response = admin->response;
responsep = &admin->response;