DistroKit Mailinglist
 help / color / mirror / Atom feed
From: Roland Hieber <rhi@pengutronix.de>
To: distrokit@pengutronix.de
Cc: Roland Hieber <rhi@pengutronix.de>
Subject: [DistroKit] [PATCH v3] v7a: run: make the SSH forwarding port multiprocess-compatible
Date: Mon, 26 Apr 2021 12:07:15 +0200	[thread overview]
Message-ID: <20210426100714.10944-1-rhi@pengutronix.de> (raw)
In-Reply-To: <20210426060526.32029-5-rhi@pengutronix.de>

When multiple ./configs/platform-v7a/run scripts are run at the same
time, the first qemu process will open port 4445, and following runs
will fail. To prevent that, first look at the environment variable
QEMU_SSH_PORT to determine the port to be used (so that users can set
this in their shell to keep the port constant), or fall back to a port
between 1025 and 65025 based on the shell's PID, which should have a
good chance of choosing an unused, but stable port.

Also print the port forwarding before starting qemu, so we don't have to
bother about grepping the process list.

Signed-off-by: Roland Hieber <rhi@pengutronix.de>

---
v3:
  * rebase onto next
  * adapt subject and log message (Robert Schwebel)
v2:
  * use PPID instead of RANDOM to make the port reproducible in the same
    shell session (Michael Olbrich)
---
 configs/platform-v7a/run | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/configs/platform-v7a/run b/configs/platform-v7a/run
index ed8ab1ba47c3..8af190f11eb4 100755
--- a/configs/platform-v7a/run
+++ b/configs/platform-v7a/run
@@ -39,7 +39,7 @@ fi
 # the port to which an sshd would connect (in the emulated sysem)
 SSH_INTERNAL_PORT=22
 # the port which QEMU opens at the host side to give access to the ${SSH_INTERNAL_PORT}
-SSH_EXTERNAL_PORT=4445
+SSH_EXTERNAL_PORT=${QEMU_SSH_PORT:-${PPID%64000+1025}}
 
 # check if vde is available for networking
 if [ -z "${VDE_SOCKET}" ]; then
@@ -59,6 +59,7 @@ fi
 # fall back to user network if necessary
 if [ -z "${QEMU_NET}" ]; then
 	QEMU_NET=(-netdev user,id=net1,hostfwd=tcp:127.0.0.1:${SSH_EXTERNAL_PORT}-:${SSH_INTERNAL_PORT} )
+	echo "Forwarding SSH port 127.0.0.1:${SSH_EXTERNAL_PORT} -> qemu:${SSH_INTERNAL_PORT}"
 fi
 
 BASE_CMDLINE="console=ttyAMA0,115200 loglevel=5 systemd.log_level=warning systemd.show_status=auto"
-- 
2.29.2


_______________________________________________
DistroKit mailing list
DistroKit@pengutronix.de


  parent reply	other threads:[~2021-04-26 10:07 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-26  6:05 [DistroKit] [PATCH 1/5] v7a: image-vexpress: convert hex numbers to human-readable sizes Roland Hieber
2021-04-26  6:05 ` [DistroKit] [PATCH 2/5] v7a: images: remove redundant size specifications Roland Hieber
2021-04-26  6:35   ` Robert Schwebel
2021-04-26  6:05 ` [DistroKit] [PATCH 3/5] v7a: barebox: clean up defaultenvs Roland Hieber
2021-04-26  6:36   ` Robert Schwebel
2021-04-26  6:05 ` [DistroKit] [PATCH 4/5] v7a: run: remove telnet port forwarding Roland Hieber
2021-04-26  6:36   ` Robert Schwebel
2021-04-26  6:05 ` [DistroKit] [PATCH 5/5] v7a: run: randomise the SSH forwarding port Roland Hieber
2021-04-26  6:33   ` Michael Olbrich
2021-04-26  8:30     ` Roland Hieber
2021-04-26  8:35       ` [DistroKit] [PATCH v2] " Roland Hieber
2021-04-26  9:02         ` Robert Schwebel
2021-04-26  9:03           ` Robert Schwebel
2021-04-26 10:07   ` Roland Hieber [this message]
2021-04-26 10:09     ` [DistroKit] [PATCH v3] v7a: run: make the SSH forwarding port multiprocess-compatible Robert Schwebel
2021-04-26  6:35 ` [DistroKit] [PATCH 1/5] v7a: image-vexpress: convert hex numbers to human-readable sizes Robert Schwebel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210426100714.10944-1-rhi@pengutronix.de \
    --to=rhi@pengutronix.de \
    --cc=distrokit@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox