CFDPTEST(1)
π cfdptest β CFDP executables, section 1 of the manual π
okay bestie, pull up a chair, we're talking about cfdptest, from the CFDP executables chapter of the manual. it's giving "test shell for ION" and honestly? it's kind of iconic. let's get into it. β¨
πΈ NAME πΈ
cfdptest β the CFDP test shell for ION. that's it, that's the name, she's simple and she knows what she wants. π
π SYNOPSIS π
cfdptest [ commands_filename ]
one optional argument, no notes, we love a low-maintenance queen. π«Ά
β¨ DESCRIPTION β¨
so cfdptest is literally the whole mechanism for testing CFDP file transmission. she can run in scripted mode or interactive mode, her choice, she contains multitudes. π
and here's a lil detail that applies no matter what: every single bundle that contains CFDP PDUs gets sent with custody transfer requested, and with all bundle status reporting disabled. that's just how she rolls, no cap.
π¦ scripted mode (with commands_filename) π¦
when you hand her a commands_filename, she operates in response to the CFDP management commands sitting inside that file. and the way she reads it: each line of text in the file = one single command, made up of several tokens β a one-character command code, and in most cases one or more command arguments that can be one or more characters. those commands are what configure and kick off the CFDP file transmission operations. β
π§ interactive mode (no file) π§
if you don't specify a file, she instead offers you an interactive "shell" for command entry. she prints a prompt string, ": ", to stdout, accepts strings of text from stdin, and interprets each string as a command. main character energy fr fr. π
π the commands π
here's every command she supports, whether you're in interactive or scripted mode:
?β the help command. displays a listing of the commands and their formats. it's literally the same as thehcommand. πhβ an alternate form of the help command. same vibes, different letter.d<destination CFDP entity ID number> β the destination command. establishes the CFDP entity that the next file transmission operation will be directed to. and fun fact: CFDP entity numbers in ION are, by convention, the same as BP node numbers. πf<source file path name> β the from command. identifies the file that gets transmitted when the next file transmission operation is commanded. πt<destination file path name> β the to command. provides the name for the file that will be created at the receiving entity when the next file transmission operation is commanded. π¦l<lifetime in seconds> β the time-to-live command. sets the time-to-live for all subsequently issued bundles containing CFDP PDUs. if you don't specify it, the default value86400(that's 1 day, bestie) is used. βp<priority> β the priority command. sets the priority (class of service) for all subsequently issued bundles containing CFDP PDUs. valid values are0,1, and2. if not specified, priority is1. πo<ordinal> β the ordinal command. sets the "ordinal" (that's the sub-priority within priority 2, iykyk) for all subsequently issued bundles containing CFDP PDUs. valid values are0-254. if not specified, ordinal is0. πm<mode> β the mode command. establishes the transmission mode ("best-effort" or assured) for all subsequently issued bundles containing CFDP PDUs. valid values are:0β assured, reliable, with reliability provided by a reliable DTN convergence layer protocol1β best-effort, unreliable2β assured, reliable, but with reliability provided by BP custody transfer- if not specified, transmission mode is
0.
g<srrflags> β the srrflags command. establishes the BP status reporting that will be requested for all subsequently issued bundles containing CFDP PDUs.srrflagsmust be a status reporting flags string as defined forbptrace(1): a sequence of status report flags, separated by commas, with no embedded whitespace. each status report flag must be one of:rcv,ct,fwd,dlv,del. πc<criticality> β the criticality command. establishes the criticality for all subsequently issued bundles containing CFDP PDUs. valid values are0(not critical) and1(critical). if not specified, criticality is0. πr<action code nbr> <first path name> <second path name> β the filestore request command. adds a filestore request to the metadata that will be issued when the next file transmission operation is commanded. the action code numbers are:
0 = create file
1 = delete file
2 = rename file
3 = append file
4 = replace file
5 = create directory
6 = remove directory
7 = deny file
8 = deny directory
u'<message text>'β the user message command. adds a user message to the metadata that will be issued when the next file transmission operation is commanded. π&β the send command. initiates file transmission as configured by the most recent precedingd,f, andtcommands. π₯^β the cancel command. cancels the most recently initiated file transmission. π%β the suspend command. suspends the most recently initiated file transmission. π$β the resume command. resumes the most recently initiated file transmission. β¨#β the report command. reports on the most recently initiated file transmission. πqβ the quit command. terminates thecfdptestprogram. bye bestie! πΈ
π the event thread tea π
cfdptest in interactive mode also spawns a CFDP event handling thread. that event thread receives CFDP service indications and just... prints lines of text to stdout to announce them. simple. iconic. π«Ά
NOTE bestie this one matters: when cfdptest runs in scripted mode, it does NOT spawn an event handling thread. which means the CFDP events queue can grow indefinitely unless some other task consumes and reports on the events. π
one simple solution, straight from the manual: run an interactivecfdptesttask in background, purely to keep the event queue cleared, while your scripted non-interactivecfdptesttasks run in the foreground. that's the move. π
π EXIT STATUS π
"0"βcfdptesthas terminated. and if anything went sideways during operation, it'll be noted in theion.loglog file. so check your logs, bestie. π
π FILES π
see above for the details on valid commands_filename commands. yes, that's really all it says. short and sweet. β¨
π¦ ENVIRONMENT π¦
no environment variables apply. none. zero. she doesn't need them, she's self-sufficient. π
β DIAGNOSTICS β
diagnostic messages produced by cfdptest get written to the ION log file ion.log. here's what you might catch her saying: π«Ά
Can't open command file...β the file identified bycommands_filenamedoesn't exist. πcfdptest can't initialize CFDP.βcfdpadminhas not yet initialized CFDP operations. run the admin first, bestie.Can't put FDU.β the attempt to initiate file transmission failed. see the ION log for additional diagnostic messages from the CFDP library.Failed getting CFDP event.β the attempt to retrieve a CFDP service indication failed. see the ION log for additional diagnostic messages from the CFDP library.
π BUGS π
found a bug? report it to <ion-bugs@korgano.eecs.ohiou.edu>. they want to hear from you, fr fr. π
πΈ SEE ALSO πΈ
go read those too, they're the supporting cast. π
and that's the whole page, bestie!! you ate this documentation up. πβ¨
this lil masterpiece is from perl v5.24.1, dated 2016-07-07, and it lives in the CFDPTEST(1) slot of the CFDP executables manual. mwah. π ππ¦
π¦ where this page comes from
- ubuntu jammy: ion 3.2.1+dfsg-1.1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms