CFDPTEST(1)

πŸ“¦ version 3.2.1, in ubuntu jammy

πŸ’– 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 the h command. πŸ’–
  • 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 value 86400 (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 are 0, 1, and 2. if not specified, priority is 1. 🌈
  • 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 are 0-254. if not specified, ordinal is 0. πŸ’…
  • 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 protocol
    • 1 β€” best-effort, unreliable
    • 2 β€” 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. srrflags must be a status reporting flags string as defined for bptrace(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 are 0 (not critical) and 1 (critical). if not specified, criticality is 0. πŸ’œ
  • 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 preceding d, f, and t commands. πŸ”₯
  • ^ β€” 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 the cfdptest program. 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 interactive cfdptest task in background, purely to keep the event queue cleared, while your scripted non-interactive cfdptest tasks run in the foreground. that's the move. πŸ’…

🌈 EXIT STATUS 🌈

  • "0" β€” cfdptest has terminated. and if anything went sideways during operation, it'll be noted in the ion.log log 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 by commands_filename doesn't exist. 😭
  • cfdptest can't initialize CFDP. β€” cfdpadmin has 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