Annotation of embedaddon/coova-chilli/src/syserr.c, revision 1.1.1.1

1.1       misho       1: /* 
                      2:  *
                      3:  * Syslog functions.
                      4:  * Copyright (C) 2003, 2004 Mondru AB.
                      5:  * Copyright (c) 2006-2007 David Bird <david@coova.com>
                      6:  * 
                      7:  * The contents of this file may be used under the terms of the GNU
                      8:  * General Public License Version 2, provided that the above copyright
                      9:  * notice and this permission notice is included in all copies or
                     10:  * substantial portions of the software.
                     11:  * 
                     12:  */
                     13: 
                     14: #include "system.h"
                     15: #include "syserr.h"
                     16: #include "radius.h"
                     17: #include "md5.h"
                     18: #include "dhcp.h"
                     19: #include "redir.h"
                     20: #include "chilli.h"
                     21: #include "options.h"
                     22: #include "bstrlib.h"
                     23: 
                     24: void sys_err(int pri, char *fn, int ln, int en, const char *fmt, ...) {
                     25:   if (pri==LOG_DEBUG && !options.debug) return;
                     26:   {
                     27:     bstring bt = bfromcstralloc(128,"");
                     28:     int sz;
                     29:     
                     30:     bvformata(sz, bt, fmt, fmt);
                     31:     
                     32:     if (options.foreground && options.debug) {
                     33:       fprintf(stderr, "%s: %d: %d (%s) %s\n", fn, ln, en, en ? strerror(en) : "Debug", bt->data);
                     34:     } else {
                     35:       if (en)
                     36:        syslog(pri, "%s: %d: %d (%s) %s", fn, ln, en, strerror(en), bt->data);
                     37:       else
                     38:        syslog(pri, "%s: %d: %s", fn, ln, bt->data);
                     39:     }
                     40:     
                     41:     bdestroy(bt);
                     42:   }
                     43: }
                     44: 
                     45: void sys_errpack(int pri, char *fn, int ln, int en, struct sockaddr_in *peer,
                     46:                 void *pack, unsigned len, char *fmt, ...) {
                     47:   bstring bt = bfromcstr("");
                     48:   bstring bt2 = bfromcstr("");
                     49:   int sz;
                     50:   int n;
                     51:   
                     52:   bvformata(sz, bt, fmt, fmt);
                     53: 
                     54:   bassignformat(bt2, ". Packet from %s:%u, length: %d, content:",
                     55:                inet_ntoa(peer->sin_addr),
                     56:                ntohs(peer->sin_port),
                     57:                len);
                     58: 
                     59:   bconcat(bt, bt2);
                     60: 
                     61:   for(n=0; n < len; n++) {
                     62:     bassignformat(bt, " %02hhx", ((unsigned char*)pack)[n]);
                     63:     bconcat(bt, bt2);
                     64:   }
                     65:   
                     66:   if (options.foreground && options.debug) {
                     67:     fprintf(stderr, "%s: %d: %d (%s) %s", fn, ln, en, strerror(en), bt->data);
                     68:   } else {
                     69:     if (en)
                     70:       syslog(pri, "%s: %d: %d (%s) %s", fn, ln, en, strerror(en), bt->data);
                     71:     else
                     72:       syslog(pri, "%s: %d: %s", fn, ln, bt->data);
                     73:   }
                     74: 
                     75:   bdestroy(bt);
                     76:   bdestroy(bt2);
                     77: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>