ATMSIGD(8)

πŸ’– ATMSIGD β€” the ATM signaling demon, but make it make sense πŸ’–

okay bestie, so this is atmsigd(8), a Maintenance Command, and honestly? it's giving "quiet little daemon running the whole ATM situation." let's get into it 🫢


✨ NAME ✨

atmsigd β€” the ATM signaling demon πŸ’… (yes it's spelled "demon" in the original, we respect the lore)


🌸 SYNOPSIS 🌸

atmsigd [-b] [-c config_file] [-d] [-D dump_dir] [-l logfile] [-m mode]
[-n] [-q qos] [-t trace_length] [-u uni_version] [[itf.]vpi.vci
[input output]]
atmsigd -V

πŸ¦‹ DESCRIPTION πŸ¦‹

so atmsigd implements the ATM UNI signaling protocol. periodt. here's the tea: when the kernel wants to establish, accept, or close ATM SVCs, it sends those requests over (a comparably simple protocol, ngl) to the signaling demon, and then the demon goes and does the whole dialog with the network. main character behavior fr fr πŸ‘‘

heads up bestie: atmsigd is not able to accept or establish connections until the local ATM address of the interface is configured β€” either by ilmid or manually using atmaddr. so like… do that first, or nothing happens 😭

the default signaling VC is interface 0, VPI 0, VCI 5, and you can override it on the command line by specifying a different PVC address.

when you do override that default VC, you can optionally also specify a pair of named pipes to use for communicating with the user of signaling. normally though? the kernel is the user of signaling, and atmsigd just opens a special socket to talk to it. slay.

also important: if atmsigd gets killed, all system calls requiring interaction with it will return with an error and set errno to EUNATCH. not cute. don't do that. πŸ’€

πŸ’œ OPTIONS πŸ’œ

  • -b β€” run in background, i.e. in a forked child process, but only after initializing. so it gets its life together first, then dips ✨
  • -c config_file β€” use the specified configuration file instead of /etc/atmsigd.conf. and if an option shows up in both the config file and the command line, the command line has priority. command line ate, no crumbs πŸ‘‘
  • -d β€” enables (lots of) debugging output. by default atmsigd is comparably quiet, so this is the "bestie tell me EVERYTHING" switch πŸ—£οΈ
  • -D dump_dir β€” specifies the directory where atmsigd will write status and trace dumps. if -D isn't specified, dumps go to /var/tmp. πŸ“
  • -l logfile β€” write diagnostic messages to the specified file. the special name syslog sends diagnostics to the system logger, and stderr sends diagnostics to standard error. if -l is absent, the setting in atmsigd.conf is used. and if atmsigd doesn't specify a destination either? messages go to standard error. defaults have layers, iykyk πŸ’…
  • -m mode β€” set the mode of operation. the available modes are:
    • user β€” for the user side (this is the default)
    • network β€” for the network side (useful if you have two PCs but no switch)
    • switch β€” for operation with a signaling relay in a switch
  • -n β€” prints addresses in numeric format only, i.e. no address to name translation is attempted. we're not doing the whole "who are you really" thing today πŸ™ˆ
  • -q qos β€” configures the signaling VC to use the specified quality of service (see qos(7) for the syntax). by default, UBR at link speed is used on the signaling VC. ⭐
  • -t trace_length β€” sets the number of entries that should be kept in the trace buffer. -t 0 disables tracing. if -t isn't specified, atmsigd uses a default of 20 trace entries. πŸŽ€
  • -u uni_version β€” sets the signaling mode. the supported modes are:
    • uni30 β€” for UNI 3.0
    • uni31 β€” for UNI 3.1
    • uni31+uni30 β€” for UNI 3.1 with 3.0 compatibility
    • uni40 β€” for UNI 4.0
    • uni40+q.2963.1 β€” for UNI 4.0 with Q.2963.1 peak cell rate renegotiation
  • -V β€” prints the version number of atmsigd on standard output and exits. short, sweet, iconic 🌈

🧚 FILES 🧚

  • /etc/atmsigd.conf β€” default configuration file
  • /var/tmp/atmsigd.pid.status.version β€” default location of status dumps
  • /var/tmp/atmsigd.pid.trace.version β€” default location of signaling trace dumps

πŸ”₯ DEBUGGING πŸ”₯

when atmsigd receives a SIGUSR1 signal, it dumps the list of all internal socket descriptors. with SIGUSR2, it dumps the contents of the trace buffer. very "show me your receipts" of it all πŸ“‹

if a dump directory was set, dumps are written to files called:

  • atmsigd.pid.status.number
  • atmsigd.pid.trace.number

respectively, where number starts at zero and gets incremented for every dump.

if no dump directory is set, dumps are written to standard error. k.

dumps are also generated whenever atmsigd detects a fatal error and terminates. but no cap: no attempt is made to catch signals like SIGSEGV β€” it's just not doing that. πŸ’€


😭 BUGS 😭

the generation of traces is a comparably slow process, which may already take several seconds for only 100 trace entries. so to generate a trace dump, atmsigd forks a child process that runs in parallel to the signaling demon. multitasking queen, honestly 🫢


πŸ‘‘ AUTHOR πŸ‘‘

Werner Almesberger, EPFL ICA <Werner.Almesberger@epfl.ch>


🌈 SEE ALSO 🌈

atmaddr(8), atmsigd.conf(4), ilmid(8), qos(7)


and that's the whole vibe bestie πŸ’– this one's from the Linux manual, page dated April 26, 2000 β€” vintage but still serving, mwah πŸ’…βœ¨

πŸ“¦ where this page comes from