---
name: "tcpcli"
section: "1"
platform: "linux"
package: "ion"
version: "3.2.1+dfsg-1.1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/tcpcli"
---

# tcpcli(1)

DTN TCPCL-compliant convergence layer input task

## NAME

tcpcli - DTN TCPCL-compliant convergence layer input task

## SYNOPSIS

**tcpcli** *local\_hostname*\[:*local\_port\_nbr*\]

## DESCRIPTION

**tcpcli** is a background "daemon" task comprising 1 + N threads: one that handles TCP connections from remote **tcpclo** tasks, spawning sockets for data reception from those tasks, plus one input thread for each spawned socket to handle data reception over that socket.

The connection thread simply accepts connections on a TCP socket bound to *local\_hostname* and *local\_port\_nbr* and spawns reception threads.  The default value for *local\_port\_nbr*, if omitted, is 4556.

Each time a connection is established, the end-points will first exchange contact headers, because connection parameters need to be negotiated. **tcpcli** records the acknowledgement flags, reactive fragmentation flag and negative acknowledgements flag in the contact header it receives from its peer **tcpclo** task.

Each reception thread receives bundles over the associated connected socket. Each bundle received on the connection is preceded by message type, fragmentation flags, and size represented as an SDNV.  The received bundles are passed to the bundle protocol agent on the local ION node.

**tcpcli** is spawned automatically by **bpadmin** in response to the 's' (START) command that starts operation of the Bundle Protocol; the text of the command that is used to spawn the task must be provided at the time the "tcp" convergence layer protocol is added to the BP database. The convergence layer input task is terminated by **bpadmin** in response to an 'x' (STOP) command.  **tcpcli** can also be spawned and terminated in response to START and STOP commands that pertain specifically to the TCP convergence layer protocol.

## EXIT STATUS

- "0"

  **tcpcli** terminated normally, for reasons noted in the **ion.log** file.  If this termination was not commanded, investigate and solve the problem identified in the log file and use **bpadmin** to restart **tcpcli**.

- "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**.

## FILES

No configuration files are needed.

## ENVIRONMENT

No environment variables apply.

## 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.

- 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.

- CLI task is already started for this duct.

  Redundant initiation of **tcpcli**.

- 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.

## BUGS

Report bugs to \<ion-bugs@korgano.eecs.ohiou.edu\>

## SEE ALSO

[*bpadmin*(1)](/bpadmin/1.md), [*bprc*(5)](/bprc/5.md), [*tcpclo*(1)](/tcpclo/1.md)
