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 theng_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 asscop_paramstructure, which contains the default parameters for the SSCOP at the UNI. this structure should be used for aNGM_SSCOP_SETPARAMmessage 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 auint32_t.NGM_SSCFU_SETDEBUG(setdebug) β Set debugging flags. the argument must be auint32_t.NGM_SSCFU_GETSTATE(getstate) β Retrieve the current state of the SSCFU instance in auint32_t. If the node has not been enabled,0is 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
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 2001-2003 Fraunhofer Institute for Open Communication Systems (FhG Fokus)
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms