summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/ospfctl/ospfctl.c4
-rw-r--r--usr.sbin/ospfd/ospfd.h4
-rw-r--r--usr.sbin/ospfd/rde.c13
3 files changed, 18 insertions, 3 deletions
diff --git a/usr.sbin/ospfctl/ospfctl.c b/usr.sbin/ospfctl/ospfctl.c
index e6b00dbe16b..0bac85fb98e 100644
--- a/usr.sbin/ospfctl/ospfctl.c
+++ b/usr.sbin/ospfctl/ospfctl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ospfctl.c,v 1.33 2006/04/21 16:36:39 claudio Exp $ */
+/* $OpenBSD: ospfctl.c,v 1.34 2006/06/28 10:53:39 norby Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -293,6 +293,8 @@ show_summary_msg(struct imsg *imsg)
case IMSG_CTL_SHOW_SUM:
sum = imsg->data;
printf("Router ID: %s\n", inet_ntoa(sum->rtr_id));
+ printf("Uptime: %s\n", sum->uptime == 0 ? "00:00:00" :
+ fmt_timeframe_core(sum->uptime));
printf("RFC1583 compatibility flag is ");
if (sum->rfc1583compat)
printf("enabled\n");
diff --git a/usr.sbin/ospfd/ospfd.h b/usr.sbin/ospfd/ospfd.h
index 408d842ecdd..b8039d357d3 100644
--- a/usr.sbin/ospfd/ospfd.h
+++ b/usr.sbin/ospfd/ospfd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ospfd.h,v 1.59 2006/05/31 03:24:06 claudio Exp $ */
+/* $OpenBSD: ospfd.h,v 1.60 2006/06/28 10:53:39 norby Exp $ */
/*
* Copyright (c) 2004 Esben Norby <norby@openbsd.org>
@@ -388,6 +388,7 @@ struct ospfd_conf {
#define OSPFD_OPT_NOACTION 0x00000004
u_int32_t spf_delay;
u_int32_t spf_hold_time;
+ time_t uptime;
int spf_state;
int ospf_socket;
int flags;
@@ -491,6 +492,7 @@ struct ctl_sum {
u_int32_t spf_hold_time;
u_int32_t num_ext_lsa;
u_int32_t num_area;
+ time_t uptime;
u_int8_t rfc1583compat;
};
diff --git a/usr.sbin/ospfd/rde.c b/usr.sbin/ospfd/rde.c
index 9ef7fc6e195..06d8a1bebb5 100644
--- a/usr.sbin/ospfd/rde.c
+++ b/usr.sbin/ospfd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.46 2006/05/30 22:06:14 claudio Exp $ */
+/* $OpenBSD: rde.c,v 1.47 2006/06/28 10:53:39 norby Exp $ */
/*
* Copyright (c) 2004, 2005 Claudio Jeker <claudio@openbsd.org>
@@ -91,6 +91,7 @@ pid_t
rde(struct ospfd_conf *xconf, int pipe_parent2rde[2], int pipe_ospfe2rde[2],
int pipe_parent2ospfe[2])
{
+ struct timeval now;
struct passwd *pw;
struct redistribute *r;
struct event ev_sigint, ev_sigterm;
@@ -166,6 +167,9 @@ rde(struct ospfd_conf *xconf, int pipe_parent2rde[2], int pipe_ospfe2rde[2],
free(r);
}
+ gettimeofday(&now, NULL);
+ rdeconf->uptime = now.tv_sec;
+
event_dispatch();
rde_shutdown();
@@ -695,6 +699,7 @@ void
rde_send_summary(pid_t pid)
{
static struct ctl_sum sumctl;
+ struct timeval now;
struct area *area;
struct vertex *v;
@@ -710,6 +715,12 @@ rde_send_summary(pid_t pid)
RB_FOREACH(v, lsa_tree, &asext_tree)
sumctl.num_ext_lsa++;
+ gettimeofday(&now, NULL);
+ if (rdeconf->uptime < now.tv_sec)
+ sumctl.uptime = now.tv_sec - rdeconf->uptime;
+ else
+ sumctl.uptime = 0;
+
sumctl.rfc1583compat = rdeconf->rfc1583compat;
rde_imsg_compose_ospfe(IMSG_CTL_SHOW_SUM, 0, pid, &sumctl,