passt-repair(1)
β¨ passt-repair β the little helper that fixes TCP sockets for its bestie π
okay so this is the passt-repair(1) page from the General Commands Manual, and bestie, it's short but it's mighty. it's a whole manual about one tiny privileged helper. let's get into it π«Ά
π NAME π
passt-repair β the helper that sets TCP_REPAIR socket options for passt(1). that's it, that's the job, and she does it flawlessly π
πΈ SYNOPSIS πΈ
passt-repair PATH
one argument. one path. iconic minimalism β¨
π¦ DESCRIPTION π¦
so passt-repair is a privileged helper whose whole entire personality is setting and clearing repair mode on TCP sockets on behalf of passt(1). how does it know what to do? instructions arrive as single-byte commands over a UNIX domain socket. cute, efficient, no notes π
why does this exist? because it lets you migrate TCP connections between guests without handing extra capabilities to passt(1) itself. like, to migrate TCP connections, passt(1) leverages repair mode, and repair mode needs the CAP_NET_ADMIN capability (see capabilities(7)) just to be set or cleared. so instead of giving passt(1) the keys to the kingdom, you let this separate helper do the privileged bit. queen behavior, honestly π
now, PATH does two different things depending on what it is, so pay attention bestie:
- if
PATHrepresents a UNIX domain socket,passt-repair(1)attempts to connect to it. simple. direct. she's on her way πββοΈ - if it's a directory,
passt-repair(1)waits until a file ending with.repairappears in it, and then attempts to connect to it. patient queen. she'll wait, but she will show up π
π PROTOCOL π
passt-repair(1) connects to passt(1) using the socket specified via the --repair-path option in passt(1) itself. by default, that name is the same as the UNIX domain socket used for guest communication, suffixed by .repair. so if you know one, you know the other. iykyk π
now the messages, and bestie this part is precise so don't skim:
the messages consist of one 8-bit signed integer that can be:
TCP_REPAIR_ON(1)TCP_REPAIR_OFF(0)TCP_REPAIR_OFF_NO_WP(-1)
all as defined by the Linux kernel user API. and then, along with that, one to SCM_MAX_FD (253) sockets sent as an SCM_RIGHTS (see unix(7)) ancillary message. and who sends all this? the server, passt(1). she's the one initiating, fr fr π¨
the client, passt-repair(1), then replies with the same byte β and no ancillary message β to indicate success. if it fails, it just closes the connection. no drama, no explanation, just gone π
and the server closes the connection on error or completion. everyone knows when the conversation is over. communication skills: immaculate β¨
π NOTES π
passt-repair(1) can be granted the CAP_NET_ADMIN capability β which is preferred, because it limits privileges to the strictly necessary ones β or it can be run as root.
bestie, lowkey take the CAP_NET_ADMIN route. it's the preferred one for a reason: it keeps the privileges to the strict minimum instead of handing over the whole root situation π
π AUTHOR π
Stefano Brivio <sbrivio@redhat.com>. thank you for your service, king π«‘π
π REPORTING BUGS π
found something cursed? please report issues on the bug tracker at https://bugs.passt.top/, or send a message to the passt-user@passt.top mailing list β see https://lists.passt.top/. they want to hear from you, no cap π«Ά
π COPYRIGHT π
Copyright (c) 2025 Red Hat GmbH.
passt-repair is free software: you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. slay, and also legally binding π
π SEE ALSO π
and that's the whole page bestie!! π that was passt-repair(1) from the General Commands Manual β go forth and repair some sockets responsibly, mwah πβ¨π¦πΈ
π¦ where this page comes from
- alpine 3.24: passt-doc 2026.05.26-r0 Β· BSD-3-Clause AND GPL-2.0-or-later
- arch rolling: passt 2026_10_02.cba3570-1 Β· BSD-3-Clause AND GPL-2.0-or-later
- centos-stream 10: passt 0^20260728.gf8df3f1-1.el10 Β· GPL-2.0-or-later AND BSD-3-Clause
- centos-stream 9: passt 0^20260728.gf8df3f1-1.el9 Β· GPL-2.0-or-later AND BSD-3-Clause
- debian trixie: passt 0.0~git20250503.587980c-2+deb13u1 Β· GPL-2.0-or-later
- fedora 43: passt 0^20250919.g623dbf6-1.fc43 Β· GPL-2.0-or-later AND BSD-3-Clause
- fedora 43: passt 0^20260728.gf8df3f1-2.fc43
- fedora 43: passt 0^20261002.gcba3570-1.fc43 Β· GPL-2.0-or-later AND BSD-3-Clause
- fedora 44: passt 0^20260120.g386b5f5-1.fc44 Β· GPL-2.0-or-later AND BSD-3-Clause
- fedora 44: passt 0^20261002.gcba3570-1.fc44 Β· GPL-2.0-or-later AND BSD-3-Clause
- nixos 26.05: passt 2025_09_19.623dbf6
- nixpkgs unstable: passt 2026_07_16.090d739
- opensuse-leap 16.0: passt 20250415.2340bbf-160000.2.2 Β· GPL-2.0-or-later AND BSD-3-Clause
- opensuse-leap 16.0: passt 20250415.2340bbf-160000.2.2 Β· GPL-2.0-or-later AND BSD-3-Clause
- opensuse-leap 16.0: passt 20250415.2340bbf-160000.2.2 Β· GPL-2.0-or-later AND BSD-3-Clause
- opensuse-leap 16.0: passt 20250415.2340bbf-160000.2.2 Β· GPL-2.0-or-later AND BSD-3-Clause
- ubuntu questing: passt 0.0~git20250503.587980c-2
- ubuntu resolute: passt 0.0~git20260120.386b5f5-1 Β· GPL-2.0-or-later
- ubuntu stonking: passt 0.0~git20260728.f8df3f1-1 Β· GPL-2.0-or-later
- π the page's license: GPL-2.0-or-later
- Copyright (c) 2025 Red Hat GmbH
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms