Page MenuHomeFreeBSD

D50722.diff
No OneTemporary

D50722.diff

diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -2439,7 +2439,7 @@
if (! TAILQ_EMPTY(V_pf_keth->active.rules))
hook_pf_eth();
V_pf_status.running = 1;
- V_pf_status.since = time_second;
+ V_pf_status.since = time_uptime;
new_unrhdr64(&V_pf_stateid, time_second);
DPFPRINTF(PF_DEBUG_MISC, ("pf: started\n"));
@@ -2461,7 +2461,7 @@
V_pf_status.running = 0;
dehook_pf();
dehook_pf_eth();
- V_pf_status.since = time_second;
+ V_pf_status.since = time_uptime;
DPFPRINTF(PF_DEBUG_MISC, ("pf: stopped\n"));
}
sx_xunlock(&V_pf_ioctl_lock);
@@ -2481,7 +2481,7 @@
counter_u64_zero(V_pf_status.scounters[i]);
for (int i = 0; i < KLCNT_MAX; i++)
counter_u64_zero(V_pf_status.lcounters[i]);
- V_pf_status.since = time_second;
+ V_pf_status.since = time_uptime;
if (*V_pf_status.ifname)
pfi_update_status(V_pf_status.ifname, NULL);
PF_RULES_WUNLOCK();
@@ -5867,6 +5867,8 @@
char *pf_reasons[PFRES_MAX+1] = PFRES_NAMES;
char *pf_lcounter[KLCNT_MAX+1] = KLCNT_NAMES;
char *pf_fcounter[FCNT_MAX+1] = FCNT_NAMES;
+ time_t since;
+
PF_RULES_RLOCK_TRACKER;
#define ERROUT(x) ERROUT_FUNCTION(errout, x)
@@ -5877,8 +5879,10 @@
if (nvl == NULL)
ERROUT(ENOMEM);
+ since = time_second - (time_uptime - V_pf_status.since);
+
nvlist_add_bool(nvl, "running", V_pf_status.running);
- nvlist_add_number(nvl, "since", V_pf_status.since);
+ nvlist_add_number(nvl, "since", since);
nvlist_add_number(nvl, "debug", V_pf_status.debug);
nvlist_add_number(nvl, "hostid", V_pf_status.hostid);
nvlist_add_number(nvl, "states", V_pf_status.states);
diff --git a/sys/netpfil/pf/pf_nl.c b/sys/netpfil/pf/pf_nl.c
--- a/sys/netpfil/pf/pf_nl.c
+++ b/sys/netpfil/pf/pf_nl.c
@@ -1177,6 +1177,7 @@
char *pf_reasons[PFRES_MAX+1] = PFRES_NAMES;
char *pf_lcounter[KLCNT_MAX+1] = KLCNT_NAMES;
char *pf_fcounter[FCNT_MAX+1] = FCNT_NAMES;
+ time_t since;
int error;
PF_RULES_RLOCK_TRACKER;
@@ -1189,11 +1190,13 @@
ghdr_new->version = 0;
ghdr_new->reserved = 0;
+ since = time_second - (time_uptime - V_pf_status.since);
+
PF_RULES_RLOCK();
nlattr_add_string(nw, PF_GS_IFNAME, V_pf_status.ifname);
nlattr_add_bool(nw, PF_GS_RUNNING, V_pf_status.running);
- nlattr_add_u32(nw, PF_GS_SINCE, V_pf_status.since);
+ nlattr_add_u32(nw, PF_GS_SINCE, since);
nlattr_add_u32(nw, PF_GS_DEBUG, V_pf_status.debug);
nlattr_add_u32(nw, PF_GS_HOSTID, ntohl(V_pf_status.hostid));
nlattr_add_u32(nw, PF_GS_STATES, V_pf_status.states);

File Metadata

Mime Type
text/plain
Expires
Mon, May 18, 1:54 PM (11 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33236267
Default Alt Text
D50722.diff (2 KB)

Event Timeline