aboutsummaryrefslogtreecommitdiff
path: root/sbin/pfctl
Commit message (Collapse)AuthorAgeFilesLines
* [pfctl_tests] Add missing void to empty function declarationAdrian Chadd2020-10-151-1/+1
| | | | | | | | | | | | | | | Our gcc-6.4 flags require non-empty function declarations. Fix this to match the rest of the codebase. Tested: * compiled on gcc-6.4 for amd64 Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D26795 Notes: svn path=/head/; revision=366728
* Rewrite pfctl_test in C to reduce testsuite run timeAlex Richardson2020-10-146-134/+352
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new C test takes 25 seconds on QEMU-RISC-V, wheras the shell version takes 332 seconds. Even with the latest optimizations to atf-sh this test still takes a few seconds to startup in QEMU. Re-writing it in C reduces the runtime for a single test from about 2-3 seconds to less than .5 seconds. Since there are ~80 tests, this adds up to about 3-4 minutes. This may not seem like a big speedup, but before the recent optimizations to avoid atf_get_srcdir, each test took almost 100 seconds on QEMU RISC-V instead of 3. This also significantly reduces the time it takes to list the available test cases, which speeds up running the tests via kyua: ``` root@qemu-riscv64-alex:~ # /usr/bin/time kyua test -k /usr/tests/sbin/pfctl/Kyuafile pfctl_test_old ... 158/158 passed (0 failed) 332.08 real 42.58 user 286.17 sys root@qemu-riscv64-alex:~ # /usr/bin/time kyua test -k /usr/tests/sbin/pfctl/Kyuafile pfctl_test 158/158 passed (0 failed) 24.96 real 9.75 user 14.26 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test pf1001 pfctl_test: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Running pfctl -o none -nvf /usr/tests/sbin/pfctl/./files/pf1001.in --- binat on em0 inet6 from fc00::/64 to any -> fc00:0:0:1::/64 binat on em0 inet6 from any to fc00:0:0:1::/64 -> fc00::/64 --- passed 0.17 real 0.06 user 0.08 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_old pf1001 pfctl_test_old: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test_old: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Id Refs Name 141 1 pf Executing command [ pfctl -o none -nvf - ] passed 1.73 real 0.25 user 1.41 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_old -l > /dev/null 24.36 real 2.26 user 21.86 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test -l > /dev/null 0.04 real 0.02 user 0.01 sys ``` The speedups are even more noticeable on CHERI-RISC-V (since QEMU runs slower when emulating CHERI instructions): ``` root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_new -l > /dev/null 0.51 real 0.49 user 0.00 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test -l > /dev/null 34.20 real 32.69 user 0.16 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test pf1001 pfctl_test: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Id Refs Name 147 1 pf Executing command [ pfctl -o none -nvf - ] passed 5.74 real 5.41 user 0.03 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_new pf1001 pfctl_test_new: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test_new: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Running pfctl -o none -nvf /usr/tests/sbin/pfctl/./files/pf1001.in --- binat on em0 inet6 from fc00::/64 to any -> fc00:0:0:1::/64 binat on em0 inet6 from any to fc00:0:0:1::/64 -> fc00::/64 --- passed 0.68 real 0.66 user 0.00 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # ``` Reviewed By: kp Differential Revision: https://reviews.freebsd.org/D26779 Notes: svn path=/head/; revision=366708
* pfctl_test: avoid 200 calls to atf_get_srcdirAlex Richardson2020-09-141-3/+4
| | | | | | | | | | | | | | | I have been trying to reduce the time that testsuite runs take for CheriBSD on QEMU (currently about 22 hours). One of the slowest tests is pfctl_test: Just listing the available test cases currently takes 98 seconds on a CheriBSD RISC-V system due to all the processes being spawned. This trivial patch reduces the time to 92 seconds. The better solution would be to rewrite the test in C/C++ which I may do as a follow-up change. Reviewed By: kp Differential Revision: https://reviews.freebsd.org/D26417 Notes: svn path=/head/; revision=365708
* pfctl: Call ifa_load() before ifa_grouplookup()Kristof Provost2020-04-191-3/+4
| | | | | | | | | | | | ifa_grouplookup() uses the data loaded in ifa_load() (through is_a_group()), so we must call ifa_load() before we can rely on any of the data it populates. Submitted by: Nick Rogers MFC after: 1 week Sponsored by: RG Nets Notes: svn path=/head/; revision=360097
* pfctl: Remove unused variableKristof Provost2020-04-191-2/+0
| | | | | | | | | Submitted by: Nick Rogers MFC after: 1 week Sponsored by: RG Nets Notes: svn path=/head/; revision=360096
* pfctl: improve rule load times with thousands of interfacesKristof Provost2020-03-191-4/+5
| | | | | | | | | | | | | | | | | | | | r343287 / D18759 introduced ifa_add_groups_to_map() which is now run by ifa_load/ifa_lookup/host_if. When loading an anchor or ruleset via pfctl that does NOT contain ifnames as hosts, host() still ends up iterating all interfaces twice, grabbing SIOCGIFGROUP ioctl twice for each. This adds an unnecessary amount of time on systems with thousands or tens of thousands of interfaces. Prioritize the IPv4/6 check over the interface name lookup, which skips loading the iftab and iterating all interfaces when the configuration does not contain interface names. Submitted by: Nick Rogers MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D24100 Notes: svn path=/head/; revision=359130
* Fix test cases after r358448Li-Wen Hsu2020-02-291-1/+1
| | | | | | | | | | | sbin.pfctl.pfctl_test.pf0087 sbin.pfctl.pfctl_test.selfpf0087 MFC with: r358448 Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=358463
* pfctl: Warn users when they run into kernel limitsKristof Provost2019-12-141-12/+53
| | | | | | | | | | | Warn users when they try to add/delete/modify more items than the kernel will allow. Reviewed by: allanjude (previous version), Lutz Donnerhacke Differential Revision: https://reviews.freebsd.org/D22733 Notes: svn path=/head/; revision=355743
* pkgbase: pfctl: tests: Put tests files in the FreeBSD-tests packageEmmanuel Vadot2019-09-052-0/+4
| | | | | | | | Reviewed by: kp, gjb Differential Revision: https://reviews.freebsd.org/D21521 Notes: svn path=/head/; revision=351862
* pfctl: Fix ifgroup checkKristof Provost2019-04-191-5/+15
| | | | | | | | | | | | | | | We cannot just assume that any name which ends with a letter is a group That's not been true since we allowed renaming of network interfaces. It's also not true for things like epair0a. Try to retrieve the group members for the name to check, since we'll get ENOENT if the group doesn't exist. MFC after: 1 week Event: Aberdeen hackathon 2019 Notes: svn path=/head/; revision=346370
* Fix the fix added in r343287 for spurious HFSC bandwidth check errorsPatrick Kelsey2019-02-111-18/+13
| | | | | | | | | | | | | | | | | | | | | | | | | The logic added in r343287 to avoid false-positive sum-of-child-bandwidth check errors for HFSC queues has a bug in it that causes the upperlimit service curve of an HFSC queue to be pulled down to its parent's linkshare service curve if it happens to be above it. Upon further inspection/reflection, this generic sum-of-child-bandwidths check does not need to be fixed for HFSC - it needs to be skipped. For HFSC, the equivalent check is to ensure the sum of child linkshare service curves are at or below the parent's linkshare service curve, and this check is already being performed by eval_pfqueue_hfsc(). This commit reverts the affected parts of r343287 and adds new logic to skip the generic sum-of-child-bandwidths check for HFSC. MFC after: 1 day Sponsored by: RG Nets Differential Revision: https://reviews.freebsd.org/D19124 Notes: svn path=/head/; revision=344025
* pfctl: Fix ifa_grouplookup()Kristof Provost2019-02-101-0/+1
| | | | | | | | | | | | | | | Setting the length of the request got lost in r343287, which means SIOCGIFGMEMB gives us the required length, but does not copy the names of the group members. As a result we don't get a correct list of group members, and 'set skip on <ifgroup>' broke. This produced all sorts of very unexpected results, because we would end up applying 'set skip' to unexpected interfaces. X-MFC-with: r343287 Notes: svn path=/head/; revision=343978
* pfctl: Point users to net.pf.request_maxcount if large requests are rejectedKristof Provost2019-01-281-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | The kernel will reject very large tables to avoid resource exhaustion attacks. Some users run into this limit with legitimate table configurations. The error message in this case was not very clear: pf.conf:1: cannot define table nets: Invalid argument pfctl: Syntax error in config file: pf rules not loaded If a table definition fails we now check the request_maxcount sysctl, and if we've tried to create more than that point the user at net.pf.request_maxcount: pf.conf:1: cannot define table nets: too many elements. Consider increasing net.pf.request_maxcount. pfctl: Syntax error in config file: pf rules not loaded PR: 235076 MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D18909 Notes: svn path=/head/; revision=343520
* Remove unused function gsc_destroy()Patrick Kelsey2019-01-221-12/+0
| | | | | | | | | gsc_destroy() is no longer needed as of r343287. MFC after: 1 week Notes: svn path=/head/; revision=343296
* Reduce pf.conf parsing cost for configs that define N queues from O(N^2) to O(N)Patrick Kelsey2019-01-224-330/+386
| | | | | | | | | | | | | | | The number of syscalls made during parsing of any config that defines tables is also reduced, and incorrect warnings that HFSC parent queue bandwidths were smaller than the sum of their child bandwidths have been fixed. Reviewed by: kp MFC after: 1 week Sponsored by: RG Nets Differential Revision: https://reviews.freebsd.org/D18759 Notes: svn path=/head/; revision=343287
* pfctl: Fix 'set skip' handling for groupsKristof Provost2019-01-131-0/+7
| | | | | | | | | | | | | | | When we skip on a group the kernel will automatically skip on the member interfaces. We still need to update our own cache though, or we risk overruling the kernel afterwards. This manifested as 'set skip' working initially, then not working when the rules were reloaded. PR: 229241 MFC after: 1 week Notes: svn path=/head/; revision=342989
* pfctl: Populate ifname in ifa_lookup()Kristof Provost2018-11-081-0/+1
| | | | | | | | | pfctl_adjust_skip_ifaces() relies on this name. MFC after: 2 weeks Notes: svn path=/head/; revision=340264
* pfctl test: Add a test for macro names with a space in itKristof Provost2018-10-282-1/+30
| | | | Notes: svn path=/head/; revision=339838
* pfctl: Do not allow whitespace in macro namesKristof Provost2018-10-281-0/+8
| | | | | | | | | | i.e. "this is" = "a variable" is not valid. It was accepted by the parser, but the variable could not be used afterwards. Obtained from: OpenBSD Notes: svn path=/head/; revision=339837
* pf: Make ':0' ignore link-local v6 addresses tooKristof Provost2018-10-281-0/+3
| | | | | | | | | | | | When users mark an interface to not use aliases they likely also don't want to use the link-local v6 address there. PR: 201695 Submitted by: Russell Yount <Russell.Yount AT gmail.com> Differential Revision: https://reviews.freebsd.org/D17633 Notes: svn path=/head/; revision=339835
* pf tests: Fix incorrect test for PR 231323Kristof Provost2018-10-222-3/+4
| | | | | | | | | | Fix r339466. The test result file did not list the rdr rule. Additionally, the route-to rule needs a redirection address. X-MFC-with: 339466 Notes: svn path=/head/; revision=339627
* pfctl: Fix line numbers when \ is used inside ""Kristof Provost2018-10-221-1/+3
| | | | | | | | | PR: 201520 Obtained from: OpenBSD MFC after: 2 weeks Notes: svn path=/head/; revision=339578
* pfctl tests: Basic test case for PR 231323Kristof Provost2018-10-204-1/+7
| | | | | | | | | PR: 231323 MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D17508 Notes: svn path=/head/; revision=339466
* pfctl: Dup stringsKristof Provost2018-10-201-2/+2
| | | | | | | | | | | | When we set the ifname we have to copy the string, rather than just keep the pointer. PR: 231323 MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D17507 Notes: svn path=/head/; revision=339464
* Fix warning about crossing INT32_MAX boundary in computation of constant value.Patrick Kelsey2018-08-231-1/+1
| | | | Notes: svn path=/head/; revision=338260
* Extend tbrsize heuristic in pfctl(8) to provide a sensible value forPatrick Kelsey2018-08-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | higher bandwidth interfaces. The new value is used above 2.5 Gbps, which is the highest standard rate that could be used prior to r338209, so the default behavior for all existing systems should remain the same. The value of 128 chosen is a balance between being big enough to reduce potential precision/quantization effects stemming from frequent bucket refills over small time intervals and being small enough to prevent a greedy driver from burst dequeuing more packets than it has available hardware ring slots for whenever altq transitions from idle to backlogged. Reviewed by: jmallett, kp MFC after: 2 weeks Sponsored by: RG Nets Differential Revision: https://reviews.freebsd.org/D16852 Notes: svn path=/head/; revision=338253
* Extended pf(4) ioctl interface and pfctl(8) to allow bandwidths ofPatrick Kelsey2018-08-225-23/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2^32 bps or greater to be used. Prior to this, bandwidth parameters would simply wrap at the 2^32 boundary. The computations in the HFSC scheduler and token bucket regulator have been modified to operate correctly up to at least 100 Gbps. No other algorithms have been examined or modified for correct operation above 2^32 bps (some may have existing computation resolution or overflow issues at rates below that threshold). pfctl(8) will now limit non-HFSC bandwidth parameters to 2^32 - 1 before passing them to the kernel. The extensions to the pf(4) ioctl interface have been made in a backwards-compatible way by versioning affected data structures, supporting all versions in the kernel, and implementing macros that will cause existing code that consumes that interface to use version 0 without source modifications. If version 0 consumers of the interface are used against a new kernel that has had bandwidth parameters of 2^32 or greater configured by updated tools, such bandwidth parameters will be reported as 2^32 - 1 bps by those old consumers. All in-tree consumers of the pf(4) interface have been updated. To update out-of-tree consumers to the latest version of the interface, define PFIOC_USE_LATEST ahead of any includes and use the code of pfctl(8) as a guide for the ioctls of interest. PR: 211730 Reviewed by: jmallett, kp, loos MFC after: 2 weeks Relnotes: yes Sponsored by: RG Nets Differential Revision: https://reviews.freebsd.org/D16782 Notes: svn path=/head/; revision=338209
* pfctl: Remove unused functionKristof Provost2018-08-221-20/+0
| | | | | | | | | Fix compile issues. MFC after: 1 week Notes: svn path=/head/; revision=338184
* pfctl: Improve set skip handling for groupsKristof Provost2018-08-222-9/+75
| | | | | | | | | | | | Rely on the kernel to appropriately mark group members as skipped. Once a group is skipped we can clear the update flag on all the members. PR: 229241 Submitted by: Andreas Longwitz <longwitz AT incore.de> MFC after: 1 week Notes: svn path=/head/; revision=338183
* Move pf.os to sbin/pfctl/Brad Davis2018-08-112-0/+710
| | | | | | | | | | Approved by: will (mentor) Glanced at by: kp Sponsored by: Essen Hackathon Differential Revision: https://reviews.freebsd.org/D16557 Notes: svn path=/head/; revision=337627
* Convert bsd.files.mk to support DIRS and simplify by only having one installBrad Davis2018-07-261-3/+1
| | | | | | | | | | | | target. Also update the pfctl tests Makefile to work with this change. Approved by: bapt (mentor) Differential Revision: https://reviews.freebsd.org/D16430 Notes: svn path=/head/; revision=336744
* Skip the pftcl(8) tests if pf isn't loaded.Alan Somers2018-07-221-0/+1
| | | | | | | | | Previously, they would simply fail. MFC after: 2 weeks Notes: svn path=/head/; revision=336595
* pfctl: Don't retrieve interface list if '-n' is setKristof Provost2018-07-031-1/+1
| | | | | | | | | | | | If '-n' is set we don't use the list of skip interfaces, so don't retrieve it. This fixes issues if 'pfctl -n' is used before the pf module is loaded. This was broken by r333181. Reported by: Jakub Chromy <hicks AT cgi.cz> MFC after: 1 week Notes: svn path=/head/; revision=335886
* Assuming that the intent (from the white space) is that the fprintf()Sean Bruno2018-06-241-1/+2
| | | | | | | | | | | be executed in the if() conditional. If its not supposed to be printed inside the conditional, then the braces should be removed and the extra tabs on the fprintf() should be removed. Noted by cross compilation with gcc-mips. Notes: svn path=/head/; revision=335608
* pf: Support "return" statements in passing rules when they fail.Kristof Provost2018-06-221-3/+25
| | | | | | | | | | | | | | | | | | | | Normally pf rules are expected to do one of two things: pass the traffic or block it. Blocking can be silent - "drop", or loud - "return", "return-rst", "return-icmp". Yet there is a 3rd category of traffic passing through pf: Packets matching a "pass" rule but when applying the rule fails. This happens when redirection table is empty or when src node or state creation fails. Such rules always fail silently without notifying the sender. Allow users to configure this behaviour too, so that pf returns an error packet in these cases. PR: 226850 Submitted by: Kajetan Staszkiewicz <vegeta tuxpowered.net> MFC after: 1 week Sponsored by: InnoGames GmbH Notes: svn path=/head/; revision=335569
* pf: Return non-zero from 'status' if pf is not enabledKristof Provost2018-06-064-1/+28
| | | | | | | | | | | | | | | | In the pf rc.d script the output of `/etc/rc.d/pf status` or `/etc/rc.d/pf onestatus` always provided an exit status of zero. This made it fiddly to programmatically determine if pf was running or not. Return a non-zero status if the pf module is not loaded, extend pfctl to have an option to return an error status if pf is not enabled. PR: 228632 Submitted by: James Park-Watt <jimmypw AT gmail.com> MFC after: 1 week Notes: svn path=/head/; revision=334726
* pfctl: Don't break connections on skipped interfaces on reloadKristof Provost2018-04-281-1/+46
| | | | | | | | | | | | | | | On reload we used to first flush everything, including the list of skipped interfaces. This can lead to termination of these connections if they send packets before the new configuration is applied. Note that this doesn't currently happen on 12 or 11, because of special EACCES handling introduced in r315514. This special behaviour in tcp_output() may change, hence the fix in pfctl. PR: 214613 Notes: svn path=/head/; revision=333084
* pfctl(8): Fix two wrong conditions.Pedro F. Giffuni2018-01-271-2/+2
| | | | | | | | | | | | Caught by gcc80's -Wtautological-compare option. MFC after: 5 days Approved by: kp Obtained from: DragonFlyBSD (git e3cdbf6c) Differential Revision: https://reviews.freebsd.org/D14083 Notes: svn path=/head/; revision=328497
* Free path before returnig.Warner Losh2017-12-281-0/+2
| | | | | | | CID: 977827 Notes: svn path=/head/; revision=327270
* various: general adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-278-8/+24
| | | | | | | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. No functional change intended. Notes: svn path=/head/; revision=326276
* pfctl: teach route-to to deal with interfaces with multiple addressesKristof Provost2017-11-151-1/+4
| | | | | | | | | | | | | | | | The route_host parsing code set the interface name, but only for the first node_host in the list. If that one happened to be the inet6 address and the rule wanted an inet address it'd get removed by remove_invalid_hosts() later on, and we'd have no interface name. We must set the interface name for all node_host entries in the list, not just the first one. PR: 223208 MFC after: 2 weeks Notes: svn path=/head/; revision=325850
* DIRDEPS_BUILD: Update dependencies.Bryan Drewery2017-10-311-1/+0
| | | | | | | Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=325188
* DIRDEPS_BUILD: Connect new directories.Bryan Drewery2017-10-312-0/+22
| | | | | | | Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=325187
* Add HAS_TESTS to all Makefiles that are currently using theEnji Cooper2017-08-021-0/+1
| | | | | | | | | `SUBDIR.${MK_TESTS}+= tests` idiom. This is a follow up to r321912. Notes: svn path=/projects/make-check-sandbox/; revision=321914
* Convert traditional ${MK_TESTS} conditional idiom for including testEnji Cooper2017-08-021-3/+1
| | | | | | | | | | | | | | directories to SUBDIR.${MK_TESTS} idiom This is being done to pave the way for future work (and homogenity) in ^/projects/make-check-sandbox . No functional change intended. MFC after: 1 weeks Notes: svn path=/head/; revision=321912
* pfctl parser testsKristof Provost2017-07-15162-0/+1669
| | | | | | | | | | | | | | | | | | | | Copy the most important test cases from OpenBSD's corresponding src/regress/sbin/pfctl, those that run pfctl on a test input file and check correctness of its output. We have also added some new tests using the same format. The tests consist of a collection of input files (pf*.in) and corresponding output files (pf*.ok). We run pfctl -nv on the input files and check that the output matches the output files. If any discrepancy is discovered during future development in the source tree, we know that a regression bug has been introduced into the tree. Submitted by: paggas Sponsored by: Google, Inc (GSoC 2017) Differential Revision: https://reviews.freebsd.org/D11322 Notes: svn path=/head/; revision=321030
* sbin: normalize paths using SRCTOP-relative paths or :H when possibleEnji Cooper2017-03-041-1/+1
| | | | | | | | | | This simplifies make logic/output MFC after: 1 month Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=314656
* Fix the parsing of NPt binat rules.Luiz Otavio O Souza2016-12-281-1/+1
| | | | | | | | | | | | | | In this specific case the src address can be set to any, which was not accepted prior to this commit. pfSense bug report: https://redmine.pfsense.org/issues/6985 Reviewed by: kp Obtained from: pfSense MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC (Netgate) Notes: svn path=/head/; revision=310707
* pfctl: fix nested inline anchorsKristof Provost2016-11-101-1/+1
| | | | | | | | | | | Import the OpenBSD fix for nested inline anchors. PR: 196314 Submitted by: krichy@cflinux.hu Obtained from: OpenBSD Notes: svn path=/head/; revision=308486
* Fix improper use of "its".Bryan Drewery2016-11-081-2/+2
| | | | | | | Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=308457