commit 14afd33798a3ee6537b860d7576ca3c110685e20 Author: Christian Manivong Date: Thu Oct 8 09:12:53 2026 +0200 feat: FreeBSD and OpenBSD drivers, read side FreeBSDDriver (`freebsd`) and OpenBSDDriver (`openbsd`) on a shared BsdDriver, for the BSD VMs netOrk provisions and BSD hosts added by hand (NetOrk/netork#798). - SSH over exec channels (napalm-device-types' run_on_transport): no PTY, stdout and stderr apart, real exit codes; run_command()/open_stream() are public. Root through `sudo -S` with the password on stdin, or `sudo -n` without one. - Facts: hostname, release and running kernel (freebsd-version / uname), hardware from SMBIOS (kenv) or hw.* sysctls, uptime from kern.boottime. - Interfaces and addresses (ifconfig -a: ether/lladdr, hex netmasks, scoped IPv6), routes (netstat -rn, OpenBSD's abbreviated networks written out, host/broadcast/loopback entries left out), ARP (FreeBSD's sentences, OpenBSD's table), users and groups, processes (lstart read as one five-word field), cron jobs (system crontab and the login user's). - Parsers are pure functions, tested on output recorded from FreeBSD 15.1 (hand-installed and cloud image) and OpenBSD 7.9 (NetOrk/netork#793), with internal addresses replaced by documentation ranges. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a7bc4d4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,48 @@ +name: CI + +on: + push: + branches: ["**"] + pull_request: + branches: ["**"] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.10", "3.11", "3.12"] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip + + - name: Install package with dev extras + run: | + python -m pip install --upgrade pip + # napalm-device-types lives in git.netork.io/NAPALM, not on PyPI: without this + # pip looks there, finds an unrelated 0.1.0 and the job dies before any test. + python -m pip install "napalm-device-types @ git+https://git.netork.io/NAPALM/napalm-device-types.git" + python -m pip install -e ".[dev]" + + - name: Run unit tests + run: | + python -m pytest -q --tb=short + + - name: Build wheel and sdist + run: | + python -m pip install build + python -m build + + - name: Upload dist artifacts + # v4 refuses to run on Gitea ("not currently supported on GHES"). + uses: actions/upload-artifact@v3 + with: + name: dist-${{ matrix.python-version }} + path: dist/* \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e7d7487 --- /dev/null +++ b/.gitignore @@ -0,0 +1,74 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class +*.pyo + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +pytest_cache/ + +# Virtual environments +.venv +venv/ +env/ +ENV/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# macOS +.DS_Store +.AppleDouble +.LSOverride + +# Logs +*.log + +# Secrets / local config +*.env +.secrets diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b5ebf98 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added +- `FreeBSDDriver` (`freebsd`) and `OpenBSDDriver` (`openbsd`) on a shared + `BsdDriver`: SSH over exec channels (no PTY, real exit codes), root through + `sudo -S` with the password on stdin. +- Read side (NetOrk/netork#798): facts (SMBIOS through `kenv` on FreeBSD, + `hw.*` sysctls on OpenBSD; uptime from `kern.boottime`), interfaces and + their addresses (`ifconfig -a`), routes (`netstat -rn`), ARP (`arp -an`), + users and groups, processes (`ps … lstart`), cron jobs (system crontab and + the login user's). +- Parsers tested on output recorded from FreeBSD 15.1 (hand-installed and + cloud image) and OpenBSD 7.9 (NetOrk/netork#793). diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8ef1c6b --- /dev/null +++ b/LICENSE @@ -0,0 +1,165 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship made available under + the License, as indicated by a copyright notice that is included in + or attached to the work (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean, as submitted to the Licensor for inclusion + in the Work by the copyright owner or by an individual or Legal Entity + authorized to submit on behalf of the copyright owner. For the purposes + of this definition, "submitted" means any form of electronic, verbal, + or written communication sent to the Licensor or its representatives, + including but not limited to communication on electronic mailing lists, + source code control systems, and issue tracking systems that are managed + by, or on behalf of, the Licensor for the purpose of tracking and + discussing the Work, but excluding communication that is conspicuously + marked or designated in writing by the copyright owner as "Not a + Contribution." + + "Contributor" shall mean Licensor and any Legal Entity on behalf of + whom a Contribution has been received by the Licensor and included + within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by the combination of their Contributions + with the Work to which such Contributions were submitted. If You + institute patent litigation against any entity (including a cross-claim + or counterclaim in a lawsuit) alleging that the Work or any + Contribution embodied within the Work constitutes direct or contributory + patent infringement, then any patent licenses granted to You under + this License for that Work shall terminate as of the date such + litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative + Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, You must include a readable copy of the + attribution notices contained within such NOTICE file, in + at least one of the following places: within a NOTICE text + file distributed as part of the Derivative Works; within + the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the + Derivative Works, if and wherever such third-party notices + normally appear. The contents of the NOTICE file are for + informational purposes only and do not modify the License. + You may add Your own attribution notices within Derivative + Works that You distribute, alongside or in addition to the + NOTICE text from the Work, provided that such additional + attribution notices cannot be construed as modifying the License. + + You may add Your own license statement for Your modifications and + may provide additional grant of rights to use, copy, modify, merge, + publish, sublicense, and/or sell copies of the Work, and to permit + persons to whom the Work is furnished to do so. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any conditions of TITLE, + NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR + PURPOSE. You are solely responsible for determining the + appropriateness of using or reproducing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), strict liability, or contract + shall any Contributor be liable to You for damages, including any + direct, indirect, special, incidental, or exemplary damages of any + character arising as a result of this License or out of the use or + inability to use the Work (even if such Contributor has been advised + of the possibility of such damages). + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, and + charge a fee for, acceptance of support, warranty, indemnity, or other + liability obligations and/or rights consistent with this License. + However, in accepting such obligations, You may offer only your own + liability and not on behalf of any other Contributor, and only if + You agree to indemnify, defend, and hold each Contributor harmless + for any liability incurred by, or claims asserted against, such + Contributor by reason of your accepting any such warranty or + additional liability. + + END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md new file mode 100644 index 0000000..7c8f24a --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# napalm-bsd + +NAPALM drivers for **FreeBSD** (`freebsd`) and **OpenBSD** (`openbsd`) hosts, +over SSH, built on [napalm-device-types](https://git.netork.io/NAPALM/napalm-device-types)' +`OSDriver`. Written for netOrk, which provisions and manages BSD VMs +(NetOrk/netork#792). + +## Design + +- One shared `BsdDriver` (`napalm_bsd/base.py`) holds the SSH layer and every + reader whose tools agree between the BSDs. `FreeBSDDriver` and + `OpenBSDDriver` name only the commands that differ (hostname, release, + kernel, hardware, `netstat -rnW` vs `-rn`). +- Every command runs on its own SSH **exec channel** (`run_on_transport` from + napalm-device-types): no PTY to parse a prompt from, stdout and stderr apart, + a real exit status. `run_command()` / `open_stream()` are public + (`CommandChannelMixin`). +- Root comes from `sudo -S` with the sudo password on stdin (never on a command + line), or `sudo -n` without one, as in napalm-linux. netOrk provisions `sudo` + on BSD VMs for that reason; `doas` cannot read a password from stdin. +- Parsing is in `napalm_bsd/parse.py`, pure functions tested on output recorded + from real systems (`tests/fixtures/`, each directory's `COMMANDS.txt` lists + what produced it). + +## Supported getters + +| Getter | FreeBSD | OpenBSD | Source | +|---|---|---|---| +| `get_facts` | ✓ | ✓ | `kern.hostname`/`hostname`, `freebsd-version`/`uname`, `kenv smbios.*`/`hw.*`, `kern.boottime` | +| `get_interfaces`, `get_interfaces_ip` | ✓ | ✓ | `ifconfig -a` | +| `get_route_to` | ✓ | ✓ | `netstat -rnW` / `netstat -rn` | +| `get_arp_table` | ✓ | ✓ | `arp -an` | +| `get_lldp_neighbors` | `{}` | `{}` | no LLDP daemon in either base system | +| `get_users`, `get_processes`, `get_cron_jobs` | ✓ | ✓ | `/etc/passwd`+`/etc/group`, `ps … lstart`, system crontab + `crontab -l` | + +Packages, services, updates (#799) and SNMP (#800) follow. + +## Connection arguments + +`optional_args`: `port` (22), `key_file`, `sudo_password`, `allow_agent`, +`look_for_keys` (both off by default). + +## Development + +```bash +pip install "napalm-device-types @ git+https://git.netork.io/NAPALM/napalm-device-types.git" +pip install -e ".[dev]" +pytest +``` diff --git a/napalm_bsd/__init__.py b/napalm_bsd/__init__.py new file mode 100644 index 0000000..da02ad3 --- /dev/null +++ b/napalm_bsd/__init__.py @@ -0,0 +1,6 @@ +"""NAPALM drivers for BSD hosts: FreeBSD and OpenBSD, over SSH.""" + +from napalm_bsd.freebsd import FreeBSDDriver +from napalm_bsd.openbsd import OpenBSDDriver + +__all__ = ["FreeBSDDriver", "OpenBSDDriver"] diff --git a/napalm_bsd/base.py b/napalm_bsd/base.py new file mode 100644 index 0000000..f6237ff --- /dev/null +++ b/napalm_bsd/base.py @@ -0,0 +1,264 @@ +"""What FreeBSD and OpenBSD share: SSH, and the readers whose tools agree. + +Every command runs on its own SSH exec channel (napalm-device-types' +``run_on_transport``): no PTY to parse a prompt from, stdout and stderr apart, +and a real exit status. Root comes from ``sudo -S`` with the sudo password on +stdin, as napalm-linux does it. +""" + +from __future__ import annotations + +import logging +import socket +from shlex import quote +from typing import Any, Optional + +import paramiko +from napalm.base.exceptions import ConnectionClosedException, ConnectionException +from napalm_device_types import OSDriver +from napalm_device_types.channel import ( + ByteStream, + CommandResult, + open_stream_on_transport, + run_on_transport, +) + +from napalm_bsd import parse + +logger = logging.getLogger(__name__) + + +class BsdDriver(OSDriver): + """Base for the BSD drivers; a concrete one names the commands that differ.""" + + VENDOR = "" + #: A full init sequence, as on any general-purpose host. + REBOOT_SETTLE_SECONDS = 90 + + #: Commands whose wording differs between the BSDs. + HOSTNAME_COMMAND = "hostname" + OS_VERSION_COMMAND = "uname -sr" + KERNEL_COMMAND = "uname -r" + #: Prints ``key=value`` lines; see :meth:`_platform`. + PLATFORM_COMMAND = "" + ROUTES_COMMAND = "netstat -rn" + #: lstart is five words; :func:`parse.processes` reads it as one field. + PS_COMMAND = "ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command" + + def __init__( + self, + hostname: str, + username: str, + password: str, + timeout: int = 60, + optional_args: Optional[dict] = None, + ) -> None: + self.hostname = hostname + self.username = username + self.password = password + self.timeout = timeout + args = optional_args or {} + self.port: int = int(args.get("port", 22)) + self._key_file: Optional[str] = args.get("key_file") + self._sudo_password: Optional[str] = args.get("sudo_password") + self._allow_agent: bool = bool(args.get("allow_agent", False)) + self._look_for_keys: bool = bool(args.get("look_for_keys", False)) + self._client: Optional[paramiko.SSHClient] = None + self._root: Optional[bool] = None + + # -- connection -------------------------------------------------------------- + + def open(self) -> None: + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + try: + client.connect( + self.hostname, + port=self.port, + username=self.username, + password=self.password or None, + key_filename=self._key_file, + allow_agent=self._allow_agent, + look_for_keys=self._look_for_keys, + timeout=self.timeout, + ) + except (paramiko.SSHException, socket.error) as exc: + client.close() + raise ConnectionException(f"SSH to {self.hostname} failed: {exc}") from exc + self._client = client + self._root = None + + def close(self) -> None: + if self._client: + self._client.close() + self._client = None + + def is_alive(self) -> dict[str, bool]: + transport = self._client.get_transport() if self._client else None + return {"is_alive": bool(transport and transport.is_active())} + + def _transport(self) -> Any: + transport = self._client.get_transport() if self._client else None + if transport is None or not transport.is_active(): + raise ConnectionClosedException("Not connected") + return transport + + # -- command channel (napalm-device-types CommandChannelMixin) --------------- + + def _is_root(self) -> bool: + if self._root is None: + self._root = run_on_transport(self._transport(), "id -u").stdout.strip() == "0" + return self._root + + def _privileged(self, command: str, privileged: bool) -> tuple[str, Optional[bytes]]: + """The command line that runs *command* as asked, and what goes to stdin first. + + With a sudo password, ``sudo -S`` reads it from stdin, so it never + appears in a process list; without one, ``sudo -n`` fails at once + where a prompt would hang. + """ + if not privileged or self._is_root(): + return command, None + if self._sudo_password: + return f"sudo -S -p '' sh -c {quote(command)}", f"{self._sudo_password}\n".encode() + return f"sudo -n sh -c {quote(command)}", None + + def run_command( + self, + command: str, + *, + privileged: bool = False, + timeout: float = 60, + stdin: Optional[bytes] = None, + ) -> CommandResult: + """Run *command* on an exec channel: no PTY, stderr apart, a real exit code.""" + line, prefix = self._privileged(command, privileged) + data = (prefix or b"") + (stdin or b"") if (prefix or stdin) else None + return run_on_transport(self._transport(), line, stdin=data, timeout=timeout) + + def open_stream(self, command: str, *, privileged: bool = False) -> ByteStream: + line, prefix = self._privileged(command, privileged) + return open_stream_on_transport(self._transport(), line, stdin_prefix=prefix) + + def _out(self, command: str, *, privileged: bool = False, timeout: float = 60) -> str: + """What *command* printed. A failing command prints nothing useful, + and the readers below treat empty output as "nothing there".""" + return self.run_command(command, privileged=privileged, timeout=timeout).stdout.strip() + + # -- facts ------------------------------------------------------------------- + + def _platform(self) -> dict[str, str]: + """``key=value`` lines from :attr:`PLATFORM_COMMAND`.""" + if not self.PLATFORM_COMMAND: + return {} + pairs = (line.partition("=") for line in self._out(self.PLATFORM_COMMAND).splitlines()) + return {key.strip(): value.strip() for key, sep, value in pairs if sep} + + def _hardware(self) -> tuple[str, str, str]: + """``(vendor, model, serial)``; each concrete driver reads its own source.""" + return "", "", "" + + def _os_version(self) -> str: + return self._out(self.OS_VERSION_COMMAND) + + def _uptime(self) -> int: + booted = parse.boottime(self._out("sysctl -n kern.boottime")) + now = self._out("date +%s") + if booted is None or not now.isdigit(): + return -1 + return max(int(now) - booted, 0) + + def get_facts(self) -> dict[str, Any]: + fqdn = self._out(self.HOSTNAME_COMMAND) + vendor, model, serial = self._hardware() + interfaces = parse.ifconfig(self._out("ifconfig -a")) + return { + "hostname": fqdn.split(".")[0], + "fqdn": fqdn, + "vendor": vendor or self.VENDOR, + "model": model, + "serial_number": serial, + "os_version": self._os_version(), + "uptime": self._uptime(), + "interface_list": [n for n, i in interfaces.items() if not i["loopback"]], + "running_kernel": self._out(self.KERNEL_COMMAND), + } + + # -- interfaces, routes, neighbours ------------------------------------------ + + def get_interfaces(self) -> dict[str, Any]: + return { + name: { + "is_up": iface["up"], + "is_enabled": iface["enabled"], + "description": iface["description"], + "last_flapped": -1.0, + "speed": iface["speed"], + "mtu": iface["mtu"], + "mac_address": iface["mac"], + } + for name, iface in parse.ifconfig(self._out("ifconfig -a")).items() + } + + def get_interfaces_ip(self) -> dict[str, Any]: + result: dict[str, Any] = {} + for name, iface in parse.ifconfig(self._out("ifconfig -a")).items(): + if not (iface["ipv4"] or iface["ipv6"]): + continue + result[name] = { + family: {addr: {"prefix_length": prefix} for addr, prefix in iface[family].items()} + for family in ("ipv4", "ipv6") + } + return result + + def get_route_to( + self, destination: str = "", protocol: str = "", longer: bool = False + ) -> dict[str, list[dict[str, Any]]]: + """The routing table, keyed by network, in NAPALM's route shape.""" + routes: dict[str, list[dict[str, Any]]] = {} + for route in parse.routes(self._out(self.ROUTES_COMMAND)): + if destination and route["network"] != destination: + continue + if protocol and route["protocol"] != protocol.lower(): + continue + routes.setdefault(route["network"], []).append( + { + "protocol": route["protocol"], + "family": route["family"], + "current_active": True, + "last_active": False, + "age": -1, + "next_hop": route["next_hop"], + "outgoing_interface": route["interface"], + "selected_next_hop": True, + "preference": 0, + "routing_table": "global", + "protocol_attributes": {}, + } + ) + return routes + + def get_arp_table(self, vrf: str = "") -> list[dict[str, Any]]: + return parse.arp(self._out("arp -an")) + + def get_lldp_neighbors(self) -> dict[str, list[dict[str, Any]]]: + """Neither BSD ships an LLDP daemon in its base system.""" + return {} + + # -- accounts, processes, cron ----------------------------------------------- + + def get_users(self) -> list[dict[str, Any]]: + return parse.users(self._out("cat /etc/passwd"), self._out("cat /etc/group")) + + def get_processes(self) -> list[dict[str, Any]]: + return parse.processes(self._out(self.PS_COMMAND)) + + def get_cron_jobs(self) -> list[dict[str, str]]: + """The system crontab and the login user's own. + + Other users' crontabs (``/var/cron/tabs``) are root's to read. + """ + return [ + *parse.crontab(self._out("cat /etc/crontab"), system=True), + *parse.crontab(self._out("crontab -l"), user=self.username), + ] diff --git a/napalm_bsd/freebsd.py b/napalm_bsd/freebsd.py new file mode 100644 index 0000000..f7b5db4 --- /dev/null +++ b/napalm_bsd/freebsd.py @@ -0,0 +1,38 @@ +"""FreeBSD: kenv for the hardware, freebsd-version for base and kernel.""" + +from __future__ import annotations + +from napalm_device_types import FingerprintRule + +from napalm_bsd.base import BsdDriver + + +class FreeBSDDriver(BsdDriver): + """NAPALM driver for FreeBSD hosts, over SSH.""" + + TYPE_LABEL = "FreeBSD" + VENDOR = "FreeBSD" + DRIVER_NAME = "freebsd" + SNMP_FINGERPRINT = [FingerprintRule("freebsd", weight=5.0)] + # OpenSSH in FreeBSD's base names it in its banner ("OpenSSH_9.9 FreeBSD-20250219"). + SSH_FINGERPRINT = [FingerprintRule("freebsd", weight=3.0)] + + HOSTNAME_COMMAND = "sysctl -n kern.hostname" + # Userland and running kernel; both carry the patch level (15.1-RELEASE-p4). + OS_VERSION_COMMAND = "freebsd-version -u" + KERNEL_COMMAND = "freebsd-version -r" + # kenv takes one variable per call, and a missing one fails the call. + PLATFORM_COMMAND = ( + "for k in maker product serial; do " + 'printf "%s=%s\\n" "$k" "$(kenv -q smbios.system.$k)"; done' + ) + # -W: FreeBSD cuts long destinations to the column width otherwise. + ROUTES_COMMAND = "netstat -rnW" + + def _os_version(self) -> str: + version = super()._os_version() + return f"FreeBSD {version}" if version else "" + + def _hardware(self) -> tuple[str, str, str]: + smbios = self._platform() + return smbios.get("maker", ""), smbios.get("product", ""), smbios.get("serial", "") diff --git a/napalm_bsd/openbsd.py b/napalm_bsd/openbsd.py new file mode 100644 index 0000000..5a69e90 --- /dev/null +++ b/napalm_bsd/openbsd.py @@ -0,0 +1,30 @@ +"""OpenBSD: hw.* sysctls for the hardware, uname for release and kernel.""" + +from __future__ import annotations + +from napalm_device_types import FingerprintRule + +from napalm_bsd.base import BsdDriver + + +class OpenBSDDriver(BsdDriver): + """NAPALM driver for OpenBSD hosts, over SSH.""" + + TYPE_LABEL = "OpenBSD" + VENDOR = "OpenBSD" + DRIVER_NAME = "openbsd" + # OpenBSD's SSH banner names no OS; its sysDescr does ("OpenBSD host 7.9 GENERIC.MP#449"). + SNMP_FINGERPRINT = [FingerprintRule("openbsd", weight=5.0)] + + OS_VERSION_COMMAND = "uname -sr" + # The kernel's build, e.g. GENERIC.MP#449; the release is in uname -r. + KERNEL_COMMAND = "uname -v" + # A sysctl node the machine lacks fails on its own and prints nothing. + PLATFORM_COMMAND = ( + "for k in vendor product serialno; do " + 'printf "%s=%s\\n" "$k" "$(sysctl -n hw.$k 2>/dev/null)"; done' + ) + + def _hardware(self) -> tuple[str, str, str]: + hw = self._platform() + return hw.get("vendor", ""), hw.get("product", ""), hw.get("serialno", "") diff --git a/napalm_bsd/parse.py b/napalm_bsd/parse.py new file mode 100644 index 0000000..154c6e3 --- /dev/null +++ b/napalm_bsd/parse.py @@ -0,0 +1,259 @@ +"""Parsers for the output of BSD commands. Pure functions, no I/O. + +FreeBSD and OpenBSD share most tools; where their output differs (``arp``, +``kern.boottime``, how ``netstat`` abbreviates networks, ``ether`` vs +``lladdr``) one parser reads both. +""" + +from __future__ import annotations + +import ipaddress +import re +from typing import Any, Optional + +_IFACE_HEADER = re.compile( + r"^(?P[^\s:]+): flags=[0-9a-f]+<(?P[^>]*)>(?:.*?\bmtu (?P\d+))?" +) +_SPEED = re.compile(r"\((\d+)(G?)base", re.IGNORECASE) + + +def _prefix_from_netmask(mask: str) -> int: + """``0xffffff00`` (as ifconfig prints it) or ``255.255.255.0`` -> 24.""" + value = int(mask, 16) if mask.startswith("0x") else int(ipaddress.IPv4Address(mask)) + return bin(value).count("1") + + +def ifconfig(text: str) -> dict[str, dict[str, Any]]: + """``ifconfig -a`` -> per interface: flags, MTU, MAC, state, speed, addresses.""" + interfaces: dict[str, dict[str, Any]] = {} + current: Optional[dict[str, Any]] = None + for line in text.splitlines(): + header = _IFACE_HEADER.match(line) + if header: + flags = set(filter(None, header["flags"].split(","))) + current = { + "flags": flags, + "enabled": "UP" in flags, + "up": "UP" in flags and "RUNNING" in flags, + "loopback": "LOOPBACK" in flags, + "mtu": int(header["mtu"] or 0), + "mac": "", + "description": "", + "speed": -1.0, + "ipv4": {}, + "ipv6": {}, + } + interfaces[header["name"]] = current + continue + if current is None: + continue + words = line.split() + if not words: + continue + key = words[0] + if key in ("ether", "lladdr") and len(words) > 1: + current["mac"] = words[1].lower() + elif key == "inet" and len(words) > 3 and words[2] == "netmask": + current["ipv4"][words[1]] = _prefix_from_netmask(words[3]) + elif key == "inet6" and len(words) > 3 and words[2] == "prefixlen": + current["ipv6"][words[1].split("%")[0]] = int(words[3]) + elif key == "description:": + current["description"] = line.split("description:", 1)[1].strip() + elif key == "status:": + if line.split("status:", 1)[1].strip() == "no carrier": + current["up"] = False + elif key == "media:": + speed = _SPEED.search(line) + if speed: + current["speed"] = float(int(speed[1]) * (1000 if speed[2] else 1)) + return interfaces + + +def _network(destination: str, family: str) -> Optional[str]: + """A netstat destination as a network: ``default``, ``10.0.2/24``, ``fe80::%em0/64``.""" + if destination == "default": + return "0.0.0.0/0" if family == "ipv4" else "::/0" + address, slash, prefix = destination.partition("/") + address = address.split("%")[0] + if family == "ipv4": + octets = address.split(".") + address = ".".join(octets + ["0"] * (4 - len(octets))) + try: + return str(ipaddress.ip_network(f"{address}/{prefix}" if slash else address, strict=False)) + except ValueError: + return None + + +def routes(text: str) -> list[dict[str, str]]: + """``netstat -rn`` -> the routes, without host, broadcast and loopback entries. + + FreeBSD prints ``Netif``, OpenBSD ``Iface``; the column is found from the + header. A route through a gateway (``G``) has a next hop, any other is + connected; ``S`` marks a static one. + """ + result: list[dict[str, str]] = [] + family = "" + iface_column: Optional[int] = None + for line in text.splitlines(): + words = line.split() + if not words: + continue + if words[0] in ("Internet:", "Internet6:"): + family = "ipv4" if words[0] == "Internet:" else "ipv6" + continue + if words[0] == "Destination": + names = [w for w in words if w in ("Netif", "Iface")] + iface_column = words.index(names[0]) if names else None + continue + if not family or iface_column is None or len(words) <= iface_column: + continue + destination, gateway, flags, iface = words[0], words[1], words[2], words[iface_column] + if iface.startswith("lo") or ("H" in flags and "G" not in flags) or "b" in flags: + continue + network = _network(destination, family) + if network is None or ipaddress.ip_network(network).is_multicast: + continue + gateway_route = "G" in flags + result.append( + { + "network": network, + "next_hop": gateway if gateway_route else "", + "interface": iface, + "protocol": ("static" if "S" in flags else "dynamic") + if gateway_route + else "connected", + "family": family, + } + ) + return result + + +_DURATION = re.compile(r"(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$") + + +def duration(text: str) -> float: + """OpenBSD's ``1h2m3s`` in seconds; -1.0 for anything else (``permanent``).""" + match = _DURATION.match(text) + if not text or not match or not any(match.groups()): + return -1.0 + hours, minutes, seconds = (int(g or 0) for g in match.groups()) + return float(hours * 3600 + minutes * 60 + seconds) + + +_FREEBSD_ARP = re.compile( + r"^\S+ \((?P[\d.]+)\) at (?P[0-9a-f:]{17}) on (?P\S+)" + r"(?: expires in (?P\d+) seconds)?" +) + + +def arp(text: str) -> list[dict[str, Any]]: + """``arp -an`` -> ARP entries; FreeBSD prints sentences, OpenBSD a table.""" + entries: list[dict[str, Any]] = [] + for line in text.splitlines(): + sentence = _FREEBSD_ARP.match(line) + if sentence: + expires = sentence["expires"] + entries.append( + { + "interface": sentence["iface"], + "mac": sentence["mac"], + "ip": sentence["ip"], + "age": float(expires) if expires else -1.0, + } + ) + continue + words = line.split() + if len(words) >= 4 and re.fullmatch(r"[0-9a-f:]{17}", words[1]): + entries.append( + {"interface": words[2], "mac": words[1], "ip": words[0], "age": duration(words[3])} + ) + return entries + + +def users(passwd: str, group: str) -> list[dict[str, Any]]: + """``/etc/passwd`` plus the supplementary groups ``/etc/group`` lists.""" + memberships: dict[str, list[str]] = {} + for line in group.splitlines(): + parts = line.split(":") + if len(parts) < 4 or line.startswith("#"): + continue + for member in filter(None, (m.strip() for m in parts[3].split(","))): + memberships.setdefault(member, []).append(parts[0]) + result: list[dict[str, Any]] = [] + for line in passwd.splitlines(): + parts = line.split(":") + if len(parts) < 7 or line.startswith("#"): + continue + name, _, uid, gid, _, home, shell = parts[:7] + if not (uid.isdigit() and gid.isdigit()): + continue + result.append( + { + "username": name, + "uid": int(uid), + "gid": int(gid), + "home": home, + "shell": shell, + "groups": memberships.get(name, []), + } + ) + return result + + +_PROCESS = re.compile( + r"^(?P\S+)\s+(?P\d+)\s+(?P\d+)\s+(?P[\d.]+)\s+(?P[\d.]+)\s+" + r"(?P\d+)\s+(?P\d+)\s+(?P\S+)\s+" + r"(?P\w{3}\s+\w{3}\s+\d+\s+\d\d:\d\d:\d\d\s+\d{4})\s+(?P.*)$" +) + + +def processes(text: str) -> list[dict[str, Any]]: + """``ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command``. + + ``lstart`` is five words; it is matched as one field. + """ + result: list[dict[str, Any]] = [] + for line in text.splitlines(): + match = _PROCESS.match(line) + if not match: + continue + result.append( + { + "pid": int(match["pid"]), + "ppid": int(match["ppid"]), + "user": match["user"], + "cpu": float(match["cpu"]), + "memory": float(match["mem"]), + "vsz": int(match["vsz"]), + "rss": int(match["rss"]), + "tty": "", + "state": match["stat"][0], + "started": match["started"], + "command": match["command"].strip(), + } + ) + return result + + +def crontab(text: str, *, system: bool = False, user: str = "") -> list[dict[str, str]]: + """A crontab -> its jobs. A system crontab names the user in the sixth field.""" + jobs: list[dict[str, str]] = [] + for line in text.splitlines(): + line = line.strip() + if not line or line.startswith("#") or re.match(r"^[A-Za-z_][A-Za-z0-9_]*\s*=", line): + continue + fields = 1 if line.startswith("@") else 5 + parts = line.split(None, fields + (1 if system else 0)) + if len(parts) < fields + (2 if system else 1): + continue + schedule = " ".join(parts[:fields]) + owner = parts[fields] if system else user + command = parts[-1] + jobs.append({"user": owner, "schedule": schedule, "command": command}) + return jobs + + +def boottime(text: str) -> Optional[int]: + """``sysctl -n kern.boottime``: FreeBSD ``{ sec = N, … }``, OpenBSD ``N``.""" + match = re.search(r"sec = (\d+)", text) or re.fullmatch(r"\s*(\d+)\s*", text) + return int(match[1]) if match else None diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..8111622 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,49 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "napalm-bsd" +version = "0.1.0" +description = "NAPALM drivers for FreeBSD and OpenBSD hosts via SSH" +readme = "README.md" +requires-python = ">=3.10" +license = { text = "Apache-2.0" } +authors = [ + { name = "Christian Manivong", email = "christian@manivong.de" }, +] +keywords = ["napalm", "network", "automation", "freebsd", "openbsd", "bsd", "ssh", "driver"] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: System Administrators", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: System :: Systems Administration", +] +dependencies = [ + "napalm>=4.0", + "napalm-device-types>=2.6.0", # channel.run_on_transport + "paramiko>=5.0.0", # CVE-2026-44405 +] + +[project.optional-dependencies] +dev = ["pytest", "pytest-cov", "ruff", "mypy"] + +[project.entry-points."napalm.drivers"] +freebsd = "napalm_bsd:FreeBSDDriver" +openbsd = "napalm_bsd:OpenBSDDriver" + +[project.urls] +Repository = "https://git.netork.io/NAPALM/napalm-bsd" + +[tool.setuptools.packages.find] +where = ["."] +include = ["napalm_bsd*"] + +[tool.ruff] +line-length = 100 +target-version = "py310" diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/freebsd-host/COMMANDS.txt b/tests/fixtures/freebsd-host/COMMANDS.txt new file mode 100644 index 0000000..09d9923 --- /dev/null +++ b/tests/fixtures/freebsd-host/COMMANDS.txt @@ -0,0 +1,36 @@ +uname -a +freebsd-version -kru +cat /etc/os-release +sysctl -n kern.hostname kern.ostype kern.osrelease kern.version +sysctl -n hw.model hw.ncpu hw.physmem hw.machine_arch +sysctl -n kern.boottime +sysctl -n kern.smp.cpus vm.stats.vm.v_page_count vm.stats.vm.v_free_count vm.stats.vm.v_page_size +kenv -q smbios.system.product smbios.system.serial smbios.system.maker smbios.bios.vendor +uptime +ifconfig -a +netstat -rn +netstat -rnW -f inet +netstat -rnW -f inet6 +arp -an +ndp -an +sockstat -l -4 -6 +sockstat -l -4 -6 -P tcp,udp -q +netstat -an -f inet +pkg -N +pkg info +pkg query '%n\t%v\t%o\t%c' +pkg version -vRL= +service -e +sysrc -a +cat /etc/passwd +ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command +crontab -l +cat /etc/crontab +df -k +swapinfo -k +kldstat +which sudo doas python3 bash snmpd bsnmpd +ls /usr/local/etc/rc.d /etc/rc.d +cat /etc/rc.conf +id +cat /etc/group diff --git a/tests/fixtures/freebsd-host/arp_an.txt b/tests/fixtures/freebsd-host/arp_an.txt new file mode 100644 index 0000000..8881543 --- /dev/null +++ b/tests/fixtures/freebsd-host/arp_an.txt @@ -0,0 +1,3 @@ +? (192.0.2.254) at bc:24:11:3c:e2:d0 on em0 expires in 1176 seconds [ethernet] +? (192.0.2.1) at bc:24:11:90:8b:c0 on em0 expires in 1137 seconds [ethernet] +? (192.0.2.104) at bc:24:11:20:b0:20 on em0 permanent [ethernet] diff --git a/tests/fixtures/freebsd-host/cat_etc_crontab.txt b/tests/fixtures/freebsd-host/cat_etc_crontab.txt new file mode 100644 index 0000000..e37d3fd --- /dev/null +++ b/tests/fixtures/freebsd-host/cat_etc_crontab.txt @@ -0,0 +1,22 @@ +# /etc/crontab - system crontab for FreeBSD +# +# +SHELL=/bin/sh +PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin +# +#minute hour mday month wday who command +# +# Save some entropy so that /dev/random can re-seed on boot. +*/11 * * * * operator /usr/libexec/save-entropy +# +# Rotate log files every hour, if necessary. +0 * * * * root newsyslog +# +# Perform daily/weekly/monthly maintenance. +1 3 * * * root periodic daily +15 4 * * 6 root periodic weekly +30 5 1 * * root periodic monthly +# +# Adjust the time zone if the CMOS clock keeps local time, as opposed to +# UTC time. See adjkerntz(8) for details. +1,31 0-5 * * * root adjkerntz -a diff --git a/tests/fixtures/freebsd-host/cat_etc_group.txt b/tests/fixtures/freebsd-host/cat_etc_group.txt new file mode 100644 index 0000000..e3641cd --- /dev/null +++ b/tests/fixtures/freebsd-host/cat_etc_group.txt @@ -0,0 +1,39 @@ +wheel:*:0:root +daemon:*:1: +kmem:*:2: +sys:*:3: +tty:*:4: +operator:*:5:root +mail:*:6: +bin:*:7: +news:*:8: +man:*:9: +games:*:13: +ftp:*:14: +staff:*:20: +sshd:*:22: +smmsp:*:25: +mailnull:*:26: +guest:*:31: +video:*:44: +realtime:*:47: +idletime:*:48: +bind:*:53: +unbound:*:59: +proxy:*:62: +authpf:*:63: +_pflogd:*:64: +_dhcp:*:65: +uucp:*:66: +dialer:*:68: +network:*:69: +audit:*:77: +www:*:80: +u2f:*:116: +ntpd:*:123: +_ypldap:*:160: +hast:*:845: +tests:*:977: +nogroup:*:65533: +nobody:*:65534: +netork:*:1001: diff --git a/tests/fixtures/freebsd-host/cat_etc_os_release.txt b/tests/fixtures/freebsd-host/cat_etc_os_release.txt new file mode 100644 index 0000000..72b5fe0 --- /dev/null +++ b/tests/fixtures/freebsd-host/cat_etc_os_release.txt @@ -0,0 +1,9 @@ +NAME=FreeBSD +VERSION="15.1-RELEASE" +VERSION_ID="15.1" +ID=freebsd +ANSI_COLOR="0;31" +PRETTY_NAME="FreeBSD 15.1-RELEASE" +CPE_NAME="cpe:/o:freebsd:freebsd:15.1" +HOME_URL="https://FreeBSD.org/" +BUG_REPORT_URL="https://bugs.FreeBSD.org/" diff --git a/tests/fixtures/freebsd-host/cat_etc_passwd.txt b/tests/fixtures/freebsd-host/cat_etc_passwd.txt new file mode 100644 index 0000000..52948bc --- /dev/null +++ b/tests/fixtures/freebsd-host/cat_etc_passwd.txt @@ -0,0 +1,28 @@ +root:*:0:0:Charlie &:/root:/bin/sh +toor:*:0:0:Bourne-again Superuser:/root: +daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin +operator:*:2:5:System &:/:/usr/sbin/nologin +bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin +tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin +kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin +games:*:7:13:Games pseudo-user:/:/usr/sbin/nologin +news:*:8:8:News Subsystem:/:/usr/sbin/nologin +man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin +sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin +smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin +mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin +bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin +unbound:*:59:59:Unbound DNS Resolver:/var/unbound:/usr/sbin/nologin +proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin +_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin +_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin +uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico +pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin +auditdistd:*:78:77:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin +www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin +ntpd:*:123:123:NTP Daemon:/var/db/ntp:/usr/sbin/nologin +_ypldap:*:160:160:YP LDAP unprivileged user:/var/empty:/usr/sbin/nologin +hast:*:845:845:HAST unprivileged user:/var/empty:/usr/sbin/nologin +tests:*:977:977:Unprivileged user for tests:/nonexistent:/usr/sbin/nologin +nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin +netork:*:1001:1001:netOrk:/home/netork:/bin/sh diff --git a/tests/fixtures/freebsd-host/cat_etc_rc.conf.txt b/tests/fixtures/freebsd-host/cat_etc_rc.conf.txt new file mode 100644 index 0000000..f0276e2 --- /dev/null +++ b/tests/fixtures/freebsd-host/cat_etc_rc.conf.txt @@ -0,0 +1,7 @@ +hostname="bsd=01" +ifconfig_em0="DHCP" +ifconfig_em0_ipv6="inet6 accept_rtadv" +sshd_enable="YES" +moused_nondefault_enable="NO" +# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable +dumpdev="AUTO" diff --git a/tests/fixtures/freebsd-host/df_k.txt b/tests/fixtures/freebsd-host/df_k.txt new file mode 100644 index 0000000..825896a --- /dev/null +++ b/tests/fixtures/freebsd-host/df_k.txt @@ -0,0 +1,3 @@ +Filesystem 1024-blocks Used Avail Capacity Mounted on +/dev/ada0p2 30451868 1897372 26118348 7% / +devfs 1 0 1 0% /dev diff --git a/tests/fixtures/freebsd-host/freebsd_version_kru.txt b/tests/fixtures/freebsd-host/freebsd_version_kru.txt new file mode 100644 index 0000000..2c05294 --- /dev/null +++ b/tests/fixtures/freebsd-host/freebsd_version_kru.txt @@ -0,0 +1,3 @@ +15.1-RELEASE +15.1-RELEASE +15.1-RELEASE diff --git a/tests/fixtures/freebsd-host/id.txt b/tests/fixtures/freebsd-host/id.txt new file mode 100644 index 0000000..4835168 --- /dev/null +++ b/tests/fixtures/freebsd-host/id.txt @@ -0,0 +1 @@ +uid=1001(netork) gid=1001(netork) groups=1001(netork) diff --git a/tests/fixtures/freebsd-host/ifconfig_a.txt b/tests/fixtures/freebsd-host/ifconfig_a.txt new file mode 100644 index 0000000..792bf4d --- /dev/null +++ b/tests/fixtures/freebsd-host/ifconfig_a.txt @@ -0,0 +1,15 @@ +em0: flags=1008843 metric 0 mtu 1500 + options=48525bb + ether bc:24:11:20:b0:20 + inet 192.0.2.104 netmask 0xffffff00 broadcast 192.0.2.255 + inet6 fe80::be24:11ff:fe20:b020%em0 prefixlen 64 scopeid 0x1 + media: Ethernet autoselect (1000baseT ) + status: active + nd6 options=23 +lo0: flags=1008049 metric 0 mtu 16384 + options=680003 + inet 127.0.0.1 netmask 0xff000000 + inet6 ::1 prefixlen 128 + inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 + groups: lo + nd6 options=21 diff --git a/tests/fixtures/freebsd-host/kldstat.txt b/tests/fixtures/freebsd-host/kldstat.txt new file mode 100644 index 0000000..510ebc6 --- /dev/null +++ b/tests/fixtures/freebsd-host/kldstat.txt @@ -0,0 +1,7 @@ +Id Refs Address Size Name + 1 19 0xffffffff80200000 2351bd0 kernel + 2 1 0xffffffff82c18000 21e8 hms.ko + 3 1 0xffffffff82c1b000 30a8 hidmap.ko + 4 1 0xffffffff82c1f000 4250 ichsmb.ko + 5 1 0xffffffff82c24000 2178 smbus.ko + 6 1 0xffffffff82c27000 430c virtio_console.ko diff --git a/tests/fixtures/freebsd-host/ls_usr_local_etc_rc.d_etc_rc.d.txt b/tests/fixtures/freebsd-host/ls_usr_local_etc_rc.d_etc_rc.d.txt new file mode 100644 index 0000000..812845d --- /dev/null +++ b/tests/fixtures/freebsd-host/ls_usr_local_etc_rc.d_etc_rc.d.txt @@ -0,0 +1,172 @@ +/etc/rc.d: +DAEMON +FILESYSTEMS +LOGIN +NETWORKING +SERVERS +accounting +adjkerntz +apm +auditd +auditdistd +automount +automountd +autounmountd +bgfsck +blacklistd +blocklistd +bluetooth +bootparams +bridge +bsnmpd +bthidd +ccd +cfumass +cleanvar +cleartmp +cron +ctld +ddb +defaultroute +devd +devfs +devmatch +dhclient +dmesg +dnctl +dumpon +fsck +ftp-proxy +geli +geli2 +ggated +gptboot +growfs +growfs_fstab +gssd +hastd +hcsecd +hostapd +hostid +hostid_save +hostname +inetd +iovctl +ip6addrctl +ipfilter +ipfs +ipfw +ipfw_netflow +ipmon +ipnat +ippool +ipsec +iscsictl +iscsid +jail +kadmind +kdc +kld +kldxref +ldconfig +linux +local +local_unbound +localpkg +lockd +lpd +mdconfig +mdconfig2 +mixer +motd +mountcritlocal +mountcritremote +mountd +mountlate +moused +msconvd +msgs +natd +netif +netoptions +netwait +newsyslog +nfscbd +nfsclient +nfsd +nfsuserd +nisdomain +noshutdown +nscd +ntpd +ntpdate +nuageinit +nuageinit_post_net +nuageinit_user_data_script +os-release +pf +pflog +pfsync +power_profile +powerd +ppp +pppoed +pwcheck +quota +random +rarpd +rctl +resolv +rfcomm_pppd_server +root +route6d +routed +routing +rpcbind +rtadvd +rtsold +rwho +savecore +sdpd +securelevel +sendmail +serial +sshd +statd +static_arp +static_ndp +stf +swap +swaplate +syscons +sysctl +sysctl_lastload +syslogd +sysvipc +tlsclntd +tlsservd +tmp +ubthidhci +ugidfw +utx +var +var_run +virecover +virtual_oss +watchdogd +wpa_supplicant +ypbind +ypldap +yppasswdd +ypserv +ypset +ypupdated +ypxfrd +zfs +zfsbe +zfsd +zfskeys +zpool +zpoolreguid +zpoolupgrade +zvol diff --git a/tests/fixtures/freebsd-host/ndp_an.txt b/tests/fixtures/freebsd-host/ndp_an.txt new file mode 100644 index 0000000..8749093 --- /dev/null +++ b/tests/fixtures/freebsd-host/ndp_an.txt @@ -0,0 +1,2 @@ +Neighbor Linklayer Address Netif Expire S Flags +fe80::be24:11ff:fe20:b020%em0 bc:24:11:20:b0:20 em0 permanent R diff --git a/tests/fixtures/freebsd-host/netstat_an_f_inet.txt b/tests/fixtures/freebsd-host/netstat_an_f_inet.txt new file mode 100644 index 0000000..d6252d6 --- /dev/null +++ b/tests/fixtures/freebsd-host/netstat_an_f_inet.txt @@ -0,0 +1,5 @@ +Active Internet connections (including servers) +Proto Recv-Q Send-Q Local Address Foreign Address (state) +tcp4 0 0 192.0.2.104.22 198.51.100.114.41590 ESTABLISHED +tcp4 0 0 *.22 *.* LISTEN +udp4 0 0 *.514 *.* diff --git a/tests/fixtures/freebsd-host/netstat_rn.txt b/tests/fixtures/freebsd-host/netstat_rn.txt new file mode 100644 index 0000000..2748bf6 --- /dev/null +++ b/tests/fixtures/freebsd-host/netstat_rn.txt @@ -0,0 +1,20 @@ +Routing tables + +Internet: +Destination Gateway Flags Netif Expire +default 192.0.2.1 UGS em0 +127.0.0.1 link#2 UH lo0 +192.0.2.0/24 link#1 U em0 +192.0.2.104 link#2 UHS lo0 + +Internet6: +Destination Gateway Flags Netif Expire +::/96 link#2 URS lo0 +::1 link#2 UHS lo0 +::ffff:0.0.0.0/96 link#2 URS lo0 +fe80::%lo0/10 link#2 URS lo0 +fe80::%em0/64 link#1 U em0 +fe80::be24:11ff:fe20:b020%lo0 link#2 UHS lo0 +fe80::%lo0/64 link#2 U lo0 +fe80::1%lo0 link#2 UHS lo0 +ff02::/16 link#2 URS lo0 diff --git a/tests/fixtures/freebsd-host/netstat_rnW_f_inet.txt b/tests/fixtures/freebsd-host/netstat_rnW_f_inet.txt new file mode 100644 index 0000000..b91ac9c --- /dev/null +++ b/tests/fixtures/freebsd-host/netstat_rnW_f_inet.txt @@ -0,0 +1,8 @@ +Routing tables + +Internet: +Destination Gateway Flags Nhop# Mtu Netif Expire +default 192.0.2.1 UGS 4 1500 em0 +127.0.0.1 link#2 UH 1 16384 lo0 +192.0.2.0/24 link#1 U 2 1500 em0 +192.0.2.104 link#2 UHS 3 16384 lo0 diff --git a/tests/fixtures/freebsd-host/netstat_rnW_f_inet6.txt b/tests/fixtures/freebsd-host/netstat_rnW_f_inet6.txt new file mode 100644 index 0000000..9ba20bb --- /dev/null +++ b/tests/fixtures/freebsd-host/netstat_rnW_f_inet6.txt @@ -0,0 +1,13 @@ +Routing tables + +Internet6: +Destination Gateway Flags Nhop# Mtu Netif Expire +::/96 link#2 URS 6 16384 lo0 +::1 link#2 UHS 1 16384 lo0 +::ffff:0.0.0.0/96 link#2 URS 6 16384 lo0 +fe80::%lo0/10 link#2 URS 6 16384 lo0 +fe80::%em0/64 link#1 U 5 1500 em0 +fe80::be24:11ff:fe20:b020%lo0 link#2 UHS 4 16384 lo0 +fe80::%lo0/64 link#2 U 3 16384 lo0 +fe80::1%lo0 link#2 UHS 2 16384 lo0 +ff02::/16 link#2 URS 6 16384 lo0 diff --git a/tests/fixtures/freebsd-host/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt b/tests/fixtures/freebsd-host/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt new file mode 100644 index 0000000..af1fafa --- /dev/null +++ b/tests/fixtures/freebsd-host/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt @@ -0,0 +1,38 @@ +USER PID PPID %CPU %MEM VSZ RSS STAT STARTED COMMAND +root 0 0 0.2 0.0 0 528 DLs Wed Oct 7 22:33:37 2026 [kernel] +root 1 0 0.0 0.1 12712 1196 SLs Wed Oct 7 22:33:37 2026 /sbin/init +root 2 0 0.0 0.0 0 32 WL Wed Oct 7 22:33:37 2026 [clock] +root 3 0 0.0 0.0 0 48 DL Wed Oct 7 22:33:37 2026 [crypto] +root 4 0 0.0 0.0 0 48 DL Wed Oct 7 22:33:37 2026 [cam] +root 5 0 0.0 0.0 0 16 DL Wed Oct 7 22:33:37 2026 [busdma] +root 6 0 0.0 0.0 0 16 DL Wed Oct 7 22:33:37 2026 [rand_harvestq] +root 7 0 0.0 0.0 0 48 DL Wed Oct 7 22:33:37 2026 [pagedaemon] +root 8 0 0.0 0.0 0 16 DL Wed Oct 7 22:33:37 2026 [vmdaemon] +root 9 0 0.0 0.0 0 48 DL Wed Oct 7 22:33:37 2026 [bufdaemon] +root 10 0 0.0 0.0 0 16 DL Wed Oct 7 22:33:37 2026 [audit] +root 11 0 190.4 0.0 0 32 RNL Wed Oct 7 22:33:37 2026 [idle] +root 12 0 0.0 0.0 0 256 WL Wed Oct 7 22:33:37 2026 [intr] +root 13 0 0.0 0.0 0 48 DL Wed Oct 7 22:33:37 2026 [geom] +root 14 0 0.0 0.0 0 640 DL Wed Oct 7 22:33:37 2026 [usb] +root 15 0 0.0 0.0 0 16 DL Wed Oct 7 22:33:37 2026 [vnlru] +root 16 0 0.0 0.0 0 16 DL Wed Oct 7 22:33:37 2026 [syncer] +root 830 1 0.0 0.1 14536 2796 Is Wed Oct 7 22:33:57 2026 dhclient: system.syslog (dhclient) +root 833 1 0.0 0.1 14536 2932 Is Wed Oct 7 22:33:57 2026 dhclient: em0 [priv] (dhclient) +_dhcp 949 1 0.0 0.1 14540 2964 ICs Wed Oct 7 22:34:17 2026 dhclient: em0 (dhclient) +root 989 1 0.0 0.2 15804 4236 Ss Wed Oct 7 22:34:17 2026 /sbin/devd +root 1260 1 0.0 0.1 14448 3056 SCs Wed Oct 7 22:34:17 2026 /usr/sbin/syslogd -s +root 1263 1 0.0 0.1 14448 2892 I Wed Oct 7 22:34:17 2026 syslogd: syslogd.casper (syslogd) +root 1264 1 0.0 0.1 14448 2796 Is Wed Oct 7 22:34:17 2026 syslogd: system.net (syslogd) +root 1448 1 0.2 0.5 25284 9844 Ss Wed Oct 7 22:34:17 2026 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups (sshd) +root 1486 1 0.0 0.1 14300 2796 Is Wed Oct 7 22:34:17 2026 /usr/sbin/cron -s +root 2324 1448 0.0 0.5 25792 10724 Ss Wed Oct 7 22:45:53 2026 sshd-session: netork [priv] (sshd-session) +netork 2326 2324 0.0 0.5 25792 10988 S Wed Oct 7 22:45:53 2026 sshd-session: netork@notty (sshd-session) +netork 2327 2326 0.0 0.2 14844 3132 Rs Wed Oct 7 22:45:53 2026 ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command +root 1505 1 0.0 0.1 14224 2468 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv0 +root 1506 1 0.0 0.1 14224 2468 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv1 +root 1507 1 0.0 0.1 14224 2464 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv2 +root 1508 1 0.0 0.1 14224 2464 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv3 +root 1509 1 0.0 0.1 14224 2452 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv4 +root 1510 1 0.0 0.1 14224 2472 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv5 +root 1511 1 0.0 0.1 14224 2464 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv6 +root 1512 1 0.0 0.1 14224 2460 Is+ Wed Oct 7 22:34:17 2026 /usr/libexec/getty Pc ttyv7 diff --git a/tests/fixtures/freebsd-host/service_e.txt b/tests/fixtures/freebsd-host/service_e.txt new file mode 100644 index 0000000..5237dfc --- /dev/null +++ b/tests/fixtures/freebsd-host/service_e.txt @@ -0,0 +1,25 @@ +/etc/rc.d/hostid +/etc/rc.d/hostid_save +/etc/rc.d/kldxref +/etc/rc.d/var_run +/etc/rc.d/devmatch +/etc/rc.d/cleanvar +/etc/rc.d/rctl +/etc/rc.d/ip6addrctl +/etc/rc.d/mixer +/etc/rc.d/netif +/etc/rc.d/devd +/etc/rc.d/resolv +/etc/rc.d/virecover +/etc/rc.d/gptboot +/etc/rc.d/cleartmp +/etc/rc.d/dmesg +/etc/rc.d/motd +/etc/rc.d/os-release +/etc/rc.d/newsyslog +/etc/rc.d/syslogd +/etc/rc.d/savecore +/etc/rc.d/utx +/etc/rc.d/sshd +/etc/rc.d/cron +/etc/rc.d/bgfsck diff --git a/tests/fixtures/freebsd-host/sockstat_l_4_6.txt b/tests/fixtures/freebsd-host/sockstat_l_4_6.txt new file mode 100644 index 0000000..ea5a554 --- /dev/null +++ b/tests/fixtures/freebsd-host/sockstat_l_4_6.txt @@ -0,0 +1,5 @@ +USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS +root sshd 1448 6 tcp6 *:22 *:* +root sshd 1448 7 tcp4 *:22 *:* +root syslogd 1260 6 udp6 *:514 *:* +root syslogd 1260 7 udp4 *:514 *:* diff --git a/tests/fixtures/freebsd-host/sockstat_l_4_6_P_tcp_udp_q.txt b/tests/fixtures/freebsd-host/sockstat_l_4_6_P_tcp_udp_q.txt new file mode 100644 index 0000000..6ec735a --- /dev/null +++ b/tests/fixtures/freebsd-host/sockstat_l_4_6_P_tcp_udp_q.txt @@ -0,0 +1,4 @@ +root sshd 1448 6 tcp6 *:22 *:* +root sshd 1448 7 tcp4 *:22 *:* +root syslogd 1260 6 udp6 *:514 *:* +root syslogd 1260 7 udp4 *:514 *:* diff --git a/tests/fixtures/freebsd-host/swapinfo_k.txt b/tests/fixtures/freebsd-host/swapinfo_k.txt new file mode 100644 index 0000000..60c8441 --- /dev/null +++ b/tests/fixtures/freebsd-host/swapinfo_k.txt @@ -0,0 +1,2 @@ +Device 1K-blocks Used Avail Capacity +/dev/ada0p3 1677312 0 1677312 0% diff --git a/tests/fixtures/freebsd-host/sysctl_n_hw.model_hw.ncpu_hw.physmem_hw.machine_arch.txt b/tests/fixtures/freebsd-host/sysctl_n_hw.model_hw.ncpu_hw.physmem_hw.machine_arch.txt new file mode 100644 index 0000000..62e65d9 --- /dev/null +++ b/tests/fixtures/freebsd-host/sysctl_n_hw.model_hw.ncpu_hw.physmem_hw.machine_arch.txt @@ -0,0 +1,4 @@ +QEMU Virtual CPU version 2.5+ +2 +2107084800 +amd64 diff --git a/tests/fixtures/freebsd-host/sysctl_n_kern.boottime.txt b/tests/fixtures/freebsd-host/sysctl_n_kern.boottime.txt new file mode 100644 index 0000000..0d0265a --- /dev/null +++ b/tests/fixtures/freebsd-host/sysctl_n_kern.boottime.txt @@ -0,0 +1 @@ +{ sec = 1791405216, usec = 766333 } Wed Oct 7 22:33:36 2026 diff --git a/tests/fixtures/freebsd-host/sysctl_n_kern.hostname_kern.ostype_kern.osrelease_kern.versi.txt b/tests/fixtures/freebsd-host/sysctl_n_kern.hostname_kern.ostype_kern.osrelease_kern.versi.txt new file mode 100644 index 0000000..4daf22f --- /dev/null +++ b/tests/fixtures/freebsd-host/sysctl_n_kern.hostname_kern.ostype_kern.osrelease_kern.versi.txt @@ -0,0 +1,5 @@ +bsd=01 +FreeBSD +15.1-RELEASE +FreeBSD 15.1-RELEASE releng/15.1-n283562-96841ea08dcf GENERIC + diff --git a/tests/fixtures/freebsd-host/sysctl_n_kern.smp.cpus_vm.stats.vm.v_page_count_vm.stats.vm..txt b/tests/fixtures/freebsd-host/sysctl_n_kern.smp.cpus_vm.stats.vm.v_page_count_vm.stats.vm..txt new file mode 100644 index 0000000..e8e869b --- /dev/null +++ b/tests/fixtures/freebsd-host/sysctl_n_kern.smp.cpus_vm.stats.vm.v_page_count_vm.stats.vm..txt @@ -0,0 +1,4 @@ +2 +503080 +466318 +4096 diff --git a/tests/fixtures/freebsd-host/sysrc_a.txt b/tests/fixtures/freebsd-host/sysrc_a.txt new file mode 100644 index 0000000..c28c486 --- /dev/null +++ b/tests/fixtures/freebsd-host/sysrc_a.txt @@ -0,0 +1,6 @@ +dumpdev: AUTO +hostname: bsd=01 +ifconfig_em0: DHCP +ifconfig_em0_ipv6: inet6 accept_rtadv +moused_nondefault_enable: NO +sshd_enable: YES diff --git a/tests/fixtures/freebsd-host/uname_a.txt b/tests/fixtures/freebsd-host/uname_a.txt new file mode 100644 index 0000000..a2649c2 --- /dev/null +++ b/tests/fixtures/freebsd-host/uname_a.txt @@ -0,0 +1 @@ +FreeBSD bsd=01 15.1-RELEASE FreeBSD 15.1-RELEASE releng/15.1-n283562-96841ea08dcf GENERIC amd64 diff --git a/tests/fixtures/freebsd-host/uptime.txt b/tests/fixtures/freebsd-host/uptime.txt new file mode 100644 index 0000000..99855f7 --- /dev/null +++ b/tests/fixtures/freebsd-host/uptime.txt @@ -0,0 +1 @@ +10:45PM up 12 mins, 0 users, load averages: 0.17, 0.18, 0.10 diff --git a/tests/fixtures/freebsd-host/which_sudo_doas_python3_bash_snmpd_bsnmpd.txt b/tests/fixtures/freebsd-host/which_sudo_doas_python3_bash_snmpd_bsnmpd.txt new file mode 100644 index 0000000..b7c9f10 --- /dev/null +++ b/tests/fixtures/freebsd-host/which_sudo_doas_python3_bash_snmpd_bsnmpd.txt @@ -0,0 +1 @@ +/usr/sbin/bsnmpd diff --git a/tests/fixtures/freebsd-vm/COMMANDS.txt b/tests/fixtures/freebsd-vm/COMMANDS.txt new file mode 100644 index 0000000..7ee60cf --- /dev/null +++ b/tests/fixtures/freebsd-vm/COMMANDS.txt @@ -0,0 +1,35 @@ +uname -a +freebsd-version -kru +sysctl -n kern.hostname kern.osrelease hw.model hw.ncpu hw.physmem kern.boottime +kenv -q smbios.system.product +kenv -q smbios.system.serial +kenv -q smbios.system.uuid +ifconfig -a +netstat -rnW -f inet +netstat -rnW -f inet6 +arp -an +ndp -an +sockstat -l -4 -6 -P tcp,udp -q +pkg -N +pkg repos -l +pkg info +pkg query '%n\t%v\t%o\t%R\t%c' +sudo pkg update -q +pkg version -vRL= +sudo pkg upgrade -n +sudo pkg upgrade -n -r FreeBSD-base +pkg audit -F -q +service -e +sudo service -l +sysrc -a +sysrc -n qemu_guest_agent_enable +sudo service qemu-guest-agent status +cat /etc/passwd +ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command +cat /etc/crontab +df -k +swapinfo -k +sysctl -n vm.loadavg +which snmpd bsnmpd +freebsd-update -h +id diff --git a/tests/fixtures/freebsd-vm/arp_an.txt b/tests/fixtures/freebsd-vm/arp_an.txt new file mode 100644 index 0000000..188c33c --- /dev/null +++ b/tests/fixtures/freebsd-vm/arp_an.txt @@ -0,0 +1,3 @@ +? (10.0.2.15) at bc:24:11:aa:bb:02 on vtnet0 permanent [ethernet] +? (10.0.2.2) at 52:55:0a:00:02:02 on vtnet0 expires in 1198 seconds [ethernet] +? (10.0.2.3) at 52:55:0a:00:02:03 on vtnet0 expires in 1198 seconds [ethernet] diff --git a/tests/fixtures/freebsd-vm/cat_etc_crontab.txt b/tests/fixtures/freebsd-vm/cat_etc_crontab.txt new file mode 100644 index 0000000..e37d3fd --- /dev/null +++ b/tests/fixtures/freebsd-vm/cat_etc_crontab.txt @@ -0,0 +1,22 @@ +# /etc/crontab - system crontab for FreeBSD +# +# +SHELL=/bin/sh +PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin +# +#minute hour mday month wday who command +# +# Save some entropy so that /dev/random can re-seed on boot. +*/11 * * * * operator /usr/libexec/save-entropy +# +# Rotate log files every hour, if necessary. +0 * * * * root newsyslog +# +# Perform daily/weekly/monthly maintenance. +1 3 * * * root periodic daily +15 4 * * 6 root periodic weekly +30 5 1 * * root periodic monthly +# +# Adjust the time zone if the CMOS clock keeps local time, as opposed to +# UTC time. See adjkerntz(8) for details. +1,31 0-5 * * * root adjkerntz -a diff --git a/tests/fixtures/freebsd-vm/cat_etc_passwd.txt b/tests/fixtures/freebsd-vm/cat_etc_passwd.txt new file mode 100644 index 0000000..32db3cd --- /dev/null +++ b/tests/fixtures/freebsd-vm/cat_etc_passwd.txt @@ -0,0 +1,28 @@ +root:*:0:0:Charlie &:/root:/bin/sh +toor:*:0:0:Bourne-again Superuser:/root: +daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin +operator:*:2:5:System &:/:/usr/sbin/nologin +bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin +tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin +kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin +games:*:7:13:Games pseudo-user:/:/usr/sbin/nologin +news:*:8:8:News Subsystem:/:/usr/sbin/nologin +man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin +sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin +smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin +mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin +bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin +unbound:*:59:59:Unbound DNS Resolver:/var/unbound:/usr/sbin/nologin +proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin +_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin +_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin +uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico +pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin +auditdistd:*:78:77:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin +www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin +ntpd:*:123:123:NTP Daemon:/var/db/ntp:/usr/sbin/nologin +_ypldap:*:160:160:YP LDAP unprivileged user:/var/empty:/usr/sbin/nologin +hast:*:845:845:HAST unprivileged user:/var/empty:/usr/sbin/nologin +tests:*:977:977:Unprivileged user for tests:/nonexistent:/usr/sbin/nologin +nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin +netork-user:*:1001:1001:netork-user User:/home/netork-user:/bin/sh diff --git a/tests/fixtures/freebsd-vm/df_k.txt b/tests/fixtures/freebsd-vm/df_k.txt new file mode 100644 index 0000000..9b23a16 --- /dev/null +++ b/tests/fixtures/freebsd-vm/df_k.txt @@ -0,0 +1,4 @@ +Filesystem 1024-blocks Used Avail Capacity Mounted on +/dev/gpt/rootfs 11137516 3117584 7128932 30% / +devfs 1 0 1 0% /dev +/dev/gpt/efiboot0 32764 651 32112 2% /boot/efi diff --git a/tests/fixtures/freebsd-vm/freebsd_update_h.txt b/tests/fixtures/freebsd-vm/freebsd_update_h.txt new file mode 100644 index 0000000..877ea83 --- /dev/null +++ b/tests/fixtures/freebsd-vm/freebsd_update_h.txt @@ -0,0 +1,33 @@ +usage: freebsd-update [options] command ... + +Options: + -b basedir -- Operate on a system mounted at basedir + (default: /) + -d workdir -- Store working files in workdir + (default: /var/db/freebsd-update/) + -f conffile -- Read configuration options from conffile + (default: /etc/freebsd-update.conf) + -F -- Force a fetch operation to proceed in the + case of an unfinished upgrade + -j jail -- Operate on the given jail specified by jid or name + -k KEY -- Trust an RSA key with SHA256 hash of KEY + -r release -- Target for upgrade (e.g., 13.2-RELEASE) + -s server -- Server from which to fetch updates + (default: update.FreeBSD.org) + -t address -- Mail output of cron command, if any, to address + (default: root) + -v level -- Set output verbosity to stats, nostats, or debug + --not-running-from-cron + -- Run without a tty, for use by automated tools + --currently-running release + -- Update as if currently running this release +Commands: + fetch -- Fetch updates from server + cron -- Sleep rand(3600) seconds, fetch updates, and send an + email if updates were found + upgrade -- Fetch upgrades to FreeBSD version specified via -r option + updatesready -- Check if there are fetched updates ready to install + install -- Install downloaded updates or upgrades + rollback -- Uninstall most recently installed updates + IDS -- Compare the system against an index of "known good" files + showconfig -- Show configuration diff --git a/tests/fixtures/freebsd-vm/freebsd_version_kru.txt b/tests/fixtures/freebsd-vm/freebsd_version_kru.txt new file mode 100644 index 0000000..c949089 --- /dev/null +++ b/tests/fixtures/freebsd-vm/freebsd_version_kru.txt @@ -0,0 +1,3 @@ +15.1-RELEASE-p4 +15.1-RELEASE-p4 +15.1-RELEASE-p4 diff --git a/tests/fixtures/freebsd-vm/id.txt b/tests/fixtures/freebsd-vm/id.txt new file mode 100644 index 0000000..7d9b3c9 --- /dev/null +++ b/tests/fixtures/freebsd-vm/id.txt @@ -0,0 +1 @@ +uid=1001(netork-user) gid=1001(netork-user) groups=0(wheel),1001(netork-user) diff --git a/tests/fixtures/freebsd-vm/ifconfig_a.txt b/tests/fixtures/freebsd-vm/ifconfig_a.txt new file mode 100644 index 0000000..9ca35c8 --- /dev/null +++ b/tests/fixtures/freebsd-vm/ifconfig_a.txt @@ -0,0 +1,16 @@ +vtnet0: flags=1008843 metric 0 mtu 1500 + options=880028 + ether bc:24:11:aa:bb:02 + inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255 + inet6 fe80::be24:11ff:feaa:bb02%vtnet0 prefixlen 64 scopeid 0x1 + inet6 fec0::be24:11ff:feaa:bb02 prefixlen 64 autoconf pltime 14400 vltime 86400 + media: Ethernet autoselect (10Gbase-T ) + status: active + nd6 options=23 +lo0: flags=1008049 metric 0 mtu 16384 + options=680003 + inet 127.0.0.1 netmask 0xff000000 + inet6 ::1 prefixlen 128 + inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 + groups: lo + nd6 options=21 diff --git a/tests/fixtures/freebsd-vm/kenv_q_smbios.system.product.txt b/tests/fixtures/freebsd-vm/kenv_q_smbios.system.product.txt new file mode 100644 index 0000000..73c08d6 --- /dev/null +++ b/tests/fixtures/freebsd-vm/kenv_q_smbios.system.product.txt @@ -0,0 +1 @@ +Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996) diff --git a/tests/fixtures/freebsd-vm/ndp_an.txt b/tests/fixtures/freebsd-vm/ndp_an.txt new file mode 100644 index 0000000..d29ffe2 --- /dev/null +++ b/tests/fixtures/freebsd-vm/ndp_an.txt @@ -0,0 +1,4 @@ +Neighbor Linklayer Address Netif Expire S Flags +fe80::2%vtnet0 52:56:00:00:00:02 vtnet0 23h59m54s S R +fec0::be24:11ff:feaa:bb02 bc:24:11:aa:bb:02 vtnet0 permanent R +fe80::be24:11ff:feaa:bb02%vtnet0 bc:24:11:aa:bb:02 vtnet0 permanent R diff --git a/tests/fixtures/freebsd-vm/netstat_rnW_f_inet.txt b/tests/fixtures/freebsd-vm/netstat_rnW_f_inet.txt new file mode 100644 index 0000000..9302268 --- /dev/null +++ b/tests/fixtures/freebsd-vm/netstat_rnW_f_inet.txt @@ -0,0 +1,8 @@ +Routing tables + +Internet: +Destination Gateway Flags Nhop# Mtu Netif Expire +default 10.0.2.2 UGS 4 1500 vtnet0 +10.0.2.0/24 link#1 U 2 1500 vtnet0 +10.0.2.15 link#2 UHS 3 16384 lo0 +127.0.0.1 link#2 UH 1 16384 lo0 diff --git a/tests/fixtures/freebsd-vm/netstat_rnW_f_inet6.txt b/tests/fixtures/freebsd-vm/netstat_rnW_f_inet6.txt new file mode 100644 index 0000000..df52037 --- /dev/null +++ b/tests/fixtures/freebsd-vm/netstat_rnW_f_inet6.txt @@ -0,0 +1,16 @@ +Routing tables + +Internet6: +Destination Gateway Flags Nhop# Mtu Netif Expire +::/96 link#2 URS 7 16384 lo0 +default fe80::2%vtnet0 UG 6 1500 vtnet0 +::1 link#2 UHS 1 16384 lo0 +::ffff:0.0.0.0/96 link#2 URS 7 16384 lo0 +fe80::%lo0/10 link#2 URS 7 16384 lo0 +fe80::%vtnet0/64 link#1 U 5 1500 vtnet0 +fe80::be24:11ff:feaa:bb02%lo0 link#2 UHS 4 16384 lo0 +fe80::%lo0/64 link#2 U 3 16384 lo0 +fe80::1%lo0 link#2 UHS 2 16384 lo0 +fec0::/64 link#1 U 5 1500 vtnet0 +fec0::be24:11ff:feaa:bb02 link#2 UHS 4 16384 lo0 +ff02::/16 link#2 URS 7 16384 lo0 diff --git a/tests/fixtures/freebsd-vm/pkg_info.txt b/tests/fixtures/freebsd-vm/pkg_info.txt new file mode 100644 index 0000000..0bda91a --- /dev/null +++ b/tests/fixtures/freebsd-vm/pkg_info.txt @@ -0,0 +1,514 @@ +FreeBSD-acct-15.1p4 System resource accounting +FreeBSD-acct-dbg-15.1p4 System resource accounting (debugging symbols) +FreeBSD-acpi-15.1 Advanced Configuration and Power Interface (ACPI) utilities +FreeBSD-acpi-dbg-15.1 Advanced Configuration and Power Interface (ACPI) utilities (debugging symbols) +FreeBSD-apm-15.1 Intel / Microsoft APM BIOS utility +FreeBSD-apm-dbg-15.1 Intel / Microsoft APM BIOS utility (debugging symbols) +FreeBSD-at-15.1 Scheduled and batch command utilities +FreeBSD-at-dbg-15.1 Scheduled and batch command utilities (debugging symbols) +FreeBSD-atf-15.1 Automated Testing Framework +FreeBSD-atf-dbg-15.1 Automated Testing Framework (debugging symbols) +FreeBSD-atf-dev-15.1 Automated Testing Framework (development files) +FreeBSD-atf-lib-15.1 Automated Testing Framework (libraries) +FreeBSD-audit-15.1p4 OpenBSM auditing utilities +FreeBSD-audit-dbg-15.1p4 OpenBSM auditing utilities (debugging symbols) +FreeBSD-audit-dbg-lib32-15.1 OpenBSM auditing utilities (32-bit debugging symbols) +FreeBSD-audit-dev-15.1 OpenBSM auditing utilities (development files) +FreeBSD-audit-dev-lib32-15.1 OpenBSM auditing utilities (32-bit development files) +FreeBSD-audit-lib-15.1 OpenBSM auditing utilities (libraries) +FreeBSD-audit-lib32-15.1 OpenBSM auditing utilities (32-bit libraries) +FreeBSD-autofs-15.1p2 File system automounter +FreeBSD-autofs-dbg-15.1p2 File system automounter (debugging symbols) +FreeBSD-bhyve-15.1p4 bhyve virtual machine hypervisor +FreeBSD-bhyve-dbg-15.1p4 bhyve virtual machine hypervisor (debugging symbols) +FreeBSD-blocklist-15.1 Network blocklist daemon +FreeBSD-blocklist-dbg-15.1 Network blocklist daemon (debugging symbols) +FreeBSD-blocklist-dbg-lib32-15.1 Network blocklist daemon (32-bit debugging symbols) +FreeBSD-blocklist-dev-15.1 Network blocklist daemon (development files) +FreeBSD-blocklist-dev-lib32-15.1 Network blocklist daemon (32-bit development files) +FreeBSD-blocklist-lib32-15.1 Network blocklist daemon (32-bit libraries) +FreeBSD-bluetooth-15.1 Bluetooth support +FreeBSD-bluetooth-dbg-15.1 Bluetooth support (debugging symbols) +FreeBSD-bluetooth-dbg-lib32-15.1 Bluetooth support (32-bit debugging symbols) +FreeBSD-bluetooth-dev-15.1 Bluetooth support (development files) +FreeBSD-bluetooth-dev-lib32-15.1 Bluetooth support (32-bit development files) +FreeBSD-bluetooth-lib-15.1 Bluetooth support (libraries) +FreeBSD-bluetooth-lib32-15.1 Bluetooth support (32-bit libraries) +FreeBSD-bmake-15.1 Program maintenance utility +FreeBSD-bmake-dbg-15.1 Program maintenance utility (debugging symbols) +FreeBSD-bootloader-15.1 System boot loader +FreeBSD-bootloader-dbg-15.1 System boot loader (debugging symbols) +FreeBSD-bootloader-dev-15.1 System boot loader (development files) +FreeBSD-bsdconfig-15.1 System configuration utility +FreeBSD-bsdinstall-15.1 System installer +FreeBSD-bsdinstall-dbg-15.1 System installer (debugging symbols) +FreeBSD-bsnmp-15.1p1 Simple and extensible SNMP daemon +FreeBSD-bsnmp-dbg-15.1p1 Simple and extensible SNMP daemon (debugging symbols) +FreeBSD-bsnmp-dbg-lib32-15.1 Simple and extensible SNMP daemon (32-bit debugging symbols) +FreeBSD-bsnmp-dev-15.1 Simple and extensible SNMP daemon (development files) +FreeBSD-bsnmp-dev-lib32-15.1 Simple and extensible SNMP daemon (32-bit development files) +FreeBSD-bsnmp-lib32-15.1 Simple and extensible SNMP daemon (32-bit libraries) +FreeBSD-bzip2-15.1 A block-sorting data compressor +FreeBSD-bzip2-dbg-15.1 A block-sorting data compressor (debugging symbols) +FreeBSD-bzip2-dbg-lib32-15.1 A block-sorting data compressor (32-bit debugging symbols) +FreeBSD-bzip2-dev-15.1 A block-sorting data compressor (development files) +FreeBSD-bzip2-dev-lib32-15.1 A block-sorting data compressor (32-bit development files) +FreeBSD-bzip2-lib-15.1 A block-sorting data compressor (libraries) +FreeBSD-bzip2-lib32-15.1 A block-sorting data compressor (32-bit libraries) +FreeBSD-caroot-15.1 Mozilla Root Store trusted TLS certificates +FreeBSD-ccdconfig-15.1 Concatenated disk driver (ccd) configuration utility +FreeBSD-ccdconfig-dbg-15.1 Concatenated disk driver (ccd) configuration utility (debugging symbols) +FreeBSD-certctl-15.1 Tool for managing trusted and untrusted TLS certificates +FreeBSD-certctl-dbg-15.1 Tool for managing trusted and untrusted TLS certificates (debugging symbols) +FreeBSD-clang-15.1p2 The Clang C, C++, and Objective-C compiler +FreeBSD-clang-dbg-15.1p2 The Clang C, C++, and Objective-C compiler (debugging symbols) +FreeBSD-clang-dev-15.1p1 The Clang C, C++, and Objective-C compiler (development files) +FreeBSD-clibs-15.1p4 Core runtime libraries +FreeBSD-clibs-dbg-15.1p4 Core runtime libraries (debugging symbols) +FreeBSD-clibs-dbg-lib32-15.1p4 Core runtime libraries (32-bit debugging symbols) +FreeBSD-clibs-dev-15.1p4 Core runtime libraries (development files) +FreeBSD-clibs-dev-lib32-15.1p4 Core runtime libraries (32-bit development files) +FreeBSD-clibs-lib32-15.1p4 Core runtime libraries (32-bit libraries) +FreeBSD-console-tools-15.1p2 Video console utilities +FreeBSD-console-tools-dbg-15.1p2 Video console utilities (debugging symbols) +FreeBSD-cron-15.1 Command scheduling facility +FreeBSD-cron-dbg-15.1 Command scheduling facility (debugging symbols) +FreeBSD-csh-15.1 C shell with file name completion and command line editing +FreeBSD-csh-dbg-15.1 C shell with file name completion and command line editing (debugging symbols) +FreeBSD-ctf-15.1 Compact C Type Format (CTF) +FreeBSD-ctf-dbg-15.1 Compact C Type Format (CTF) (debugging symbols) +FreeBSD-ctf-dbg-lib32-15.1 Compact C Type Format (CTF) (32-bit debugging symbols) +FreeBSD-ctf-dev-15.1 Compact C Type Format (CTF) (development files) +FreeBSD-ctf-dev-lib32-15.1 Compact C Type Format (CTF) (32-bit development files) +FreeBSD-ctf-lib-15.1 Compact C Type Format (CTF) (libraries) +FreeBSD-ctf-lib32-15.1 Compact C Type Format (CTF) (32-bit libraries) +FreeBSD-ctl-15.1p4 CAM Target Layer / iSCSI target daemon +FreeBSD-ctl-dbg-15.1p4 CAM Target Layer / iSCSI target daemon (debugging symbols) +FreeBSD-cxgbe-tools-15.1 Configuration utility for Chelsio cxbge(4) network interfaces +FreeBSD-cxgbe-tools-dbg-15.1 Configuration utility for Chelsio cxbge(4) network interfaces (debugging symbols) +FreeBSD-devd-15.1 Kernel event handling daemon +FreeBSD-devd-dbg-15.1 Kernel event handling daemon (debugging symbols) +FreeBSD-devmatch-15.1 Automatically load kernel drivers for attached hardware +FreeBSD-devmatch-dbg-15.1 Automatically load kernel drivers for attached hardware (debugging symbols) +FreeBSD-devmatch-dbg-lib32-15.1 Automatically load kernel drivers for attached hardware (32-bit debugging symbols) +FreeBSD-devmatch-dev-15.1 Automatically load kernel drivers for attached hardware (development files) +FreeBSD-devmatch-dev-lib32-15.1 Automatically load kernel drivers for attached hardware (32-bit development files) +FreeBSD-devmatch-lib32-15.1 Automatically load kernel drivers for attached hardware (32-bit libraries) +FreeBSD-dhclient-15.1p4 Dynamic Host Configuration Protocol (DHCP) client +FreeBSD-dhclient-dbg-15.1p4 Dynamic Host Configuration Protocol (DHCP) client (debugging symbols) +FreeBSD-diff3-15.1 GNU 3-way file comparison and merge utility +FreeBSD-diff3-dbg-15.1 GNU 3-way file comparison and merge utility (debugging symbols) +FreeBSD-dma-15.1p4 DragonFly Mail Agent +FreeBSD-dma-dbg-15.1p4 DragonFly Mail Agent (debugging symbols) +FreeBSD-dtrace-15.1 DTrace dynamic tracing framework +FreeBSD-dtrace-dbg-15.1 DTrace dynamic tracing framework (debugging symbols) +FreeBSD-dtrace-dbg-lib32-15.1 DTrace dynamic tracing framework (32-bit debugging symbols) +FreeBSD-dtrace-dev-15.1 DTrace dynamic tracing framework (development files) +FreeBSD-dtrace-dev-lib32-15.1 DTrace dynamic tracing framework (32-bit development files) +FreeBSD-dtrace-lib32-15.1 DTrace dynamic tracing framework (32-bit libraries) +FreeBSD-dwatch-15.1 Watch processes as they trigger a particular DTrace probe +FreeBSD-ee-15.1 Easy Editor +FreeBSD-ee-dbg-15.1 Easy Editor (debugging symbols) +FreeBSD-efi-tools-15.1 Utilities for the Unified Extensible Firmware Interface (UEFI) +FreeBSD-efi-tools-dbg-15.1 Utilities for the Unified Extensible Firmware Interface (UEFI) (debugging symbols) +FreeBSD-efi-tools-dev-15.1 Utilities for the Unified Extensible Firmware Interface (UEFI) (development files) +FreeBSD-examples-15.1 System interface examples +FreeBSD-fd-15.1 Floppy disk utilities +FreeBSD-fd-dbg-15.1 Floppy disk utilities (debugging symbols) +FreeBSD-fetch-15.1 Retrieve a file from a remote URL +FreeBSD-fetch-dbg-15.1 Retrieve a file from a remote URL (debugging symbols) +FreeBSD-fetch-dbg-lib32-15.1 Retrieve a file from a remote URL (32-bit debugging symbols) +FreeBSD-fetch-dev-15.1 Retrieve a file from a remote URL (development files) +FreeBSD-fetch-dev-lib32-15.1 Retrieve a file from a remote URL (32-bit development files) +FreeBSD-fetch-lib32-15.1 Retrieve a file from a remote URL (32-bit libraries) +FreeBSD-firmware-iwm-15.1 Firmware for iwm(4) Intel 802.11ac network interfaces +FreeBSD-flua-15.1 Private Lua implementation +FreeBSD-flua-dbg-15.1 Private Lua implementation (debugging symbols) +FreeBSD-flua-dev-15.1 Private Lua implementation (development files) +FreeBSD-ftp-15.1 File Transfer Protocol (FTP) client +FreeBSD-ftp-dbg-15.1 File Transfer Protocol (FTP) client (debugging symbols) +FreeBSD-fwget-15.1 Install firmware packages for the running system +FreeBSD-games-15.1p4 Games +FreeBSD-games-dbg-15.1p4 Games (debugging symbols) +FreeBSD-geom-15.1 GEOM configuration utilities +FreeBSD-geom-dbg-15.1 GEOM configuration utilities (debugging symbols) +FreeBSD-geom-dbg-lib32-15.1 GEOM configuration utilities (32-bit debugging symbols) +FreeBSD-geom-lib32-15.1 GEOM configuration utilities (32-bit libraries) +FreeBSD-ggate-15.1 GEOM Gate client and server +FreeBSD-ggate-dbg-15.1 GEOM Gate client and server (debugging symbols) +FreeBSD-gssd-15.1 gssd(8) daemon for kernel GSS-API +FreeBSD-gssd-dbg-15.1 gssd(8) daemon for kernel GSS-API (debugging symbols) +FreeBSD-hast-15.1p4 Highly Available Storage daemon +FreeBSD-hast-dbg-15.1p4 Highly Available Storage daemon (debugging symbols) +FreeBSD-hostapd-15.1 IEEE Std 802.11 Access Point authentication daemon +FreeBSD-hostapd-dbg-15.1 IEEE Std 802.11 Access Point authentication daemon (debugging symbols) +FreeBSD-hyperv-tools-15.1 Microsoft Hyper-V utilities +FreeBSD-hyperv-tools-dbg-15.1 Microsoft Hyper-V utilities (debugging symbols) +FreeBSD-inetd-15.1 Internet super-server +FreeBSD-inetd-dbg-15.1 Internet super-server (debugging symbols) +FreeBSD-ipf-15.1 IP Filter (ipf) packet filter management tools +FreeBSD-ipf-dbg-15.1 IP Filter (ipf) packet filter management tools (debugging symbols) +FreeBSD-ipfw-15.1 ipfw (IP firewall) management utilities +FreeBSD-ipfw-dbg-15.1 ipfw (IP firewall) management utilities (debugging symbols) +FreeBSD-iscsi-15.1p4 iSCSI initiator +FreeBSD-iscsi-dbg-15.1p4 iSCSI initiator (debugging symbols) +FreeBSD-jail-15.1p2 Jail management tools +FreeBSD-jail-dbg-15.1p2 Jail management tools (debugging symbols) +FreeBSD-kerberos-15.1 Kerberos client +FreeBSD-kerberos-dbg-15.1 Kerberos client (debugging symbols) +FreeBSD-kerberos-dbg-lib32-15.1 Kerberos client (32-bit debugging symbols) +FreeBSD-kerberos-dev-15.1 Kerberos client (development files) +FreeBSD-kerberos-dev-lib32-15.1 Kerberos client (32-bit development files) +FreeBSD-kerberos-kdc-15.1 Kerberos key distribution center +FreeBSD-kerberos-kdc-dbg-15.1 Kerberos key distribution center (debugging symbols) +FreeBSD-kerberos-lib-15.1 Kerberos client (libraries) +FreeBSD-kerberos-lib32-15.1 Kerberos client (32-bit libraries) +FreeBSD-kernel-generic-15.1p4 FreeBSD GENERIC Kernel +FreeBSD-kernel-generic-dbg-15.1p4 FreeBSD GENERIC Kernel -dbg (debugging symbols) +FreeBSD-kernel-man-15.1p4 Kernel manual pages +FreeBSD-kyua-15.1 Testing framework for infrastructure software +FreeBSD-kyua-dbg-15.1 Testing framework for infrastructure software (debugging symbols) +FreeBSD-lib9p-15.1p2 9P network protocol library +FreeBSD-lib9p-dbg-15.1p2 9P network protocol library (debugging symbols) +FreeBSD-lib9p-dbg-lib32-15.1p2 9P network protocol library (32-bit debugging symbols) +FreeBSD-lib9p-dev-15.1p2 9P network protocol library (development files) +FreeBSD-lib9p-dev-lib32-15.1p2 9P network protocol library (32-bit development files) +FreeBSD-lib9p-lib32-15.1p2 9P network protocol library (32-bit libraries) +FreeBSD-libarchive-15.1 Library for reading and writing streaming archives +FreeBSD-libarchive-dbg-15.1 Library for reading and writing streaming archives (debugging symbols) +FreeBSD-libarchive-dbg-lib32-15.1 Library for reading and writing streaming archives (32-bit debugging symbols) +FreeBSD-libarchive-dev-15.1 Library for reading and writing streaming archives (development files) +FreeBSD-libarchive-dev-lib32-15.1 Library for reading and writing streaming archives (32-bit development files) +FreeBSD-libarchive-lib32-15.1 Library for reading and writing streaming archives (32-bit libraries) +FreeBSD-libbegemot-15.1 rpoll(3) interface for event-driven I/O +FreeBSD-libbegemot-dbg-15.1 rpoll(3) interface for event-driven I/O (debugging symbols) +FreeBSD-libbegemot-dbg-lib32-15.1 rpoll(3) interface for event-driven I/O (32-bit debugging symbols) +FreeBSD-libbegemot-dev-15.1 rpoll(3) interface for event-driven I/O (development files) +FreeBSD-libbegemot-dev-lib32-15.1 rpoll(3) interface for event-driven I/O (32-bit development files) +FreeBSD-libbegemot-lib32-15.1 rpoll(3) interface for event-driven I/O (32-bit libraries) +FreeBSD-libblocksruntime-15.1 LLVM BlocksRuntime library +FreeBSD-libblocksruntime-dbg-15.1 LLVM BlocksRuntime library (debugging symbols) +FreeBSD-libblocksruntime-dbg-lib32-15.1 LLVM BlocksRuntime library (32-bit debugging symbols) +FreeBSD-libblocksruntime-dev-15.1 LLVM BlocksRuntime library (development files) +FreeBSD-libblocksruntime-dev-lib32-15.1 LLVM BlocksRuntime library (32-bit development files) +FreeBSD-libblocksruntime-lib32-15.1 LLVM BlocksRuntime library (32-bit libraries) +FreeBSD-libbsdstat-15.1 Periodic statistics library +FreeBSD-libbsdstat-dbg-15.1 Periodic statistics library (debugging symbols) +FreeBSD-libbsdstat-dbg-lib32-15.1 Periodic statistics library (32-bit debugging symbols) +FreeBSD-libbsdstat-dev-15.1 Periodic statistics library (development files) +FreeBSD-libbsdstat-dev-lib32-15.1 Periodic statistics library (32-bit development files) +FreeBSD-libbsdstat-lib32-15.1 Periodic statistics library (32-bit libraries) +FreeBSD-libcasper-15.1p4 Casper library +FreeBSD-libcasper-dbg-15.1p4 Casper library (debugging symbols) +FreeBSD-libcasper-dbg-lib32-15.1p4 Casper library (32-bit debugging symbols) +FreeBSD-libcasper-dev-15.1 Casper library (development files) +FreeBSD-libcasper-dev-lib32-15.1 Casper library (32-bit development files) +FreeBSD-libcasper-lib32-15.1p4 Casper library (32-bit libraries) +FreeBSD-libcompat-dev-15.1 Compatibility library (development files) +FreeBSD-libcompat-dev-lib32-15.1 Compatibility library (32-bit development files) +FreeBSD-libcompiler_rt-dev-15.1 LLVM compiler_rt library (development files) +FreeBSD-libcompiler_rt-dev-lib32-15.1 LLVM compiler_rt library (32-bit development files) +FreeBSD-libcuse-15.1 Userland character device library +FreeBSD-libcuse-dbg-15.1 Userland character device library (debugging symbols) +FreeBSD-libcuse-dbg-lib32-15.1 Userland character device library (32-bit debugging symbols) +FreeBSD-libcuse-dev-15.1 Userland character device library (development files) +FreeBSD-libcuse-dev-lib32-15.1 Userland character device library (32-bit development files) +FreeBSD-libcuse-lib32-15.1 Userland character device library (32-bit libraries) +FreeBSD-libdwarf-15.1 DWARF access library +FreeBSD-libdwarf-dbg-15.1 DWARF access library (debugging symbols) +FreeBSD-libdwarf-dbg-lib32-15.1 DWARF access library (32-bit debugging symbols) +FreeBSD-libdwarf-dev-15.1 DWARF access library (development files) +FreeBSD-libdwarf-dev-lib32-15.1 DWARF access library (32-bit development files) +FreeBSD-libdwarf-lib32-15.1 DWARF access library (32-bit libraries) +FreeBSD-libevent1-15.1p2 Private libevent1 library +FreeBSD-libevent1-dbg-15.1p2 Private libevent1 library (debugging symbols) +FreeBSD-libevent1-dbg-lib32-15.1p2 Private libevent1 library (32-bit debugging symbols) +FreeBSD-libevent1-dev-15.1p2 Private libevent1 library (development files) +FreeBSD-libevent1-dev-lib32-15.1p2 Private libevent1 library (32-bit development files) +FreeBSD-libevent1-lib32-15.1p2 Private libevent1 library (32-bit libraries) +FreeBSD-libexecinfo-15.1 NetBSD stack backtrace library +FreeBSD-libexecinfo-dbg-15.1 NetBSD stack backtrace library (debugging symbols) +FreeBSD-libexecinfo-dbg-lib32-15.1 NetBSD stack backtrace library (32-bit debugging symbols) +FreeBSD-libexecinfo-dev-15.1 NetBSD stack backtrace library (development files) +FreeBSD-libexecinfo-dev-lib32-15.1 NetBSD stack backtrace library (32-bit development files) +FreeBSD-libexecinfo-lib32-15.1 NetBSD stack backtrace library (32-bit libraries) +FreeBSD-libipt-15.1 Intel(R) Processor Trace decoder library +FreeBSD-libipt-dbg-15.1 Intel(R) Processor Trace decoder library (debugging symbols) +FreeBSD-libipt-dev-15.1 Intel(R) Processor Trace decoder library (development files) +FreeBSD-libldns-15.1 Private LDNS library +FreeBSD-libldns-dbg-15.1 Private LDNS library (debugging symbols) +FreeBSD-libldns-dbg-lib32-15.1 Private LDNS library (32-bit debugging symbols) +FreeBSD-libldns-dev-15.1 Private LDNS library (development files) +FreeBSD-libldns-dev-lib32-15.1 Private LDNS library (32-bit development files) +FreeBSD-libldns-lib32-15.1 Private LDNS library (32-bit libraries) +FreeBSD-libmagic-15.1 Magic number recognition library +FreeBSD-libmagic-dbg-15.1 Magic number recognition library (debugging symbols) +FreeBSD-libmagic-dbg-lib32-15.1 Magic number recognition library (32-bit debugging symbols) +FreeBSD-libmagic-dev-15.1 Magic number recognition library (development files) +FreeBSD-libmagic-dev-lib32-15.1 Magic number recognition library (32-bit development files) +FreeBSD-libmagic-lib32-15.1 Magic number recognition library (32-bit libraries) +FreeBSD-libmilter-15.1 sendmail Mail Filter API library +FreeBSD-libmilter-dbg-15.1 sendmail Mail Filter API library (debugging symbols) +FreeBSD-libmilter-dbg-lib32-15.1 sendmail Mail Filter API library (32-bit debugging symbols) +FreeBSD-libmilter-dev-15.1 sendmail Mail Filter API library (development files) +FreeBSD-libmilter-dev-lib32-15.1 sendmail Mail Filter API library (32-bit development files) +FreeBSD-libmilter-lib32-15.1 sendmail Mail Filter API library (32-bit libraries) +FreeBSD-libpathconv-15.1 Library for handling relative and absolute pathnames +FreeBSD-libpathconv-dbg-15.1 Library for handling relative and absolute pathnames (debugging symbols) +FreeBSD-libpathconv-dbg-lib32-15.1 Library for handling relative and absolute pathnames (32-bit debugging symbols) +FreeBSD-libpathconv-dev-15.1 Library for handling relative and absolute pathnames (development files) +FreeBSD-libpathconv-dev-lib32-15.1 Library for handling relative and absolute pathnames (32-bit development files) +FreeBSD-libpathconv-lib32-15.1 Library for handling relative and absolute pathnames (32-bit libraries) +FreeBSD-librpcsec_gss-15.1 RPCSEC_GSS library +FreeBSD-librpcsec_gss-dbg-15.1 RPCSEC_GSS library (debugging symbols) +FreeBSD-librpcsec_gss-dbg-lib32-15.1 RPCSEC_GSS library (32-bit debugging symbols) +FreeBSD-librpcsec_gss-dev-15.1 RPCSEC_GSS library (development files) +FreeBSD-librpcsec_gss-dev-lib32-15.1 RPCSEC_GSS library (32-bit development files) +FreeBSD-librpcsec_gss-lib32-15.1 RPCSEC_GSS library (32-bit libraries) +FreeBSD-librss-15.1 Receive-side scaling library +FreeBSD-librss-dbg-15.1 Receive-side scaling library (debugging symbols) +FreeBSD-librss-dbg-lib32-15.1 Receive-side scaling library (32-bit debugging symbols) +FreeBSD-librss-dev-15.1 Receive-side scaling library (development files) +FreeBSD-librss-dev-lib32-15.1 Receive-side scaling library (32-bit development files) +FreeBSD-librss-lib32-15.1 Receive-side scaling library (32-bit libraries) +FreeBSD-libsqlite3-15.1 Private SQLite library +FreeBSD-libsqlite3-dbg-15.1 Private SQLite library (debugging symbols) +FreeBSD-libsqlite3-dbg-lib32-15.1 Private SQLite library (32-bit debugging symbols) +FreeBSD-libsqlite3-dev-15.1 Private SQLite library (development files) +FreeBSD-libsqlite3-dev-lib32-15.1 Private SQLite library (32-bit development files) +FreeBSD-libsqlite3-lib32-15.1 Private SQLite library (32-bit libraries) +FreeBSD-libthread_db-15.1 Library for interacting with threaded processes +FreeBSD-libthread_db-dbg-15.1 Library for interacting with threaded processes (debugging symbols) +FreeBSD-libthread_db-dbg-lib32-15.1 Library for interacting with threaded processes (32-bit debugging symbols) +FreeBSD-libthread_db-dev-15.1 Library for interacting with threaded processes (development files) +FreeBSD-libthread_db-dev-lib32-15.1 Library for interacting with threaded processes (32-bit development files) +FreeBSD-libthread_db-lib32-15.1 Library for interacting with threaded processes (32-bit libraries) +FreeBSD-libucl-15.1 Private Universal Configuration Library (UCL) library +FreeBSD-libucl-dbg-15.1 Private Universal Configuration Library (UCL) library (debugging symbols) +FreeBSD-libucl-dbg-lib32-15.1 Private Universal Configuration Library (UCL) library (32-bit debugging symbols) +FreeBSD-libucl-dev-15.1 Private Universal Configuration Library (UCL) library (development files) +FreeBSD-libucl-dev-lib32-15.1 Private Universal Configuration Library (UCL) library (32-bit development files) +FreeBSD-libucl-lib32-15.1 Private Universal Configuration Library (UCL) library (32-bit libraries) +FreeBSD-libvgl-15.1 Video Graphics Library +FreeBSD-libvgl-dbg-15.1 Video Graphics Library (debugging symbols) +FreeBSD-libvgl-dbg-lib32-15.1 Video Graphics Library (32-bit debugging symbols) +FreeBSD-libvgl-dev-15.1 Video Graphics Library (development files) +FreeBSD-libvgl-dev-lib32-15.1 Video Graphics Library (32-bit development files) +FreeBSD-libvgl-lib32-15.1 Video Graphics Library (32-bit libraries) +FreeBSD-libvmmapi-15.1p4 Front-end library for the vmm(4) virtualization driver +FreeBSD-libvmmapi-dbg-15.1p4 Front-end library for the vmm(4) virtualization driver (debugging symbols) +FreeBSD-libvmmapi-dev-15.1p4 Front-end library for the vmm(4) virtualization driver (development files) +FreeBSD-libyaml-15.1 Private YAML library +FreeBSD-libyaml-dbg-15.1 Private YAML library (debugging symbols) +FreeBSD-libyaml-dbg-lib32-15.1 Private YAML library (32-bit debugging symbols) +FreeBSD-libyaml-dev-15.1 Private YAML library (development files) +FreeBSD-libyaml-dev-lib32-15.1 Private YAML library (32-bit development files) +FreeBSD-libyaml-lib32-15.1 Private YAML library (32-bit libraries) +FreeBSD-lld-15.1 LLVM ELF link loader +FreeBSD-lld-dbg-15.1 LLVM ELF link loader (debugging symbols) +FreeBSD-lldb-15.1 LLVM debugger +FreeBSD-lldb-dbg-15.1 LLVM debugger (debugging symbols) +FreeBSD-local-unbound-15.1 NLnet Labs Unbound DNS resolver +FreeBSD-local-unbound-dbg-15.1 NLnet Labs Unbound DNS resolver (debugging symbols) +FreeBSD-local-unbound-dbg-lib32-15.1 NLnet Labs Unbound DNS resolver (32-bit debugging symbols) +FreeBSD-local-unbound-dev-15.1 NLnet Labs Unbound DNS resolver (development files) +FreeBSD-local-unbound-dev-lib32-15.1 NLnet Labs Unbound DNS resolver (32-bit development files) +FreeBSD-local-unbound-lib32-15.1 NLnet Labs Unbound DNS resolver (32-bit libraries) +FreeBSD-locales-15.1 Locale definitions +FreeBSD-lp-15.1 Print spooler +FreeBSD-lp-dbg-15.1 Print spooler (debugging symbols) +FreeBSD-mandoc-15.1 Online manual page reader +FreeBSD-mandoc-dbg-15.1 Online manual page reader (debugging symbols) +FreeBSD-mlx-tools-15.1 Utility for managing Connect-X 4/5/6 Mellanox network adapters +FreeBSD-mlx-tools-dbg-15.1 Utility for managing Connect-X 4/5/6 Mellanox network adapters (debugging symbols) +FreeBSD-mtree-15.1p2 Filesystem hierarchy management tool +FreeBSD-mtree-dbg-15.1 Filesystem hierarchy management tool (debugging symbols) +FreeBSD-natd-15.1p1 Userland Network Address Translation (NAT) for ipfw +FreeBSD-natd-dbg-15.1p1 Userland Network Address Translation (NAT) for ipfw (debugging symbols) +FreeBSD-natd-dbg-lib32-15.1p1 Userland Network Address Translation (NAT) for ipfw (32-bit debugging symbols) +FreeBSD-natd-dev-15.1p1 Userland Network Address Translation (NAT) for ipfw (development files) +FreeBSD-natd-dev-lib32-15.1p1 Userland Network Address Translation (NAT) for ipfw (32-bit development files) +FreeBSD-natd-lib32-15.1p1 Userland Network Address Translation (NAT) for ipfw (32-bit libraries) +FreeBSD-ncurses-15.1 ncurses terminal control library +FreeBSD-ncurses-dbg-15.1 ncurses terminal control library (debugging symbols) +FreeBSD-ncurses-dbg-lib32-15.1 ncurses terminal control library (32-bit debugging symbols) +FreeBSD-ncurses-dev-15.1 ncurses terminal control library (development files) +FreeBSD-ncurses-dev-lib32-15.1 ncurses terminal control library (32-bit development files) +FreeBSD-ncurses-lib-15.1 ncurses terminal control library (libraries) +FreeBSD-ncurses-lib32-15.1 ncurses terminal control library (32-bit libraries) +FreeBSD-netmap-15.1 Userland netmap support +FreeBSD-netmap-dbg-15.1 Userland netmap support (debugging symbols) +FreeBSD-netmap-dbg-lib32-15.1 Userland netmap support (32-bit debugging symbols) +FreeBSD-netmap-dev-15.1 Userland netmap support (development files) +FreeBSD-netmap-dev-lib32-15.1 Userland netmap support (32-bit development files) +FreeBSD-netmap-lib32-15.1 Userland netmap support (32-bit libraries) +FreeBSD-newsyslog-15.1 Create and rotate system log files +FreeBSD-newsyslog-dbg-15.1 Create and rotate system log files (debugging symbols) +FreeBSD-nfs-15.1 NFS client and server utilities +FreeBSD-nfs-dbg-15.1 NFS client and server utilities (debugging symbols) +FreeBSD-ntp-15.1p2 Network Time Protocol (NTP) daemon +FreeBSD-ntp-dbg-15.1p2 Network Time Protocol (NTP) daemon (debugging symbols) +FreeBSD-nuageinit-15.1 cloud-init configuration support +FreeBSD-nvme-tools-15.1 NVMe utilities +FreeBSD-nvme-tools-dbg-15.1 NVMe utilities (debugging symbols) +FreeBSD-openssl-15.1 OpenSSL Transport Layer Security (TLS) library +FreeBSD-openssl-dbg-15.1p4 OpenSSL Transport Layer Security (TLS) library (debugging symbols) +FreeBSD-openssl-dbg-lib32-15.1p4 OpenSSL Transport Layer Security (TLS) library (32-bit debugging symbols) +FreeBSD-openssl-dev-15.1p4 OpenSSL Transport Layer Security (TLS) library (development files) +FreeBSD-openssl-dev-lib32-15.1p4 OpenSSL Transport Layer Security (TLS) library (32-bit development files) +FreeBSD-openssl-lib-15.1p4 OpenSSL Transport Layer Security (TLS) library (libraries) +FreeBSD-openssl-lib32-15.1p4 OpenSSL Transport Layer Security (TLS) library (32-bit libraries) +FreeBSD-pam-15.1 Modular user authentication facility +FreeBSD-pam-dbg-15.1 Modular user authentication facility (debugging symbols) +FreeBSD-pam-dbg-lib32-15.1 Modular user authentication facility (32-bit debugging symbols) +FreeBSD-pam-dev-15.1 Modular user authentication facility (development files) +FreeBSD-pam-dev-lib32-15.1 Modular user authentication facility (32-bit development files) +FreeBSD-pam-lib-15.1 Modular user authentication facility (libraries) +FreeBSD-pam-lib32-15.1 Modular user authentication facility (32-bit libraries) +FreeBSD-periodic-15.1 Run periodic system functions +FreeBSD-pf-15.1 OpenBSD packet filter +FreeBSD-pf-dbg-15.1 OpenBSD packet filter (debugging symbols) +FreeBSD-pf-dev-15.1 OpenBSD packet filter (development files) +FreeBSD-pkg-bootstrap-15.1 pkg(7) bootstrap utility +FreeBSD-pkg-bootstrap-dbg-15.1 pkg(7) bootstrap utility (debugging symbols) +FreeBSD-pmc-15.1p2 Support for hardware performance counters +FreeBSD-pmc-dbg-15.1p2 Support for hardware performance counters (debugging symbols) +FreeBSD-pmc-dbg-lib32-15.1 Support for hardware performance counters (32-bit debugging symbols) +FreeBSD-pmc-dev-15.1 Support for hardware performance counters (development files) +FreeBSD-pmc-dev-lib32-15.1 Support for hardware performance counters (32-bit development files) +FreeBSD-pmc-lib32-15.1 Support for hardware performance counters (32-bit libraries) +FreeBSD-powerd-15.1 System power control utility +FreeBSD-powerd-dbg-15.1 System power control utility (debugging symbols) +FreeBSD-ppp-15.1p3 Point-to-Point Protocol (PPP) utilities +FreeBSD-ppp-dbg-15.1p3 Point-to-Point Protocol (PPP) utilities (debugging symbols) +FreeBSD-quotacheck-15.1 Filesystem quota consistency checker +FreeBSD-quotacheck-dbg-15.1 Filesystem quota consistency checker (debugging symbols) +FreeBSD-rc-15.1 rc(8) subsystem +FreeBSD-rc-dbg-15.1 rc(8) subsystem (debugging symbols) +FreeBSD-rcmds-15.1p4 BSD/SunOS remote status commands +FreeBSD-rcmds-dbg-15.1p4 BSD/SunOS remote status commands (debugging symbols) +FreeBSD-rdma-15.1 Remote Direct Memory Access (RDMA) and InfiniBand utilities +FreeBSD-rdma-dbg-15.1 Remote Direct Memory Access (RDMA) and InfiniBand utilities (debugging symbols) +FreeBSD-rescue-15.1p4 Rescue system +FreeBSD-resolvconf-15.1 A framework for managing multiple DNS configurations +FreeBSD-rip-15.1 RIP routing protocol +FreeBSD-rip-dbg-15.1 RIP routing protocol (debugging symbols) +FreeBSD-runtime-15.1p4 Core system +FreeBSD-runtime-dbg-15.1p4 Core system (debugging symbols) +FreeBSD-runtime-dbg-lib32-15.1p4 Core system (32-bit debugging symbols) +FreeBSD-runtime-dev-15.1p4 Core system (development files) +FreeBSD-runtime-dev-lib32-15.1p4 Core system (32-bit development files) +FreeBSD-runtime-lib32-15.1p4 Core system (32-bit libraries) +FreeBSD-sendmail-15.1 sendmail mail transport agent +FreeBSD-sendmail-dbg-15.1 sendmail mail transport agent (debugging symbols) +FreeBSD-set-base-15.1 Base system (metapackage) +FreeBSD-set-base-dbg-15.1 Base system debug symbols (metapackage) +FreeBSD-set-devel-15.1 Development tools (metapackage) +FreeBSD-set-devel-dbg-15.1 Development tools debugging symbols (metapackage) +FreeBSD-set-kernels-15.1 Base system kernels (metapackage) +FreeBSD-set-kernels-dbg-15.1 Base system kernels debugging symbols (metapackage) +FreeBSD-set-lib32-15.1 32-bit compatibility libraries (metapackage) +FreeBSD-set-lib32-dbg-15.1 32-bit compatibility library debugging symbols (metapackage) +FreeBSD-set-minimal-15.1 Basic multi-user system (metapackage) +FreeBSD-set-minimal-dbg-15.1 Basic multi-user system debugging symbols (metapackage) +FreeBSD-set-optional-15.1 Optional base system software (metapackage) +FreeBSD-set-optional-dbg-15.1 Optional software debug symbols (metapackage) +FreeBSD-set-tests-15.1 System test suite +FreeBSD-smbutils-15.1 SMB network filesystem utilities +FreeBSD-smbutils-dbg-15.1 SMB network filesystem utilities (debugging symbols) +FreeBSD-smbutils-dbg-lib32-15.1 SMB network filesystem utilities (32-bit debugging symbols) +FreeBSD-smbutils-dev-15.1 SMB network filesystem utilities (development files) +FreeBSD-smbutils-dev-lib32-15.1 SMB network filesystem utilities (32-bit development files) +FreeBSD-smbutils-lib32-15.1 SMB network filesystem utilities (32-bit libraries) +FreeBSD-sound-15.1p4 Audio utilities +FreeBSD-sound-dbg-15.1p4 Audio utilities (debugging symbols) +FreeBSD-sound-dbg-lib32-15.1 Audio utilities (32-bit debugging symbols) +FreeBSD-sound-dev-15.1 Audio utilities (development files) +FreeBSD-sound-dev-lib32-15.1 Audio utilities (32-bit development files) +FreeBSD-sound-lib32-15.1 Audio utilities (32-bit libraries) +FreeBSD-ssh-15.1p4 OpenSSH Secure Shell client and server +FreeBSD-ssh-dbg-15.1p4 OpenSSH Secure Shell client and server (debugging symbols) +FreeBSD-ssh-dbg-lib32-15.1 OpenSSH Secure Shell client and server (32-bit debugging symbols) +FreeBSD-ssh-dev-15.1 OpenSSH Secure Shell client and server (development files) +FreeBSD-ssh-dev-lib32-15.1 OpenSSH Secure Shell client and server (32-bit development files) +FreeBSD-ssh-lib32-15.1 OpenSSH Secure Shell client and server (32-bit libraries) +FreeBSD-syscons-data-15.1 syscons(4) fonts and keymaps +FreeBSD-syslogd-15.1p4 System logging daemon +FreeBSD-syslogd-dbg-15.1p4 System logging daemon (debugging symbols) +FreeBSD-tcpd-15.1 TCP Wrappers access control facility +FreeBSD-tcpd-dbg-15.1 TCP Wrappers access control facility (debugging symbols) +FreeBSD-tcpd-dbg-lib32-15.1 TCP Wrappers access control facility (32-bit debugging symbols) +FreeBSD-tcpd-dev-15.1 TCP Wrappers access control facility (development files) +FreeBSD-tcpd-dev-lib32-15.1 TCP Wrappers access control facility (32-bit development files) +FreeBSD-tcpd-lib32-15.1 TCP Wrappers access control facility (32-bit libraries) +FreeBSD-telnet-15.1 TELNET client +FreeBSD-telnet-dbg-15.1 TELNET client (debugging symbols) +FreeBSD-tests-15.1p4 Test suite +FreeBSD-tests-dbg-15.1p4 Test suite (debugging symbols) +FreeBSD-toolchain-15.1p4 Utilities for program development +FreeBSD-toolchain-dbg-15.1p4 Utilities for program development (debugging symbols) +FreeBSD-toolchain-dev-15.1 Utilities for program development (development files) +FreeBSD-toolchain-dev-lib32-15.1 Utilities for program development (32-bit development files) +FreeBSD-ufs-15.1 UFS filesystem support +FreeBSD-ufs-dbg-15.1 UFS filesystem support (debugging symbols) +FreeBSD-ufs-dbg-lib32-15.1 UFS filesystem support (32-bit debugging symbols) +FreeBSD-ufs-dev-15.1 UFS filesystem support (development files) +FreeBSD-ufs-dev-lib32-15.1 UFS filesystem support (32-bit development files) +FreeBSD-ufs-lib-15.1 UFS filesystem support (libraries) +FreeBSD-ufs-lib32-15.1 UFS filesystem support (32-bit libraries) +FreeBSD-utilities-15.1p4 Non-vital programs and libraries +FreeBSD-utilities-dbg-15.1p4 Non-vital programs and libraries (debugging symbols) +FreeBSD-utilities-dbg-lib32-15.1p4 Non-vital programs and libraries (32-bit debugging symbols) +FreeBSD-utilities-dev-15.1p4 Non-vital programs and libraries (development files) +FreeBSD-utilities-dev-lib32-15.1p4 Non-vital programs and libraries (32-bit development files) +FreeBSD-utilities-lib32-15.1p4 Non-vital programs and libraries (32-bit libraries) +FreeBSD-vi-15.1 Text editor +FreeBSD-vi-dbg-15.1 Text editor (debugging symbols) +FreeBSD-vt-data-15.1 vt(4) fonts and keymaps +FreeBSD-wpa-15.1 IEEE Std 802.11 WPA Supplicant +FreeBSD-wpa-dbg-15.1 IEEE Std 802.11 WPA Supplicant (debugging symbols) +FreeBSD-xz-15.1p4 LZMA2 data compression +FreeBSD-xz-dbg-15.1p4 LZMA2 data compression (debugging symbols) +FreeBSD-xz-dbg-lib32-15.1 LZMA2 data compression (32-bit debugging symbols) +FreeBSD-xz-dev-15.1 LZMA2 data compression (development files) +FreeBSD-xz-dev-lib32-15.1 LZMA2 data compression (32-bit development files) +FreeBSD-xz-lib-15.1 LZMA2 data compression (libraries) +FreeBSD-xz-lib32-15.1 LZMA2 data compression (32-bit libraries) +FreeBSD-yp-15.1 Yellow Pages (YP) / Network Information Service (NIS) +FreeBSD-yp-dbg-15.1 Yellow Pages (YP) / Network Information Service (NIS) (debugging symbols) +FreeBSD-zfs-15.1 ZFS filesystem support +FreeBSD-zfs-dbg-15.1p1 ZFS filesystem support (debugging symbols) +FreeBSD-zfs-dbg-lib32-15.1p1 ZFS filesystem support (32-bit debugging symbols) +FreeBSD-zfs-dev-15.1p1 ZFS filesystem support (development files) +FreeBSD-zfs-dev-lib32-15.1p1 ZFS filesystem support (32-bit development files) +FreeBSD-zfs-lib-15.1p1 ZFS filesystem support (libraries) +FreeBSD-zfs-lib32-15.1p1 ZFS filesystem support (32-bit libraries) +FreeBSD-zlib-15.1 DEFLATE (gzip) data compression library +FreeBSD-zlib-dbg-15.1 DEFLATE (gzip) data compression library (debugging symbols) +FreeBSD-zlib-dbg-lib32-15.1 DEFLATE (gzip) data compression library (32-bit debugging symbols) +FreeBSD-zlib-dev-15.1 DEFLATE (gzip) data compression library (development files) +FreeBSD-zlib-dev-lib32-15.1 DEFLATE (gzip) data compression library (32-bit development files) +FreeBSD-zlib-lib32-15.1 DEFLATE (gzip) data compression library (32-bit libraries) +FreeBSD-zoneinfo-15.1p4 Timezone database +FreeBSD-zstd-15.1 Fast, lossless compression algorithm +FreeBSD-zstd-dbg-15.1 Fast, lossless compression algorithm (debugging symbols) +FreeBSD-zstd-dbg-lib32-15.1 Fast, lossless compression algorithm (32-bit debugging symbols) +FreeBSD-zstd-dev-15.1 Fast, lossless compression algorithm (development files) +FreeBSD-zstd-dev-lib32-15.1 Fast, lossless compression algorithm (32-bit development files) +FreeBSD-zstd-lib-15.1 Fast, lossless compression algorithm (libraries) +FreeBSD-zstd-lib32-15.1 Fast, lossless compression algorithm (32-bit libraries) +expat-2.8.2 XML 1.0 parser written in C +firstboot-pkg-upgrade-1.2 Update the system using pkg when it first boots +gettext-runtime-1.0_1 GNU gettext runtime libraries and programs +glib-2.86.4,2 Some useful routines of C programming (current stable version) +indexinfo-0.3.1_1 Utility to regenerate the GNU info page index +libffi-3.6.0 Foreign Function Interface +libiconv-1.18_1 Character set conversion library +mpdecimal-4.0.1 C/C++ arbitrary precision decimal floating point libraries +pcre2-10.47_1 Perl Compatible Regular Expressions library, version 2 +pkg-2.7.5 Package manager +py312-packaging-26.2 Core utilities for Python packages +python312-3.12.14 Interpreted object-oriented programming language +qemu-guest-agent-11.0.2 QEMU CPU Emulator (guest agent) +readline-8.3.3 Library for editing command lines as they are typed +sudo-1.9.17p2_2 Allow others to run commands as root diff --git a/tests/fixtures/freebsd-vm/pkg_query_n_t_v_t_o_t_R_t_c.txt b/tests/fixtures/freebsd-vm/pkg_query_n_t_v_t_o_t_R_t_c.txt new file mode 100644 index 0000000..ad7bcc1 --- /dev/null +++ b/tests/fixtures/freebsd-vm/pkg_query_n_t_v_t_o_t_R_t_c.txt @@ -0,0 +1,514 @@ +FreeBSD-acct 15.1p4 base/FreeBSD-acct FreeBSD-base System resource accounting +FreeBSD-acct-dbg 15.1p4 base/FreeBSD-acct-dbg FreeBSD-base System resource accounting (debugging symbols) +FreeBSD-acpi 15.1 base/FreeBSD-acpi FreeBSD-base Advanced Configuration and Power Interface (ACPI) utilities +FreeBSD-acpi-dbg 15.1 base/FreeBSD-acpi-dbg FreeBSD-base Advanced Configuration and Power Interface (ACPI) utilities (debugging symbols) +FreeBSD-apm 15.1 base/FreeBSD-apm FreeBSD-base Intel / Microsoft APM BIOS utility +FreeBSD-apm-dbg 15.1 base/FreeBSD-apm-dbg FreeBSD-base Intel / Microsoft APM BIOS utility (debugging symbols) +FreeBSD-at 15.1 base/FreeBSD-at FreeBSD-base Scheduled and batch command utilities +FreeBSD-at-dbg 15.1 base/FreeBSD-at-dbg FreeBSD-base Scheduled and batch command utilities (debugging symbols) +FreeBSD-atf 15.1 base/FreeBSD-atf FreeBSD-base Automated Testing Framework +FreeBSD-atf-dbg 15.1 base/FreeBSD-atf-dbg FreeBSD-base Automated Testing Framework (debugging symbols) +FreeBSD-atf-dev 15.1 base/FreeBSD-atf-dev FreeBSD-base Automated Testing Framework (development files) +FreeBSD-atf-lib 15.1 base/FreeBSD-atf-lib FreeBSD-base Automated Testing Framework (libraries) +FreeBSD-audit 15.1p4 base/FreeBSD-audit FreeBSD-base OpenBSM auditing utilities +FreeBSD-audit-dbg 15.1p4 base/FreeBSD-audit-dbg FreeBSD-base OpenBSM auditing utilities (debugging symbols) +FreeBSD-audit-dbg-lib32 15.1 base/FreeBSD-audit-dbg-lib32 FreeBSD-base OpenBSM auditing utilities (32-bit debugging symbols) +FreeBSD-audit-dev 15.1 base/FreeBSD-audit-dev FreeBSD-base OpenBSM auditing utilities (development files) +FreeBSD-audit-dev-lib32 15.1 base/FreeBSD-audit-dev-lib32 FreeBSD-base OpenBSM auditing utilities (32-bit development files) +FreeBSD-audit-lib 15.1 base/FreeBSD-audit-lib FreeBSD-base OpenBSM auditing utilities (libraries) +FreeBSD-audit-lib32 15.1 base/FreeBSD-audit-lib32 FreeBSD-base OpenBSM auditing utilities (32-bit libraries) +FreeBSD-autofs 15.1p2 base/FreeBSD-autofs FreeBSD-base File system automounter +FreeBSD-autofs-dbg 15.1p2 base/FreeBSD-autofs-dbg FreeBSD-base File system automounter (debugging symbols) +FreeBSD-bhyve 15.1p4 base/FreeBSD-bhyve FreeBSD-base bhyve virtual machine hypervisor +FreeBSD-bhyve-dbg 15.1p4 base/FreeBSD-bhyve-dbg FreeBSD-base bhyve virtual machine hypervisor (debugging symbols) +FreeBSD-blocklist 15.1 base/FreeBSD-blocklist FreeBSD-base Network blocklist daemon +FreeBSD-blocklist-dbg 15.1 base/FreeBSD-blocklist-dbg FreeBSD-base Network blocklist daemon (debugging symbols) +FreeBSD-blocklist-dbg-lib32 15.1 base/FreeBSD-blocklist-dbg-lib32 FreeBSD-base Network blocklist daemon (32-bit debugging symbols) +FreeBSD-blocklist-dev 15.1 base/FreeBSD-blocklist-dev FreeBSD-base Network blocklist daemon (development files) +FreeBSD-blocklist-dev-lib32 15.1 base/FreeBSD-blocklist-dev-lib32 FreeBSD-base Network blocklist daemon (32-bit development files) +FreeBSD-blocklist-lib32 15.1 base/FreeBSD-blocklist-lib32 FreeBSD-base Network blocklist daemon (32-bit libraries) +FreeBSD-bluetooth 15.1 base/FreeBSD-bluetooth FreeBSD-base Bluetooth support +FreeBSD-bluetooth-dbg 15.1 base/FreeBSD-bluetooth-dbg FreeBSD-base Bluetooth support (debugging symbols) +FreeBSD-bluetooth-dbg-lib32 15.1 base/FreeBSD-bluetooth-dbg-lib32 FreeBSD-base Bluetooth support (32-bit debugging symbols) +FreeBSD-bluetooth-dev 15.1 base/FreeBSD-bluetooth-dev FreeBSD-base Bluetooth support (development files) +FreeBSD-bluetooth-dev-lib32 15.1 base/FreeBSD-bluetooth-dev-lib32 FreeBSD-base Bluetooth support (32-bit development files) +FreeBSD-bluetooth-lib 15.1 base/FreeBSD-bluetooth-lib FreeBSD-base Bluetooth support (libraries) +FreeBSD-bluetooth-lib32 15.1 base/FreeBSD-bluetooth-lib32 FreeBSD-base Bluetooth support (32-bit libraries) +FreeBSD-bmake 15.1 base/FreeBSD-bmake FreeBSD-base Program maintenance utility +FreeBSD-bmake-dbg 15.1 base/FreeBSD-bmake-dbg FreeBSD-base Program maintenance utility (debugging symbols) +FreeBSD-bootloader 15.1 base/FreeBSD-bootloader FreeBSD-base System boot loader +FreeBSD-bootloader-dbg 15.1 base/FreeBSD-bootloader-dbg FreeBSD-base System boot loader (debugging symbols) +FreeBSD-bootloader-dev 15.1 base/FreeBSD-bootloader-dev FreeBSD-base System boot loader (development files) +FreeBSD-bsdconfig 15.1 base/FreeBSD-bsdconfig FreeBSD-base System configuration utility +FreeBSD-bsdinstall 15.1 base/FreeBSD-bsdinstall FreeBSD-base System installer +FreeBSD-bsdinstall-dbg 15.1 base/FreeBSD-bsdinstall-dbg FreeBSD-base System installer (debugging symbols) +FreeBSD-bsnmp 15.1p1 base/FreeBSD-bsnmp FreeBSD-base Simple and extensible SNMP daemon +FreeBSD-bsnmp-dbg 15.1p1 base/FreeBSD-bsnmp-dbg FreeBSD-base Simple and extensible SNMP daemon (debugging symbols) +FreeBSD-bsnmp-dbg-lib32 15.1 base/FreeBSD-bsnmp-dbg-lib32 FreeBSD-base Simple and extensible SNMP daemon (32-bit debugging symbols) +FreeBSD-bsnmp-dev 15.1 base/FreeBSD-bsnmp-dev FreeBSD-base Simple and extensible SNMP daemon (development files) +FreeBSD-bsnmp-dev-lib32 15.1 base/FreeBSD-bsnmp-dev-lib32 FreeBSD-base Simple and extensible SNMP daemon (32-bit development files) +FreeBSD-bsnmp-lib32 15.1 base/FreeBSD-bsnmp-lib32 FreeBSD-base Simple and extensible SNMP daemon (32-bit libraries) +FreeBSD-bzip2 15.1 base/FreeBSD-bzip2 FreeBSD-base A block-sorting data compressor +FreeBSD-bzip2-dbg 15.1 base/FreeBSD-bzip2-dbg FreeBSD-base A block-sorting data compressor (debugging symbols) +FreeBSD-bzip2-dbg-lib32 15.1 base/FreeBSD-bzip2-dbg-lib32 FreeBSD-base A block-sorting data compressor (32-bit debugging symbols) +FreeBSD-bzip2-dev 15.1 base/FreeBSD-bzip2-dev FreeBSD-base A block-sorting data compressor (development files) +FreeBSD-bzip2-dev-lib32 15.1 base/FreeBSD-bzip2-dev-lib32 FreeBSD-base A block-sorting data compressor (32-bit development files) +FreeBSD-bzip2-lib 15.1 base/FreeBSD-bzip2-lib FreeBSD-base A block-sorting data compressor (libraries) +FreeBSD-bzip2-lib32 15.1 base/FreeBSD-bzip2-lib32 FreeBSD-base A block-sorting data compressor (32-bit libraries) +FreeBSD-caroot 15.1 base/FreeBSD-caroot FreeBSD-base Mozilla Root Store trusted TLS certificates +FreeBSD-ccdconfig 15.1 base/FreeBSD-ccdconfig FreeBSD-base Concatenated disk driver (ccd) configuration utility +FreeBSD-ccdconfig-dbg 15.1 base/FreeBSD-ccdconfig-dbg FreeBSD-base Concatenated disk driver (ccd) configuration utility (debugging symbols) +FreeBSD-certctl 15.1 base/FreeBSD-certctl FreeBSD-base Tool for managing trusted and untrusted TLS certificates +FreeBSD-certctl-dbg 15.1 base/FreeBSD-certctl-dbg FreeBSD-base Tool for managing trusted and untrusted TLS certificates (debugging symbols) +FreeBSD-clang 15.1p2 base/FreeBSD-clang FreeBSD-base The Clang C, C++, and Objective-C compiler +FreeBSD-clang-dbg 15.1p2 base/FreeBSD-clang-dbg FreeBSD-base The Clang C, C++, and Objective-C compiler (debugging symbols) +FreeBSD-clang-dev 15.1p1 base/FreeBSD-clang-dev FreeBSD-base The Clang C, C++, and Objective-C compiler (development files) +FreeBSD-clibs 15.1p4 base/FreeBSD-clibs FreeBSD-base Core runtime libraries +FreeBSD-clibs-dbg 15.1p4 base/FreeBSD-clibs-dbg FreeBSD-base Core runtime libraries (debugging symbols) +FreeBSD-clibs-dbg-lib32 15.1p4 base/FreeBSD-clibs-dbg-lib32 FreeBSD-base Core runtime libraries (32-bit debugging symbols) +FreeBSD-clibs-dev 15.1p4 base/FreeBSD-clibs-dev FreeBSD-base Core runtime libraries (development files) +FreeBSD-clibs-dev-lib32 15.1p4 base/FreeBSD-clibs-dev-lib32 FreeBSD-base Core runtime libraries (32-bit development files) +FreeBSD-clibs-lib32 15.1p4 base/FreeBSD-clibs-lib32 FreeBSD-base Core runtime libraries (32-bit libraries) +FreeBSD-console-tools 15.1p2 base/FreeBSD-console-tools FreeBSD-base Video console utilities +FreeBSD-console-tools-dbg 15.1p2 base/FreeBSD-console-tools-dbg FreeBSD-base Video console utilities (debugging symbols) +FreeBSD-cron 15.1 base/FreeBSD-cron FreeBSD-base Command scheduling facility +FreeBSD-cron-dbg 15.1 base/FreeBSD-cron-dbg FreeBSD-base Command scheduling facility (debugging symbols) +FreeBSD-csh 15.1 base/FreeBSD-csh FreeBSD-base C shell with file name completion and command line editing +FreeBSD-csh-dbg 15.1 base/FreeBSD-csh-dbg FreeBSD-base C shell with file name completion and command line editing (debugging symbols) +FreeBSD-ctf 15.1 base/FreeBSD-ctf FreeBSD-base Compact C Type Format (CTF) +FreeBSD-ctf-dbg 15.1 base/FreeBSD-ctf-dbg FreeBSD-base Compact C Type Format (CTF) (debugging symbols) +FreeBSD-ctf-dbg-lib32 15.1 base/FreeBSD-ctf-dbg-lib32 FreeBSD-base Compact C Type Format (CTF) (32-bit debugging symbols) +FreeBSD-ctf-dev 15.1 base/FreeBSD-ctf-dev FreeBSD-base Compact C Type Format (CTF) (development files) +FreeBSD-ctf-dev-lib32 15.1 base/FreeBSD-ctf-dev-lib32 FreeBSD-base Compact C Type Format (CTF) (32-bit development files) +FreeBSD-ctf-lib 15.1 base/FreeBSD-ctf-lib FreeBSD-base Compact C Type Format (CTF) (libraries) +FreeBSD-ctf-lib32 15.1 base/FreeBSD-ctf-lib32 FreeBSD-base Compact C Type Format (CTF) (32-bit libraries) +FreeBSD-ctl 15.1p4 base/FreeBSD-ctl FreeBSD-base CAM Target Layer / iSCSI target daemon +FreeBSD-ctl-dbg 15.1p4 base/FreeBSD-ctl-dbg FreeBSD-base CAM Target Layer / iSCSI target daemon (debugging symbols) +FreeBSD-cxgbe-tools 15.1 base/FreeBSD-cxgbe-tools FreeBSD-base Configuration utility for Chelsio cxbge(4) network interfaces +FreeBSD-cxgbe-tools-dbg 15.1 base/FreeBSD-cxgbe-tools-dbg FreeBSD-base Configuration utility for Chelsio cxbge(4) network interfaces (debugging symbols) +FreeBSD-devd 15.1 base/FreeBSD-devd FreeBSD-base Kernel event handling daemon +FreeBSD-devd-dbg 15.1 base/FreeBSD-devd-dbg FreeBSD-base Kernel event handling daemon (debugging symbols) +FreeBSD-devmatch 15.1 base/FreeBSD-devmatch FreeBSD-base Automatically load kernel drivers for attached hardware +FreeBSD-devmatch-dbg 15.1 base/FreeBSD-devmatch-dbg FreeBSD-base Automatically load kernel drivers for attached hardware (debugging symbols) +FreeBSD-devmatch-dbg-lib32 15.1 base/FreeBSD-devmatch-dbg-lib32 FreeBSD-base Automatically load kernel drivers for attached hardware (32-bit debugging symbols) +FreeBSD-devmatch-dev 15.1 base/FreeBSD-devmatch-dev FreeBSD-base Automatically load kernel drivers for attached hardware (development files) +FreeBSD-devmatch-dev-lib32 15.1 base/FreeBSD-devmatch-dev-lib32 FreeBSD-base Automatically load kernel drivers for attached hardware (32-bit development files) +FreeBSD-devmatch-lib32 15.1 base/FreeBSD-devmatch-lib32 FreeBSD-base Automatically load kernel drivers for attached hardware (32-bit libraries) +FreeBSD-dhclient 15.1p4 base/FreeBSD-dhclient FreeBSD-base Dynamic Host Configuration Protocol (DHCP) client +FreeBSD-dhclient-dbg 15.1p4 base/FreeBSD-dhclient-dbg FreeBSD-base Dynamic Host Configuration Protocol (DHCP) client (debugging symbols) +FreeBSD-diff3 15.1 base/FreeBSD-diff3 FreeBSD-base GNU 3-way file comparison and merge utility +FreeBSD-diff3-dbg 15.1 base/FreeBSD-diff3-dbg FreeBSD-base GNU 3-way file comparison and merge utility (debugging symbols) +FreeBSD-dma 15.1p4 base/FreeBSD-dma FreeBSD-base DragonFly Mail Agent +FreeBSD-dma-dbg 15.1p4 base/FreeBSD-dma-dbg FreeBSD-base DragonFly Mail Agent (debugging symbols) +FreeBSD-dtrace 15.1 base/FreeBSD-dtrace FreeBSD-base DTrace dynamic tracing framework +FreeBSD-dtrace-dbg 15.1 base/FreeBSD-dtrace-dbg FreeBSD-base DTrace dynamic tracing framework (debugging symbols) +FreeBSD-dtrace-dbg-lib32 15.1 base/FreeBSD-dtrace-dbg-lib32 FreeBSD-base DTrace dynamic tracing framework (32-bit debugging symbols) +FreeBSD-dtrace-dev 15.1 base/FreeBSD-dtrace-dev FreeBSD-base DTrace dynamic tracing framework (development files) +FreeBSD-dtrace-dev-lib32 15.1 base/FreeBSD-dtrace-dev-lib32 FreeBSD-base DTrace dynamic tracing framework (32-bit development files) +FreeBSD-dtrace-lib32 15.1 base/FreeBSD-dtrace-lib32 FreeBSD-base DTrace dynamic tracing framework (32-bit libraries) +FreeBSD-dwatch 15.1 base/FreeBSD-dwatch FreeBSD-base Watch processes as they trigger a particular DTrace probe +FreeBSD-ee 15.1 base/FreeBSD-ee FreeBSD-base Easy Editor +FreeBSD-ee-dbg 15.1 base/FreeBSD-ee-dbg FreeBSD-base Easy Editor (debugging symbols) +FreeBSD-efi-tools 15.1 base/FreeBSD-efi-tools FreeBSD-base Utilities for the Unified Extensible Firmware Interface (UEFI) +FreeBSD-efi-tools-dbg 15.1 base/FreeBSD-efi-tools-dbg FreeBSD-base Utilities for the Unified Extensible Firmware Interface (UEFI) (debugging symbols) +FreeBSD-efi-tools-dev 15.1 base/FreeBSD-efi-tools-dev FreeBSD-base Utilities for the Unified Extensible Firmware Interface (UEFI) (development files) +FreeBSD-examples 15.1 base/FreeBSD-examples FreeBSD-base System interface examples +FreeBSD-fd 15.1 base/FreeBSD-fd FreeBSD-base Floppy disk utilities +FreeBSD-fd-dbg 15.1 base/FreeBSD-fd-dbg FreeBSD-base Floppy disk utilities (debugging symbols) +FreeBSD-fetch 15.1 base/FreeBSD-fetch FreeBSD-base Retrieve a file from a remote URL +FreeBSD-fetch-dbg 15.1 base/FreeBSD-fetch-dbg FreeBSD-base Retrieve a file from a remote URL (debugging symbols) +FreeBSD-fetch-dbg-lib32 15.1 base/FreeBSD-fetch-dbg-lib32 FreeBSD-base Retrieve a file from a remote URL (32-bit debugging symbols) +FreeBSD-fetch-dev 15.1 base/FreeBSD-fetch-dev FreeBSD-base Retrieve a file from a remote URL (development files) +FreeBSD-fetch-dev-lib32 15.1 base/FreeBSD-fetch-dev-lib32 FreeBSD-base Retrieve a file from a remote URL (32-bit development files) +FreeBSD-fetch-lib32 15.1 base/FreeBSD-fetch-lib32 FreeBSD-base Retrieve a file from a remote URL (32-bit libraries) +FreeBSD-firmware-iwm 15.1 base/FreeBSD-firmware-iwm FreeBSD-base Firmware for iwm(4) Intel 802.11ac network interfaces +FreeBSD-flua 15.1 base/FreeBSD-flua FreeBSD-base Private Lua implementation +FreeBSD-flua-dbg 15.1 base/FreeBSD-flua-dbg FreeBSD-base Private Lua implementation (debugging symbols) +FreeBSD-flua-dev 15.1 base/FreeBSD-flua-dev FreeBSD-base Private Lua implementation (development files) +FreeBSD-ftp 15.1 base/FreeBSD-ftp FreeBSD-base File Transfer Protocol (FTP) client +FreeBSD-ftp-dbg 15.1 base/FreeBSD-ftp-dbg FreeBSD-base File Transfer Protocol (FTP) client (debugging symbols) +FreeBSD-fwget 15.1 base/FreeBSD-fwget FreeBSD-base Install firmware packages for the running system +FreeBSD-games 15.1p4 base/FreeBSD-games FreeBSD-base Games +FreeBSD-games-dbg 15.1p4 base/FreeBSD-games-dbg FreeBSD-base Games (debugging symbols) +FreeBSD-geom 15.1 base/FreeBSD-geom FreeBSD-base GEOM configuration utilities +FreeBSD-geom-dbg 15.1 base/FreeBSD-geom-dbg FreeBSD-base GEOM configuration utilities (debugging symbols) +FreeBSD-geom-dbg-lib32 15.1 base/FreeBSD-geom-dbg-lib32 FreeBSD-base GEOM configuration utilities (32-bit debugging symbols) +FreeBSD-geom-lib32 15.1 base/FreeBSD-geom-lib32 FreeBSD-base GEOM configuration utilities (32-bit libraries) +FreeBSD-ggate 15.1 base/FreeBSD-ggate FreeBSD-base GEOM Gate client and server +FreeBSD-ggate-dbg 15.1 base/FreeBSD-ggate-dbg FreeBSD-base GEOM Gate client and server (debugging symbols) +FreeBSD-gssd 15.1 base/FreeBSD-gssd FreeBSD-base gssd(8) daemon for kernel GSS-API +FreeBSD-gssd-dbg 15.1 base/FreeBSD-gssd-dbg FreeBSD-base gssd(8) daemon for kernel GSS-API (debugging symbols) +FreeBSD-hast 15.1p4 base/FreeBSD-hast FreeBSD-base Highly Available Storage daemon +FreeBSD-hast-dbg 15.1p4 base/FreeBSD-hast-dbg FreeBSD-base Highly Available Storage daemon (debugging symbols) +FreeBSD-hostapd 15.1 base/FreeBSD-hostapd FreeBSD-base IEEE Std 802.11 Access Point authentication daemon +FreeBSD-hostapd-dbg 15.1 base/FreeBSD-hostapd-dbg FreeBSD-base IEEE Std 802.11 Access Point authentication daemon (debugging symbols) +FreeBSD-hyperv-tools 15.1 base/FreeBSD-hyperv-tools FreeBSD-base Microsoft Hyper-V utilities +FreeBSD-hyperv-tools-dbg 15.1 base/FreeBSD-hyperv-tools-dbg FreeBSD-base Microsoft Hyper-V utilities (debugging symbols) +FreeBSD-inetd 15.1 base/FreeBSD-inetd FreeBSD-base Internet super-server +FreeBSD-inetd-dbg 15.1 base/FreeBSD-inetd-dbg FreeBSD-base Internet super-server (debugging symbols) +FreeBSD-ipf 15.1 base/FreeBSD-ipf FreeBSD-base IP Filter (ipf) packet filter management tools +FreeBSD-ipf-dbg 15.1 base/FreeBSD-ipf-dbg FreeBSD-base IP Filter (ipf) packet filter management tools (debugging symbols) +FreeBSD-ipfw 15.1 base/FreeBSD-ipfw FreeBSD-base ipfw (IP firewall) management utilities +FreeBSD-ipfw-dbg 15.1 base/FreeBSD-ipfw-dbg FreeBSD-base ipfw (IP firewall) management utilities (debugging symbols) +FreeBSD-iscsi 15.1p4 base/FreeBSD-iscsi FreeBSD-base iSCSI initiator +FreeBSD-iscsi-dbg 15.1p4 base/FreeBSD-iscsi-dbg FreeBSD-base iSCSI initiator (debugging symbols) +FreeBSD-jail 15.1p2 base/FreeBSD-jail FreeBSD-base Jail management tools +FreeBSD-jail-dbg 15.1p2 base/FreeBSD-jail-dbg FreeBSD-base Jail management tools (debugging symbols) +FreeBSD-kerberos 15.1 base/FreeBSD-kerberos FreeBSD-base Kerberos client +FreeBSD-kerberos-dbg 15.1 base/FreeBSD-kerberos-dbg FreeBSD-base Kerberos client (debugging symbols) +FreeBSD-kerberos-dbg-lib32 15.1 base/FreeBSD-kerberos-dbg-lib32 FreeBSD-base Kerberos client (32-bit debugging symbols) +FreeBSD-kerberos-dev 15.1 base/FreeBSD-kerberos-dev FreeBSD-base Kerberos client (development files) +FreeBSD-kerberos-dev-lib32 15.1 base/FreeBSD-kerberos-dev-lib32 FreeBSD-base Kerberos client (32-bit development files) +FreeBSD-kerberos-kdc 15.1 base/FreeBSD-kerberos-kdc FreeBSD-base Kerberos key distribution center +FreeBSD-kerberos-kdc-dbg 15.1 base/FreeBSD-kerberos-kdc-dbg FreeBSD-base Kerberos key distribution center (debugging symbols) +FreeBSD-kerberos-lib 15.1 base/FreeBSD-kerberos-lib FreeBSD-base Kerberos client (libraries) +FreeBSD-kerberos-lib32 15.1 base/FreeBSD-kerberos-lib32 FreeBSD-base Kerberos client (32-bit libraries) +FreeBSD-kernel-generic 15.1p4 base/FreeBSD-kernel-generic FreeBSD-base FreeBSD GENERIC Kernel +FreeBSD-kernel-generic-dbg 15.1p4 base/FreeBSD-kernel-generic-dbg FreeBSD-base FreeBSD GENERIC Kernel -dbg (debugging symbols) +FreeBSD-kernel-man 15.1p4 base/FreeBSD-kernel-man FreeBSD-base Kernel manual pages +FreeBSD-kyua 15.1 base/FreeBSD-kyua FreeBSD-base Testing framework for infrastructure software +FreeBSD-kyua-dbg 15.1 base/FreeBSD-kyua-dbg FreeBSD-base Testing framework for infrastructure software (debugging symbols) +FreeBSD-lib9p 15.1p2 base/FreeBSD-lib9p FreeBSD-base 9P network protocol library +FreeBSD-lib9p-dbg 15.1p2 base/FreeBSD-lib9p-dbg FreeBSD-base 9P network protocol library (debugging symbols) +FreeBSD-lib9p-dbg-lib32 15.1p2 base/FreeBSD-lib9p-dbg-lib32 FreeBSD-base 9P network protocol library (32-bit debugging symbols) +FreeBSD-lib9p-dev 15.1p2 base/FreeBSD-lib9p-dev FreeBSD-base 9P network protocol library (development files) +FreeBSD-lib9p-dev-lib32 15.1p2 base/FreeBSD-lib9p-dev-lib32 FreeBSD-base 9P network protocol library (32-bit development files) +FreeBSD-lib9p-lib32 15.1p2 base/FreeBSD-lib9p-lib32 FreeBSD-base 9P network protocol library (32-bit libraries) +FreeBSD-libarchive 15.1 base/FreeBSD-libarchive FreeBSD-base Library for reading and writing streaming archives +FreeBSD-libarchive-dbg 15.1 base/FreeBSD-libarchive-dbg FreeBSD-base Library for reading and writing streaming archives (debugging symbols) +FreeBSD-libarchive-dbg-lib32 15.1 base/FreeBSD-libarchive-dbg-lib32 FreeBSD-base Library for reading and writing streaming archives (32-bit debugging symbols) +FreeBSD-libarchive-dev 15.1 base/FreeBSD-libarchive-dev FreeBSD-base Library for reading and writing streaming archives (development files) +FreeBSD-libarchive-dev-lib32 15.1 base/FreeBSD-libarchive-dev-lib32 FreeBSD-base Library for reading and writing streaming archives (32-bit development files) +FreeBSD-libarchive-lib32 15.1 base/FreeBSD-libarchive-lib32 FreeBSD-base Library for reading and writing streaming archives (32-bit libraries) +FreeBSD-libbegemot 15.1 base/FreeBSD-libbegemot FreeBSD-base rpoll(3) interface for event-driven I/O +FreeBSD-libbegemot-dbg 15.1 base/FreeBSD-libbegemot-dbg FreeBSD-base rpoll(3) interface for event-driven I/O (debugging symbols) +FreeBSD-libbegemot-dbg-lib32 15.1 base/FreeBSD-libbegemot-dbg-lib32 FreeBSD-base rpoll(3) interface for event-driven I/O (32-bit debugging symbols) +FreeBSD-libbegemot-dev 15.1 base/FreeBSD-libbegemot-dev FreeBSD-base rpoll(3) interface for event-driven I/O (development files) +FreeBSD-libbegemot-dev-lib32 15.1 base/FreeBSD-libbegemot-dev-lib32 FreeBSD-base rpoll(3) interface for event-driven I/O (32-bit development files) +FreeBSD-libbegemot-lib32 15.1 base/FreeBSD-libbegemot-lib32 FreeBSD-base rpoll(3) interface for event-driven I/O (32-bit libraries) +FreeBSD-libblocksruntime 15.1 base/FreeBSD-libblocksruntime FreeBSD-base LLVM BlocksRuntime library +FreeBSD-libblocksruntime-dbg 15.1 base/FreeBSD-libblocksruntime-dbg FreeBSD-base LLVM BlocksRuntime library (debugging symbols) +FreeBSD-libblocksruntime-dbg-lib32 15.1 base/FreeBSD-libblocksruntime-dbg-lib32 FreeBSD-base LLVM BlocksRuntime library (32-bit debugging symbols) +FreeBSD-libblocksruntime-dev 15.1 base/FreeBSD-libblocksruntime-dev FreeBSD-base LLVM BlocksRuntime library (development files) +FreeBSD-libblocksruntime-dev-lib32 15.1 base/FreeBSD-libblocksruntime-dev-lib32 FreeBSD-base LLVM BlocksRuntime library (32-bit development files) +FreeBSD-libblocksruntime-lib32 15.1 base/FreeBSD-libblocksruntime-lib32 FreeBSD-base LLVM BlocksRuntime library (32-bit libraries) +FreeBSD-libbsdstat 15.1 base/FreeBSD-libbsdstat FreeBSD-base Periodic statistics library +FreeBSD-libbsdstat-dbg 15.1 base/FreeBSD-libbsdstat-dbg FreeBSD-base Periodic statistics library (debugging symbols) +FreeBSD-libbsdstat-dbg-lib32 15.1 base/FreeBSD-libbsdstat-dbg-lib32 FreeBSD-base Periodic statistics library (32-bit debugging symbols) +FreeBSD-libbsdstat-dev 15.1 base/FreeBSD-libbsdstat-dev FreeBSD-base Periodic statistics library (development files) +FreeBSD-libbsdstat-dev-lib32 15.1 base/FreeBSD-libbsdstat-dev-lib32 FreeBSD-base Periodic statistics library (32-bit development files) +FreeBSD-libbsdstat-lib32 15.1 base/FreeBSD-libbsdstat-lib32 FreeBSD-base Periodic statistics library (32-bit libraries) +FreeBSD-libcasper 15.1p4 base/FreeBSD-libcasper FreeBSD-base Casper library +FreeBSD-libcasper-dbg 15.1p4 base/FreeBSD-libcasper-dbg FreeBSD-base Casper library (debugging symbols) +FreeBSD-libcasper-dbg-lib32 15.1p4 base/FreeBSD-libcasper-dbg-lib32 FreeBSD-base Casper library (32-bit debugging symbols) +FreeBSD-libcasper-dev 15.1 base/FreeBSD-libcasper-dev FreeBSD-base Casper library (development files) +FreeBSD-libcasper-dev-lib32 15.1 base/FreeBSD-libcasper-dev-lib32 FreeBSD-base Casper library (32-bit development files) +FreeBSD-libcasper-lib32 15.1p4 base/FreeBSD-libcasper-lib32 FreeBSD-base Casper library (32-bit libraries) +FreeBSD-libcompat-dev 15.1 base/FreeBSD-libcompat-dev FreeBSD-base Compatibility library (development files) +FreeBSD-libcompat-dev-lib32 15.1 base/FreeBSD-libcompat-dev-lib32 FreeBSD-base Compatibility library (32-bit development files) +FreeBSD-libcompiler_rt-dev 15.1 base/FreeBSD-libcompiler_rt-dev FreeBSD-base LLVM compiler_rt library (development files) +FreeBSD-libcompiler_rt-dev-lib32 15.1 base/FreeBSD-libcompiler_rt-dev-lib32 FreeBSD-base LLVM compiler_rt library (32-bit development files) +FreeBSD-libcuse 15.1 base/FreeBSD-libcuse FreeBSD-base Userland character device library +FreeBSD-libcuse-dbg 15.1 base/FreeBSD-libcuse-dbg FreeBSD-base Userland character device library (debugging symbols) +FreeBSD-libcuse-dbg-lib32 15.1 base/FreeBSD-libcuse-dbg-lib32 FreeBSD-base Userland character device library (32-bit debugging symbols) +FreeBSD-libcuse-dev 15.1 base/FreeBSD-libcuse-dev FreeBSD-base Userland character device library (development files) +FreeBSD-libcuse-dev-lib32 15.1 base/FreeBSD-libcuse-dev-lib32 FreeBSD-base Userland character device library (32-bit development files) +FreeBSD-libcuse-lib32 15.1 base/FreeBSD-libcuse-lib32 FreeBSD-base Userland character device library (32-bit libraries) +FreeBSD-libdwarf 15.1 base/FreeBSD-libdwarf FreeBSD-base DWARF access library +FreeBSD-libdwarf-dbg 15.1 base/FreeBSD-libdwarf-dbg FreeBSD-base DWARF access library (debugging symbols) +FreeBSD-libdwarf-dbg-lib32 15.1 base/FreeBSD-libdwarf-dbg-lib32 FreeBSD-base DWARF access library (32-bit debugging symbols) +FreeBSD-libdwarf-dev 15.1 base/FreeBSD-libdwarf-dev FreeBSD-base DWARF access library (development files) +FreeBSD-libdwarf-dev-lib32 15.1 base/FreeBSD-libdwarf-dev-lib32 FreeBSD-base DWARF access library (32-bit development files) +FreeBSD-libdwarf-lib32 15.1 base/FreeBSD-libdwarf-lib32 FreeBSD-base DWARF access library (32-bit libraries) +FreeBSD-libevent1 15.1p2 base/FreeBSD-libevent1 FreeBSD-base Private libevent1 library +FreeBSD-libevent1-dbg 15.1p2 base/FreeBSD-libevent1-dbg FreeBSD-base Private libevent1 library (debugging symbols) +FreeBSD-libevent1-dbg-lib32 15.1p2 base/FreeBSD-libevent1-dbg-lib32 FreeBSD-base Private libevent1 library (32-bit debugging symbols) +FreeBSD-libevent1-dev 15.1p2 base/FreeBSD-libevent1-dev FreeBSD-base Private libevent1 library (development files) +FreeBSD-libevent1-dev-lib32 15.1p2 base/FreeBSD-libevent1-dev-lib32 FreeBSD-base Private libevent1 library (32-bit development files) +FreeBSD-libevent1-lib32 15.1p2 base/FreeBSD-libevent1-lib32 FreeBSD-base Private libevent1 library (32-bit libraries) +FreeBSD-libexecinfo 15.1 base/FreeBSD-libexecinfo FreeBSD-base NetBSD stack backtrace library +FreeBSD-libexecinfo-dbg 15.1 base/FreeBSD-libexecinfo-dbg FreeBSD-base NetBSD stack backtrace library (debugging symbols) +FreeBSD-libexecinfo-dbg-lib32 15.1 base/FreeBSD-libexecinfo-dbg-lib32 FreeBSD-base NetBSD stack backtrace library (32-bit debugging symbols) +FreeBSD-libexecinfo-dev 15.1 base/FreeBSD-libexecinfo-dev FreeBSD-base NetBSD stack backtrace library (development files) +FreeBSD-libexecinfo-dev-lib32 15.1 base/FreeBSD-libexecinfo-dev-lib32 FreeBSD-base NetBSD stack backtrace library (32-bit development files) +FreeBSD-libexecinfo-lib32 15.1 base/FreeBSD-libexecinfo-lib32 FreeBSD-base NetBSD stack backtrace library (32-bit libraries) +FreeBSD-libipt 15.1 base/FreeBSD-libipt FreeBSD-base Intel(R) Processor Trace decoder library +FreeBSD-libipt-dbg 15.1 base/FreeBSD-libipt-dbg FreeBSD-base Intel(R) Processor Trace decoder library (debugging symbols) +FreeBSD-libipt-dev 15.1 base/FreeBSD-libipt-dev FreeBSD-base Intel(R) Processor Trace decoder library (development files) +FreeBSD-libldns 15.1 base/FreeBSD-libldns FreeBSD-base Private LDNS library +FreeBSD-libldns-dbg 15.1 base/FreeBSD-libldns-dbg FreeBSD-base Private LDNS library (debugging symbols) +FreeBSD-libldns-dbg-lib32 15.1 base/FreeBSD-libldns-dbg-lib32 FreeBSD-base Private LDNS library (32-bit debugging symbols) +FreeBSD-libldns-dev 15.1 base/FreeBSD-libldns-dev FreeBSD-base Private LDNS library (development files) +FreeBSD-libldns-dev-lib32 15.1 base/FreeBSD-libldns-dev-lib32 FreeBSD-base Private LDNS library (32-bit development files) +FreeBSD-libldns-lib32 15.1 base/FreeBSD-libldns-lib32 FreeBSD-base Private LDNS library (32-bit libraries) +FreeBSD-libmagic 15.1 base/FreeBSD-libmagic FreeBSD-base Magic number recognition library +FreeBSD-libmagic-dbg 15.1 base/FreeBSD-libmagic-dbg FreeBSD-base Magic number recognition library (debugging symbols) +FreeBSD-libmagic-dbg-lib32 15.1 base/FreeBSD-libmagic-dbg-lib32 FreeBSD-base Magic number recognition library (32-bit debugging symbols) +FreeBSD-libmagic-dev 15.1 base/FreeBSD-libmagic-dev FreeBSD-base Magic number recognition library (development files) +FreeBSD-libmagic-dev-lib32 15.1 base/FreeBSD-libmagic-dev-lib32 FreeBSD-base Magic number recognition library (32-bit development files) +FreeBSD-libmagic-lib32 15.1 base/FreeBSD-libmagic-lib32 FreeBSD-base Magic number recognition library (32-bit libraries) +FreeBSD-libmilter 15.1 base/FreeBSD-libmilter FreeBSD-base sendmail Mail Filter API library +FreeBSD-libmilter-dbg 15.1 base/FreeBSD-libmilter-dbg FreeBSD-base sendmail Mail Filter API library (debugging symbols) +FreeBSD-libmilter-dbg-lib32 15.1 base/FreeBSD-libmilter-dbg-lib32 FreeBSD-base sendmail Mail Filter API library (32-bit debugging symbols) +FreeBSD-libmilter-dev 15.1 base/FreeBSD-libmilter-dev FreeBSD-base sendmail Mail Filter API library (development files) +FreeBSD-libmilter-dev-lib32 15.1 base/FreeBSD-libmilter-dev-lib32 FreeBSD-base sendmail Mail Filter API library (32-bit development files) +FreeBSD-libmilter-lib32 15.1 base/FreeBSD-libmilter-lib32 FreeBSD-base sendmail Mail Filter API library (32-bit libraries) +FreeBSD-libpathconv 15.1 base/FreeBSD-libpathconv FreeBSD-base Library for handling relative and absolute pathnames +FreeBSD-libpathconv-dbg 15.1 base/FreeBSD-libpathconv-dbg FreeBSD-base Library for handling relative and absolute pathnames (debugging symbols) +FreeBSD-libpathconv-dbg-lib32 15.1 base/FreeBSD-libpathconv-dbg-lib32 FreeBSD-base Library for handling relative and absolute pathnames (32-bit debugging symbols) +FreeBSD-libpathconv-dev 15.1 base/FreeBSD-libpathconv-dev FreeBSD-base Library for handling relative and absolute pathnames (development files) +FreeBSD-libpathconv-dev-lib32 15.1 base/FreeBSD-libpathconv-dev-lib32 FreeBSD-base Library for handling relative and absolute pathnames (32-bit development files) +FreeBSD-libpathconv-lib32 15.1 base/FreeBSD-libpathconv-lib32 FreeBSD-base Library for handling relative and absolute pathnames (32-bit libraries) +FreeBSD-librpcsec_gss 15.1 base/FreeBSD-librpcsec_gss FreeBSD-base RPCSEC_GSS library +FreeBSD-librpcsec_gss-dbg 15.1 base/FreeBSD-librpcsec_gss-dbg FreeBSD-base RPCSEC_GSS library (debugging symbols) +FreeBSD-librpcsec_gss-dbg-lib32 15.1 base/FreeBSD-librpcsec_gss-dbg-lib32 FreeBSD-base RPCSEC_GSS library (32-bit debugging symbols) +FreeBSD-librpcsec_gss-dev 15.1 base/FreeBSD-librpcsec_gss-dev FreeBSD-base RPCSEC_GSS library (development files) +FreeBSD-librpcsec_gss-dev-lib32 15.1 base/FreeBSD-librpcsec_gss-dev-lib32 FreeBSD-base RPCSEC_GSS library (32-bit development files) +FreeBSD-librpcsec_gss-lib32 15.1 base/FreeBSD-librpcsec_gss-lib32 FreeBSD-base RPCSEC_GSS library (32-bit libraries) +FreeBSD-librss 15.1 base/FreeBSD-librss FreeBSD-base Receive-side scaling library +FreeBSD-librss-dbg 15.1 base/FreeBSD-librss-dbg FreeBSD-base Receive-side scaling library (debugging symbols) +FreeBSD-librss-dbg-lib32 15.1 base/FreeBSD-librss-dbg-lib32 FreeBSD-base Receive-side scaling library (32-bit debugging symbols) +FreeBSD-librss-dev 15.1 base/FreeBSD-librss-dev FreeBSD-base Receive-side scaling library (development files) +FreeBSD-librss-dev-lib32 15.1 base/FreeBSD-librss-dev-lib32 FreeBSD-base Receive-side scaling library (32-bit development files) +FreeBSD-librss-lib32 15.1 base/FreeBSD-librss-lib32 FreeBSD-base Receive-side scaling library (32-bit libraries) +FreeBSD-libsqlite3 15.1 base/FreeBSD-libsqlite3 FreeBSD-base Private SQLite library +FreeBSD-libsqlite3-dbg 15.1 base/FreeBSD-libsqlite3-dbg FreeBSD-base Private SQLite library (debugging symbols) +FreeBSD-libsqlite3-dbg-lib32 15.1 base/FreeBSD-libsqlite3-dbg-lib32 FreeBSD-base Private SQLite library (32-bit debugging symbols) +FreeBSD-libsqlite3-dev 15.1 base/FreeBSD-libsqlite3-dev FreeBSD-base Private SQLite library (development files) +FreeBSD-libsqlite3-dev-lib32 15.1 base/FreeBSD-libsqlite3-dev-lib32 FreeBSD-base Private SQLite library (32-bit development files) +FreeBSD-libsqlite3-lib32 15.1 base/FreeBSD-libsqlite3-lib32 FreeBSD-base Private SQLite library (32-bit libraries) +FreeBSD-libthread_db 15.1 base/FreeBSD-libthread_db FreeBSD-base Library for interacting with threaded processes +FreeBSD-libthread_db-dbg 15.1 base/FreeBSD-libthread_db-dbg FreeBSD-base Library for interacting with threaded processes (debugging symbols) +FreeBSD-libthread_db-dbg-lib32 15.1 base/FreeBSD-libthread_db-dbg-lib32 FreeBSD-base Library for interacting with threaded processes (32-bit debugging symbols) +FreeBSD-libthread_db-dev 15.1 base/FreeBSD-libthread_db-dev FreeBSD-base Library for interacting with threaded processes (development files) +FreeBSD-libthread_db-dev-lib32 15.1 base/FreeBSD-libthread_db-dev-lib32 FreeBSD-base Library for interacting with threaded processes (32-bit development files) +FreeBSD-libthread_db-lib32 15.1 base/FreeBSD-libthread_db-lib32 FreeBSD-base Library for interacting with threaded processes (32-bit libraries) +FreeBSD-libucl 15.1 base/FreeBSD-libucl FreeBSD-base Private Universal Configuration Library (UCL) library +FreeBSD-libucl-dbg 15.1 base/FreeBSD-libucl-dbg FreeBSD-base Private Universal Configuration Library (UCL) library (debugging symbols) +FreeBSD-libucl-dbg-lib32 15.1 base/FreeBSD-libucl-dbg-lib32 FreeBSD-base Private Universal Configuration Library (UCL) library (32-bit debugging symbols) +FreeBSD-libucl-dev 15.1 base/FreeBSD-libucl-dev FreeBSD-base Private Universal Configuration Library (UCL) library (development files) +FreeBSD-libucl-dev-lib32 15.1 base/FreeBSD-libucl-dev-lib32 FreeBSD-base Private Universal Configuration Library (UCL) library (32-bit development files) +FreeBSD-libucl-lib32 15.1 base/FreeBSD-libucl-lib32 FreeBSD-base Private Universal Configuration Library (UCL) library (32-bit libraries) +FreeBSD-libvgl 15.1 base/FreeBSD-libvgl FreeBSD-base Video Graphics Library +FreeBSD-libvgl-dbg 15.1 base/FreeBSD-libvgl-dbg FreeBSD-base Video Graphics Library (debugging symbols) +FreeBSD-libvgl-dbg-lib32 15.1 base/FreeBSD-libvgl-dbg-lib32 FreeBSD-base Video Graphics Library (32-bit debugging symbols) +FreeBSD-libvgl-dev 15.1 base/FreeBSD-libvgl-dev FreeBSD-base Video Graphics Library (development files) +FreeBSD-libvgl-dev-lib32 15.1 base/FreeBSD-libvgl-dev-lib32 FreeBSD-base Video Graphics Library (32-bit development files) +FreeBSD-libvgl-lib32 15.1 base/FreeBSD-libvgl-lib32 FreeBSD-base Video Graphics Library (32-bit libraries) +FreeBSD-libvmmapi 15.1p4 base/FreeBSD-libvmmapi FreeBSD-base Front-end library for the vmm(4) virtualization driver +FreeBSD-libvmmapi-dbg 15.1p4 base/FreeBSD-libvmmapi-dbg FreeBSD-base Front-end library for the vmm(4) virtualization driver (debugging symbols) +FreeBSD-libvmmapi-dev 15.1p4 base/FreeBSD-libvmmapi-dev FreeBSD-base Front-end library for the vmm(4) virtualization driver (development files) +FreeBSD-libyaml 15.1 base/FreeBSD-libyaml FreeBSD-base Private YAML library +FreeBSD-libyaml-dbg 15.1 base/FreeBSD-libyaml-dbg FreeBSD-base Private YAML library (debugging symbols) +FreeBSD-libyaml-dbg-lib32 15.1 base/FreeBSD-libyaml-dbg-lib32 FreeBSD-base Private YAML library (32-bit debugging symbols) +FreeBSD-libyaml-dev 15.1 base/FreeBSD-libyaml-dev FreeBSD-base Private YAML library (development files) +FreeBSD-libyaml-dev-lib32 15.1 base/FreeBSD-libyaml-dev-lib32 FreeBSD-base Private YAML library (32-bit development files) +FreeBSD-libyaml-lib32 15.1 base/FreeBSD-libyaml-lib32 FreeBSD-base Private YAML library (32-bit libraries) +FreeBSD-lld 15.1 base/FreeBSD-lld FreeBSD-base LLVM ELF link loader +FreeBSD-lld-dbg 15.1 base/FreeBSD-lld-dbg FreeBSD-base LLVM ELF link loader (debugging symbols) +FreeBSD-lldb 15.1 base/FreeBSD-lldb FreeBSD-base LLVM debugger +FreeBSD-lldb-dbg 15.1 base/FreeBSD-lldb-dbg FreeBSD-base LLVM debugger (debugging symbols) +FreeBSD-local-unbound 15.1 base/FreeBSD-local-unbound FreeBSD-base NLnet Labs Unbound DNS resolver +FreeBSD-local-unbound-dbg 15.1 base/FreeBSD-local-unbound-dbg FreeBSD-base NLnet Labs Unbound DNS resolver (debugging symbols) +FreeBSD-local-unbound-dbg-lib32 15.1 base/FreeBSD-local-unbound-dbg-lib32 FreeBSD-base NLnet Labs Unbound DNS resolver (32-bit debugging symbols) +FreeBSD-local-unbound-dev 15.1 base/FreeBSD-local-unbound-dev FreeBSD-base NLnet Labs Unbound DNS resolver (development files) +FreeBSD-local-unbound-dev-lib32 15.1 base/FreeBSD-local-unbound-dev-lib32 FreeBSD-base NLnet Labs Unbound DNS resolver (32-bit development files) +FreeBSD-local-unbound-lib32 15.1 base/FreeBSD-local-unbound-lib32 FreeBSD-base NLnet Labs Unbound DNS resolver (32-bit libraries) +FreeBSD-locales 15.1 base/FreeBSD-locales FreeBSD-base Locale definitions +FreeBSD-lp 15.1 base/FreeBSD-lp FreeBSD-base Print spooler +FreeBSD-lp-dbg 15.1 base/FreeBSD-lp-dbg FreeBSD-base Print spooler (debugging symbols) +FreeBSD-mandoc 15.1 base/FreeBSD-mandoc FreeBSD-base Online manual page reader +FreeBSD-mandoc-dbg 15.1 base/FreeBSD-mandoc-dbg FreeBSD-base Online manual page reader (debugging symbols) +FreeBSD-mlx-tools 15.1 base/FreeBSD-mlx-tools FreeBSD-base Utility for managing Connect-X 4/5/6 Mellanox network adapters +FreeBSD-mlx-tools-dbg 15.1 base/FreeBSD-mlx-tools-dbg FreeBSD-base Utility for managing Connect-X 4/5/6 Mellanox network adapters (debugging symbols) +FreeBSD-mtree 15.1p2 base/FreeBSD-mtree FreeBSD-base Filesystem hierarchy management tool +FreeBSD-mtree-dbg 15.1 base/FreeBSD-mtree-dbg FreeBSD-base Filesystem hierarchy management tool (debugging symbols) +FreeBSD-natd 15.1p1 base/FreeBSD-natd FreeBSD-base Userland Network Address Translation (NAT) for ipfw +FreeBSD-natd-dbg 15.1p1 base/FreeBSD-natd-dbg FreeBSD-base Userland Network Address Translation (NAT) for ipfw (debugging symbols) +FreeBSD-natd-dbg-lib32 15.1p1 base/FreeBSD-natd-dbg-lib32 FreeBSD-base Userland Network Address Translation (NAT) for ipfw (32-bit debugging symbols) +FreeBSD-natd-dev 15.1p1 base/FreeBSD-natd-dev FreeBSD-base Userland Network Address Translation (NAT) for ipfw (development files) +FreeBSD-natd-dev-lib32 15.1p1 base/FreeBSD-natd-dev-lib32 FreeBSD-base Userland Network Address Translation (NAT) for ipfw (32-bit development files) +FreeBSD-natd-lib32 15.1p1 base/FreeBSD-natd-lib32 FreeBSD-base Userland Network Address Translation (NAT) for ipfw (32-bit libraries) +FreeBSD-ncurses 15.1 base/FreeBSD-ncurses FreeBSD-base ncurses terminal control library +FreeBSD-ncurses-dbg 15.1 base/FreeBSD-ncurses-dbg FreeBSD-base ncurses terminal control library (debugging symbols) +FreeBSD-ncurses-dbg-lib32 15.1 base/FreeBSD-ncurses-dbg-lib32 FreeBSD-base ncurses terminal control library (32-bit debugging symbols) +FreeBSD-ncurses-dev 15.1 base/FreeBSD-ncurses-dev FreeBSD-base ncurses terminal control library (development files) +FreeBSD-ncurses-dev-lib32 15.1 base/FreeBSD-ncurses-dev-lib32 FreeBSD-base ncurses terminal control library (32-bit development files) +FreeBSD-ncurses-lib 15.1 base/FreeBSD-ncurses-lib FreeBSD-base ncurses terminal control library (libraries) +FreeBSD-ncurses-lib32 15.1 base/FreeBSD-ncurses-lib32 FreeBSD-base ncurses terminal control library (32-bit libraries) +FreeBSD-netmap 15.1 base/FreeBSD-netmap FreeBSD-base Userland netmap support +FreeBSD-netmap-dbg 15.1 base/FreeBSD-netmap-dbg FreeBSD-base Userland netmap support (debugging symbols) +FreeBSD-netmap-dbg-lib32 15.1 base/FreeBSD-netmap-dbg-lib32 FreeBSD-base Userland netmap support (32-bit debugging symbols) +FreeBSD-netmap-dev 15.1 base/FreeBSD-netmap-dev FreeBSD-base Userland netmap support (development files) +FreeBSD-netmap-dev-lib32 15.1 base/FreeBSD-netmap-dev-lib32 FreeBSD-base Userland netmap support (32-bit development files) +FreeBSD-netmap-lib32 15.1 base/FreeBSD-netmap-lib32 FreeBSD-base Userland netmap support (32-bit libraries) +FreeBSD-newsyslog 15.1 base/FreeBSD-newsyslog FreeBSD-base Create and rotate system log files +FreeBSD-newsyslog-dbg 15.1 base/FreeBSD-newsyslog-dbg FreeBSD-base Create and rotate system log files (debugging symbols) +FreeBSD-nfs 15.1 base/FreeBSD-nfs FreeBSD-base NFS client and server utilities +FreeBSD-nfs-dbg 15.1 base/FreeBSD-nfs-dbg FreeBSD-base NFS client and server utilities (debugging symbols) +FreeBSD-ntp 15.1p2 base/FreeBSD-ntp FreeBSD-base Network Time Protocol (NTP) daemon +FreeBSD-ntp-dbg 15.1p2 base/FreeBSD-ntp-dbg FreeBSD-base Network Time Protocol (NTP) daemon (debugging symbols) +FreeBSD-nuageinit 15.1 base/FreeBSD-nuageinit FreeBSD-base cloud-init configuration support +FreeBSD-nvme-tools 15.1 base/FreeBSD-nvme-tools FreeBSD-base NVMe utilities +FreeBSD-nvme-tools-dbg 15.1 base/FreeBSD-nvme-tools-dbg FreeBSD-base NVMe utilities (debugging symbols) +FreeBSD-openssl 15.1 base/FreeBSD-openssl FreeBSD-base OpenSSL Transport Layer Security (TLS) library +FreeBSD-openssl-dbg 15.1p4 base/FreeBSD-openssl-dbg FreeBSD-base OpenSSL Transport Layer Security (TLS) library (debugging symbols) +FreeBSD-openssl-dbg-lib32 15.1p4 base/FreeBSD-openssl-dbg-lib32 FreeBSD-base OpenSSL Transport Layer Security (TLS) library (32-bit debugging symbols) +FreeBSD-openssl-dev 15.1p4 base/FreeBSD-openssl-dev FreeBSD-base OpenSSL Transport Layer Security (TLS) library (development files) +FreeBSD-openssl-dev-lib32 15.1p4 base/FreeBSD-openssl-dev-lib32 FreeBSD-base OpenSSL Transport Layer Security (TLS) library (32-bit development files) +FreeBSD-openssl-lib 15.1p4 base/FreeBSD-openssl-lib FreeBSD-base OpenSSL Transport Layer Security (TLS) library (libraries) +FreeBSD-openssl-lib32 15.1p4 base/FreeBSD-openssl-lib32 FreeBSD-base OpenSSL Transport Layer Security (TLS) library (32-bit libraries) +FreeBSD-pam 15.1 base/FreeBSD-pam FreeBSD-base Modular user authentication facility +FreeBSD-pam-dbg 15.1 base/FreeBSD-pam-dbg FreeBSD-base Modular user authentication facility (debugging symbols) +FreeBSD-pam-dbg-lib32 15.1 base/FreeBSD-pam-dbg-lib32 FreeBSD-base Modular user authentication facility (32-bit debugging symbols) +FreeBSD-pam-dev 15.1 base/FreeBSD-pam-dev FreeBSD-base Modular user authentication facility (development files) +FreeBSD-pam-dev-lib32 15.1 base/FreeBSD-pam-dev-lib32 FreeBSD-base Modular user authentication facility (32-bit development files) +FreeBSD-pam-lib 15.1 base/FreeBSD-pam-lib FreeBSD-base Modular user authentication facility (libraries) +FreeBSD-pam-lib32 15.1 base/FreeBSD-pam-lib32 FreeBSD-base Modular user authentication facility (32-bit libraries) +FreeBSD-periodic 15.1 base/FreeBSD-periodic FreeBSD-base Run periodic system functions +FreeBSD-pf 15.1 base/FreeBSD-pf FreeBSD-base OpenBSD packet filter +FreeBSD-pf-dbg 15.1 base/FreeBSD-pf-dbg FreeBSD-base OpenBSD packet filter (debugging symbols) +FreeBSD-pf-dev 15.1 base/FreeBSD-pf-dev FreeBSD-base OpenBSD packet filter (development files) +FreeBSD-pkg-bootstrap 15.1 base/FreeBSD-pkg-bootstrap FreeBSD-base pkg(7) bootstrap utility +FreeBSD-pkg-bootstrap-dbg 15.1 base/FreeBSD-pkg-bootstrap-dbg FreeBSD-base pkg(7) bootstrap utility (debugging symbols) +FreeBSD-pmc 15.1p2 base/FreeBSD-pmc FreeBSD-base Support for hardware performance counters +FreeBSD-pmc-dbg 15.1p2 base/FreeBSD-pmc-dbg FreeBSD-base Support for hardware performance counters (debugging symbols) +FreeBSD-pmc-dbg-lib32 15.1 base/FreeBSD-pmc-dbg-lib32 FreeBSD-base Support for hardware performance counters (32-bit debugging symbols) +FreeBSD-pmc-dev 15.1 base/FreeBSD-pmc-dev FreeBSD-base Support for hardware performance counters (development files) +FreeBSD-pmc-dev-lib32 15.1 base/FreeBSD-pmc-dev-lib32 FreeBSD-base Support for hardware performance counters (32-bit development files) +FreeBSD-pmc-lib32 15.1 base/FreeBSD-pmc-lib32 FreeBSD-base Support for hardware performance counters (32-bit libraries) +FreeBSD-powerd 15.1 base/FreeBSD-powerd FreeBSD-base System power control utility +FreeBSD-powerd-dbg 15.1 base/FreeBSD-powerd-dbg FreeBSD-base System power control utility (debugging symbols) +FreeBSD-ppp 15.1p3 base/FreeBSD-ppp FreeBSD-base Point-to-Point Protocol (PPP) utilities +FreeBSD-ppp-dbg 15.1p3 base/FreeBSD-ppp-dbg FreeBSD-base Point-to-Point Protocol (PPP) utilities (debugging symbols) +FreeBSD-quotacheck 15.1 base/FreeBSD-quotacheck FreeBSD-base Filesystem quota consistency checker +FreeBSD-quotacheck-dbg 15.1 base/FreeBSD-quotacheck-dbg FreeBSD-base Filesystem quota consistency checker (debugging symbols) +FreeBSD-rc 15.1 base/FreeBSD-rc FreeBSD-base rc(8) subsystem +FreeBSD-rc-dbg 15.1 base/FreeBSD-rc-dbg FreeBSD-base rc(8) subsystem (debugging symbols) +FreeBSD-rcmds 15.1p4 base/FreeBSD-rcmds FreeBSD-base BSD/SunOS remote status commands +FreeBSD-rcmds-dbg 15.1p4 base/FreeBSD-rcmds-dbg FreeBSD-base BSD/SunOS remote status commands (debugging symbols) +FreeBSD-rdma 15.1 base/FreeBSD-rdma FreeBSD-base Remote Direct Memory Access (RDMA) and InfiniBand utilities +FreeBSD-rdma-dbg 15.1 base/FreeBSD-rdma-dbg FreeBSD-base Remote Direct Memory Access (RDMA) and InfiniBand utilities (debugging symbols) +FreeBSD-rescue 15.1p4 base/FreeBSD-rescue FreeBSD-base Rescue system +FreeBSD-resolvconf 15.1 base/FreeBSD-resolvconf FreeBSD-base A framework for managing multiple DNS configurations +FreeBSD-rip 15.1 base/FreeBSD-rip FreeBSD-base RIP routing protocol +FreeBSD-rip-dbg 15.1 base/FreeBSD-rip-dbg FreeBSD-base RIP routing protocol (debugging symbols) +FreeBSD-runtime 15.1p4 base/FreeBSD-runtime FreeBSD-base Core system +FreeBSD-runtime-dbg 15.1p4 base/FreeBSD-runtime-dbg FreeBSD-base Core system (debugging symbols) +FreeBSD-runtime-dbg-lib32 15.1p4 base/FreeBSD-runtime-dbg-lib32 FreeBSD-base Core system (32-bit debugging symbols) +FreeBSD-runtime-dev 15.1p4 base/FreeBSD-runtime-dev FreeBSD-base Core system (development files) +FreeBSD-runtime-dev-lib32 15.1p4 base/FreeBSD-runtime-dev-lib32 FreeBSD-base Core system (32-bit development files) +FreeBSD-runtime-lib32 15.1p4 base/FreeBSD-runtime-lib32 FreeBSD-base Core system (32-bit libraries) +FreeBSD-sendmail 15.1 base/FreeBSD-sendmail FreeBSD-base sendmail mail transport agent +FreeBSD-sendmail-dbg 15.1 base/FreeBSD-sendmail-dbg FreeBSD-base sendmail mail transport agent (debugging symbols) +FreeBSD-set-base 15.1 base/FreeBSD-set-base FreeBSD-base Base system (metapackage) +FreeBSD-set-base-dbg 15.1 base/FreeBSD-set-base-dbg FreeBSD-base Base system debug symbols (metapackage) +FreeBSD-set-devel 15.1 base/FreeBSD-set-devel FreeBSD-base Development tools (metapackage) +FreeBSD-set-devel-dbg 15.1 base/FreeBSD-set-devel-dbg FreeBSD-base Development tools debugging symbols (metapackage) +FreeBSD-set-kernels 15.1 base/FreeBSD-set-kernels FreeBSD-base Base system kernels (metapackage) +FreeBSD-set-kernels-dbg 15.1 base/FreeBSD-set-kernels-dbg FreeBSD-base Base system kernels debugging symbols (metapackage) +FreeBSD-set-lib32 15.1 base/FreeBSD-set-lib32 FreeBSD-base 32-bit compatibility libraries (metapackage) +FreeBSD-set-lib32-dbg 15.1 base/FreeBSD-set-lib32-dbg FreeBSD-base 32-bit compatibility library debugging symbols (metapackage) +FreeBSD-set-minimal 15.1 base/FreeBSD-set-minimal FreeBSD-base Basic multi-user system (metapackage) +FreeBSD-set-minimal-dbg 15.1 base/FreeBSD-set-minimal-dbg FreeBSD-base Basic multi-user system debugging symbols (metapackage) +FreeBSD-set-optional 15.1 base/FreeBSD-set-optional FreeBSD-base Optional base system software (metapackage) +FreeBSD-set-optional-dbg 15.1 base/FreeBSD-set-optional-dbg FreeBSD-base Optional software debug symbols (metapackage) +FreeBSD-set-tests 15.1 base/FreeBSD-set-tests FreeBSD-base System test suite +FreeBSD-smbutils 15.1 base/FreeBSD-smbutils FreeBSD-base SMB network filesystem utilities +FreeBSD-smbutils-dbg 15.1 base/FreeBSD-smbutils-dbg FreeBSD-base SMB network filesystem utilities (debugging symbols) +FreeBSD-smbutils-dbg-lib32 15.1 base/FreeBSD-smbutils-dbg-lib32 FreeBSD-base SMB network filesystem utilities (32-bit debugging symbols) +FreeBSD-smbutils-dev 15.1 base/FreeBSD-smbutils-dev FreeBSD-base SMB network filesystem utilities (development files) +FreeBSD-smbutils-dev-lib32 15.1 base/FreeBSD-smbutils-dev-lib32 FreeBSD-base SMB network filesystem utilities (32-bit development files) +FreeBSD-smbutils-lib32 15.1 base/FreeBSD-smbutils-lib32 FreeBSD-base SMB network filesystem utilities (32-bit libraries) +FreeBSD-sound 15.1p4 base/FreeBSD-sound FreeBSD-base Audio utilities +FreeBSD-sound-dbg 15.1p4 base/FreeBSD-sound-dbg FreeBSD-base Audio utilities (debugging symbols) +FreeBSD-sound-dbg-lib32 15.1 base/FreeBSD-sound-dbg-lib32 FreeBSD-base Audio utilities (32-bit debugging symbols) +FreeBSD-sound-dev 15.1 base/FreeBSD-sound-dev FreeBSD-base Audio utilities (development files) +FreeBSD-sound-dev-lib32 15.1 base/FreeBSD-sound-dev-lib32 FreeBSD-base Audio utilities (32-bit development files) +FreeBSD-sound-lib32 15.1 base/FreeBSD-sound-lib32 FreeBSD-base Audio utilities (32-bit libraries) +FreeBSD-ssh 15.1p4 base/FreeBSD-ssh FreeBSD-base OpenSSH Secure Shell client and server +FreeBSD-ssh-dbg 15.1p4 base/FreeBSD-ssh-dbg FreeBSD-base OpenSSH Secure Shell client and server (debugging symbols) +FreeBSD-ssh-dbg-lib32 15.1 base/FreeBSD-ssh-dbg-lib32 FreeBSD-base OpenSSH Secure Shell client and server (32-bit debugging symbols) +FreeBSD-ssh-dev 15.1 base/FreeBSD-ssh-dev FreeBSD-base OpenSSH Secure Shell client and server (development files) +FreeBSD-ssh-dev-lib32 15.1 base/FreeBSD-ssh-dev-lib32 FreeBSD-base OpenSSH Secure Shell client and server (32-bit development files) +FreeBSD-ssh-lib32 15.1 base/FreeBSD-ssh-lib32 FreeBSD-base OpenSSH Secure Shell client and server (32-bit libraries) +FreeBSD-syscons-data 15.1 base/FreeBSD-syscons-data FreeBSD-base syscons(4) fonts and keymaps +FreeBSD-syslogd 15.1p4 base/FreeBSD-syslogd FreeBSD-base System logging daemon +FreeBSD-syslogd-dbg 15.1p4 base/FreeBSD-syslogd-dbg FreeBSD-base System logging daemon (debugging symbols) +FreeBSD-tcpd 15.1 base/FreeBSD-tcpd FreeBSD-base TCP Wrappers access control facility +FreeBSD-tcpd-dbg 15.1 base/FreeBSD-tcpd-dbg FreeBSD-base TCP Wrappers access control facility (debugging symbols) +FreeBSD-tcpd-dbg-lib32 15.1 base/FreeBSD-tcpd-dbg-lib32 FreeBSD-base TCP Wrappers access control facility (32-bit debugging symbols) +FreeBSD-tcpd-dev 15.1 base/FreeBSD-tcpd-dev FreeBSD-base TCP Wrappers access control facility (development files) +FreeBSD-tcpd-dev-lib32 15.1 base/FreeBSD-tcpd-dev-lib32 FreeBSD-base TCP Wrappers access control facility (32-bit development files) +FreeBSD-tcpd-lib32 15.1 base/FreeBSD-tcpd-lib32 FreeBSD-base TCP Wrappers access control facility (32-bit libraries) +FreeBSD-telnet 15.1 base/FreeBSD-telnet FreeBSD-base TELNET client +FreeBSD-telnet-dbg 15.1 base/FreeBSD-telnet-dbg FreeBSD-base TELNET client (debugging symbols) +FreeBSD-tests 15.1p4 base/FreeBSD-tests FreeBSD-base Test suite +FreeBSD-tests-dbg 15.1p4 base/FreeBSD-tests-dbg FreeBSD-base Test suite (debugging symbols) +FreeBSD-toolchain 15.1p4 base/FreeBSD-toolchain FreeBSD-base Utilities for program development +FreeBSD-toolchain-dbg 15.1p4 base/FreeBSD-toolchain-dbg FreeBSD-base Utilities for program development (debugging symbols) +FreeBSD-toolchain-dev 15.1 base/FreeBSD-toolchain-dev FreeBSD-base Utilities for program development (development files) +FreeBSD-toolchain-dev-lib32 15.1 base/FreeBSD-toolchain-dev-lib32 FreeBSD-base Utilities for program development (32-bit development files) +FreeBSD-ufs 15.1 base/FreeBSD-ufs FreeBSD-base UFS filesystem support +FreeBSD-ufs-dbg 15.1 base/FreeBSD-ufs-dbg FreeBSD-base UFS filesystem support (debugging symbols) +FreeBSD-ufs-dbg-lib32 15.1 base/FreeBSD-ufs-dbg-lib32 FreeBSD-base UFS filesystem support (32-bit debugging symbols) +FreeBSD-ufs-dev 15.1 base/FreeBSD-ufs-dev FreeBSD-base UFS filesystem support (development files) +FreeBSD-ufs-dev-lib32 15.1 base/FreeBSD-ufs-dev-lib32 FreeBSD-base UFS filesystem support (32-bit development files) +FreeBSD-ufs-lib 15.1 base/FreeBSD-ufs-lib FreeBSD-base UFS filesystem support (libraries) +FreeBSD-ufs-lib32 15.1 base/FreeBSD-ufs-lib32 FreeBSD-base UFS filesystem support (32-bit libraries) +FreeBSD-utilities 15.1p4 base/FreeBSD-utilities FreeBSD-base Non-vital programs and libraries +FreeBSD-utilities-dbg 15.1p4 base/FreeBSD-utilities-dbg FreeBSD-base Non-vital programs and libraries (debugging symbols) +FreeBSD-utilities-dbg-lib32 15.1p4 base/FreeBSD-utilities-dbg-lib32 FreeBSD-base Non-vital programs and libraries (32-bit debugging symbols) +FreeBSD-utilities-dev 15.1p4 base/FreeBSD-utilities-dev FreeBSD-base Non-vital programs and libraries (development files) +FreeBSD-utilities-dev-lib32 15.1p4 base/FreeBSD-utilities-dev-lib32 FreeBSD-base Non-vital programs and libraries (32-bit development files) +FreeBSD-utilities-lib32 15.1p4 base/FreeBSD-utilities-lib32 FreeBSD-base Non-vital programs and libraries (32-bit libraries) +FreeBSD-vi 15.1 base/FreeBSD-vi FreeBSD-base Text editor +FreeBSD-vi-dbg 15.1 base/FreeBSD-vi-dbg FreeBSD-base Text editor (debugging symbols) +FreeBSD-vt-data 15.1 base/FreeBSD-vt-data FreeBSD-base vt(4) fonts and keymaps +FreeBSD-wpa 15.1 base/FreeBSD-wpa FreeBSD-base IEEE Std 802.11 WPA Supplicant +FreeBSD-wpa-dbg 15.1 base/FreeBSD-wpa-dbg FreeBSD-base IEEE Std 802.11 WPA Supplicant (debugging symbols) +FreeBSD-xz 15.1p4 base/FreeBSD-xz FreeBSD-base LZMA2 data compression +FreeBSD-xz-dbg 15.1p4 base/FreeBSD-xz-dbg FreeBSD-base LZMA2 data compression (debugging symbols) +FreeBSD-xz-dbg-lib32 15.1 base/FreeBSD-xz-dbg-lib32 FreeBSD-base LZMA2 data compression (32-bit debugging symbols) +FreeBSD-xz-dev 15.1 base/FreeBSD-xz-dev FreeBSD-base LZMA2 data compression (development files) +FreeBSD-xz-dev-lib32 15.1 base/FreeBSD-xz-dev-lib32 FreeBSD-base LZMA2 data compression (32-bit development files) +FreeBSD-xz-lib 15.1 base/FreeBSD-xz-lib FreeBSD-base LZMA2 data compression (libraries) +FreeBSD-xz-lib32 15.1 base/FreeBSD-xz-lib32 FreeBSD-base LZMA2 data compression (32-bit libraries) +FreeBSD-yp 15.1 base/FreeBSD-yp FreeBSD-base Yellow Pages (YP) / Network Information Service (NIS) +FreeBSD-yp-dbg 15.1 base/FreeBSD-yp-dbg FreeBSD-base Yellow Pages (YP) / Network Information Service (NIS) (debugging symbols) +FreeBSD-zfs 15.1 base/FreeBSD-zfs FreeBSD-base ZFS filesystem support +FreeBSD-zfs-dbg 15.1p1 base/FreeBSD-zfs-dbg FreeBSD-base ZFS filesystem support (debugging symbols) +FreeBSD-zfs-dbg-lib32 15.1p1 base/FreeBSD-zfs-dbg-lib32 FreeBSD-base ZFS filesystem support (32-bit debugging symbols) +FreeBSD-zfs-dev 15.1p1 base/FreeBSD-zfs-dev FreeBSD-base ZFS filesystem support (development files) +FreeBSD-zfs-dev-lib32 15.1p1 base/FreeBSD-zfs-dev-lib32 FreeBSD-base ZFS filesystem support (32-bit development files) +FreeBSD-zfs-lib 15.1p1 base/FreeBSD-zfs-lib FreeBSD-base ZFS filesystem support (libraries) +FreeBSD-zfs-lib32 15.1p1 base/FreeBSD-zfs-lib32 FreeBSD-base ZFS filesystem support (32-bit libraries) +FreeBSD-zlib 15.1 base/FreeBSD-zlib FreeBSD-base DEFLATE (gzip) data compression library +FreeBSD-zlib-dbg 15.1 base/FreeBSD-zlib-dbg FreeBSD-base DEFLATE (gzip) data compression library (debugging symbols) +FreeBSD-zlib-dbg-lib32 15.1 base/FreeBSD-zlib-dbg-lib32 FreeBSD-base DEFLATE (gzip) data compression library (32-bit debugging symbols) +FreeBSD-zlib-dev 15.1 base/FreeBSD-zlib-dev FreeBSD-base DEFLATE (gzip) data compression library (development files) +FreeBSD-zlib-dev-lib32 15.1 base/FreeBSD-zlib-dev-lib32 FreeBSD-base DEFLATE (gzip) data compression library (32-bit development files) +FreeBSD-zlib-lib32 15.1 base/FreeBSD-zlib-lib32 FreeBSD-base DEFLATE (gzip) data compression library (32-bit libraries) +FreeBSD-zoneinfo 15.1p4 base/FreeBSD-zoneinfo FreeBSD-base Timezone database +FreeBSD-zstd 15.1 base/FreeBSD-zstd FreeBSD-base Fast, lossless compression algorithm +FreeBSD-zstd-dbg 15.1 base/FreeBSD-zstd-dbg FreeBSD-base Fast, lossless compression algorithm (debugging symbols) +FreeBSD-zstd-dbg-lib32 15.1 base/FreeBSD-zstd-dbg-lib32 FreeBSD-base Fast, lossless compression algorithm (32-bit debugging symbols) +FreeBSD-zstd-dev 15.1 base/FreeBSD-zstd-dev FreeBSD-base Fast, lossless compression algorithm (development files) +FreeBSD-zstd-dev-lib32 15.1 base/FreeBSD-zstd-dev-lib32 FreeBSD-base Fast, lossless compression algorithm (32-bit development files) +FreeBSD-zstd-lib 15.1 base/FreeBSD-zstd-lib FreeBSD-base Fast, lossless compression algorithm (libraries) +FreeBSD-zstd-lib32 15.1 base/FreeBSD-zstd-lib32 FreeBSD-base Fast, lossless compression algorithm (32-bit libraries) +expat 2.8.2 textproc/expat2 FreeBSD-ports XML 1.0 parser written in C +firstboot-pkg-upgrade 1.2 sysutils/firstboot-pkg-upgrade FreeBSD-ports Update the system using pkg when it first boots +gettext-runtime 1.0_1 devel/gettext-runtime FreeBSD-ports GNU gettext runtime libraries and programs +glib 2.86.4,2 devel/glib20 FreeBSD-ports Some useful routines of C programming (current stable version) +indexinfo 0.3.1_1 print/indexinfo FreeBSD-ports Utility to regenerate the GNU info page index +libffi 3.6.0 devel/libffi FreeBSD-ports Foreign Function Interface +libiconv 1.18_1 converters/libiconv FreeBSD-ports Character set conversion library +mpdecimal 4.0.1 math/mpdecimal FreeBSD-ports C/C++ arbitrary precision decimal floating point libraries +pcre2 10.47_1 devel/pcre2 FreeBSD-ports Perl Compatible Regular Expressions library, version 2 +pkg 2.7.5 ports-mgmt/pkg FreeBSD-ports Package manager +py312-packaging 26.2 devel/py-packaging FreeBSD-ports Core utilities for Python packages +python312 3.12.14 lang/python312 FreeBSD-ports Interpreted object-oriented programming language +qemu-guest-agent 11.0.2 emulators/qemu FreeBSD-ports QEMU CPU Emulator (guest agent) +readline 8.3.3 devel/readline FreeBSD-ports Library for editing command lines as they are typed +sudo 1.9.17p2_2 security/sudo FreeBSD-ports Allow others to run commands as root diff --git a/tests/fixtures/freebsd-vm/pkg_repos_l.txt b/tests/fixtures/freebsd-vm/pkg_repos_l.txt new file mode 100644 index 0000000..9e89e89 --- /dev/null +++ b/tests/fixtures/freebsd-vm/pkg_repos_l.txt @@ -0,0 +1,3 @@ +FreeBSD-ports +FreeBSD-ports-kmods +FreeBSD-base diff --git a/tests/fixtures/freebsd-vm/pkg_upgrade_n.txt b/tests/fixtures/freebsd-vm/pkg_upgrade_n.txt new file mode 100644 index 0000000..9bb5921 --- /dev/null +++ b/tests/fixtures/freebsd-vm/pkg_upgrade_n.txt @@ -0,0 +1,11 @@ +Updating FreeBSD-ports repository catalogue... +FreeBSD-ports repository is up to date. +Updating FreeBSD-ports-kmods repository catalogue... +FreeBSD-ports-kmods repository is up to date. +Updating FreeBSD-base repository catalogue... +FreeBSD-base repository is up to date. +All repositories are up to date. +Checking for upgrades (1 candidates): . done +Processing candidates (1 candidates): . done +Checking integrity... done (0 conflicting) +Your packages are up to date. diff --git a/tests/fixtures/freebsd-vm/pkg_upgrade_n_r_FreeBSD_base.txt b/tests/fixtures/freebsd-vm/pkg_upgrade_n_r_FreeBSD_base.txt new file mode 100644 index 0000000..9bd8492 --- /dev/null +++ b/tests/fixtures/freebsd-vm/pkg_upgrade_n_r_FreeBSD_base.txt @@ -0,0 +1,7 @@ +Updating FreeBSD-base repository catalogue... +FreeBSD-base repository is up to date. +FreeBSD-base is up to date. +Checking for upgrades (1 candidates): . done +Processing candidates (1 candidates): . done +Checking integrity... done (0 conflicting) +Your packages are up to date. diff --git a/tests/fixtures/freebsd-vm/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt b/tests/fixtures/freebsd-vm/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt new file mode 100644 index 0000000..baaee9c --- /dev/null +++ b/tests/fixtures/freebsd-vm/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt @@ -0,0 +1,43 @@ +USER PID PPID %CPU %MEM VSZ RSS STAT STARTED COMMAND +root 0 0 0.0 0.0 0 528 DLs Wed Oct 7 21:02:09 2026 [kernel] +root 1 0 0.0 0.1 12716 1228 SLs Wed Oct 7 21:02:09 2026 /sbin/init +root 2 0 0.0 0.0 0 32 WL Wed Oct 7 21:02:09 2026 [clock] +root 3 0 0.0 0.0 0 48 DL Wed Oct 7 21:02:09 2026 [crypto] +root 4 0 0.0 0.0 0 48 DL Wed Oct 7 21:02:09 2026 [cam] +root 5 0 0.0 0.0 0 16 DL Wed Oct 7 21:02:09 2026 [busdma] +root 6 0 0.0 0.0 0 16 DL Wed Oct 7 21:02:09 2026 [rand_harvestq] +root 7 0 0.0 0.0 0 48 DL Wed Oct 7 21:02:09 2026 [pagedaemon] +root 8 0 0.0 0.0 0 16 DL Wed Oct 7 21:02:09 2026 [vmdaemon] +root 9 0 0.0 0.0 0 48 DL Wed Oct 7 21:02:09 2026 [bufdaemon] +root 10 0 0.0 0.0 0 16 DL Wed Oct 7 21:02:09 2026 [audit] +root 11 0 172.9 0.0 0 32 RNL Wed Oct 7 21:02:09 2026 [idle] +root 12 0 0.0 0.0 0 320 WL Wed Oct 7 21:02:09 2026 [intr] +root 13 0 0.0 0.0 0 48 DL Wed Oct 7 21:02:09 2026 [geom] +root 14 0 0.0 0.0 0 16 DL Wed Oct 7 21:02:09 2026 [vnlru] +root 15 0 0.0 0.0 0 16 DL Wed Oct 7 21:02:09 2026 [syncer] +root 759 1 0.0 0.1 14540 2728 Ss Wed Oct 7 21:02:15 2026 dhclient: system.syslog (dhclient) +root 762 1 0.0 0.1 14540 2912 Ss Wed Oct 7 21:02:15 2026 dhclient: vtnet0 [priv] (dhclient) +_dhcp 822 1 0.0 0.1 14544 2936 SCs Wed Oct 7 21:02:15 2026 dhclient: vtnet0 (dhclient) +root 823 1 0.0 0.2 15808 4164 Ss Wed Oct 7 21:02:15 2026 /sbin/devd +root 1104 1 0.0 0.1 14448 2976 SCs Wed Oct 7 21:02:15 2026 /usr/sbin/syslogd -s +root 1107 1 0.0 0.1 14448 2884 S Wed Oct 7 21:02:15 2026 syslogd: syslogd.casper (syslogd) +root 1108 1 0.0 0.1 14448 2792 Ss Wed Oct 7 21:02:15 2026 syslogd: system.net (syslogd) +root 1258 1 0.0 0.2 27356 4624 Ss Wed Oct 7 21:02:15 2026 /usr/local/bin/qemu-ga -d +root 1281 1 0.0 0.1 14304 2708 Ss Wed Oct 7 21:02:15 2026 /usr/sbin/cron -s +root 1331 1 0.0 0.5 25272 9688 Ss Wed Oct 7 21:02:15 2026 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups (sshd) +root 1347 1 0.0 0.1 14248 2520 Ss Wed Oct 7 21:02:15 2026 logger: system.syslog (logger) +root 2244 1331 0.0 0.6 25548 11668 Ss Wed Oct 7 21:02:31 2026 sshd-session: netork-user [priv] (sshd-session) +netork-user 2246 2244 0.0 0.6 25548 11936 S Wed Oct 7 21:02:31 2026 sshd-session: netork-user@notty (sshd-session) +netork-user 2247 2246 0.0 0.2 14848 3176 Rs Wed Oct 7 21:02:31 2026 ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command +root 1340 1 0.0 0.1 14764 2540 S Wed Oct 7 21:02:15 2026 /bin/sh -o verify /etc/rc autoboot +root 1341 1 0.0 0.1 14248 2540 SC Wed Oct 7 21:02:15 2026 logger -p daemon.notice -t fsck +root 1343 1340 0.0 0.1 14084 2288 SC Wed Oct 7 21:02:15 2026 sleep 60 +root 1362 1 0.0 0.1 14224 2452 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty 3wire ttyu0 +root 1354 1 0.0 0.1 14224 2460 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv0 +root 1355 1 0.0 0.1 14224 2464 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv1 +root 1356 1 0.0 0.1 14224 2468 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv2 +root 1357 1 0.0 0.1 14224 2460 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv3 +root 1358 1 0.0 0.1 14224 2456 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv4 +root 1359 1 0.0 0.1 14224 2456 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv5 +root 1360 1 0.0 0.1 14224 2452 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv6 +root 1361 1 0.0 0.1 14224 2464 Ss+ Wed Oct 7 21:02:15 2026 /usr/libexec/getty Pc ttyv7 diff --git a/tests/fixtures/freebsd-vm/service_e.txt b/tests/fixtures/freebsd-vm/service_e.txt new file mode 100644 index 0000000..399fe3b --- /dev/null +++ b/tests/fixtures/freebsd-vm/service_e.txt @@ -0,0 +1,32 @@ +/etc/rc.d/hostid +/etc/rc.d/growfs +/etc/rc.d/growfs_fstab +/etc/rc.d/hostid_save +/etc/rc.d/var_run +/etc/rc.d/kldxref +/etc/rc.d/devmatch +/etc/rc.d/nuageinit +/etc/rc.d/cleanvar +/etc/rc.d/ip6addrctl +/etc/rc.d/mixer +/etc/rc.d/rctl +/etc/rc.d/netif +/etc/rc.d/devd +/etc/rc.d/resolv +/etc/rc.d/os-release +/etc/rc.d/dmesg +/etc/rc.d/gptboot +/etc/rc.d/motd +/etc/rc.d/newsyslog +/etc/rc.d/virecover +/etc/rc.d/cleartmp +/etc/rc.d/nuageinit_post_net +/etc/rc.d/syslogd +/usr/local/etc/rc.d/firstboot_pkg_upgrade +/etc/rc.d/savecore +/etc/rc.d/utx +/usr/local/etc/rc.d/qemu-guest-agent +/etc/rc.d/nuageinit_user_data_script +/etc/rc.d/cron +/etc/rc.d/sshd +/etc/rc.d/bgfsck diff --git a/tests/fixtures/freebsd-vm/service_l.txt b/tests/fixtures/freebsd-vm/service_l.txt new file mode 100644 index 0000000..2166ed3 --- /dev/null +++ b/tests/fixtures/freebsd-vm/service_l.txt @@ -0,0 +1,173 @@ +DAEMON +FILESYSTEMS +LOGIN +NETWORKING +SERVERS +accounting +adjkerntz +apm +auditd +auditdistd +automount +automountd +autounmountd +bgfsck +blacklistd +blocklistd +bluetooth +bootparams +bridge +bsnmpd +bthidd +ccd +cfumass +cleanvar +cleartmp +cron +ctld +ddb +defaultroute +devd +devfs +devmatch +dhclient +dmesg +dnctl +dumpon +fsck +ftp-proxy +geli +geli2 +ggated +gptboot +growfs +growfs_fstab +gssd +hastd +hcsecd +hostapd +hostid +hostid_save +hostname +inetd +iovctl +ip6addrctl +ipfilter +ipfs +ipfw +ipfw_netflow +ipmon +ipnat +ippool +ipsec +iscsictl +iscsid +jail +kadmind +kdc +kld +kldxref +ldconfig +linux +local +local_unbound +localpkg +lockd +lpd +mdconfig +mdconfig2 +mixer +motd +mountcritlocal +mountcritremote +mountd +mountlate +moused +msconvd +msgs +natd +netif +netoptions +netwait +newsyslog +nfscbd +nfsclient +nfsd +nfsuserd +nisdomain +noshutdown +nscd +ntpd +ntpdate +nuageinit +nuageinit_post_net +nuageinit_user_data_script +os-release +pf +pflog +pfsync +power_profile +powerd +ppp +pppoed +pwcheck +quota +random +rarpd +rctl +resolv +rfcomm_pppd_server +root +route6d +routed +routing +rpcbind +rtadvd +rtsold +rwho +savecore +sdpd +securelevel +sendmail +serial +sshd +statd +static_arp +static_ndp +stf +swap +swaplate +syscons +sysctl +sysctl_lastload +syslogd +sysvipc +tlsclntd +tlsservd +tmp +ubthidhci +ugidfw +utx +var +var_run +virecover +virtual_oss +watchdogd +wpa_supplicant +ypbind +ypldap +yppasswdd +ypserv +ypset +ypupdated +ypxfrd +zfs +zfsbe +zfsd +zfskeys +zpool +zpoolreguid +zpoolupgrade +zvol +firstboot_pkg_upgrade +qemu-guest-agent diff --git a/tests/fixtures/freebsd-vm/service_qemu_guest_agent_status.txt b/tests/fixtures/freebsd-vm/service_qemu_guest_agent_status.txt new file mode 100644 index 0000000..caa689d --- /dev/null +++ b/tests/fixtures/freebsd-vm/service_qemu_guest_agent_status.txt @@ -0,0 +1 @@ +qemu_guest_agent is running as pid 1258. diff --git a/tests/fixtures/freebsd-vm/sockstat_l_4_6_P_tcp_udp_q.txt b/tests/fixtures/freebsd-vm/sockstat_l_4_6_P_tcp_udp_q.txt new file mode 100644 index 0000000..03be2ba --- /dev/null +++ b/tests/fixtures/freebsd-vm/sockstat_l_4_6_P_tcp_udp_q.txt @@ -0,0 +1,4 @@ +root sshd 1331 6 tcp6 *:22 *:* +root sshd 1331 7 tcp4 *:22 *:* +root syslogd 1104 6 udp6 *:514 *:* +root syslogd 1104 7 udp4 *:514 *:* diff --git a/tests/fixtures/freebsd-vm/swapinfo_k.txt b/tests/fixtures/freebsd-vm/swapinfo_k.txt new file mode 100644 index 0000000..e416a85 --- /dev/null +++ b/tests/fixtures/freebsd-vm/swapinfo_k.txt @@ -0,0 +1,2 @@ +Device 1K-blocks Used Avail Capacity +/dev/gpt/swapfs 1048576 0 1048576 0% diff --git a/tests/fixtures/freebsd-vm/sysctl_n_kern.hostname_kern.osrelease_hw.model_hw.ncpu_hw.ph.txt b/tests/fixtures/freebsd-vm/sysctl_n_kern.hostname_kern.osrelease_hw.model_hw.ncpu_hw.ph.txt new file mode 100644 index 0000000..7f07fa5 --- /dev/null +++ b/tests/fixtures/freebsd-vm/sysctl_n_kern.hostname_kern.osrelease_hw.model_hw.ncpu_hw.ph.txt @@ -0,0 +1,6 @@ +spike-freebsd2 +15.1-RELEASE-p4 +Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz +2 +2107088896 +{ sec = 1791406928, usec = 738224 } Wed Oct 7 21:02:08 2026 diff --git a/tests/fixtures/freebsd-vm/sysctl_n_vm.loadavg.txt b/tests/fixtures/freebsd-vm/sysctl_n_vm.loadavg.txt new file mode 100644 index 0000000..2c2cd22 --- /dev/null +++ b/tests/fixtures/freebsd-vm/sysctl_n_vm.loadavg.txt @@ -0,0 +1 @@ +{ 0.13 0.03 0.01 } diff --git a/tests/fixtures/freebsd-vm/sysrc_a.txt b/tests/fixtures/freebsd-vm/sysrc_a.txt new file mode 100644 index 0000000..ceb6653 --- /dev/null +++ b/tests/fixtures/freebsd-vm/sysrc_a.txt @@ -0,0 +1,10 @@ +dumpdev: AUTO +firstboot_pkg_upgrade_enable: YES +firstboot_pkg_upgrade_repos: FreeBSD-base +growfs_enable: YES +hostname: freebsd +ifconfig_DEFAULT: SYNCDHCP accept_rtadv +nuageinit_enable: YES +qemu_guest_agent_enable: YES +sshd_enable: YES +sshd_rsa_enable: NO diff --git a/tests/fixtures/freebsd-vm/sysrc_n_qemu_guest_agent_enable.txt b/tests/fixtures/freebsd-vm/sysrc_n_qemu_guest_agent_enable.txt new file mode 100644 index 0000000..f033a50 --- /dev/null +++ b/tests/fixtures/freebsd-vm/sysrc_n_qemu_guest_agent_enable.txt @@ -0,0 +1 @@ +YES diff --git a/tests/fixtures/freebsd-vm/uname_a.txt b/tests/fixtures/freebsd-vm/uname_a.txt new file mode 100644 index 0000000..5325198 --- /dev/null +++ b/tests/fixtures/freebsd-vm/uname_a.txt @@ -0,0 +1 @@ +FreeBSD spike-freebsd2 15.1-RELEASE-p4 FreeBSD 15.1-RELEASE-p4 releng/15.1-n283627-db6066678b33 GENERIC amd64 diff --git a/tests/fixtures/freebsd-vm/which_snmpd_bsnmpd.txt b/tests/fixtures/freebsd-vm/which_snmpd_bsnmpd.txt new file mode 100644 index 0000000..b7c9f10 --- /dev/null +++ b/tests/fixtures/freebsd-vm/which_snmpd_bsnmpd.txt @@ -0,0 +1 @@ +/usr/sbin/bsnmpd diff --git a/tests/fixtures/openbsd-vm/COMMANDS.txt b/tests/fixtures/openbsd-vm/COMMANDS.txt new file mode 100644 index 0000000..42b6223 --- /dev/null +++ b/tests/fixtures/openbsd-vm/COMMANDS.txt @@ -0,0 +1,32 @@ +uname -a +sysctl -n kern.hostname kern.ostype kern.osrelease kern.version +sysctl -n hw.model hw.ncpu hw.physmem hw.vendor hw.product hw.serialno hw.uuid +sysctl -n kern.boottime +uptime +ifconfig -a +netstat -rn +netstat -rn -f inet +netstat -rn -f inet6 +arp -an +ndp -an +netstat -an -f inet +netstat -an -f inet6 +sudo fstat -n | head -60 +pkg_info +pkg_info -q +sudo pkg_add -u -n +sudo syspatch -c +sudo syspatch -l +rcctl ls on +rcctl ls started +rcctl ls failed +cat /etc/passwd +ps -axww -o user,pid,ppid,%cpu,%mem,vsz,rss,stat,lstart,command +cat /etc/crontab +sudo crontab -l +df -k +swapctl -l +sysctl -n vm.loadavg +which snmpd +cat /etc/rc.conf.local +id diff --git a/tests/fixtures/openbsd-vm/arp_an.txt b/tests/fixtures/openbsd-vm/arp_an.txt new file mode 100644 index 0000000..d060bfc --- /dev/null +++ b/tests/fixtures/openbsd-vm/arp_an.txt @@ -0,0 +1,4 @@ +Host Ethernet Address Netif Expire Flags +10.0.2.2 52:55:0a:00:02:02 vio0 18m58s +10.0.2.3 52:55:0a:00:02:03 vio0 19m1s +10.0.2.15 bc:24:11:aa:bb:04 vio0 permanent l diff --git a/tests/fixtures/openbsd-vm/cat_etc_passwd.txt b/tests/fixtures/openbsd-vm/cat_etc_passwd.txt new file mode 100644 index 0000000..c712142 --- /dev/null +++ b/tests/fixtures/openbsd-vm/cat_etc_passwd.txt @@ -0,0 +1,70 @@ +root:*:0:0:Charlie &:/root:/bin/ksh +daemon:*:1:1:The devil himself:/root:/sbin/nologin +operator:*:2:5:System &:/operator:/sbin/nologin +bin:*:3:7:Binaries Commands and Source:/:/sbin/nologin +build:*:21:21:base and xenocara build:/var/empty:/bin/ksh +sshd:*:27:27:sshd privsep:/var/empty:/sbin/nologin +_portmap:*:28:28:portmap:/var/empty:/sbin/nologin +_identd:*:29:29:identd:/var/empty:/sbin/nologin +_rstatd:*:30:30:rpc.rstatd:/var/empty:/sbin/nologin +_rusersd:*:32:32:rpc.rusersd:/var/empty:/sbin/nologin +_fingerd:*:33:33:fingerd:/var/empty:/sbin/nologin +_x11:*:35:35:X Server:/var/empty:/sbin/nologin +_fc-cache:*:36:36:Font configuration cache:/var/empty:/sbin/nologin +_unwind:*:48:48:Unwind Daemon:/var/empty:/sbin/nologin +_traceroute:*:50:50:traceroute privdrop user:/var/empty:/sbin/nologin +_ping:*:51:51:ping privdrop user:/var/empty:/sbin/nologin +_unbound:*:53:53:Unbound Daemon:/var/unbound:/sbin/nologin +_dpb:*:54:54:dpb privsep:/var/empty:/sbin/nologin +_pbuild:*:55:55:dpb build user:/nonexistent:/sbin/nologin +_pfetch:*:56:56:dpb fetch user:/nonexistent:/sbin/nologin +_pkgfetch:*:57:57:pkg fetch user:/nonexistent:/sbin/nologin +_pkguntar:*:58:58:pkg untar user:/nonexistent:/sbin/nologin +_spamd:*:62:62:Spam Daemon:/var/empty:/sbin/nologin +www:*:67:67:HTTP Server:/var/www:/sbin/nologin +_isakmpd:*:68:68:isakmpd privsep:/var/empty:/sbin/nologin +_rpki-client:*:70:70:rpki-client user:/nonexistent:/sbin/nologin +_bgplgd:*:71:71:bgplgd Daemon:/nonexistent:/sbin/nologin +_syslogd:*:73:73:Syslog Daemon:/var/empty:/sbin/nologin +_pflogd:*:74:74:pflogd privsep:/var/empty:/sbin/nologin +_bgpd:*:75:75:BGP Daemon:/var/empty:/sbin/nologin +_tcpdump:*:76:76:tcpdump privsep:/var/empty:/sbin/nologin +_dhcp:*:77:77:DHCP programs:/var/empty:/sbin/nologin +_mopd:*:78:78:MOP Daemon:/var/empty:/sbin/nologin +_tftpd:*:79:79:TFTP Daemon:/var/empty:/sbin/nologin +_rbootd:*:80:80:rbootd Daemon:/var/empty:/sbin/nologin +_ppp:*:82:82:PPP utilities:/var/empty:/sbin/nologin +_ntp:*:83:83:NTP Daemon:/var/empty:/sbin/nologin +_ftp:*:84:84:FTP Daemon:/var/empty:/sbin/nologin +_ospfd:*:85:85:OSPF Daemon:/var/empty:/sbin/nologin +_hostapd:*:86:86:HostAP Daemon:/var/empty:/sbin/nologin +_dvmrpd:*:87:87:DVMRP Daemon:/var/empty:/sbin/nologin +_ripd:*:88:88:RIP Daemon:/var/empty:/sbin/nologin +_relayd:*:89:89:Relay Daemon:/var/empty:/sbin/nologin +_ospf6d:*:90:90:OSPF6 Daemon:/var/empty:/sbin/nologin +_snmpd:*:91:91:SNMP Daemon:/var/empty:/sbin/nologin +_ypldap:*:93:93:YP to LDAP Daemon:/var/empty:/sbin/nologin +_rad:*:94:94:IPv6 Router Advertisement Daemon:/var/empty:/sbin/nologin +_smtpd:*:95:95:SMTP Daemon:/var/empty:/sbin/nologin +_rwalld:*:96:96:rpc.rwalld:/var/empty:/sbin/nologin +_nsd:*:97:97:NSD Daemon:/var/empty:/sbin/nologin +_ldpd:*:98:98:LDP Daemon:/var/empty:/sbin/nologin +_sndio:*:99:99:sndio privsep:/var/empty:/sbin/nologin +_ldapd:*:100:100:LDAP Daemon:/var/empty:/sbin/nologin +_iked:*:101:101:IKEv2 Daemon:/var/empty:/sbin/nologin +_iscsid:*:102:102:iSCSI Daemon:/var/empty:/sbin/nologin +_smtpq:*:103:103:SMTP Daemon:/var/empty:/sbin/nologin +_file:*:104:104:file privsep:/var/empty:/sbin/nologin +_radiusd:*:105:105:RADIUS Daemon:/var/empty:/sbin/nologin +_eigrpd:*:106:106:EIGRP Daemon:/var/empty:/sbin/nologin +_vmd:*:107:107:VM Daemon:/var/empty:/sbin/nologin +_tftp_proxy:*:108:108:tftp proxy daemon:/nonexistent:/sbin/nologin +_ftp_proxy:*:109:109:ftp proxy daemon:/nonexistent:/sbin/nologin +_sndiop:*:110:110:sndio privileged user:/var/empty:/sbin/nologin +_syspatch:*:112:112:syspatch unprivileged user:/var/empty:/sbin/nologin +_slaacd:*:115:115:SLAAC Daemon:/var/empty:/sbin/nologin +_dhcp6leased:*:116:116:DHCP6Lease Daemon:/var/empty:/sbin/nologin +_lldpd:*:119:119:LLDP Daemon:/var/empty:/sbin/nologin +nobody:*:32767:32767:Unprivileged user:/nonexistent:/sbin/nologin +netork-user:*:1000:1000::/home/netork-user:/bin/ksh +hashtest:*:1001:1001::/home/hashtest:/bin/ksh diff --git a/tests/fixtures/openbsd-vm/cat_etc_rc.conf.local.txt b/tests/fixtures/openbsd-vm/cat_etc_rc.conf.local.txt new file mode 100644 index 0000000..fd536dd --- /dev/null +++ b/tests/fixtures/openbsd-vm/cat_etc_rc.conf.local.txt @@ -0,0 +1 @@ +pkg_scripts=cloudinitlocal cloudinit cloudconfig cloudfinal qemu_ga diff --git a/tests/fixtures/openbsd-vm/crontab_l.txt b/tests/fixtures/openbsd-vm/crontab_l.txt new file mode 100644 index 0000000..ea3d862 --- /dev/null +++ b/tests/fixtures/openbsd-vm/crontab_l.txt @@ -0,0 +1,19 @@ +# +SHELL=/bin/sh +PATH=/bin:/sbin:/usr/bin:/usr/sbin +HOME=/var/log +# +#minute hour mday month wday [flags] command +# +# rotate log files every hour, if necessary +0 * * * * /usr/bin/newsyslog +# send log file notifications, if necessary +#1-59 * * * * /usr/bin/newsyslog -m +# +# do daily/weekly/monthly maintenance +30 1 * * * /bin/sh /etc/daily +30 3 * * 6 /bin/sh /etc/weekly +30 5 1 * * /bin/sh /etc/monthly +#~ * * * * /usr/libexec/spamd-setup + +#~ * * * * -ns rpki-client -v && bgpctl reload diff --git a/tests/fixtures/openbsd-vm/df_k.txt b/tests/fixtures/openbsd-vm/df_k.txt new file mode 100644 index 0000000..21a4701 --- /dev/null +++ b/tests/fixtures/openbsd-vm/df_k.txt @@ -0,0 +1,10 @@ +Filesystem 1K-blocks Used Avail Capacity Mounted on +/dev/sd0a 148590 132976 8186 95% / +/dev/sd0k 11284654 38 10720384 1% /home +/dev/sd0e 1633278 14 1551602 1% /tmp +/dev/sd0d 2468798 1562784 782576 67% /usr +/dev/sd0g 948974 277644 623882 31% /usr/X11R6 +/dev/sd0h 2912174 299670 2466896 11% /usr/local +/dev/sd0j 5831982 2 5540382 1% /usr/obj +/dev/sd0i 2404686 2 2284450 1% /usr/src +/dev/sd0f 2546942 10948 2408648 1% /var diff --git a/tests/fixtures/openbsd-vm/fstat_n_head_60.txt b/tests/fixtures/openbsd-vm/fstat_n_head_60.txt new file mode 100644 index 0000000..292cba7 --- /dev/null +++ b/tests/fixtures/openbsd-vm/fstat_n_head_60.txt @@ -0,0 +1,60 @@ +USER CMD PID FD DEV INUM MODE R/W SZ|DV +root fstat 32180 text 4,3 77827 100555 r 22504 +root fstat 32180 wd 4,10 259200 40755 r 512 +root fstat 32180 0 pipe 0xfffffd8058c4e300 state: E +root fstat 32180 1 pipe 0xfffffd8058c4e0a0 state: +root fstat 32180 2 pipe 0xfffffd8058c4eee0 state: +netork-u head 91365 text 4,3 77838 100555 r 7832 +netork-u head 91365 wd 4,10 259200 40755 r 512 +netork-u head 91365 0 pipe 0xfffffd8058c4e0a0 state: R +netork-u head 91365 1 pipe 0xfffffd8058c4edb0 state: +netork-u head 91365 2 pipe 0xfffffd8058c4eee0 state: +root sudo 36413 text 4,7 77835 104555 r 280424 +root sudo 36413 wd 4,10 259200 40755 r 512 +root sudo 36413 0 pipe 0xfffffd8058c4e300 state: E +root sudo 36413 1 pipe 0xfffffd8058c4e0a0 state: +root sudo 36413 2 pipe 0xfffffd8058c4eee0 state: +root sudo 36413 4 4,0 14624 100644 re 40960 +root sudo 36413 5 pipe 0xfffffd8058c4e1d0 state: +root sudo 36413 6 pipe 0xfffffd8058c4e1d0 state: +root sudo 36413 7 4,0 15887 100440 re 1600 +netork-u ksh 71133 text 4,0 9621 100555 r 810120 +netork-u ksh 71133 wd 4,10 259200 40755 r 512 +netork-u ksh 71133 1 pipe 0xfffffd8058c4edb0 state: +netork-u ksh 71133 2 pipe 0xfffffd8058c4eee0 state: +netork-u ksh 71133 10 pipe 0xfffffd8058c4eb50 state: E +netork-u sshd-session 37638 text 4,3 181662 100511 r 1037608 +netork-u sshd-session 37638 wd 4,0 2 40755 r 512 +netork-u sshd-session 37638 0 4,0 15794 20666 rw 2,2 +netork-u sshd-session 37638 1 4,0 15794 20666 rw 2,2 +netork-u sshd-session 37638 2 4,0 15794 20666 rw 2,2 +netork-u sshd-session 37638 3 4,0 15794 20666 rw 2,2 +netork-u sshd-session 37638 4 4,0 15794 20666 rw 2,2 +netork-u sshd-session 37638 5 4,0 15794 20666 rw 2,2 +netork-u sshd-session 37638 6* unix stream 0xfffffd806fb97250 <-> 0xfffffd806fb97400 +netork-u sshd-session 37638 7* internet stream tcp 0xffff800000ae1b80 10.0.2.15:22 <-- 10.0.2.2:53336 +netork-u sshd-session 37638 9* unix stream 0xfffffd806fb97130 +netork-u sshd-session 37638 11 pipe 0xfffffd8058c4edb0 state: +netork-u sshd-session 37638 13 pipe 0xfffffd8058c4eee0 state: +root sshd-session 25279 text 4,3 181662 100511 r 1037608 +root sshd-session 25279 wd 4,0 2 40755 r 512 +root sshd-session 25279 0 4,0 15794 20666 rw 2,2 +root sshd-session 25279 1 4,0 15794 20666 rw 2,2 +root sshd-session 25279 2 4,0 15794 20666 rw 2,2 +root sshd-session 25279 3 4,0 15794 20666 rw 2,2 +root sshd-session 25279 4 4,0 15794 20666 rw 2,2 +root sshd-session 25279 5 4,0 15794 20666 rw 2,2 +root sshd-session 25279 7* internet stream tcp 0xffff800000ae1b80 10.0.2.15:22 <-- 10.0.2.2:53336 +root sshd-session 25279 8* unix stream 0xfffffd806fb97400 <-> 0xfffffd806fb97250 +root sshd-session 25279 9* unix stream 0xfffffd806fb97130 +root getty 88809 text 4,3 181471 100555 r 27864 +root getty 88809 wd 4,0 2 40755 r 512 +root getty 88809 0 4,0 15618 20600 rw 8,0 +root getty 88809 1 4,0 15618 20600 rw 8,0 +root getty 88809 2 4,0 15618 20600 rw 8,0 +root cron 18831 text 4,3 129625 100555 r 42888 +root cron 18831 wd 4,0 2 40755 r 512 +root cron 18831 0 4,0 15794 20666 rwp 2,2 +root cron 18831 1 4,0 15794 20666 rwp 2,2 +root cron 18831 2 4,0 15794 20666 rwp 2,2 +root cron 18831 3* unix stream 0xfffffd806fb970a0 /var/run/cron.sock diff --git a/tests/fixtures/openbsd-vm/id.txt b/tests/fixtures/openbsd-vm/id.txt new file mode 100644 index 0000000..7b932ce --- /dev/null +++ b/tests/fixtures/openbsd-vm/id.txt @@ -0,0 +1 @@ +uid=1000(netork-user) gid=1000(netork-user) groups=1000(netork-user), 0(wheel) diff --git a/tests/fixtures/openbsd-vm/ifconfig_a.txt b/tests/fixtures/openbsd-vm/ifconfig_a.txt new file mode 100644 index 0000000..154c7d7 --- /dev/null +++ b/tests/fixtures/openbsd-vm/ifconfig_a.txt @@ -0,0 +1,20 @@ +lo0: flags=2008049 mtu 32768 + index 3 priority 0 llprio 3 + groups: lo + inet6 ::1 prefixlen 128 + inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 + inet 127.0.0.1 netmask 0xff000000 +vio0: flags=808843 mtu 1500 + lladdr bc:24:11:aa:bb:04 + index 1 priority 0 llprio 3 + groups: egress + media: Ethernet autoselect + status: active + inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255 +enc0: flags=0<> + index 2 priority 0 llprio 3 + groups: enc + status: active +pflog0: flags=141 mtu 33136 + index 4 priority 0 llprio 3 + groups: pflog diff --git a/tests/fixtures/openbsd-vm/ndp_an.txt b/tests/fixtures/openbsd-vm/ndp_an.txt new file mode 100644 index 0000000..7f0faee --- /dev/null +++ b/tests/fixtures/openbsd-vm/ndp_an.txt @@ -0,0 +1 @@ +Neighbor Linklayer Address Netif Expire S Flags diff --git a/tests/fixtures/openbsd-vm/netstat_an_f_inet.txt b/tests/fixtures/openbsd-vm/netstat_an_f_inet.txt new file mode 100644 index 0000000..ba349e1 --- /dev/null +++ b/tests/fixtures/openbsd-vm/netstat_an_f_inet.txt @@ -0,0 +1,15 @@ +Active Internet connections (including servers) +Proto Recv-Q Send-Q Local Address Foreign Address TCP-State +tcp 0 0 10.0.2.15.22 10.0.2.2.53316 ESTABLISHED +tcp 0 0 *.22 *.* LISTEN +tcp 0 0 127.0.0.1.25 *.* LISTEN +Active Internet connections (including servers) +Proto Recv-Q Send-Q Local Address Foreign Address +udp 0 0 10.0.2.15.23532 93.241.86.156.123 +udp 0 0 10.0.2.15.44456 162.19.170.154.123 +udp 0 0 10.0.2.15.6243 162.159.200.1.123 +udp 0 0 10.0.2.15.7949 24.134.7.185.123 +udp 0 0 10.0.2.15.12367 168.119.211.223.123 +udp 0 0 *.* *.* +udp 0 0 *.* *.* +udp 0 0 10.0.2.15.68 *.* diff --git a/tests/fixtures/openbsd-vm/netstat_an_f_inet6.txt b/tests/fixtures/openbsd-vm/netstat_an_f_inet6.txt new file mode 100644 index 0000000..facb829 --- /dev/null +++ b/tests/fixtures/openbsd-vm/netstat_an_f_inet6.txt @@ -0,0 +1,9 @@ +Active Internet connections (including servers) +Proto Recv-Q Send-Q Local Address Foreign Address TCP-State +tcp6 0 0 fe80::1%lo0.25 *.* LISTEN +tcp6 0 0 ::1.25 *.* LISTEN +tcp6 0 0 *.22 *.* LISTEN +Active Internet connections (including servers) +Proto Recv-Q Send-Q Local Address Foreign Address +udp6 0 0 *.* *.* +udp6 0 0 *.* *.* diff --git a/tests/fixtures/openbsd-vm/netstat_rn.txt b/tests/fixtures/openbsd-vm/netstat_rn.txt new file mode 100644 index 0000000..1596b98 --- /dev/null +++ b/tests/fixtures/openbsd-vm/netstat_rn.txt @@ -0,0 +1,30 @@ +Routing tables + +Internet: +Destination Gateway Flags Refs Use Mtu Prio Iface +default 10.0.2.2 UGS 5 14 - 8 vio0 +224/4 127.0.0.1 URS 0 0 32768 8 lo0 +10.0.2/24 10.0.2.15 UCn 2 0 - 4 vio0 +10.0.2.2 52:55:0a:00:02:02 UHLch 2 15 - 3 vio0 +10.0.2.3 52:55:0a:00:02:03 UHLc 0 38 - 3 vio0 +10.0.2.15 bc:24:11:aa:bb:04 UHLl 1 4 - 1 vio0 +10.0.2.255 10.0.2.15 UHb 0 0 - 1 vio0 +127/8 127.0.0.1 UGRS 0 0 32768 8 lo0 +127.0.0.1 127.0.0.1 UHhl 1 2 32768 1 lo0 + +Internet6: +Destination Gateway Flags Refs Use Mtu Prio Iface +::/96 ::1 UGRS 0 0 32768 8 lo0 +::1 ::1 UHhl 10 20 32768 1 lo0 +::ffff:0.0.0.0/96 ::1 UGRS 0 0 32768 8 lo0 +2002::/24 ::1 UGRS 0 0 32768 8 lo0 +2002:7f00::/24 ::1 UGRS 0 0 32768 8 lo0 +2002:e000::/20 ::1 UGRS 0 0 32768 8 lo0 +2002:ff00::/24 ::1 UGRS 0 0 32768 8 lo0 +fe80::/10 ::1 UGRS 0 0 32768 8 lo0 +fec0::/10 ::1 UGRS 0 0 32768 8 lo0 +fe80::1%lo0 fe80::1%lo0 UHl 0 0 32768 1 lo0 +ff01::/16 ::1 UGRS 0 0 32768 8 lo0 +ff01::%lo0/32 fe80::1%lo0 Um 0 1 32768 4 lo0 +ff02::/16 ::1 UGRS 0 0 32768 8 lo0 +ff02::%lo0/32 fe80::1%lo0 Um 0 1 32768 4 lo0 diff --git a/tests/fixtures/openbsd-vm/netstat_rn_f_inet.txt b/tests/fixtures/openbsd-vm/netstat_rn_f_inet.txt new file mode 100644 index 0000000..ef5d330 --- /dev/null +++ b/tests/fixtures/openbsd-vm/netstat_rn_f_inet.txt @@ -0,0 +1,13 @@ +Routing tables + +Internet: +Destination Gateway Flags Refs Use Mtu Prio Iface +default 10.0.2.2 UGS 5 14 - 8 vio0 +224/4 127.0.0.1 URS 0 0 32768 8 lo0 +10.0.2/24 10.0.2.15 UCn 2 0 - 4 vio0 +10.0.2.2 52:55:0a:00:02:02 UHLch 2 16 - 3 vio0 +10.0.2.3 52:55:0a:00:02:03 UHLc 0 38 - 3 vio0 +10.0.2.15 bc:24:11:aa:bb:04 UHLl 1 4 - 1 vio0 +10.0.2.255 10.0.2.15 UHb 0 0 - 1 vio0 +127/8 127.0.0.1 UGRS 0 0 32768 8 lo0 +127.0.0.1 127.0.0.1 UHhl 1 2 32768 1 lo0 diff --git a/tests/fixtures/openbsd-vm/netstat_rn_f_inet6.txt b/tests/fixtures/openbsd-vm/netstat_rn_f_inet6.txt new file mode 100644 index 0000000..3f92e2f --- /dev/null +++ b/tests/fixtures/openbsd-vm/netstat_rn_f_inet6.txt @@ -0,0 +1,18 @@ +Routing tables + +Internet6: +Destination Gateway Flags Refs Use Mtu Prio Iface +::/96 ::1 UGRS 0 0 32768 8 lo0 +::1 ::1 UHhl 10 20 32768 1 lo0 +::ffff:0.0.0.0/96 ::1 UGRS 0 0 32768 8 lo0 +2002::/24 ::1 UGRS 0 0 32768 8 lo0 +2002:7f00::/24 ::1 UGRS 0 0 32768 8 lo0 +2002:e000::/20 ::1 UGRS 0 0 32768 8 lo0 +2002:ff00::/24 ::1 UGRS 0 0 32768 8 lo0 +fe80::/10 ::1 UGRS 0 0 32768 8 lo0 +fec0::/10 ::1 UGRS 0 0 32768 8 lo0 +fe80::1%lo0 fe80::1%lo0 UHl 0 0 32768 1 lo0 +ff01::/16 ::1 UGRS 0 0 32768 8 lo0 +ff01::%lo0/32 fe80::1%lo0 Um 0 1 32768 4 lo0 +ff02::/16 ::1 UGRS 0 0 32768 8 lo0 +ff02::%lo0/32 fe80::1%lo0 Um 0 1 32768 4 lo0 diff --git a/tests/fixtures/openbsd-vm/pkg_add_u_n.txt b/tests/fixtures/openbsd-vm/pkg_add_u_n.txt new file mode 100644 index 0000000..c1afd59 --- /dev/null +++ b/tests/fixtures/openbsd-vm/pkg_add_u_n.txt @@ -0,0 +1 @@ +quirks-7.194 signed on 2026-10-01T16:58:35Z diff --git a/tests/fixtures/openbsd-vm/pkg_info.txt b/tests/fixtures/openbsd-vm/pkg_info.txt new file mode 100644 index 0000000..926e656 --- /dev/null +++ b/tests/fixtures/openbsd-vm/pkg_info.txt @@ -0,0 +1,84 @@ +argon2-20190702p0 C implementation of Argon2 - password hashing function +bash-5.3.9 GNU Bourne Again Shell +bash-completion-2.17.0 programmable completion functions for bash +bzip2-1.0.8p0 block-sorting file compressor, unencumbered +e2fsprogs-1.47.3 utilities to manipulate ext2 filesystems +gettext-runtime-1.0 GNU gettext runtime libraries and programs +glib2-2.86.5 general-purpose utility library +libb2-0.98.1v0 library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp +libffi-3.5.2p0 Foreign Function Interface +libiconv-1.19 character set conversion library +libyaml-0.2.5 YAML 1.1 parser and emitter written in C +meson-1.10.2v0 next-generation build system +ninja-1.11.1p1v1 small build system with a focus on speed +pcre2-10.48 perl-compatible regular expression library, version 2 +py3-MarkupSafe-3.0.3p0 implements an XML/HTML/XHTML markup safe string +py3-apipkg-3.0.2p1 namespace control and lazy-import mechanism for Python +py3-argon2-cffi-25.1.0 argon2 password hashing for Python +py3-argon2-cffi-bindings-25.1.0 argon2 password hashing for Python +py3-arrow-1.4.0p0 better dates and times for Python +py3-attrs-25.4.0 classes without boilerplate +py3-bcrypt-5.0.0p0 bcrypt blowfish password hashing for Python +py3-blinker-1.9.0p0 fast, simple object-to-object and broadcast signaling +py3-brotli-1.2.0 Python bindings for the Brotli compression library +py3-cachetools-7.0.5 extensible memoizing collections and decorators +py3-certifi-2026.1.4 TLS CA support for Python, patched to use /etc/ssl/cert.pem +py3-cffi-2.0.0p0 Foreign Function Interface for Python calling C code +py3-chardet-5.2.0v0 character encoding auto-detection in Python +py3-charset-normalizer-3.4.7 character set detector library +py3-colorama-0.4.6p1 print colored terminal text from Python apps +py3-configobj-5.0.9p0 config file reader and writer +py3-coverage-7.13.2 code coverage measurement for Python +py3-cparser-3.0 C parser in pure Python +py3-cryptography-46.0.7 cryptographic recipes and primitives for Python +py3-dateutil-2.9.0pl0p0 Python API for advanced date calculations +py3-distlib-0.4.0 distribution utilities +py3-execnet-2.1.2 rapid multi-Python deployment +py3-filelock-3.25.2 platform independent file lock +py3-fqdn-1.5.1p1 validates that domain names are acceptable to browsers +py3-idna-3.11 Python library to support the IDNA protocol +py3-iniconfig-2.3.0 brain-dead simple config-ini parsing +py3-isoduration-20.11.0p2 operations with ISO 8601 durations +py3-jinja2-3.1.6p0 fast, optionally sandboxed, Python template engine +py3-jsonpatch-1.33p2 library to apply JSON Patches according to RFC 6902 +py3-jsonpointer-2.4p2 library to resolve JSON Pointers according to RFC 6901 +py3-jsonschema-4.24.0 implementation of JSON Schema validation for Python +py3-jsonschema-specifications-2025.4.1 JSON schema meta-schemas and vocabularies +py3-jwt-2.10.1 JSON Web Token implementation in Python +py3-mock-5.1.0p0 python mocking and patching library for testing +py3-oauthlib-3.3.1 Python library for OAuth +py3-packaging-26.0 core utilities for Python packaging +py3-passlib-1.9.3p0 Python module providing a password hashing framework +py3-platformdirs-4.9.6 determine appropriate platform-specific directories +py3-pluggy-1.6.0p0 plugin and hook calling mechanisms for Python +py3-pygments-2.20.0 Python syntax highlighter +py3-pyproject_api-1.10.0 API to interact with pyproject.toml-based projects +py3-python-discovery-1.2.1p0 library for discovering Python interpreters +py3-referencing-0.37.0p0 JSON referencing in Python +py3-requests-2.33.1 elegant and simple HTTP library for Python +py3-responses-0.25.0p2 utility library for mocking out the `requests` Python +py3-rfc3339-validator-0.1.4p2 pure python RFC3339 validator +py3-rfc3986-validator-0.1.1p2 pure python RFC3986 validator +py3-rpds-py-0.30.0p0 Python bindings for Rust's persistent data structures (rpds) +py3-scrypt-0.9.4 support for the scrypt key derivation function +py3-serial-3.5p0 serial interface class for Python +py3-six-1.17.0p1 Python 2 and 3 compatibility library +py3-test-9.0.2p0 cross-project testing tool for Python +py3-test-cov-7.1.0 pytest plugin for measuring coverage +py3-test-mock-3.15.1 thin wrapper around mock package for easier use with pytest +py3-test-xdist-3.8.0 py.test xdist plugin for distributed testing +py3-tox-4.47.0 virtualenv-based automation of test activities +py3-types-python-dateutil-2.9.0.20260305 typing stubs for Python dateutil +py3-tzdata-2026.3 IANA timezone data +py3-uri-template-1.3.0p1 RFC 6570 URI template processor +py3-urllib3-1.26.20p0 HTTP library for Python +py3-virtualenv-21.2.3 virtual Python environment builder +py3-webcolors-25.10.0p0 library for working with HTML color formats +py3-yaml-6.0.2p1 YAML parser and emitter in Python +python-3.13.15p0 interpreted object-oriented programming language +qemu-ga-10.2.1 QEMU guest agent +quirks-7.194 exceptions to pkg_add rules +sqlite3-3.51.3 embedded SQL implementation +sudo-1.9.17.2p1 execute a command as another user +updatedb-0p0 pkg_add speed up cache +xz-5.8.4 library and tools for XZ and LZMA compressed files diff --git a/tests/fixtures/openbsd-vm/pkg_info_q.txt b/tests/fixtures/openbsd-vm/pkg_info_q.txt new file mode 100644 index 0000000..90adc59 --- /dev/null +++ b/tests/fixtures/openbsd-vm/pkg_info_q.txt @@ -0,0 +1,84 @@ +argon2-20190702p0 +bash-5.3.9 +bash-completion-2.17.0 +bzip2-1.0.8p0 +e2fsprogs-1.47.3 +gettext-runtime-1.0 +glib2-2.86.5 +libb2-0.98.1v0 +libffi-3.5.2p0 +libiconv-1.19 +libyaml-0.2.5 +meson-1.10.2v0 +ninja-1.11.1p1v1 +pcre2-10.48 +py3-MarkupSafe-3.0.3p0 +py3-apipkg-3.0.2p1 +py3-argon2-cffi-25.1.0 +py3-argon2-cffi-bindings-25.1.0 +py3-arrow-1.4.0p0 +py3-attrs-25.4.0 +py3-bcrypt-5.0.0p0 +py3-blinker-1.9.0p0 +py3-brotli-1.2.0 +py3-cachetools-7.0.5 +py3-certifi-2026.1.4 +py3-cffi-2.0.0p0 +py3-chardet-5.2.0v0 +py3-charset-normalizer-3.4.7 +py3-colorama-0.4.6p1 +py3-configobj-5.0.9p0 +py3-coverage-7.13.2 +py3-cparser-3.0 +py3-cryptography-46.0.7 +py3-dateutil-2.9.0pl0p0 +py3-distlib-0.4.0 +py3-execnet-2.1.2 +py3-filelock-3.25.2 +py3-fqdn-1.5.1p1 +py3-idna-3.11 +py3-iniconfig-2.3.0 +py3-isoduration-20.11.0p2 +py3-jinja2-3.1.6p0 +py3-jsonpatch-1.33p2 +py3-jsonpointer-2.4p2 +py3-jsonschema-4.24.0 +py3-jsonschema-specifications-2025.4.1 +py3-jwt-2.10.1 +py3-mock-5.1.0p0 +py3-oauthlib-3.3.1 +py3-packaging-26.0 +py3-passlib-1.9.3p0 +py3-platformdirs-4.9.6 +py3-pluggy-1.6.0p0 +py3-pygments-2.20.0 +py3-pyproject_api-1.10.0 +py3-python-discovery-1.2.1p0 +py3-referencing-0.37.0p0 +py3-requests-2.33.1 +py3-responses-0.25.0p2 +py3-rfc3339-validator-0.1.4p2 +py3-rfc3986-validator-0.1.1p2 +py3-rpds-py-0.30.0p0 +py3-scrypt-0.9.4 +py3-serial-3.5p0 +py3-six-1.17.0p1 +py3-test-9.0.2p0 +py3-test-cov-7.1.0 +py3-test-mock-3.15.1 +py3-test-xdist-3.8.0 +py3-tox-4.47.0 +py3-types-python-dateutil-2.9.0.20260305 +py3-tzdata-2026.3 +py3-uri-template-1.3.0p1 +py3-urllib3-1.26.20p0 +py3-virtualenv-21.2.3 +py3-webcolors-25.10.0p0 +py3-yaml-6.0.2p1 +python-3.13.15p0 +qemu-ga-10.2.1 +quirks-7.194 +sqlite3-3.51.3 +sudo-1.9.17.2p1 +updatedb-0p0 +xz-5.8.4 diff --git a/tests/fixtures/openbsd-vm/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt b/tests/fixtures/openbsd-vm/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt new file mode 100644 index 0000000..1abf043 --- /dev/null +++ b/tests/fixtures/openbsd-vm/ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt @@ -0,0 +1,32 @@ +USER PID PPID %CPU %MEM VSZ RSS STAT STARTED COMMAND +root 1 0 0.0 0.0 956 504 I Wed Oct 7 15:59:49 2026 /sbin/init +root 98045 1 0.0 0.1 1080 1124 Ip Wed Oct 7 15:59:53 2026 /sbin/slaacd +_slaacd 25236 98045 0.0 0.1 1088 1488 Ip Wed Oct 7 15:59:53 2026 slaacd: engine (slaacd) +_slaacd 92040 98045 0.0 0.1 1100 1528 IpU Wed Oct 7 15:59:53 2026 slaacd: frontend (slaacd) +root 77527 1 0.0 0.1 1104 1288 IU Wed Oct 7 15:59:53 2026 /sbin/dhcpleased +_dhcp 1046 77527 0.0 0.1 1112 1548 Ip Wed Oct 7 15:59:53 2026 dhcpleased: engine (dhcpleased) +_dhcp 81727 77527 0.0 0.1 1124 1552 IpU Wed Oct 7 15:59:53 2026 dhcpleased: frontend (dhcpleased) +root 24735 1 0.0 0.0 816 940 IpU Wed Oct 7 15:59:53 2026 /sbin/resolvd +root 44468 1 0.0 0.1 1024 2372 IpU Wed Oct 7 15:59:56 2026 syslogd: [priv] (syslogd) +_syslogd 20953 44468 0.0 0.1 1500 1636 Spc Wed Oct 7 15:59:56 2026 /usr/sbin/syslogd +root 45837 1 0.0 0.1 984 1356 IU Wed Oct 7 15:59:56 2026 pflogd: [priv] (pflogd) +_pflogd 43134 45837 0.0 0.1 1036 1436 Ipc Wed Oct 7 15:59:56 2026 pflogd: [running] -s 160 -i pflog0 -f /var/log/pflog (pflogd) +_ntp 20694 1 0.0 0.1 1176 2784 S str: + return (FIXTURES / system / name).read_text() + + +def _driver(cls, answers: dict[str, str]): + """A driver whose commands are answered from *answers*; unknown ones print nothing.""" + driver = cls("host", "netork", "") + asked: list[str] = [] + + def out(command: str, *, privileged: bool = False, timeout: float = 60) -> str: + asked.append(command) + return answers.get(command, "").strip() + + driver._out = out # type: ignore[method-assign] + driver.asked = asked # type: ignore[attr-defined] + return driver + + +def _freebsd_host(): + s = "freebsd-host" + return _driver( + FreeBSDDriver, + { + "sysctl -n kern.hostname": "bsd-01.lab.example", + "freebsd-version -u": "15.1-RELEASE", + "freebsd-version -r": "15.1-RELEASE", + FreeBSDDriver.PLATFORM_COMMAND: "maker=QEMU\nproduct=Standard PC (i440FX + PIIX, 1996)\nserial=", + "sysctl -n kern.boottime": _read(s, "sysctl_n_kern.boottime.txt"), + "date +%s": "1791408816", + "ifconfig -a": _read(s, "ifconfig_a.txt"), + "netstat -rnW": _read(s, "netstat_rn.txt"), + "arp -an": _read(s, "arp_an.txt"), + "cat /etc/passwd": _read(s, "cat_etc_passwd.txt"), + "cat /etc/group": _read(s, "cat_etc_group.txt"), + BsdDriver.PS_COMMAND: _read(s, PS), + "cat /etc/crontab": _read(s, "cat_etc_crontab.txt"), + "crontab -l": "0 4 * * * /home/netork/backup.sh\n", + }, + ) + + +def _openbsd_vm(): + s = "openbsd-vm" + return _driver( + OpenBSDDriver, + { + "hostname": "spike-openbsd", + "uname -sr": "OpenBSD 7.9", + "uname -v": "GENERIC.MP#449", + OpenBSDDriver.PLATFORM_COMMAND: "vendor=QEMU\nproduct=Standard PC (i440FX + PIIX, 1996)\nserialno=", + "sysctl -n kern.boottime": _read(s, "sysctl_n_kern.boottime.txt"), + "date +%s": "1791406889", + "ifconfig -a": _read(s, "ifconfig_a.txt"), + "netstat -rn": _read(s, "netstat_rn.txt"), + "arp -an": _read(s, "arp_an.txt"), + "cat /etc/passwd": _read(s, "cat_etc_passwd.txt"), + BsdDriver.PS_COMMAND: _read(s, PS), + }, + ) + + +class TestIdentity: + @pytest.mark.parametrize( + ("cls", "name", "label"), + [(FreeBSDDriver, "freebsd", "FreeBSD"), (OpenBSDDriver, "openbsd", "OpenBSD")], + ) + def test_names(self, cls, name, label): + assert cls.DRIVER_NAME == name + assert cls.TYPE_LABEL == label + assert issubclass(cls, OSDriver) + + @pytest.mark.parametrize("cls", [FreeBSDDriver, OpenBSDDriver]) + @pytest.mark.parametrize( + "getter", + [ + "get_facts", + "get_interfaces", + "get_interfaces_ip", + "get_route_to", + "get_arp_table", + "get_lldp_neighbors", + "get_users", + "get_processes", + "get_cron_jobs", + ], + ) + def test_implements_what_the_poll_reads(self, cls, getter): + """netOrk asks whether a getter is overridden, not merely present.""" + assert getattr(cls, getter) is not getattr(NetworkDriver, getter, None) + + +class TestFacts: + def test_freebsd(self): + facts = _freebsd_host().get_facts() + assert facts == { + "hostname": "bsd-01", + "fqdn": "bsd-01.lab.example", + "vendor": "QEMU", + "model": "Standard PC (i440FX + PIIX, 1996)", + "serial_number": "", + "os_version": "FreeBSD 15.1-RELEASE", + "uptime": 1791408816 - 1791405216, + "interface_list": ["em0"], + "running_kernel": "15.1-RELEASE", + } + + def test_openbsd(self): + facts = _openbsd_vm().get_facts() + assert facts["hostname"] == facts["fqdn"] == "spike-openbsd" + assert facts["os_version"] == "OpenBSD 7.9" + assert facts["running_kernel"] == "GENERIC.MP#449" + assert facts["uptime"] == 100 + assert facts["interface_list"] == ["vio0", "enc0", "pflog0"] + + def test_an_unreadable_boottime_is_no_uptime(self): + driver = _freebsd_host() + driver._out = lambda command, **kw: "" # type: ignore[method-assign] + assert driver.get_facts()["uptime"] == -1 + + +class TestInterfaces: + def test_napalm_shape(self): + interfaces = _freebsd_host().get_interfaces() + assert interfaces["em0"] == { + "is_up": True, + "is_enabled": True, + "description": "", + "last_flapped": -1.0, + "speed": 1000.0, + "mtu": 1500, + "mac_address": "bc:24:11:20:b0:20", + } + + def test_addresses(self): + assert _openbsd_vm().get_interfaces_ip()["vio0"] == { + "ipv4": {"10.0.2.15": {"prefix_length": 24}}, + "ipv6": {}, + } + + +class TestRoutesAndNeighbours: + def test_routes_keyed_by_network(self): + routes = _freebsd_host().get_route_to() + default = routes["0.0.0.0/0"][0] + assert default["next_hop"] == "192.0.2.1" + assert default["outgoing_interface"] == "em0" + assert default["protocol"] == "static" + assert default["current_active"] is True + + def test_openbsd_reads_routes_without_W(self): + driver = _openbsd_vm() + assert "10.0.2.0/24" in driver.get_route_to() + assert "netstat -rn" in driver.asked + + def test_arp(self): + assert _openbsd_vm().get_arp_table()[0]["ip"] == "10.0.2.2" + + def test_no_lldp_daemon_means_no_neighbours(self): + assert _freebsd_host().get_lldp_neighbors() == {} + + +class TestAccountsAndProcesses: + def test_users(self): + users = _freebsd_host().get_users() + assert next(u for u in users if u["username"] == "root")["groups"] == ["wheel", "operator"] + + def test_processes(self): + init = next(p for p in _openbsd_vm().get_processes() if p["pid"] == 1) + assert init["command"] == "/sbin/init" + + def test_cron_jobs_from_the_system_and_the_login_users_crontab(self): + jobs = _freebsd_host().get_cron_jobs() + assert {"user": "root", "schedule": "0 * * * *", "command": "newsyslog"} in jobs + assert { + "user": "netork", + "schedule": "0 4 * * *", + "command": "/home/netork/backup.sh", + } in jobs diff --git a/tests/test_parse.py b/tests/test_parse.py new file mode 100644 index 0000000..473b92e --- /dev/null +++ b/tests/test_parse.py @@ -0,0 +1,215 @@ +"""Parsers for BSD command output, on output recorded from real systems. + +``freebsd-host``: a hand-installed FreeBSD 15.1 (classic base, no pkg). +``freebsd-vm``: the FreeBSD 15.1 BASIC-CLOUDINIT image (pkgbase). +``openbsd-vm``: the OpenBSD 7.9 cloud image from hcartiaux/openbsd-cloud-image. +Recorded for NetOrk/netork#793; ``COMMANDS.txt`` in each directory lists them. +""" + +from __future__ import annotations + +from pathlib import Path + +import pytest + +from napalm_bsd import parse + +FIXTURES = Path(__file__).parent / "fixtures" + + +def fixture(system: str, name: str) -> str: + return (FIXTURES / system / name).read_text() + + +class TestIfconfig: + def test_freebsd_ethernet(self): + em0 = parse.ifconfig(fixture("freebsd-host", "ifconfig_a.txt"))["em0"] + assert em0["mac"] == "bc:24:11:20:b0:20" + assert em0["mtu"] == 1500 + assert em0["enabled"] and em0["up"] + assert em0["speed"] == 1000.0 + assert em0["ipv4"] == {"192.0.2.104": 24} + assert em0["ipv6"] == {"fe80::be24:11ff:fe20:b020": 64} + + def test_freebsd_loopback(self): + lo0 = parse.ifconfig(fixture("freebsd-host", "ifconfig_a.txt"))["lo0"] + assert lo0["loopback"] + assert lo0["ipv4"] == {"127.0.0.1": 8} + assert lo0["ipv6"] == {"::1": 128, "fe80::1": 64} + + def test_freebsd_vm_reports_ten_gigabit(self): + vtnet0 = parse.ifconfig(fixture("freebsd-vm", "ifconfig_a.txt"))["vtnet0"] + assert vtnet0["speed"] == 10000.0 + assert "10.0.2.15" in vtnet0["ipv4"] + + def test_openbsd_calls_the_mac_lladdr(self): + interfaces = parse.ifconfig(fixture("openbsd-vm", "ifconfig_a.txt")) + assert list(interfaces) == ["lo0", "vio0", "enc0", "pflog0"] + assert interfaces["vio0"]["mac"] == "bc:24:11:aa:bb:04" + assert interfaces["vio0"]["ipv4"] == {"10.0.2.15": 24} + assert interfaces["vio0"]["up"] + + def test_an_interface_without_flags_or_mtu_is_down(self): + enc0 = parse.ifconfig(fixture("openbsd-vm", "ifconfig_a.txt"))["enc0"] + assert not enc0["enabled"] and not enc0["up"] + assert enc0["mtu"] == 0 + assert enc0["mac"] == "" + + +class TestRoutes: + def test_freebsd_default_and_connected(self): + routes = parse.routes(fixture("freebsd-host", "netstat_rn.txt")) + assert routes == [ + { + "network": "0.0.0.0/0", + "next_hop": "192.0.2.1", + "interface": "em0", + "protocol": "static", + "family": "ipv4", + }, + { + "network": "192.0.2.0/24", + "next_hop": "", + "interface": "em0", + "protocol": "connected", + "family": "ipv4", + }, + { + "network": "fe80::/64", + "next_hop": "", + "interface": "em0", + "protocol": "connected", + "family": "ipv6", + }, + ] + + def test_openbsd_abbreviated_networks_are_written_out(self): + routes = parse.routes(fixture("openbsd-vm", "netstat_rn.txt")) + networks = {r["network"]: r for r in routes} + assert networks["0.0.0.0/0"]["next_hop"] == "10.0.2.2" + assert networks["10.0.2.0/24"]["protocol"] == "connected" + assert networks["10.0.2.0/24"]["next_hop"] == "" + assert all(r["interface"] != "lo0" for r in routes) + + def test_host_and_broadcast_entries_are_not_routes(self): + routes = parse.routes(fixture("openbsd-vm", "netstat_rn.txt")) + assert "10.0.2.15/32" not in {r["network"] for r in routes} + assert "10.0.2.255/32" not in {r["network"] for r in routes} + + +class TestArp: + def test_freebsd(self): + entries = parse.arp(fixture("freebsd-host", "arp_an.txt")) + assert entries[0] == { + "interface": "em0", + "mac": "bc:24:11:3c:e2:d0", + "ip": "192.0.2.254", + "age": 1176.0, + } + assert entries[2]["age"] == -1.0 # permanent: its own address + + def test_openbsd_table(self): + entries = parse.arp(fixture("openbsd-vm", "arp_an.txt")) + assert entries[0] == { + "interface": "vio0", + "mac": "52:55:0a:00:02:02", + "ip": "10.0.2.2", + "age": 18 * 60 + 58.0, + } + assert entries[2]["age"] == -1.0 + + @pytest.mark.parametrize( + ("text", "seconds"), [("18m58s", 1138.0), ("1h2m3s", 3723.0), ("45s", 45.0)] + ) + def test_openbsd_durations(self, text, seconds): + assert parse.duration(text) == seconds + + +class TestUsers: + def test_passwd_with_supplementary_groups(self): + users = parse.users( + fixture("freebsd-host", "cat_etc_passwd.txt"), + fixture("freebsd-host", "cat_etc_group.txt"), + ) + root = next(u for u in users if u["username"] == "root") + assert root == { + "username": "root", + "uid": 0, + "gid": 0, + "home": "/root", + "shell": "/bin/sh", + "groups": ["wheel", "operator"], + } + assert any(u["username"] == "netork" for u in users) + + def test_comment_lines_are_skipped(self): + assert ( + parse.users("# $FreeBSD$\n#\nroot:*:0:0:Charlie &:/root:/bin/sh\n", "")[0]["username"] + == "root" + ) + + +class TestProcesses: + @pytest.mark.parametrize("system", ["freebsd-host", "freebsd-vm", "openbsd-vm"]) + def test_the_start_date_is_kept_whole(self, system): + """lstart is five words; napalm-linux cut it to the weekday (napalm-linux#21).""" + processes = parse.processes( + fixture(system, "ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt") + ) + init = next(p for p in processes if p["pid"] == 1) + assert init["command"] == "/sbin/init" + assert init["user"] == "root" + assert init["ppid"] == 0 + assert len(init["started"].split()) == 5 + + def test_fields(self): + processes = parse.processes( + fixture("openbsd-vm", "ps_axww_o_user_pid_ppid_cpu_mem_vsz_rss_stat_lstart_command.txt") + ) + assert processes[0] == { + "pid": 1, + "ppid": 0, + "user": "root", + "cpu": 0.0, + "memory": 0.0, + "vsz": 956, + "rss": 504, + "tty": "", + "state": "I", + "started": "Wed Oct 7 15:59:49 2026", + "command": "/sbin/init", + } + + +class TestCrontab: + def test_system_crontab_names_the_user(self): + jobs = parse.crontab(fixture("freebsd-host", "cat_etc_crontab.txt"), system=True) + assert {"user": "root", "schedule": "0 * * * *", "command": "newsyslog"} in jobs + assert { + "user": "operator", + "schedule": "*/11 * * * *", + "command": "/usr/libexec/save-entropy", + } in jobs + + def test_user_crontab(self): + jobs = parse.crontab(fixture("openbsd-vm", "crontab_l.txt"), user="root") + assert jobs + assert all(j["user"] == "root" for j in jobs) + assert all(len(j["schedule"].split()) == 5 for j in jobs) + + def test_special_schedules_and_environment_lines(self): + text = "SHELL=/bin/sh\n@reboot root /usr/local/bin/start\n# comment\n" + assert parse.crontab(text, system=True) == [ + {"user": "root", "schedule": "@reboot", "command": "/usr/local/bin/start"} + ] + + +class TestBoottime: + def test_freebsd(self): + assert parse.boottime(fixture("freebsd-host", "sysctl_n_kern.boottime.txt")) == 1791405216 + + def test_openbsd(self): + assert parse.boottime(fixture("openbsd-vm", "sysctl_n_kern.boottime.txt")) == 1791406789 + + def test_garbage(self): + assert parse.boottime("sysctl: unknown oid") is None