version 1.43, 2019/02/18 13:11:44 |
version 1.44, 2019/06/28 13:35:04 |
|
|
ps.ps_len = sbytes; |
ps.ps_len = sbytes; |
ps.ps_states = state_buf; |
ps.ps_states = state_buf; |
|
|
if (ioctl(pf_dev, DIOCGETSTATES, &ps) < 0) { |
if (ioctl(pf_dev, DIOCGETSTATES, &ps) == -1) { |
error("DIOCGETSTATES"); |
error("DIOCGETSTATES"); |
} |
} |
num_states_all = ps.ps_len / sizeof(struct pfsync_state); |
num_states_all = ps.ps_len / sizeof(struct pfsync_state); |
|
|
memset(&pr, 0, sizeof(pr)); |
memset(&pr, 0, sizeof(pr)); |
strlcpy(pr.anchor, anchor, sizeof(pr.anchor)); |
strlcpy(pr.anchor, anchor, sizeof(pr.anchor)); |
|
|
if (ioctl(pf_dev, DIOCGETRULES, &pr)) { |
if (ioctl(pf_dev, DIOCGETRULES, &pr) == -1) { |
error("anchor %s: %s", anchor, strerror(errno)); |
error("anchor %s: %s", anchor, strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|
|
|
for (nr = 0; nr < num; ++nr) { |
for (nr = 0; nr < num; ++nr) { |
pr.nr = nr; |
pr.nr = nr; |
if (ioctl(pf_dev, DIOCGETRULE, &pr)) { |
if (ioctl(pf_dev, DIOCGETRULE, &pr) == -1) { |
error("DIOCGETRULE: %s", strerror(errno)); |
error("DIOCGETRULE: %s", strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|
|
|
a->ref += len; |
a->ref += len; |
|
|
if (ioctl(pf_dev, DIOCGETRULESETS, &ruleset)) { |
if (ioctl(pf_dev, DIOCGETRULESETS, &ruleset) == -1) { |
error("DIOCGETRULESETS: %s", strerror(errno)); |
error("DIOCGETRULESETS: %s", strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|
|
|
for (nr = 0; nr < ns; ++nr) { |
for (nr = 0; nr < ns; ++nr) { |
ruleset.nr = nr; |
ruleset.nr = nr; |
if (ioctl(pf_dev, DIOCGETRULESET, &ruleset)) { |
if (ioctl(pf_dev, DIOCGETRULESET, &ruleset) == -1) { |
error("DIOCGETRULESET: %s", strerror(errno)); |
error("DIOCGETRULESET: %s", strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|
if (pf_dev < 0) |
if (pf_dev < 0) |
return (-1); |
return (-1); |
|
|
if (ioctl(pf_dev, DIOCGETQUEUES, &pq)) { |
if (ioctl(pf_dev, DIOCGETQUEUES, &pq) == -1) { |
error("DIOCGETQUEUES: %s", strerror(errno)); |
error("DIOCGETQUEUES: %s", strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|
pqs.ticket = pq.ticket; |
pqs.ticket = pq.ticket; |
pqs.buf = &qstats.data; |
pqs.buf = &qstats.data; |
pqs.nbytes = sizeof(qstats.data); |
pqs.nbytes = sizeof(qstats.data); |
if (ioctl(pf_dev, DIOCGETQSTATS, &pqs)) { |
if (ioctl(pf_dev, DIOCGETQSTATS, &pqs) == -1) { |
error("DIOCGETQSTATS: %s", strerror(errno)); |
error("DIOCGETQSTATS: %s", strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|
pf_dev = open("/dev/pf", O_RDONLY); |
pf_dev = open("/dev/pf", O_RDONLY); |
if (pf_dev == -1) { |
if (pf_dev == -1) { |
alloc_buf(0); |
alloc_buf(0); |
} else if (ioctl(pf_dev, DIOCGETSTATUS, &status)) { |
} else if (ioctl(pf_dev, DIOCGETSTATUS, &status) == -1) { |
warn("DIOCGETSTATUS"); |
warn("DIOCGETSTATUS"); |
alloc_buf(0); |
alloc_buf(0); |
} else |
} else |