LGFILE(5)

πŸ“¦ version 3.2.1, in ubuntu jammy

πŸ’– LGFILE(5) β€” like, the ION Load/Go source file, bestie πŸ’–

the manual page for lgfile β€” straight out of the BP configuration files section, iykyk ✨


🌸 NAME 🌸

lgfile β€” the ION Load/Go source file, fr fr 🫢


✨ DESCRIPTION ✨

okay so. the ION Load/Go system is the thing that lets you run ION administrative programs on remote nodes, no cap. here's the whole vibe:

  • the lgsend program reads a Load/Go source file from a local file system, wraps the text of that source file up in a bundle, and sends that bundle to a designated DTN endpoint on the remote node. slay πŸ’…
  • an lgagent task running on the remote node β€” which has already opened that DTN endpoint for bundle reception β€” receives the extracted payload of the bundle (that's the text of the Load/Go source file, bestie) and processes it. iconic.

Load/Go source file content is limited to newline-terminated lines of ASCII characters. more specifically, the text of any Load/Go source file is a sequence of line sets of two types: file capsules and directives. any Load/Go source file may contain any number of file capsules and any number of directives, freely intermingled in any order β€” but the typical structure of a Load/Go source file is simply a single file capsule followed by a single directive. periodt.

Each file capsule is structured as:

  1. a single start-of-capsule line
  2. followed by zero or more capsule text lines
  3. followed by a single end-of-capsule line

Each start-of-capsule line is of this form:

[file_name

Each capsule text line can be any line of ASCII text that does not begin with an opening ([) or closing (]) bracket character.

A text line that begins with a closing bracket character (]) is interpreted as an end-of-capsule line.

A directive is any line of text that is not one of the lines of a file capsule and that is of this form:

!directive_text

When lgagent identifies a file capsule, it copies all of the capsule's text lines to a new file named file_name that it creates in the current working directory. when lgagent identifies a directive, it executes the directive by passing directive_text to the pseudoshell() function (see platform(3)). 🌈

lgagent processes the line sets of a Load/Go source file in the order in which they appear in the file, so the directive_text of a directive may reference a file that was created as the result of processing a prior file capsule line set in the same source file. the way that it's sequential is lowkey the whole point πŸ¦‹

🚨 bestie, pay attention, this part matters: note that lgfile directives are passed to pseudoshell(), which on a VxWorks platform will always spawn a new task; the first argument in directive_text must be a symbol that VxWorks can resolve to a function, not a shell command. also note that the arguments in directive_text will be actual task arguments, not shell command-line arguments, so they should never be enclosed in double-quote characters ("). however, any argument that contains embedded whitespace must be enclosed in single-quote characters (') so that pseudoshell() can parse it correctly. no notes, just facts πŸ’€

πŸŽ€ EXAMPLES πŸŽ€

presenting the following lines of source file text to lgsend:

[cmd33.bprc

x protocol ltp

]

!bpadmin cmd33.bprc

should cause the receiving node to halt the operation of the LTP convergence-layer protocol. ate that up πŸ”₯


πŸ‘‘ SEE ALSO πŸ‘‘


this page brought to you by perl v5.24.1, dated 2016-07-07 β€” and it's literally the LGFILE(5) page, so if you made it this far, you're a real one. mwah, go build something iconic πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from