TCPCLI(1)

πŸ“¦ version 3.2.1, in ubuntu jammy

✨ TCPCLI(1) β€” the tcpcli glow-up ✨

BP executables Β· manual page for tcpcli Β· section 1 πŸ’…

okay bestie, sit down, hydrate, and let me tell you about the little daemon that could 🫢


🌸 NAME 🌸

tcpcli β€” the DTN TCPCL-compliant convergence layer input task. she listens, she receives, she hands bundles to the bundle protocol agent. main character energy fr fr πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

tcpcli local_hostname[:local_port_nbr]

πŸ’– DESCRIPTION πŸ’–

so tcpcli is a background "daemon" task, and the way she's built is literally 1 + N threads 🧚 β€” one thread that handles TCP connections coming in from remote tcpclo tasks and spawns sockets for data reception from those tasks, plus one input thread for each spawned socket, and that thread's whole job is handling data reception over that socket. teamwork, no cap πŸ’…

The connection thread is lowkey simple: it just accepts connections on a TCP socket bound to local_hostname and local_port_nbr, and spawns reception threads. And if you leave local_port_nbr out? The default is 4556. write that down πŸ“

Every single time a connection gets established, the end-points will first exchange contact headers, because the connection parameters need to be negotiated β€” it's giving formal introductions at a party πŸŽ€. tcpcli records the acknowledgement flags, the reactive fragmentation flag, and the negative acknowledgements flag from the contact header it receives from its peer tcpclo task. noted. filed. obsessed.

Then each reception thread receives bundles over the associated connected socket. And heads up β€” each bundle received on the connection is preceded by message type, fragmentation flags, and size represented as an SDNV 🌈. The received bundles get passed to the bundle protocol agent on the local ION node. slay, delivery complete πŸ’Œ

Now, how does she even get born? tcpcli is spawned automatically by bpadmin in response to the 's' (START) command that starts operation of the Bundle Protocol 🌟 β€” and the text of the command used to spawn the task must be provided at the time the "tcp" convergence layer protocol is added to the BP database. no improvising, bestie. She's terminated by bpadmin in response to an 'x' (STOP) command πŸ’€. And plot twist: tcpcli can also be spawned and terminated in response to START and STOP commands that pertain specifically to the TCP convergence layer protocol. versatile queen ✨


πŸ”₯ EXIT STATUS πŸ”₯

  • "0" β€” tcpcli terminated normally, for reasons noted in the ion.log file. If this termination was not commanded, go investigate and solve the problem identified in the log file, then use bpadmin to restart tcpcli. don't just ignore it πŸ™ˆ
  • "1" β€” tcpcli terminated abnormally, for reasons noted in the ion.log file. Investigate and solve the problem identified in the log file, then use bpadmin to restart tcpcli. it's giving crisis πŸ’€

πŸ¦‹ FILES πŸ¦‹

No configuration files are needed. not a single one. she's low maintenance πŸ’…βœ¨


🌈 ENVIRONMENT 🌈

No environment variables apply. nope, none, zero, nada πŸŽ€


πŸ’€ DIAGNOSTICS πŸ’€

The following diagnostics may be issued to the ion.log log file:

  • tcpcli can't attach to BP. β€” bpadmin has not yet initialized Bundle Protocol operations. like, she's knocking and nobody's home 😭
  • No such tcp duct. β€” No TCP induct matching local_hostname and local_port_nbr has been added to the BP database. Use bpadmin to stop the TCP convergence-layer protocol, add the induct, and then restart the TCP protocol. okay so the fix is literally right there 🫢
  • CLI task is already started for this duct. β€” Redundant initiation of tcpcli. she's already here, bestie πŸ’…
  • Can't get IP address for host β€” Operating system error. Check errtext, correct problem, and restart TCP.
  • Can't open TCP socket β€” Operating system error. Check errtext, correct problem, and restart TCP.
  • Can't initialize socket β€” Operating system error. Check errtext, correct problem, and restart TCP.
  • tcpcli can't create access thread β€” Operating system error. Check errtext, correct problem, and restart TCP.
bestie the pattern here is: errtext is your bestie too. read it, fix the thing, restart TCP. every single time. no skipping 🌸

πŸ› BUGS πŸ›

Report bugs to <ion-bugs@korgano.eecs.ohiou.edu> πŸ“§ β€” tell them we sent you, iykyk 😌


πŸ‘‘ SEE ALSO πŸ‘‘

go read those next, bestie, they're literally the supporting cast πŸ’œ


and that's the whole page!! πŸ’– this was perl v5.24.1, dated 2016-07-07, from the TCPCLI(1) era β€” vintage but still iconic, periodt βœ¨πŸ¦‹πŸŽ€

πŸ“¦ where this page comes from