[Date Prev]   [Date Next] [Thread Prev]   [Thread Next] [Date Index]   [Thread Index]

 

     [snips-users] Fix for no subdevices being logged "+device" and not "/var+device"

On Thu, Feb 26, 2004 at 08:38:00AM -0700, Anthony Veale wrote:
> > Did anybody ever fix the subdevice not being passed out by snipslogd bug?
> 
> I don't think anyone has.  I haven't delved too deeply into this one,
> but I have the general impression that subdevices were added in late
> in the game.  A number of issues surrounding them were not completely
> implemented.
> 
> It also appears that this particular issue might exist in the
> underlying C code.  

Right.

I've just had a C programmer look at this buglet for me, and he seems to
have corrected it.

The problem was in event_utils.c. The fix isn't the most elegant but it
works, we suspect a bracketing problem or wrong number of fields in the
original code as the problem.

I had to recompile everything that uses event_utils.c, namely
display_snips_datafile and snipslogd obviously.

Here's a diff.

1c1
< /* $Header: /home/cvsroot/snips/lib/event_utils.c,v 1.2 2002/01/30 05:40:17 vikas Exp $ */
---
> /* $Header: /cvsroot/snips/lib/event_utils.c,v 1.2 2002/01/30 05:40:17 vikas Exp $ */
100,116c100,106
<   if (*(v->device.subdev)) {
<         sprintf(fmts + strlen(fmts),
<                 "DEVICE %s%s%s %s VAR %s %ld %ld %s LEVEL %s LOGLEVEL %s STATE %s\n",
<                 v->device.subdev, "+",
<                 v->device.name, v->device.addr,
<                 v->var.name, v->var.value, v->var.threshold, v->var.units,
<                 severity_txt[v->severity], severity_txt[v->loglevel],
<                 states) ;
<   } else {
<         sprintf(fmts + strlen(fmts),
<                 "DEVICE %s%s%s %s VAR %s %ld %ld %s LEVEL %s LOGLEVEL %s STATE %s\n",
<                 "", "",
<                 v->device.name, v->device.addr,
<                 v->var.name, v->var.value, v->var.threshold, v->var.units,
<                 severity_txt[v->severity], severity_txt[v->loglevel],
<                 states) ;
<   }
---
>   sprintf(fmts + strlen(fmts),
>         "DEVICE %s%s%s %s VAR %s %ld %ld %s LEVEL %s LOGLEVEL %s STATE %s\n",
>         (*(v->device.subdev))? v->device.subdev, "+" : "", "",
>         v->device.name, v->device.addr,
>         v->var.name, v->var.value, v->var.threshold, v->var.units,
>         severity_txt[v->severity], severity_txt[v->loglevel],
>         states) ;



-- 
Robert Lister   -   London Internet Exchange    -  http://www.linx.net/
robl at linx net   -   tel: +44 (0)20 7645 3510    -  RL786-RIPE

Zyrion Traverse Network Monitoring & Network Management Software