Changeset View
Changeset View
Standalone View
Standalone View
sys/netpfil/pf/pf_if.c
Show First 20 Lines • Show All 825 Lines • ▼ Show 20 Lines | for (int j = 0; j < 2; j++) { | ||||
kif->pfik_bytes[i][j][k] = | kif->pfik_bytes[i][j][k] = | ||||
counter_u64_fetch(kkif->pfik_bytes[i][j][k]); | counter_u64_fetch(kkif->pfik_bytes[i][j][k]); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
kif->pfik_flags = kkif->pfik_flags; | kif->pfik_flags = kkif->pfik_flags; | ||||
kif->pfik_tzero = kkif->pfik_tzero; | kif->pfik_tzero = kkif->pfik_tzero; | ||||
kif->pfik_rulerefs = kkif->pfik_rulerefs; | kif->pfik_rulerefs = kkif->pfik_rulerefs; | ||||
/* | |||||
* Userspace relies on this pointer to decide if this is a group or | |||||
* not. We don't want to share the actual pointer, because it's | |||||
* useless to userspace and leaks kernel memory layout information. | |||||
* So instead we provide 0xfeedcode as 'true' and NULL as 'false'. | |||||
*/ | |||||
kif->pfik_group = | |||||
kkif->pfik_group ? (struct ifg_group *)0xfeedc0de : NULL; | |||||
} | } | ||||
void | void | ||||
pfi_get_ifaces(const char *name, struct pfi_kif *buf, int *size) | pfi_get_ifaces(const char *name, struct pfi_kif *buf, int *size) | ||||
{ | { | ||||
struct epoch_tracker et; | struct epoch_tracker et; | ||||
struct pfi_kkif *p, *nextp; | struct pfi_kkif *p, *nextp; | ||||
int n = 0; | int n = 0; | ||||
▲ Show 20 Lines • Show All 246 Lines • Show Last 20 Lines |