File 2431-ssh-ssh_notes.md-supervision-tree-diagram-update.patch of Package erlang
From b9486ed3745d877369d92a98328c3c4cb21dc89f Mon Sep 17 00:00:00 2001
From: Jakub Witczak <kuba@erlang.org>
Date: Mon, 2 Sep 2024 12:50:57 +0200
Subject: [PATCH] ssh: ssh_notes.md supervision tree diagram update
---
lib/ssh/internal_doc/ssh_notes.md | 95 +++++++++++++++++++++++++++----
1 file changed, 83 insertions(+), 12 deletions(-)
diff --git a/lib/ssh/internal_doc/ssh_notes.md b/lib/ssh/internal_doc/ssh_notes.md
index cf3c04f2e6..2d3b8c25eb 100644
--- a/lib/ssh/internal_doc/ssh_notes.md
+++ b/lib/ssh/internal_doc/ssh_notes.md
@@ -1,36 +1,107 @@
+# SSH supervision tree (prototype)
```mermaid
---
-title: SSH supervision tree
+title: SSH supervision tree (prototype)
---
flowchart RL
- d_sup --> sup[["ssh_sup\n[o4o]"]]
+ d_sup --> sup[["ssh_sup\n(ssh_app.erl)\n[o4o]"]]
c_sup --> sup
subgraph client
- system_sup --> c_sup[["sshc_sup\n[o4o]"]]
+ connection_sup --> c_sup[["sshc_sup\n(ssh_app.erl)\n[o4o]\nauto_shutdown=never"]]
+ subgraph connection_c
+ connection_handler["ssh_connection_handler\nSIGNIFICANT"] --> connection_sup[["ssh_connection_sup\n[o4a]\nauto_shutdown=any_significant"]]
+ channel_sup[["ssh_channel_sup\n[o4o]"]] --> connection_sup
+ sftp["ssh_sftp"] --> channel_sup
+ tcpip_forward_acceptor_sup[["ssh_tcpip_forward_acceptor_sup\n[o4o]"]] --> connection_sup
+ ssh_tcpip_forward_acceptor["ssh_tcpip_forward_acceptor"] --> tcpip_forward_acceptor_sup
+ end
+ end
+
+ subgraph server
+ system_sup_s --> d_sup[["sshd_sup\n(ssh_app.erl)\n[o4o]"]]
+ acceptor_sup --> system_sup_s[["ssh_system_sup\n[o4o]\nauto_shutdown=all_significant"]]
+ acceptor["ssh_acceptor"] --> acceptor_sup[["ssh_acceptor_sup\n[o4o]\nSIGNIFICANT"]]
+
+ connection_sup_s --> system_sup_s
+
+ subgraph connection_s
+ connection_handler_s["ssh_connection_handler\nSIGNIFICANT"] --> connection_sup_s[["ssh_connection_sup\n[o4a]\nauto_shutdown=any_significant\nSIGNIFICANT"]]
+ channel_sup_s[["ssh_channel_sup\n[o4o]"]] --> connection_sup_s
+ tcpip_forward_acceptor_sup_s[["ssh_tcpip_forward_acceptor_sup\n[o4o]"]] --> connection_sup_s
+ ssh_tcpip_forward_acceptor_s["ssh_tcpip_forward_acceptor"] --> tcpip_forward_acceptor_sup_s
+ sftd1["ssh_sftpd"] --> channel_sup_s
+ end
+ end
+```
+
+# SSH supervision tree (OTP >= 24)
+```mermaid
+---
+title: SSH supervision tree (OTP >= 24)
+---
+flowchart RL
+ d_sup --> sup[["ssh_sup\n(ssh_app.erl)\n[o4o]"]]
+ c_sup --> sup
+ subgraph client
+ system_sup --> c_sup[["sshc_sup\n(ssh_app.erl)\n[o4o]\nauto_shutdown=never"]]
subgraph connection_c
- subsystem_sup --> system_sup[["ssh_system_sup\n[o4o]"]]
- connection_handler["ssh_connection_handler"] --> subsystem_sup[["ssh_subsystem_sup\n[o4a]"]]
- channel_sup[["ssh_channel_sup\no4o"]] --> subsystem_sup
+ subsystem_sup --> system_sup[["ssh_system_sup\n[o4o]\nauto_shutdown=all_significant"]]
+ connection_handler["ssh_connection_handler\nSIGNIFICANT"] --> subsystem_sup[["ssh_subsystem_sup\n[o4a]\nauto_shutdown=any_significant\nSIGNIFICANT"]]
+ channel_sup[["ssh_channel_sup\n[o4o]"]] --> subsystem_sup
+ sftp["ssh_sftp"] --> channel_sup
+ ssh_tcpip_forward_client --> channel_sup
tcpip_forward_acceptor_sup[["ssh_tcpip_forward_acceptor_sup\n[o4o]"]] --> subsystem_sup
+ ssh_tcpip_forward_acceptor["ssh_tcpip_forward_acceptor"] --> tcpip_forward_acceptor_sup
end
-
end
subgraph server
- system_sup_s --> d_sup[["sshd_sup\n[o4o]"]]
- acceptor_sup --> system_sup_s[["ssh_system_sup\n[o4o]"]]
- acceptor["ssh_acceptor"] --> acceptor_sup[["ssh_acceptor_sup\n[o4o]"]]
+ system_sup_s --> d_sup[["sshd_sup\n(ssh_app.erl)\n[o4o]"]]
+ acceptor_sup --> system_sup_s[["ssh_system_sup\n[o4o]\nauto_shutdown=all_significant"]]
+ acceptor["ssh_acceptor"] --> acceptor_sup[["ssh_acceptor_sup\n[o4o]\nSIGNIFICANT"]]
subsystem_sup_s --> system_sup_s
subgraph connection_s
- connection_handler_s["ssh_connection_handler"] --> subsystem_sup_s[["ssh_subsystem_sup\n[o4a]"]]
+ connection_handler_s["ssh_connection_handler\nSIGNIFICANT"] --> subsystem_sup_s[["ssh_subsystem_sup\n[o4a]\nauto_shutdown=any_significant\nSIGNIFICANT"]]
channel_sup_s[["ssh_channel_sup\n[o4o]"]] --> subsystem_sup_s
tcpip_forward_acceptor_sup_s[["ssh_tcpip_forward_acceptor_sup\n[o4o]"]] --> subsystem_sup_s
+ ssh_tcpip_forward_acceptor_s["ssh_tcpip_forward_acceptor"] --> tcpip_forward_acceptor_sup_s
sftd1["ssh_sftpd"] --> channel_sup_s
- sftd2["ssh_sftpd"] --> channel_sup_s
+ ssh_tcpip_forward_srv --> channel_sup_s
+ custom_cli --> channel_sup_s
+ custom_subsystem --> channel_sup_s
end
end
```
+# SSH supervision tree (OTP-23) ??
+# SSH supervision tree (OTP-22)
+```mermaid
+---
+title: SSH supervision tree (OTP-22)
+---
+flowchart RL
+ d_sup --> sup[["ssh_sup\n(ssh_app.erl)\n[o4o]"]]
+ c_sup --> sup
+
+ subgraph client
+ connection_handler["ssh_connection_handler\nSIGNIFICANT?"] --> c_sup
+ end
+
+ subgraph server
+ system_sup_s --> d_sup[["sshd_sup\n(ssh_app.erl)\n[o4o]"]]
+ acceptor_sup --> system_sup_s[["ssh_system_sup\n[o4o]\nauto_shutdown=all_significant"]]
+ acceptor["ssh_acceptor"] --> acceptor_sup[["ssh_acceptor_sup\n[o4o]\nSIGNIFICANT"]]
+
+ subsystem_sup_s --> system_sup_s
+
+ subgraph connection_s
+ connection_handler_s["ssh_connection_handler\nSIGNIFICANT"] --> subsystem_sup_s[["ssh_subsystem_sup\n[o4a]\nauto_shutdown=any_significant\nSIGNIFICANT"]]
+ channel_sup_s[["ssh_channel_sup\n[o4o]"]] --> subsystem_sup_s
+ tcpip_forward_acceptor_sup_s[["ssh_tcpip_forward_acceptor_sup\n[o4o]"]] --> subsystem_sup_s
+ sftd1["ssh_sftpd"] --> channel_sup_s
+ end
+end
+```
--
2.43.0