wanpipe/patches/kdrivers/src/xmtp2km/fwmsg.c

699 lines
13 KiB
C

/****************************************************************************
*
* fwmsg.c : Fatal and Warning messages
*
* These functions are common to all protocol levels.
*
* Copyright (C) 2004 Xygnada Technology, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
****************************************************************************/
#include <linux/kernel.h>
#include <linux/string.h>
#define I_FORMAT_S "xmtp2km:I:%s:%s:%s:%s\n"
#define I_FORMAT_2S "xmtp2km:I:%s:%s:%s:%s:%s\n"
#define I_FORMAT_2S_U "xmtp2km:I:%s:%s:%s:%s:%s:%u\n"
#define I_FORMAT_U "xmtp2km:I:%s:%s:%s:%u\n"
#define I_FORMAT_2U "xmtp2km:I:%s:%s:%s:%u:%u\n"
#define I_FORMAT_3U "xmtp2km:I:%s:%s:%s:%u:%u:%u\n"
#define I_FORMAT_4U "xmtp2km:I:%s:%s:%s:%u:%u:%u:%u\n"
#define I_FORMAT_6U "xmtp2km:I:%s:%s:%s:%u:%u:%u:%u:%u:%u\n"
#define W_FORMAT_S "xmtp2km:W:%s:%s:%s:%s\n"
#define W_FORMAT_2S "xmtp2km:W:%s:%s:%s:%s:%s\n"
#define W_FORMAT_2S_U "xmtp2km:W:%s:%s:%s:%s:%s:%u\n"
#define W_FORMAT_3S "xmtp2km:W:%s:%s:%s:%s:%s:%s\n"
#define W_FORMAT_U "xmtp2km:W:%s:%s:%s:%u\n"
#define W_FORMAT_2U "xmtp2km:W:%s:%s:%s:%u:%u\n"
#define W_FORMAT_3U "xmtp2km:W:%s:%s:%s:%u:%u:%u\n"
#define W_FORMAT_4U "xmtp2km:W:%s:%s:%s:%u:%u:%u:%u\n"
#define W_FORMAT_6U "xmtp2km:W:%s:%s:%s:%u:%u:%u:%u:%u:%u\n"
#define F_FORMAT_S "xmtp2km:F:%s:%s:%s:%s\n"
#define F_FORMAT_2S "xmtp2km:F:%s:%s:%s:%s:%s\n"
#define F_FORMAT_2S_U "xmtp2km:F:%s:%s:%s:%s:%s:%u\n"
#define F_FORMAT_2S_2U "xmtp2km:F:%s:%s:%s:%s:%s:%u:%u\n"
#define F_FORMAT_3S "xmtp2km:F:%s:%s:%s:%s:%s:%s\n"
#define F_FORMAT_U "xmtp2km:F:%s:%s:%s:%u\n"
#define F_FORMAT_2U "xmtp2km:F:%s:%s:%s:%u:%u\n"
#define F_FORMAT_3U "xmtp2km:F:%s:%s:%s:%u:%u:%u\n"
#define F_FORMAT_4U "xmtp2km:F:%s:%s:%s:%u:%u:%u:%u\n"
#define F_FORMAT_6U "xmtp2km:F:%s:%s:%s:%u:%u:%u:%u:%u:%u\n"
char pline[1024];
int xmtp2km_fatal_error = 0;
int verbose_mode = -1;
int debug_mode = 0;
extern int bpool_rdy;
void default_prg_end (void);
void (*pf_prgend)(void) = default_prg_end;
void fwmsg_init (
const char * ps_prgname,
const int _print_syslog_,
const int _verbose_mode_,
const int _debug_mode_,
void (*_pf_prgend_)(void))
/******************************************************************************/
{
verbose_mode = _verbose_mode_;
debug_mode = _debug_mode_;
if (_pf_prgend_ != NULL) pf_prgend = _pf_prgend_;
}
void stop_execution (void)
/******************************************************************************/
{
xmtp2km_fatal_error = -1;
bpool_rdy = 0;
}
void default_prg_end (void)
/******************************************************************************/
{
return;
}
void print_msg (void)
/******************************************************************************/
{
printk ("%s", pline);
}
void info_s (
const char * object,
const char * location,
const char * cause,
const char * detail
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_S,
object,
location,
cause,
detail
);
print_msg ();
}
void info_2s (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_2S,
object,
location,
cause,
detail1,
detail2
);
print_msg ();
}
void info_2s_u (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2,
unsigned int detail3
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_2S_U,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
}
void info_u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_U,
object,
location,
cause,
detail
);
print_msg ();
}
void info_2u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_2U,
object,
location,
cause,
detail1,
detail2
);
print_msg ();
}
void info_3u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_3U,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
}
void info_4u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3,
const unsigned int detail4
)
/******************************************************************************/
{
if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_4U,
object,
location,
cause,
detail1,
detail2,
detail3,
detail4
);
print_msg ();
}
void report_6u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3,
const unsigned int detail4,
const unsigned int detail5,
const unsigned int detail6
)
/******************************************************************************/
{
//if (! verbose_mode) return;
sprintf (pline,
I_FORMAT_6U,
object,
location,
cause,
detail1,
detail2,
detail3,
detail4,
detail5,
detail6
);
print_msg ();
}
void warning_s (
const char * object,
const char * location,
const char * cause,
const char * detail
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_S,
object,
location,
cause,
detail
);
print_msg ();
}
void warning_2s (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_2S,
object,
location,
cause,
detail1,
detail2
);
print_msg ();
}
void warning_2s_u (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2,
unsigned int detail3
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_2S_U,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
}
void warning_3s (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2,
const char * detail3
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_3S,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
}
void warning_u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_U,
object,
location,
cause,
detail
);
print_msg ();
}
void warning_2u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_2U,
object,
location,
cause,
detail1,
detail2
);
print_msg ();
}
void warning_3u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_3U,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
}
void warning_4u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3,
const unsigned int detail4
)
/******************************************************************************/
{
sprintf (pline,
W_FORMAT_4U,
object,
location,
cause,
detail1,
detail2,
detail3,
detail4
);
print_msg ();
}
void fatal_s (
const char * object,
const char * location,
const char * cause,
const char * detail
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_S,
object,
location,
cause,
detail
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_2s (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_2S,
object,
location,
cause,
detail1,
detail2
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_3s (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2,
const char * detail3
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_3S,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_U,
object,
location,
cause,
detail
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_2u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_2U,
object,
location,
cause,
detail1,
detail2
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_3u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_3U,
object,
location,
cause,
detail1,
detail2,
detail3
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_4u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail1,
const unsigned int detail2,
const unsigned int detail3,
const unsigned int detail4
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_4U,
object,
location,
cause,
detail1,
detail2,
detail3,
detail4
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void fatal_2s_2u (
const char * object,
const char * location,
const char * cause,
const char * detail1,
const char * detail2,
const unsigned int detail3,
const unsigned int detail4
)
/******************************************************************************/
{
sprintf (pline,
F_FORMAT_2S_2U,
object,
location,
cause,
detail1,
detail2,
detail3,
detail4
);
print_msg ();
(*pf_prgend) ();
stop_execution ();
}
void debug_init (const int _debug_mode_)
/******************************************************************************/
{
debug_mode = _debug_mode_;
}
void mtp2_debug_u (
const char * object,
const char * location,
const char * cause,
const unsigned int detail
)
/******************************************************************************/
{
if (! debug_mode) return;
printk (
"D:MTP2:%s:%s:%s:%u\n",
object,
location,
cause,
detail
);
}
void dbg_state_cause (
// t_mtp2_link * p_lnk,
void * p_lnk,
const unsigned int called,
const unsigned int cause,
const unsigned int caller)
/******************************************************************************/
{
if (! debug_mode) return;
#if 0
printk (
"D:MTP2: %s:%s:states/cause:\
\nfac %u slot %u ls %u l %u:\
\ncalled %u:\
\ncaller %u:\
\ncause %u:\
\nLSC %u:\
\nIAC %u:\
\nRXC %u:\
\nTXC %u:\
\nDAEDR %u:\
\nDAEDT %u:\
\nSUERM %u:\
\nAERM %u:\n",
__FILE__,
__FUNCTION__,
p_lnk->facility_index,
p_lnk->slot,
p_lnk->ls,
p_lnk->link,
called,
caller,
cause,
p_lnk->state_lsc,
p_lnk->state_iac,
p_lnk->state_rxc,
p_lnk->state_txc,
p_lnk->state_daedr,
p_lnk->state_daedt,
p_lnk->state_suerm,
p_lnk->state_aerm
);
#endif
}