<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>  Hi all!</div><div>There is a problem in time output.</div><div>Consider timeformat protocol "%Y-%m-%d %H:%M:%S";<br></div><div><br></div><div>Just call "birdc show proto":<br></div><div>===</div><div>BIRD 1.6.5 ready.</div><div>name     proto    table    state  since       info</div><div>static1  Static   master   up     2019-02-03 14:59:33  </div><div>kernel1  Kernel   master   up     2019-02-03 14:59:33  </div><div>device1  Device   master   up     2019-02-03 14:59:33  </div><div>===</div><div><br></div><div>Then call it again:</div><div>===</div><div>BIRD 1.6.5 ready.<br></div><div><div>name     proto    table    state  since       info</div><div>static1  Static   master   up     2019-02-03 14:59:32  </div><div>kernel1  Kernel   master   up     2019-02-03 14:59:32  </div><div>device1  Device   master   up     2019-02-03 14:59:32  </div></div><div>===<br></div><div><br></div><div>As you can see, time is changed by 1 second.</div><div>That's bad for monitoring when it's configured to alert on time/state changes.</div><div><br></div><div>Quick fix for me:</div><div>===</div><div><div>--- timer.c.orig<span style="white-space:pre">       </span>2019-02-03 15:06:44.388749890 +0300</div><div>+++ timer.c<span style="white-space:pre">        </span>2019-02-03 16:25:49.767532769 +0300</div><div>@@ -302,10 +302,9 @@</div><div> tm_format_time(char *x, struct timeformat *fmt, btime t)</div><div> {</div><div>   btime dt = current_time() - t;</div><div>-  btime rt = current_real_time() - dt;</div><div>   int v1 = !fmt->limit || (dt < fmt->limit);</div><div> </div><div>-  if (!tm_format_real_time(x, TM_DATETIME_BUFFER_SIZE, v1 ? fmt->fmt1 : fmt->fmt2, rt))</div><div>+  if (!tm_format_real_time(x, TM_DATETIME_BUFFER_SIZE, v1 ? fmt->fmt1 : fmt->fmt2, t))</div><div>     strcpy(x, "<error>");</div><div> }</div></div><div>===</div><div><br></div><div>Ilya</div></div></div></div></div></div></div>