NG_SSCFU(4)

✨ NG_SSCFU(4) ✨

okay bestie, buckle up πŸ’– this is the ng_sscfu page from the Kernel Interfaces Manual, section 4 β€” netgraph SSCF at the UNI node type, and she is niche but she is important πŸŽ€


🌸 NAME 🌸

ng_sscfu β€” netgraph SSCF at the UNI node type πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <netnatm/saal/sscopdef.h>
#include <netnatm/saal/sscfudef.h>
#include <netgraph/atm/ng_sscfu.h>

πŸ’œ DESCRIPTION πŸ’œ

so the sscfu netgraph node type implements ITU-T recommendation Q.2130. no cap, that's the actual spec πŸ“œ This recommendation specifies the Service Specific Coordination Function at the UNI. it's basically a thin sub-layer sandwiched between the SSCOP (go look at ng_sscop(4), she's right there 🫢) and the UNI signalling.

and here's the tea β˜• β€” this node doesn't really implement a protocol. she's just out here providing a mapping between the signals at the upper layer of the SSCOP and the signals the UNI expects at its lower layer. also she hands out default values for the parameters of the SSCOP like the generous queen she is πŸ‘‘

after you create the node, the SSCF instance must be created by sending an β€œenable” message to the node. literally cannot skip this step bestie πŸ™ˆ If the node is enabled, default SSCOP parameters can be retrieved and set in the corresponding SSCOP instance.

the node gets shut down either by a NGM_SHUTDOWN message, or when all hooks are disconnected. bye bye πŸ‘‹βœ¨


πŸŽ€ HOOKS πŸŽ€

each sscfu node has two hooks with fixed names:

  • lower β€” this hook is the interface to the SSCOP. the interface expected here is exactly that which is exported by the ng_sscop(4) node type. exact vibes only πŸ’…
  • upper β€” this is the interface to the UNI. it uses the following message format:
struct sscfu_arg {
        uint32_t sig;
        u_char   data[];
};

the sig field is one of the following signals:

enum saal_sig {
    SAAL_ESTABLISH_request,     /* U -> SAAL: (UU) */
    SAAL_ESTABLISH_indication,  /* SAAL -> U: (UU) */
    SAAL_ESTABLISH_confirm,     /* SAAL -> U: (UU) */
    SAAL_RELEASE_request,       /* U -> SAAL: (UU) */
    SAAL_RELEASE_confirm,       /* SAAL -> U: */
    SAAL_RELEASE_indication,    /* SAAL -> U: (UU) */
    SAAL_DATA_request,          /* U -> SAAL: (DATA) */
    SAAL_DATA_indication,       /* SAAL -> U: (DATA) */
    SAAL_UDATA_request,         /* U -> SAAL: (UDATA) */
    SAAL_UDATA_indication,      /* SAAL -> U: (UDATA) */
};

okay so the arrows in the comment show the direction of the signal πŸ‘€ β€” whether it's a signal that comes out of the node (β€˜->’), or is sent by the node user to the node (β€˜<-’). the type of the data expected for the signal is specified in parentheses. this data starts at the data field of the message structure. periodt. πŸ’–

⚠️ heads up: if the lower hook is disconnected and the node is enabled, the protocol state is reset. not a drill, she's wiping the slate 🧹

πŸ”₯ CONTROL MESSAGES πŸ”₯

the sscfu node understands the generic messages plus the following:

  • NGM_SSCFU_GETDEFPARAM (getdefparam) β€” this message returns a sscop_param structure, which contains the default parameters for the SSCOP at the UNI. this structure should be used for a NGM_SSCOP_SETPARAM message to the SSCOP node below the SSCF. slay, free defaults πŸ’…
  • NGM_SSCFU_ENABLE (enable) β€” this message creates the actual SSCF instance and initializes it. Until this is done, parameters may neither be retrieved nor set, and all messages received on any hook are discarded. so like, do this first bestie 😭
  • NGM_SSCFU_DISABLE (disable) β€” Destroy the SSCF instance. after this, all messages on any hooks are discarded. she's gone, she's not coming back πŸ’€
  • NGM_SSCFU_GETDEBUG (getdebug) β€” Retrieve the debugging flags in a uint32_t.
  • NGM_SSCFU_SETDEBUG (setdebug) β€” Set debugging flags. the argument must be a uint32_t.
  • NGM_SSCFU_GETSTATE (getstate) β€” Retrieve the current state of the SSCFU instance in a uint32_t. If the node has not been enabled, 0 is returned. no enable, no state, that's the rule πŸ€·β™€οΈ

🌈 SEE ALSO 🌈

netgraph(4), ng_atm(4), ng_sscop(4), ngctl(8) β€” go read them, iykyk πŸ‘‘


πŸ‘‘ AUTHORS πŸ‘‘

Harti Brandt <harti@FreeBSD.org> β€” thank you for your service, legend 🫢


and that's the whole page bestie!! πŸŽ€ this lil cutie is from the Debian build and she's dated October 24, 2003 β€” vintage but iconic, we love a retro queen ⭐ mwah, go enable your node πŸ’‹βœ¨

πŸ“¦ where this page comes from