\doxysection{Libgb}
\label{group__libgb}\index{Libgb@{Libgb}}


GPRS Networks Service (NS) messages on the Gb interface 3GPP TS 08.\+16 version 8.\+0.\+1 Release 1999 / ETSI TS 101 299 V8.\+0.\+1 (2002-\/05)  


\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item 
file \textbf{ gprs\+\_\+ns.\+h}
\item 
file \textbf{ gprs\+\_\+ns.\+c}
\begin{DoxyCompactList}\small\item\em GPRS Networks Service (NS) messages on the Gb interface. \end{DoxyCompactList}\item 
file \textbf{ gprs\+\_\+ns2.\+c}
\begin{DoxyCompactList}\small\item\em GPRS Networks Service (NS) messages on the Gb interface. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ gprs\+\_\+ns\+\_\+hdr}
\begin{DoxyCompactList}\small\item\em Common header of GPRS NS. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem}
\begin{DoxyCompactList}\small\item\em Section 10.\+3.\+2c List of IP4 Elements. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem}
\begin{DoxyCompactList}\small\item\em Section 10.\+3.\+2d List of IP6 Elements. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+,  st\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, false, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)
\item 
\#define \textbf{ ns\+\_\+set\+\_\+remote\+\_\+state}(ns\+\_\+,  st\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, true, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+blocked}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED})
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+unblocked}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}));
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+alive}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE})
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+dead}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}));
\item 
\#define \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}(nsvc,  reason)
\item 
\#define \textbf{ CHECK\+\_\+\+TX\+\_\+\+RC}(rc,  nsvc)
\item 
\#define \textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+,  st\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, false, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)
\item 
\#define \textbf{ ns\+\_\+set\+\_\+remote\+\_\+state}(ns\+\_\+,  st\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, true, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+blocked}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED})
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+unblocked}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}));
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+alive}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE})
\item 
\#define \textbf{ ns\+\_\+mark\+\_\+dead}(ns\+\_\+)~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}));
\item 
\#define \textbf{ NS2\+\_\+\+LL\+\_\+\+MAX\+\_\+\+STR}~4+2$\ast$(INET6\+\_\+\+ADDRSTRLEN+9)+8
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ ns\+\_\+pdu\+\_\+type} \{ \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+UNITDATA} = 0x00
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET} = 0x02
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK} = 0x03
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK} = 0x04
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK\+\_\+\+ACK} = 0x05
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK} = 0x06
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK\+\_\+\+ACK} = 0x07
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS} = 0x08
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE} = 0x0a
, \newline
\textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK} = 0x0b
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+ACK} = 0x0c
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+ADD} = 0x0d
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+CHANGE\+\_\+\+WEIGHT} = 0x0e
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG} = 0x0f
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG\+\_\+\+ACK} = 0x10
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+DELETE} = 0x11
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE} = 0x12
, \newline
\textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE\+\_\+\+ACK} = 0x13
 \}
\begin{DoxyCompactList}\small\item\em NS PDU Type (TS 08.\+16, Section 10.\+3.\+7, Table 14) \end{DoxyCompactList}\item 
enum \textbf{ ns\+\_\+ctrl\+\_\+ie} \{ \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE} = 0x00
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+VCI} = 0x01
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+PDU} = 0x02
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+BVCI} = 0x03
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+NSEI} = 0x04
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+LIST} = 0x05
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+LIST} = 0x06
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+MAX\+\_\+\+NR\+\_\+\+NSVC} = 0x07
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+EP\+\_\+\+NR} = 0x08
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+EP\+\_\+\+NR} = 0x09
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+RESET\+\_\+\+FLAG} = 0x0a
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+IP\+\_\+\+ADDR} = 0x0b
, \newline
\textbf{ NS\+\_\+\+IE\+\_\+\+TRANS\+\_\+\+ID} = 0xff
 \}
\begin{DoxyCompactList}\small\item\em NS Control IE (TS 08.\+16, Section 10.\+3, Table 12) \end{DoxyCompactList}\item 
enum \textbf{ ns\+\_\+cause} \{ \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+TRANSIT\+\_\+\+FAIL} = 0x00
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION} = 0x01
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+EQUIP\+\_\+\+FAIL} = 0x02
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED} = 0x03
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN} = 0x04
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+BVCI\+\_\+\+UNKNOWN} = 0x05
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+SEM\+\_\+\+INCORR\+\_\+\+PDU} = 0x08
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE} = 0x0a
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC} = 0x0b
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+ESSENT\+\_\+\+IE} = 0x0c
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE} = 0x0d
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+NR\+\_\+\+IPv4\+\_\+\+EP} = 0x0e
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+NR\+\_\+\+IPv6\+\_\+\+EP} = 0x0f
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+NR\+\_\+\+NS\+\_\+\+VC} = 0x10
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+WEIGH} = 0x11
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+UNKN\+\_\+\+IP\+\_\+\+EP} = 0x12
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+UNKN\+\_\+\+IP\+\_\+\+ADDR} = 0x13
, \newline
\textbf{ NS\+\_\+\+CAUSE\+\_\+\+UNKN\+\_\+\+IP\+\_\+\+TEST\+\_\+\+FAILED} = 0x14
 \}
\begin{DoxyCompactList}\small\item\em NS Cause (TS 08.\+16, Section 10.\+3.\+2, Table 13) \end{DoxyCompactList}\item 
enum \textbf{ ns\+\_\+ctr} \{ \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+DEAD}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+REPLACED}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT\+\_\+\+DROP}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT\+\_\+\+DROP}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+UNBLOCKED}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+DEAD}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+REPLACED}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE}
, \newline
\textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET}
 \}
\item 
enum \textbf{ ns\+\_\+stat} \{ \textbf{ NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ gprs\+\_\+ns\+\_\+hdr} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+} ((packed))
\item 
static bool \textbf{ nsvc\+\_\+is\+\_\+not\+\_\+used} (const struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
struct \textbf{ msgb} $\ast$ \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc} (void)
\item 
static void \textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint32\+\_\+t state, bool is\+\_\+remote, const char $\ast$\textbf{ file}, unsigned line)
\item 
struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+nsvci} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, uint16\+\_\+t nsvci)
\begin{DoxyCompactList}\small\item\em Lookup struct \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} based on NSVCI. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+nsei} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei})
\begin{DoxyCompactList}\small\item\em Lookup struct \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} based on NSEI. \end{DoxyCompactList}\item 
static struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+active\+\_\+nsvc\+\_\+by\+\_\+nsei} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t \textbf{ bvci})
\begin{DoxyCompactList}\small\item\em Determine active NS-\/\+VC for given NSEI + BVCI. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+rem\+\_\+addr} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, const struct sockaddr\+\_\+in $\ast$sin)
\begin{DoxyCompactList}\small\item\em Lookup NS-\/\+VC based on specified remote peer socket addr. \end{DoxyCompactList}\item 
static void \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb} (void $\ast$\textbf{ data})
\item 
struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+nsvc\+\_\+create2} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, uint16\+\_\+t nsvci, uint8\+\_\+t \textbf{ sig\+\_\+weight}, uint8\+\_\+t \textbf{ data\+\_\+weight})
\begin{DoxyCompactList}\small\item\em Create a new NS-\/\+VC (Virtual Circuit) within given instance. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+nsvc\+\_\+delete} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Delete given NS-\/\+VC. \end{DoxyCompactList}\item 
static void \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, unsigned int signal, uint8\+\_\+t \textbf{ cause})
\item 
static void \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+mismatch} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg}, uint8\+\_\+t \textbf{ pdu\+\_\+type}, uint8\+\_\+t ie\+\_\+type)
\item 
static void \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+replaced} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ gprs\+\_\+nsvc} $\ast$old\+\_\+nsvc)
\item 
const char $\ast$ \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str} (enum \textbf{ ns\+\_\+cause} \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Obtain a human-\/readable string for NS cause value. \end{DoxyCompactList}\item 
static int \textbf{ nsip\+\_\+sendmsg} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ grps\+\_\+ns\+\_\+frgre\+\_\+sendmsg} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static bool \textbf{ ns\+\_\+is\+\_\+sns} (uint8\+\_\+t \textbf{ pdu\+\_\+type})
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+tx} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t \textbf{ pdu\+\_\+type})
\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+RESET on a given NSVC. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause}, uint16\+\_\+t \textbf{ bvci}, struct \textbf{ msgb} $\ast$orig\+\_\+msg)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+STATUS on a given NSVC. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+BLOCK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
static int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+BLOCK-\/\+ACK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+unblock} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+UNBLOCK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+ALIVE on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+ALIVE-\/\+ACK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
static void \textbf{ nsvc\+\_\+start\+\_\+timer} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, enum \textbf{ nsvc\+\_\+timer\+\_\+mode} \textbf{ mode})
\item 
static int \textbf{ nsvc\+\_\+timer\+\_\+elapsed\+\_\+ms} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t trans\+\_\+id, uint8\+\_\+t $\ast$\textbf{ cause}, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$ip4\+\_\+elems, unsigned int num\+\_\+ip4\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+ACK as per Section 9.\+3.\+1. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, bool end\+\_\+flag, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$ip4\+\_\+elems, unsigned int num\+\_\+ip4\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+CONFIG as per Section 9.\+3.\+4. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t $\ast$\textbf{ cause})
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+CONFIG-\/\+ACK as per Section 9.\+3.\+5. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, bool reset\+\_\+flag, uint16\+\_\+t max\+\_\+nr\+\_\+nsvc, uint16\+\_\+t $\ast$ip4\+\_\+ep\+\_\+nr, uint16\+\_\+t $\ast$ip6\+\_\+ep\+\_\+nr)
\begin{DoxyCompactList}\small\item\em Encode + transmit a SNS-\/\+SIZE as per Section 9.\+3.\+7. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t $\ast$\textbf{ cause})
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+SIZE-\/\+ACK as per Section 9.\+3.\+8. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+sendmsg} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, struct \textbf{ msgb} $\ast$\textbf{ msg})
\begin{DoxyCompactList}\small\item\em High-\/level function for transmitting a NS-\/\+UNITDATA messsage. \end{DoxyCompactList}\item 
static int \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+unitdata} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+status} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gprs\+\_\+nsvc\+\_\+replace\+\_\+if\+\_\+found} (uint16\+\_\+t nsvci, struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$nsvc, struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$old\+\_\+nsvc)
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset} (struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack} (struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
static int \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\item 
int \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ gprs\+\_\+nsvc} $\ast$fallback\+\_\+nsvc, struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$new\+\_\+nsvc)
\begin{DoxyCompactList}\small\item\em Create/get NS-\/\+VC independently from underlying transport layer. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Process NS message independently from underlying transport layer. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns\+\_\+rcvmsg} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct sockaddr\+\_\+in $\ast$saddr, enum \textbf{ gprs\+\_\+ns\+\_\+ll} ll)
\begin{DoxyCompactList}\small\item\em Receive incoming NS message from underlying transport layer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, const struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
const char $\ast$ \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str} (const struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
char $\ast$ \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+c} (const void $\ast$ctx, const struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
void \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+copy} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, struct \textbf{ gprs\+\_\+nsvc} $\ast$other)
\item 
void \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+clear} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\item 
struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$ \textbf{ gprs\+\_\+ns\+\_\+instantiate} (\textbf{ gprs\+\_\+ns\+\_\+cb\+\_\+t} $\ast$cb, void $\ast$ctx)
\begin{DoxyCompactList}\small\item\em Create a new GPRS NS instance. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns\+\_\+close} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi)
\item 
void \textbf{ gprs\+\_\+ns\+\_\+destroy} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi)
\begin{DoxyCompactList}\small\item\em Destroy an entire NS instance. \end{DoxyCompactList}\item 
static struct \textbf{ msgb} $\ast$ \textbf{ read\+\_\+nsip\+\_\+msg} (struct \textbf{ osmo\+\_\+fd} $\ast$bfd, int $\ast$error, struct sockaddr\+\_\+in $\ast$saddr)
\item 
static int \textbf{ handle\+\_\+nsip\+\_\+read} (struct \textbf{ osmo\+\_\+fd} $\ast$bfd)
\item 
static int \textbf{ handle\+\_\+nsip\+\_\+write} (struct \textbf{ osmo\+\_\+fd} $\ast$bfd)
\item 
static int \textbf{ nsip\+\_\+fd\+\_\+cb} (struct \textbf{ osmo\+\_\+fd} $\ast$bfd, unsigned int what)
\item 
int \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+listen} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi)
\begin{DoxyCompactList}\small\item\em Create a listening socket for GPRS NS/\+UDP/\+IP. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+nsvc\+\_\+reset} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Initiate a RESET procedure. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, struct sockaddr\+\_\+in $\ast$dest, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t nsvci)
\begin{DoxyCompactList}\small\item\em Establish a NS connection (from the BSS) to the SGSN. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+nsvc} $\ast$ \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect\+\_\+sns} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi, struct sockaddr\+\_\+in $\ast$dest, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t nsvci)
\begin{DoxyCompactList}\small\item\em Establish a NS connection (from the BSS) to the SGSN using SNS auto-\/configuration. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns\+\_\+set\+\_\+log\+\_\+ss} (int ss)
\item 
char $\ast$ \textbf{ gprs\+\_\+nsvc\+\_\+state\+\_\+append} (char $\ast$s, struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Append the nsvc state to a talloc string. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test} (struct \textbf{ gprs\+\_\+nsvc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Start the ALIVE timer procedure in all NS-\/\+VCs part of this NS Instance. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs} (struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$nsi)
\item 
char $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+buf} (char $\ast$buf, size\+\_\+t buf\+\_\+len, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em string-\/format a given NS-\/\+VC into a user-\/supplied buffer. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em string-\/format a given NS-\/\+VC to a thread-\/local static buffer. \end{DoxyCompactList}\item 
char $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+c} (const void $\ast$ctx, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em string-\/format a given NS-\/\+VC to a dynamically allocated string. \end{DoxyCompactList}\item 
const char $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+state\+\_\+name} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Return the current state name of a given NS-\/\+VC to a thread-\/local static buffer. \end{DoxyCompactList}\item 
static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+signal} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\item 
static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+modulo} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, uint16\+\_\+t \textbf{ bvci}, uint32\+\_\+t load\+\_\+selector)
\item 
static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+weight\+\_\+modulo} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, uint16\+\_\+t \textbf{ bvci}, uint32\+\_\+t load\+\_\+selector)
\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+first} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\item 
static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+load\+\_\+sharing} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, uint16\+\_\+t \textbf{ bvci}, uint32\+\_\+t link\+\_\+selector)
\item 
int \textbf{ gprs\+\_\+ns2\+\_\+recv\+\_\+prim} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, struct \textbf{ osmo\+\_\+prim\+\_\+hdr} $\ast$oph)
\begin{DoxyCompactList}\small\item\em Receive a primitive from the NS User (Gb). \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint16\+\_\+t \textbf{ bvci}, enum \textbf{ gprs\+\_\+ns2\+\_\+affecting\+\_\+cause} \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Send a STATUS.\+ind primitive to the specified NS instance user. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+vc\+\_\+alloc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, bool initiater, enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+mode} vc\+\_\+mode, const char $\ast$id)
\begin{DoxyCompactList}\small\item\em Allocate a NS-\/\+VC within the given bind + NSE. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Destroy/release given NS-\/\+VC. \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+free\+\_\+nsvcs} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvcs} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\begin{DoxyCompactList}\small\item\em Destroy/release all NS-\/\+VC of given NSE. \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ ns2\+\_\+msgb\+\_\+alloc} (void)
\begin{DoxyCompactList}\small\item\em Allocate a message buffer for use with the NS2 stack. \end{DoxyCompactList}\item 
static int \textbf{ reject\+\_\+status\+\_\+msg} (struct \textbf{ msgb} $\ast$orig\+\_\+msg, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, struct \textbf{ msgb} $\ast$$\ast$reject, enum \textbf{ ns\+\_\+cause} \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Create a status message to be sent over a new connection. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei})
\begin{DoxyCompactList}\small\item\em Resolve a NS Entity based on its NSEI. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+nsvci} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, uint16\+\_\+t nsvci)
\begin{DoxyCompactList}\small\item\em Resolve a NS-\/\+VC Entity based on its NS-\/\+VCI. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse2} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei}, enum \textbf{ gprs\+\_\+ns2\+\_\+ll} linklayer, enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect, bool ip\+\_\+sns\+\_\+role\+\_\+sgsn)
\begin{DoxyCompactList}\small\item\em Create a NS Entity within given NS instance. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+nse\+\_\+set\+\_\+dialect} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect)
\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, uint16\+\_\+t \textbf{ nsei}, enum \textbf{ gprs\+\_\+ns2\+\_\+ll} linklayer, enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect)
\begin{DoxyCompactList}\small\item\em Create a NS Entity within given NS instance. \end{DoxyCompactList}\item 
uint16\+\_\+t \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+nsei} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\begin{DoxyCompactList}\small\item\em Return the NSEI. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nse} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\begin{DoxyCompactList}\small\item\em Destroy given NS Entity. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nses} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi)
\item 
static int \textbf{ ns2\+\_\+tlv\+\_\+parse} (struct \textbf{ tlv\+\_\+parsed} $\ast$dec, const uint8\+\_\+t $\ast$buf, int buf\+\_\+len, uint8\+\_\+t lv\+\_\+tag, uint8\+\_\+t lv\+\_\+tag2)
\item 
static enum \textbf{ ns2\+\_\+cs} \textbf{ ns2\+\_\+create\+\_\+vc\+\_\+sns} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$$\ast$success, uint16\+\_\+t \textbf{ nsei})
\item 
enum \textbf{ ns2\+\_\+cs} \textbf{ ns2\+\_\+create\+\_\+vc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, struct \textbf{ msgb} $\ast$\textbf{ msg}, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote, const char $\ast$logname, struct \textbf{ msgb} $\ast$$\ast$reject, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$$\ast$success)
\begin{DoxyCompactList}\small\item\em Create a new NS-\/\+VC based on a [received] message. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect\+\_\+inactive} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote, struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, uint16\+\_\+t nsvci)
\begin{DoxyCompactList}\small\item\em Create, and connect an inactive, new IP-\/based NS-\/\+VC. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote, struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, uint16\+\_\+t nsvci)
\begin{DoxyCompactList}\small\item\em Create, connect and activate a new IP-\/based NS-\/\+VC. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect2} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote, uint16\+\_\+t \textbf{ nsei}, uint16\+\_\+t nsvci, enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect)
\begin{DoxyCompactList}\small\item\em Create, connect and activate a new IP-\/based NS-\/\+VC. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+sockaddr\+\_\+nse} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$sockaddr)
\begin{DoxyCompactList}\small\item\em Find NS-\/\+VC for given socket address. \end{DoxyCompactList}\item 
int \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+foreach\+\_\+nsvc} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, \textbf{ gprs\+\_\+ns2\+\_\+foreach\+\_\+nsvc\+\_\+cb} cb, void $\ast$cb\+\_\+data)
\begin{DoxyCompactList}\small\item\em Iterate over all nsvc of a NS Entity and call the callback. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+recv\+\_\+vc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg})
\begin{DoxyCompactList}\small\item\em Bottom-\/side entry-\/point for received NS PDU from the driver/bind. \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+nse\+\_\+data\+\_\+sum} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\item 
void \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, bool unblocked)
\begin{DoxyCompactList}\small\item\em Notify a nse about the change of a NS-\/\+VC. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+instantiate} (void $\ast$ctx, \textbf{ osmo\+\_\+prim\+\_\+cb} cb, void $\ast$cb\+\_\+data)
\begin{DoxyCompactList}\small\item\em Create a new GPRS NS instance. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi)
\begin{DoxyCompactList}\small\item\em Destroy a NS Instance (including all its NSEs, binds, ...). \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\begin{DoxyCompactList}\small\item\em Start the NS-\/\+ALIVE FSM in all NS-\/\+VCs of given NSE. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+bind} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind)
\begin{DoxyCompactList}\small\item\em Destroy a given bind. \end{DoxyCompactList}\item 
void \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+binds} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi)
\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$ \textbf{ gprs\+\_\+ns2\+\_\+bind\+\_\+by\+\_\+name} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, const char $\ast$\textbf{ name})
\begin{DoxyCompactList}\small\item\em Search for a bind with a unique name. \end{DoxyCompactList}\item 
enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+mode} \textbf{ ns2\+\_\+dialect\+\_\+to\+\_\+vc\+\_\+mode} (enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect)
\item 
static void \textbf{ add\+\_\+bind\+\_\+array} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$$\ast$array, struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, int size)
\item 
void \textbf{ ns2\+\_\+nse\+\_\+update\+\_\+mtu} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\item 
int \textbf{ ns2\+\_\+count\+\_\+transfer\+\_\+cap} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, uint16\+\_\+t \textbf{ bvci})
\begin{DoxyCompactList}\small\item\em calculate the transfer capabilities for a nse \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+bind\+\_\+alloc} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, const char $\ast$\textbf{ name}, struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$$\ast$result)
\begin{DoxyCompactList}\small\item\em common allocation + low-\/level initialization of a bind. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
uint8\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}
\begin{DoxyCompactList}\small\item\em NS PDU type. \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data} [0]
\begin{DoxyCompactList}\small\item\em variable-\/length payload \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ pdu\+\_\+type}
\begin{DoxyCompactList}\small\item\em NS PDU type. \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ data} [0]
\begin{DoxyCompactList}\small\item\em variable-\/length payload \end{DoxyCompactList}\item 
uint32\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::ip\+\_\+addr}
\item 
uint16\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::udp\+\_\+port}
\item 
uint8\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::sig\+\_\+weight}
\item 
uint8\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::data\+\_\+weight}
\item 
uint32\+\_\+t \textbf{ ip\+\_\+addr}
\item 
uint16\+\_\+t \textbf{ udp\+\_\+port}
\item 
uint8\+\_\+t \textbf{ sig\+\_\+weight}
\item 
uint8\+\_\+t \textbf{ data\+\_\+weight}
\item 
struct in6\+\_\+addr \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::ip\+\_\+addr}
\item 
uint16\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::udp\+\_\+port}
\item 
uint8\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::sig\+\_\+weight}
\item 
uint8\+\_\+t \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::data\+\_\+weight}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings} [$\,$]
\item 
enum \textbf{ ns\+\_\+pdu\+\_\+type} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+}
\item 
static const struct \textbf{ tlv\+\_\+definition} \textbf{ ns\+\_\+att\+\_\+tlvdef}
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+desc} \textbf{ nsvc\+\_\+ctr\+\_\+description} [$\,$]
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} \textbf{ nsvc\+\_\+ctrg\+\_\+desc}
\item 
static const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+desc} \textbf{ nsvc\+\_\+stat\+\_\+description} [$\,$]
\item 
static const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+desc} \textbf{ nsvc\+\_\+statg\+\_\+desc}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns\+\_\+signal\+\_\+ns\+\_\+names} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings} [$\,$]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ ns\+\_\+cause\+\_\+str} [$\,$]
\item 
static enum \textbf{ ns\+\_\+timeout} \textbf{ timer\+\_\+mode\+\_\+tout} [\textbf{ \+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR}]
\item 
static const struct \textbf{ value\+\_\+string} \textbf{ timer\+\_\+mode\+\_\+strs} [$\,$]
\item 
static bool \textbf{ gprs\+\_\+sns\+\_\+fsm\+\_\+registered} = false
\item 
static const struct \textbf{ tlv\+\_\+definition} \textbf{ ns\+\_\+att\+\_\+tlvdef1}
\item 
static const struct \textbf{ tlv\+\_\+definition} \textbf{ ns\+\_\+att\+\_\+tlvdef2}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+strs} [$\,$]
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+desc} \textbf{ ns\+\_\+ctr\+\_\+description} [$\,$]
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} \textbf{ nse\+\_\+ctrg\+\_\+desc}
\item 
static const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} \textbf{ nsvc\+\_\+ctrg\+\_\+desc}
\item 
static const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+desc} \textbf{ nsvc\+\_\+stat\+\_\+description} [$\,$]
\item 
static const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+desc} \textbf{ nsvc\+\_\+statg\+\_\+desc}
\item 
const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+desc} \textbf{ nsbind\+\_\+stat\+\_\+description} [$\,$]
\item 
static const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+desc} \textbf{ nsbind\+\_\+statg\+\_\+desc}
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns2\+\_\+aff\+\_\+cause\+\_\+prim\+\_\+strs} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns2\+\_\+prim\+\_\+strs} [$\,$]
\item 
const struct \textbf{ value\+\_\+string} \textbf{ gprs\+\_\+ns2\+\_\+lltype\+\_\+strs} [$\,$]
\item 
enum \textbf{ gsmtap\+\_\+um\+\_\+voice\+\_\+type} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
GPRS Networks Service (NS) messages on the Gb interface 3GPP TS 08.\+16 version 8.\+0.\+1 Release 1999 / ETSI TS 101 299 V8.\+0.\+1 (2002-\/05) 

Some introduction into NS\+: NS is used typically on top of frame relay, but in the ip.\+access world it is encapsulated in UDP packets. It serves as an intermediate shim betwen BSSGP and the underlying medium. It doesn\textquotesingle{}t do much, apart from providing congestion notification and status indication.

Terms\+: \begin{DoxyVerb}    NS              Network Service
    NSVC            NS Virtual Connection
    NSEI            NS Entity Identifier
    NSVL            NS Virtual Link
    NSVLI           NS Virtual Link Identifier
    BVC             BSSGP Virtual Connection
    BVCI            BSSGP Virtual Connection Identifier
    NSVCG           NS Virtual Connection Goup
    Blocked         NS-VC cannot be used for user traffic
    Alive           Ability of a NS-VC to provide communication
\end{DoxyVerb}
 There can be multiple BSSGP virtual connections over one (group of) NSVC\textquotesingle{}s. BSSGP will therefore identify the BSSGP virtual connection by a BVCI passed down to NS. NS then has to figure out which NSVC\textquotesingle{}s are responsible for this BVCI. Those mappings are administratively configured.

This implementation has the following limitations\+:
\begin{DoxyItemize}
\item Only one NS-\/\+VC for each NSE\+: No load-\/sharing function
\item NSVCI 65535 and 65534 are reserved for internal use
\item Only UDP is supported as of now, no frame relay support
\item There are no BLOCK and UNBLOCK timers (yet?)
\end{DoxyItemize}

Some introduction into NS\+: NS is used typically on top of frame relay, but in the ip.\+access world it is encapsulated in UDP packets. It serves as an intermediate shim betwen BSSGP and the underlying medium. It doesn\textquotesingle{}t do much, apart from providing congestion notification and status indication.

Terms\+: \begin{DoxyVerb}    NS              Network Service
    NSVC            NS Virtual Connection
    NSEI            NS Entity Identifier
    NSVL            NS Virtual Link
    NSVLI           NS Virtual Link Identifier
    BVC             BSSGP Virtual Connection
    BVCI            BSSGP Virtual Connection Identifier
    NSVCG           NS Virtual Connection Goup
    Blocked         NS-VC cannot be used for user traffic
    Alive           Ability of a NS-VC to provide communication
\end{DoxyVerb}
 There can be multiple BSSGP virtual connections over one (group of) NSVC\textquotesingle{}s. BSSGP will therefore identify the BSSGP virtual connection by a BVCI passed down to NS. NS then has to figure out which NSVC\textquotesingle{}s are responsible for this BVCI. Those mappings are administratively configured.

This implementation has the following limitations\+:
\begin{DoxyItemize}
\item NSVCI 65535 and 65534 are reserved for internal use
\item There are no BLOCK and UNBLOCK timers (yet?) 
\end{DoxyItemize}

\doxysubsection{Macro Definition Documentation}
\mbox{\label{group__libgb_ga1c1abfc28c61d0914f1f9953774414fe}} 
\index{Libgb@{Libgb}!CHECK\_TX\_RC@{CHECK\_TX\_RC}}
\index{CHECK\_TX\_RC@{CHECK\_TX\_RC}!Libgb@{Libgb}}
\doxysubsubsection{CHECK\_TX\_RC}
{\footnotesize\ttfamily \#define CHECK\+\_\+\+TX\+\_\+\+RC(\begin{DoxyParamCaption}\item[{}]{rc,  }\item[{}]{nsvc }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{                \textcolor{keywordflow}{if} (rc < 0)                                                     \(\backslash\)}
\DoxyCodeLine{                        LOGP(DNS, LOGL\_ERROR, \textcolor{stringliteral}{"{}TX failed (\%d) to peer \%s\(\backslash\)n"{}}, \(\backslash\)}
\DoxyCodeLine{                                rc, gprs\_ns\_ll\_str(nsvc));}

\end{DoxyCode}
\mbox{\label{group__libgb_ga82ed6e704b00af083bb3a9fa18b09e72}} 
\index{Libgb@{Libgb}!ERR\_IF\_NSVC\_USES\_SNS@{ERR\_IF\_NSVC\_USES\_SNS}}
\index{ERR\_IF\_NSVC\_USES\_SNS@{ERR\_IF\_NSVC\_USES\_SNS}!Libgb@{Libgb}}
\doxysubsubsection{ERR\_IF\_NSVC\_USES\_SNS}
{\footnotesize\ttfamily \#define ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{reason }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{                                                                                    \(\backslash\)}
\DoxyCodeLine{                if ((nsvc)-\/>nsi-\/>bss\_sns\_fi) \{                                                  \(\backslash\)}
\DoxyCodeLine{                        LOGP(DNS, LOGL\_ERROR, \textcolor{stringliteral}{"{}NSEI=\%u Asked to \%s. Rejected on IP-\/SNS\(\backslash\)n"{}},   \(\backslash\)}
\DoxyCodeLine{                                nsvc-\/>nsei, reason);                                            \(\backslash\)}
\DoxyCodeLine{                        osmo\_log\_backtrace(DNS, LOGL\_ERROR);                                 \(\backslash\)}
\DoxyCodeLine{                        return -\/EIO;                                                            \(\backslash\)}
\DoxyCodeLine{                \}                                                                               \(\backslash\)}
\DoxyCodeLine{        \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
\mbox{\label{group__libgb_ga97758b550e086f2f66cca6fd391f86b4}} 
\index{Libgb@{Libgb}!NS2\_LL\_MAX\_STR@{NS2\_LL\_MAX\_STR}}
\index{NS2\_LL\_MAX\_STR@{NS2\_LL\_MAX\_STR}!Libgb@{Libgb}}
\doxysubsubsection{NS2\_LL\_MAX\_STR}
{\footnotesize\ttfamily \#define NS2\+\_\+\+LL\+\_\+\+MAX\+\_\+\+STR~4+2$\ast$(INET6\+\_\+\+ADDRSTRLEN+9)+8}

\mbox{\label{group__libgb_gae384fb821c5c69cf96aa566a329b2f4f}} 
\index{Libgb@{Libgb}!ns\_mark\_alive@{ns\_mark\_alive}}
\index{ns\_mark\_alive@{ns\_mark\_alive}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_alive\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+alive(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE})}

\mbox{\label{group__libgb_gae384fb821c5c69cf96aa566a329b2f4f}} 
\index{Libgb@{Libgb}!ns\_mark\_alive@{ns\_mark\_alive}}
\index{ns\_mark\_alive@{ns\_mark\_alive}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_alive\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+alive(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE})}

\mbox{\label{group__libgb_ga8cbd6a120ccbaf199d5dbb987150f421}} 
\index{Libgb@{Libgb}!ns\_mark\_blocked@{ns\_mark\_blocked}}
\index{ns\_mark\_blocked@{ns\_mark\_blocked}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_blocked\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+blocked(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED})}

\mbox{\label{group__libgb_ga8cbd6a120ccbaf199d5dbb987150f421}} 
\index{Libgb@{Libgb}!ns\_mark\_blocked@{ns\_mark\_blocked}}
\index{ns\_mark\_blocked@{ns\_mark\_blocked}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_blocked\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+blocked(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state $\vert$ \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED})}

\mbox{\label{group__libgb_ga69aaba1c45b60b99e1e139340a22be48}} 
\index{Libgb@{Libgb}!ns\_mark\_dead@{ns\_mark\_dead}}
\index{ns\_mark\_dead@{ns\_mark\_dead}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_dead\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+dead(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}));}

\mbox{\label{group__libgb_ga69aaba1c45b60b99e1e139340a22be48}} 
\index{Libgb@{Libgb}!ns\_mark\_dead@{ns\_mark\_dead}}
\index{ns\_mark\_dead@{ns\_mark\_dead}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_dead\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+dead(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}));}

\mbox{\label{group__libgb_ga990fe02fdaeb6335928d955ef9014d52}} 
\index{Libgb@{Libgb}!ns\_mark\_unblocked@{ns\_mark\_unblocked}}
\index{ns\_mark\_unblocked@{ns\_mark\_unblocked}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_unblocked\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+unblocked(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}));}

\mbox{\label{group__libgb_ga990fe02fdaeb6335928d955ef9014d52}} 
\index{Libgb@{Libgb}!ns\_mark\_unblocked@{ns\_mark\_unblocked}}
\index{ns\_mark\_unblocked@{ns\_mark\_unblocked}!Libgb@{Libgb}}
\doxysubsubsection{ns\_mark\_unblocked\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+mark\+\_\+unblocked(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state}(ns\+\_\+, (ns\+\_\+)-\/$>$state \& ($\sim$\textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}));}

\mbox{\label{group__libgb_gaeacd7544cfbac0d46ce7f2f59cea8666}} 
\index{Libgb@{Libgb}!ns\_set\_remote\_state@{ns\_set\_remote\_state}}
\index{ns\_set\_remote\_state@{ns\_set\_remote\_state}!Libgb@{Libgb}}
\doxysubsubsection{ns\_set\_remote\_state\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+set\+\_\+remote\+\_\+state(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+,  }\item[{}]{st\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, true, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)}

\mbox{\label{group__libgb_gaeacd7544cfbac0d46ce7f2f59cea8666}} 
\index{Libgb@{Libgb}!ns\_set\_remote\_state@{ns\_set\_remote\_state}}
\index{ns\_set\_remote\_state@{ns\_set\_remote\_state}!Libgb@{Libgb}}
\doxysubsubsection{ns\_set\_remote\_state\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+set\+\_\+remote\+\_\+state(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+,  }\item[{}]{st\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, true, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)}

\mbox{\label{group__libgb_ga807fb8fb938a1fa5d1b6efcbed98a9ff}} 
\index{Libgb@{Libgb}!ns\_set\_state@{ns\_set\_state}}
\index{ns\_set\_state@{ns\_set\_state}!Libgb@{Libgb}}
\doxysubsubsection{ns\_set\_state\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+set\+\_\+state(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+,  }\item[{}]{st\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, false, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)}

\mbox{\label{group__libgb_ga807fb8fb938a1fa5d1b6efcbed98a9ff}} 
\index{Libgb@{Libgb}!ns\_set\_state@{ns\_set\_state}}
\index{ns\_set\_state@{ns\_set\_state}!Libgb@{Libgb}}
\doxysubsubsection{ns\_set\_state\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \#define ns\+\_\+set\+\_\+state(\begin{DoxyParamCaption}\item[{}]{ns\+\_\+,  }\item[{}]{st\+\_\+ }\end{DoxyParamCaption})~\textbf{ ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log}(ns\+\_\+, st\+\_\+, false, \+\_\+\+\_\+\+FILE\+\_\+\+\_\+, \+\_\+\+\_\+\+LINE\+\_\+\+\_\+)}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{group__libgb_ga0273a14202d1874350629fb78b716933}} 
\index{Libgb@{Libgb}!ns\_cause@{ns\_cause}}
\index{ns\_cause@{ns\_cause}!Libgb@{Libgb}}
\doxysubsubsection{ns\_cause}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+cause}}



NS Cause (TS 08.\+16, Section 10.\+3.\+2, Table 13) 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_TRANSIT\_FAIL@{NS\_CAUSE\_TRANSIT\_FAIL}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_TRANSIT\_FAIL@{NS\_CAUSE\_TRANSIT\_FAIL}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933afb3f75ccc7d48825f99bace1fd135f88}} 
NS\+\_\+\+CAUSE\+\_\+\+TRANSIT\+\_\+\+FAIL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_OM\_INTERVENTION@{NS\_CAUSE\_OM\_INTERVENTION}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_OM\_INTERVENTION@{NS\_CAUSE\_OM\_INTERVENTION}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933ad42d92b442344f212492bddec93ff9db}} 
NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_EQUIP\_FAIL@{NS\_CAUSE\_EQUIP\_FAIL}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_EQUIP\_FAIL@{NS\_CAUSE\_EQUIP\_FAIL}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933ab6d642f059069ed03632590805a67340}} 
NS\+\_\+\+CAUSE\+\_\+\+EQUIP\+\_\+\+FAIL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_NSVC\_BLOCKED@{NS\_CAUSE\_NSVC\_BLOCKED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_NSVC\_BLOCKED@{NS\_CAUSE\_NSVC\_BLOCKED}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933af5c99431937201a2bdfc693e463565d6}} 
NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_NSVC\_UNKNOWN@{NS\_CAUSE\_NSVC\_UNKNOWN}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_NSVC\_UNKNOWN@{NS\_CAUSE\_NSVC\_UNKNOWN}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933afe58de8377f6f255bb465a0d4bd42ed5}} 
NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_BVCI\_UNKNOWN@{NS\_CAUSE\_BVCI\_UNKNOWN}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_BVCI\_UNKNOWN@{NS\_CAUSE\_BVCI\_UNKNOWN}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a27499e52f04427f390152deac81614f9}} 
NS\+\_\+\+CAUSE\+\_\+\+BVCI\+\_\+\+UNKNOWN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_SEM\_INCORR\_PDU@{NS\_CAUSE\_SEM\_INCORR\_PDU}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_SEM\_INCORR\_PDU@{NS\_CAUSE\_SEM\_INCORR\_PDU}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933aa5786e2b9869ed85eb7adbfc9857d772}} 
NS\+\_\+\+CAUSE\+\_\+\+SEM\+\_\+\+INCORR\+\_\+\+PDU&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_PDU\_INCOMP\_PSTATE@{NS\_CAUSE\_PDU\_INCOMP\_PSTATE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_PDU\_INCOMP\_PSTATE@{NS\_CAUSE\_PDU\_INCOMP\_PSTATE}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a921f3793fec2029726ec5ea2f8a9ed93}} 
NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_PROTO\_ERR\_UNSPEC@{NS\_CAUSE\_PROTO\_ERR\_UNSPEC}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_PROTO\_ERR\_UNSPEC@{NS\_CAUSE\_PROTO\_ERR\_UNSPEC}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a4c1025764deb7ff2917d9be9e9475126}} 
NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_INVAL\_ESSENT\_IE@{NS\_CAUSE\_INVAL\_ESSENT\_IE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_INVAL\_ESSENT\_IE@{NS\_CAUSE\_INVAL\_ESSENT\_IE}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a2a8ef6c7bd84a76be26dfb99fa3bcdaf}} 
NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+ESSENT\+\_\+\+IE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_MISSING\_ESSENT\_IE@{NS\_CAUSE\_MISSING\_ESSENT\_IE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_MISSING\_ESSENT\_IE@{NS\_CAUSE\_MISSING\_ESSENT\_IE}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933ac31a5723ccb70ec9c46178160b5e92a1}} 
NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_INVAL\_NR\_IPv4\_EP@{NS\_CAUSE\_INVAL\_NR\_IPv4\_EP}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_INVAL\_NR\_IPv4\_EP@{NS\_CAUSE\_INVAL\_NR\_IPv4\_EP}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a6248afd22adb65afe1782695e3ef643e}} 
NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+NR\+\_\+\+IPv4\+\_\+\+EP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_INVAL\_NR\_IPv6\_EP@{NS\_CAUSE\_INVAL\_NR\_IPv6\_EP}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_INVAL\_NR\_IPv6\_EP@{NS\_CAUSE\_INVAL\_NR\_IPv6\_EP}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933aab6a25a2d63c965c60dac2040e60e6e0}} 
NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+NR\+\_\+\+IPv6\+\_\+\+EP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_INVAL\_NR\_NS\_VC@{NS\_CAUSE\_INVAL\_NR\_NS\_VC}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_INVAL\_NR\_NS\_VC@{NS\_CAUSE\_INVAL\_NR\_NS\_VC}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a141e0730908f2c6eabd0c82bfbca0b7a}} 
NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+NR\+\_\+\+NS\+\_\+\+VC&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_INVAL\_WEIGH@{NS\_CAUSE\_INVAL\_WEIGH}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_INVAL\_WEIGH@{NS\_CAUSE\_INVAL\_WEIGH}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933ac28093f7e1457c3ae3e5d54fbd094787}} 
NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+WEIGH&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_UNKN\_IP\_EP@{NS\_CAUSE\_UNKN\_IP\_EP}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_UNKN\_IP\_EP@{NS\_CAUSE\_UNKN\_IP\_EP}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933afdacbbe6de12894b1882574b9b49b1d3}} 
NS\+\_\+\+CAUSE\+\_\+\+UNKN\+\_\+\+IP\+\_\+\+EP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_UNKN\_IP\_ADDR@{NS\_CAUSE\_UNKN\_IP\_ADDR}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_UNKN\_IP\_ADDR@{NS\_CAUSE\_UNKN\_IP\_ADDR}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933aa5c7bece29d3f1d03f14222759b1acd8}} 
NS\+\_\+\+CAUSE\+\_\+\+UNKN\+\_\+\+IP\+\_\+\+ADDR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CAUSE\_UNKN\_IP\_TEST\_FAILED@{NS\_CAUSE\_UNKN\_IP\_TEST\_FAILED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CAUSE\_UNKN\_IP\_TEST\_FAILED@{NS\_CAUSE\_UNKN\_IP\_TEST\_FAILED}}}\mbox{\label{group__libgb_gga0273a14202d1874350629fb78b716933a335d2da9601161154b57eb7fec004da3}} 
NS\+\_\+\+CAUSE\+\_\+\+UNKN\+\_\+\+IP\+\_\+\+TEST\+\_\+\+FAILED&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728}} 
\index{Libgb@{Libgb}!ns\_ctr@{ns\_ctr}}
\index{ns\_ctr@{ns\_ctr}!Libgb@{Libgb}}
\doxysubsubsection{ns\_ctr}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+ctr}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a3e5eef852df124a2e8c7b33d7ffab16a}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a11ddb0337a62952a892f026ace741e49}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a229595e2e6daebf26e606dc873149b41}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a1b113f24a4d2f522aacdcf18fa7a2a49}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728abcf9e62a101dd40a858def909cc763dd}} 
NS\+\_\+\+CTR\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_DEAD@{NS\_CTR\_DEAD}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_DEAD@{NS\_CTR\_DEAD}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a7c8d3a66448534aec6cd5b18aa49ecf6}} 
NS\+\_\+\+CTR\+\_\+\+DEAD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728abcbaeb1e120682bdef61591268517dc0}} 
NS\+\_\+\+CTR\+\_\+\+REPLACED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728ac5bc01cd8e995b6a033c187d0c8251c7}} 
NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a77b95b76e243f7eb6bac218ab3e139af}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a2e9edabd27a0e209bfd901dc0bc225b9}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a340c633ef4293e1f30f2818a3c09c052}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a06973f5082ec693df62edbfda72a1fc2}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a3e5eef852df124a2e8c7b33d7ffab16a}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a11ddb0337a62952a892f026ace741e49}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_OUT\_DROP@{NS\_CTR\_PKTS\_OUT\_DROP}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_PKTS\_OUT\_DROP@{NS\_CTR\_PKTS\_OUT\_DROP}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a0817a06e6d4c6b6d50d6e93b10b3f1d9}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT\+\_\+\+DROP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a229595e2e6daebf26e606dc873149b41}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a1b113f24a4d2f522aacdcf18fa7a2a49}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_OUT\_DROP@{NS\_CTR\_BYTES\_OUT\_DROP}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BYTES\_OUT\_DROP@{NS\_CTR\_BYTES\_OUT\_DROP}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728af5c7df2bfa6f4c2a173fcde67d6a6155}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT\+\_\+\+DROP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728abcf9e62a101dd40a858def909cc763dd}} 
NS\+\_\+\+CTR\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_UNBLOCKED@{NS\_CTR\_UNBLOCKED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_UNBLOCKED@{NS\_CTR\_UNBLOCKED}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a6b153ab7cd8b00ad38d71f3dd7dd57c1}} 
NS\+\_\+\+CTR\+\_\+\+UNBLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_DEAD@{NS\_CTR\_DEAD}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_DEAD@{NS\_CTR\_DEAD}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a7c8d3a66448534aec6cd5b18aa49ecf6}} 
NS\+\_\+\+CTR\+\_\+\+DEAD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728abcbaeb1e120682bdef61591268517dc0}} 
NS\+\_\+\+CTR\+\_\+\+REPLACED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728ac5bc01cd8e995b6a033c187d0c8251c7}} 
NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a77b95b76e243f7eb6bac218ab3e139af}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a2e9edabd27a0e209bfd901dc0bc225b9}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a340c633ef4293e1f30f2818a3c09c052}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}}}\mbox{\label{group__libgb_ga9eb02dcd9b1864987ffa538af6852728a06973f5082ec693df62edbfda72a1fc2}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__libgb_gaaa401d24a89784c8ce88f55993ec186c}} 
\index{Libgb@{Libgb}!ns\_ctrl\_ie@{ns\_ctrl\_ie}}
\index{ns\_ctrl\_ie@{ns\_ctrl\_ie}!Libgb@{Libgb}}
\doxysubsubsection{ns\_ctrl\_ie}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+ctrl\+\_\+ie}}



NS Control IE (TS 08.\+16, Section 10.\+3, Table 12) 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_CAUSE@{NS\_IE\_CAUSE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_CAUSE@{NS\_IE\_CAUSE}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca52727a7113c3f0af211ceaf93255f577}} 
NS\+\_\+\+IE\+\_\+\+CAUSE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_VCI@{NS\_IE\_VCI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_VCI@{NS\_IE\_VCI}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca107551c56a353513699ed4de0e03efb6}} 
NS\+\_\+\+IE\+\_\+\+VCI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_PDU@{NS\_IE\_PDU}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_PDU@{NS\_IE\_PDU}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca894cb4f7adf0ff5a36fd56117af37d86}} 
NS\+\_\+\+IE\+\_\+\+PDU&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_BVCI@{NS\_IE\_BVCI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_BVCI@{NS\_IE\_BVCI}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca4d4fa49811e8f5a82025450efb218f7d}} 
NS\+\_\+\+IE\+\_\+\+BVCI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_NSEI@{NS\_IE\_NSEI}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_NSEI@{NS\_IE\_NSEI}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca250a5ad06e3f9ea3587c76efc9992851}} 
NS\+\_\+\+IE\+\_\+\+NSEI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_IPv4\_LIST@{NS\_IE\_IPv4\_LIST}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_IPv4\_LIST@{NS\_IE\_IPv4\_LIST}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca01d7b1d8a36393c0aa93207e3e8122f5}} 
NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+LIST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_IPv6\_LIST@{NS\_IE\_IPv6\_LIST}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_IPv6\_LIST@{NS\_IE\_IPv6\_LIST}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca38654c35774d91e1edf499e4b3a4e9f7}} 
NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+LIST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_MAX\_NR\_NSVC@{NS\_IE\_MAX\_NR\_NSVC}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_MAX\_NR\_NSVC@{NS\_IE\_MAX\_NR\_NSVC}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca25bd1ff0cb8b490748ade4b02abeb0e4}} 
NS\+\_\+\+IE\+\_\+\+MAX\+\_\+\+NR\+\_\+\+NSVC&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_IPv4\_EP\_NR@{NS\_IE\_IPv4\_EP\_NR}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_IPv4\_EP\_NR@{NS\_IE\_IPv4\_EP\_NR}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca1684f98539fa74b4b1437fc021324918}} 
NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+EP\+\_\+\+NR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_IPv6\_EP\_NR@{NS\_IE\_IPv6\_EP\_NR}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_IPv6\_EP\_NR@{NS\_IE\_IPv6\_EP\_NR}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca00c91811e08f1d002d5523ec2e33b444}} 
NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+EP\+\_\+\+NR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_RESET\_FLAG@{NS\_IE\_RESET\_FLAG}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_RESET\_FLAG@{NS\_IE\_RESET\_FLAG}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186cacd428793acb147fcdc222a89b401385d}} 
NS\+\_\+\+IE\+\_\+\+RESET\+\_\+\+FLAG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_IP\_ADDR@{NS\_IE\_IP\_ADDR}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_IP\_ADDR@{NS\_IE\_IP\_ADDR}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca18551ce71fe28c7e59ee2a8873614ddc}} 
NS\+\_\+\+IE\+\_\+\+IP\+\_\+\+ADDR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_IE\_TRANS\_ID@{NS\_IE\_TRANS\_ID}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_IE\_TRANS\_ID@{NS\_IE\_TRANS\_ID}}}\mbox{\label{group__libgb_ggaaa401d24a89784c8ce88f55993ec186ca590828f78a3874db2c1be20eb73846f0}} 
NS\+\_\+\+IE\+\_\+\+TRANS\+\_\+\+ID&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__libgb_ga138e965973b71fed1f70981f85166f54}} 
\index{Libgb@{Libgb}!ns\_pdu\_type@{ns\_pdu\_type}}
\index{ns\_pdu\_type@{ns\_pdu\_type}!Libgb@{Libgb}}
\doxysubsubsection{ns\_pdu\_type}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+pdu\+\_\+type}}



NS PDU Type (TS 08.\+16, Section 10.\+3.\+7, Table 14) 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_UNITDATA@{NS\_PDUT\_UNITDATA}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_UNITDATA@{NS\_PDUT\_UNITDATA}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a868430bc1823cfa2cff6ff42f54cf45a}} 
NS\+\_\+\+PDUT\+\_\+\+UNITDATA&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_RESET@{NS\_PDUT\_RESET}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_RESET@{NS\_PDUT\_RESET}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a1e195510dfb865e2c4c45f928c81333f}} 
NS\+\_\+\+PDUT\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_RESET\_ACK@{NS\_PDUT\_RESET\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_RESET\_ACK@{NS\_PDUT\_RESET\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a13821dc6ce945b47c4c7f2274aff45ad}} 
NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_BLOCK@{NS\_PDUT\_BLOCK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_BLOCK@{NS\_PDUT\_BLOCK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a988b3ced7cbfd1d5c8331615c0a84420}} 
NS\+\_\+\+PDUT\+\_\+\+BLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_BLOCK\_ACK@{NS\_PDUT\_BLOCK\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_BLOCK\_ACK@{NS\_PDUT\_BLOCK\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a11379935082fbff7f322e5e70aeae02c}} 
NS\+\_\+\+PDUT\+\_\+\+BLOCK\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_UNBLOCK@{NS\_PDUT\_UNBLOCK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_UNBLOCK@{NS\_PDUT\_UNBLOCK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a1f0bcb1ce1e17b949e09dd1b9b1129ac}} 
NS\+\_\+\+PDUT\+\_\+\+UNBLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_UNBLOCK\_ACK@{NS\_PDUT\_UNBLOCK\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_UNBLOCK\_ACK@{NS\_PDUT\_UNBLOCK\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a1406d8dfd663016321f9ae45f94b907d}} 
NS\+\_\+\+PDUT\+\_\+\+UNBLOCK\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_STATUS@{NS\_PDUT\_STATUS}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_STATUS@{NS\_PDUT\_STATUS}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a5226b82ddd82c37b82f3b38c167da386}} 
NS\+\_\+\+PDUT\+\_\+\+STATUS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_ALIVE@{NS\_PDUT\_ALIVE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_ALIVE@{NS\_PDUT\_ALIVE}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54ae37dc3f5e36924ef0b59c093e4dac69f}} 
NS\+\_\+\+PDUT\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_PDUT\_ALIVE\_ACK@{NS\_PDUT\_ALIVE\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_PDUT\_ALIVE\_ACK@{NS\_PDUT\_ALIVE\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a5ceb23850ee0382525820bc11a882f97}} 
NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_ACK@{SNS\_PDUT\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_ACK@{SNS\_PDUT\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54aaab6b1c4ee113801b738dff11a0d1668}} 
SNS\+\_\+\+PDUT\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_ADD@{SNS\_PDUT\_ADD}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_ADD@{SNS\_PDUT\_ADD}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a4a44569f7797472ead12024b3a941189}} 
SNS\+\_\+\+PDUT\+\_\+\+ADD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_CHANGE\_WEIGHT@{SNS\_PDUT\_CHANGE\_WEIGHT}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_CHANGE\_WEIGHT@{SNS\_PDUT\_CHANGE\_WEIGHT}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a400416a7315d3daa14079313e3fefc47}} 
SNS\+\_\+\+PDUT\+\_\+\+CHANGE\+\_\+\+WEIGHT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_CONFIG@{SNS\_PDUT\_CONFIG}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_CONFIG@{SNS\_PDUT\_CONFIG}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a401979534b5ce7d5d2972089555ab55a}} 
SNS\+\_\+\+PDUT\+\_\+\+CONFIG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_CONFIG\_ACK@{SNS\_PDUT\_CONFIG\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_CONFIG\_ACK@{SNS\_PDUT\_CONFIG\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a742beed958fe79c58f047ed5da203fc1}} 
SNS\+\_\+\+PDUT\+\_\+\+CONFIG\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_DELETE@{SNS\_PDUT\_DELETE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_DELETE@{SNS\_PDUT\_DELETE}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54abd3ea35fb5dd1adaf7920d7e46edc9ad}} 
SNS\+\_\+\+PDUT\+\_\+\+DELETE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_SIZE@{SNS\_PDUT\_SIZE}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_SIZE@{SNS\_PDUT\_SIZE}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a8292986e7bc1920611f400b622e4e25f}} 
SNS\+\_\+\+PDUT\+\_\+\+SIZE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SNS\_PDUT\_SIZE\_ACK@{SNS\_PDUT\_SIZE\_ACK}!Libgb@{Libgb}}\index{Libgb@{Libgb}!SNS\_PDUT\_SIZE\_ACK@{SNS\_PDUT\_SIZE\_ACK}}}\mbox{\label{group__libgb_gga138e965973b71fed1f70981f85166f54a90d0f57400a0a6677727054df3599fa5}} 
SNS\+\_\+\+PDUT\+\_\+\+SIZE\+\_\+\+ACK&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{group__libgb_ga274730ced17f01ce4b0a1a1d60d84336}} 
\index{Libgb@{Libgb}!ns\_stat@{ns\_stat}}
\index{ns\_stat@{ns\_stat}!Libgb@{Libgb}}
\doxysubsubsection{ns\_stat}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+stat}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_STAT\_ALIVE\_DELAY@{NS\_STAT\_ALIVE\_DELAY}!Libgb@{Libgb}}\index{Libgb@{Libgb}!NS\_STAT\_ALIVE\_DELAY@{NS\_STAT\_ALIVE\_DELAY}}}\mbox{\label{group__libgb_gga274730ced17f01ce4b0a1a1d60d84336a7de5febc578b6ceb366f8cac1e9e4c9d}} 
NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{group__libgb_ga4bd1a4f2920427cb38f01af2f0cc985c}} 
\index{Libgb@{Libgb}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!Libgb@{Libgb}}
\doxysubsubsection{\_\_attribute\_\_()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns\+\_\+hdr} \+\_\+\+\_\+attribute\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{(packed)}]{ }\end{DoxyParamCaption})}

\mbox{\label{group__libgb_gab3fed3aaa67fdabad619846a2ee8a9ab}} 
\index{Libgb@{Libgb}!add\_bind\_array@{add\_bind\_array}}
\index{add\_bind\_array@{add\_bind\_array}!Libgb@{Libgb}}
\doxysubsubsection{add\_bind\_array()}
{\footnotesize\ttfamily static void add\+\_\+bind\+\_\+array (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$$\ast$}]{array,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{int}]{size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ ns2\+\_\+count\+\_\+transfer\+\_\+cap()}.

\mbox{\label{group__libgb_ga84574ff5d686f87c763a72e17da7d3f3}} 
\index{Libgb@{Libgb}!gprs\_active\_nsvc\_by\_nsei@{gprs\_active\_nsvc\_by\_nsei}}
\index{gprs\_active\_nsvc\_by\_nsei@{gprs\_active\_nsvc\_by\_nsei}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_active\_nsvc\_by\_nsei()}
{\footnotesize\ttfamily static struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+active\+\_\+nsvc\+\_\+by\+\_\+nsei (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{bvci }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Determine active NS-\/\+VC for given NSEI + BVCI. 

Use this function to determine which of the NS-\/\+VCs inside the NS Instance shall be used to transmit data for given NSEI + BVCI 

References \textbf{ bvci}, \textbf{ gprs\+\_\+nsvc\+::data\+\_\+weight}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ gprs\+\_\+nsvc\+::sig\+\_\+weight}, and \textbf{ gprs\+\_\+nsvc\+::state}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+sendmsg()}.

\mbox{\label{group__libgb_ga7be3ed98b412e7b58a8a29cbafa3a67e}} 
\index{Libgb@{Libgb}!gprs\_ns2\_bind\_by\_name@{gprs\_ns2\_bind\_by\_name}}
\index{gprs\_ns2\_bind\_by\_name@{gprs\_ns2\_bind\_by\_name}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_bind\_by\_name()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$ gprs\+\_\+ns2\+\_\+bind\+\_\+by\+\_\+name (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



Search for a bind with a unique name. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance on which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em name} & The unique bind name to search for \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the bind or NULL if not found 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+inst\+::binding}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ name}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::name}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}.



Referenced by \textbf{ config\+\_\+write\+\_\+vbind()}, \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+frgre\+\_\+bind()}, \textbf{ ns2\+\_\+bind\+\_\+alloc()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+sns\+\_\+default\+\_\+binds()}, and \textbf{ ns\+\_\+nse\+\_\+nsvc\+\_\+udp\+\_\+cmds()}.

\mbox{\label{group__libgb_ga04d5db86c79516c3379a5f585fe69b64}} 
\index{Libgb@{Libgb}!gprs\_ns2\_create\_nse@{gprs\_ns2\_create\_nse}}
\index{gprs\_ns2\_create\_nse@{gprs\_ns2\_create\_nse}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_create\_nse()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$ gprs\+\_\+ns2\+\_\+create\+\_\+nse (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+ll}}]{linklayer,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+dialect}}]{dialect }\end{DoxyParamCaption})}



Create a NS Entity within given NS instance. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance in which to create NS Entity \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NS Entity Identifier of to-\/be-\/created NSE \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
newly-\/allocated NS-\/E in successful case; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse2()}, \textbf{ nsei}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+connect2()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect2()}, and \textbf{ ns2\+\_\+create\+\_\+vc()}.

\mbox{\label{group__libgb_gaf298863d99c262c976b3565d8d740167}} 
\index{Libgb@{Libgb}!gprs\_ns2\_create\_nse2@{gprs\_ns2\_create\_nse2}}
\index{gprs\_ns2\_create\_nse2@{gprs\_ns2\_create\_nse2}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_create\_nse2()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$ gprs\+\_\+ns2\+\_\+create\+\_\+nse2 (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+ll}}]{linklayer,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+dialect}}]{dialect,  }\item[{bool}]{ip\+\_\+sns\+\_\+role\+\_\+sgsn }\end{DoxyParamCaption})}



Create a NS Entity within given NS instance. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance in which to create NS Entity \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NS Entity Identifier of to-\/be-\/created NSE \\
\hline
\mbox{\texttt{ in}}  & {\em ip\+\_\+sns\+\_\+role\+\_\+sgsn} & Does local side implement SGSN role? \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
newly-\/allocated NS-\/E in successful case; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ctrg}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::first}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+UNDEF}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei()}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ip\+\_\+sns\+\_\+role\+\_\+sgsn}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::list}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ llist\+\_\+add\+\_\+tail()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGNSE}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::mtu}, \textbf{ ns2\+\_\+nse\+\_\+set\+\_\+dialect()}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ nse\+\_\+ctrg\+\_\+desc}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ osmo\+\_\+clock\+\_\+gettime()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+alloc()}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ts\+\_\+alive\+\_\+change}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse()}, and \textbf{ ns2\+\_\+create\+\_\+vc\+\_\+sns()}.

\mbox{\label{group__libgb_ga035899304b232be0f5d823065cd56c0c}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free@{gprs\_ns2\_free}}
\index{gprs\_ns2\_free@{gprs\_ns2\_free}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



Destroy a NS Instance (including all its NSEs, binds, ...). 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance to destroy \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+binds()}, and \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nses()}.

\mbox{\label{group__libgb_ga60ce0e2a04d5ac46598ebd123fe744f6}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free\_bind@{gprs\_ns2\_free\_bind}}
\index{gprs\_ns2\_free\_bind@{gprs\_ns2\_free\_bind}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free\_bind()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free\+\_\+bind (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind }\end{DoxyParamCaption})}



Destroy a given bind. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & the bind we want to destroy \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::driver}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+driver\+::free\+\_\+bind}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::freed}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, \textbf{ gprs\+\_\+ns2\+\_\+is\+\_\+ip\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+sns\+\_\+del\+\_\+bind()}, \textbf{ list}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+first\+\_\+entry}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::name}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsvc}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+free()}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::statg}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+binds()}, \textbf{ gprs\+\_\+ns2\+\_\+frgre\+\_\+bind()}, and \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind()}.

\mbox{\label{group__libgb_ga001166da799a6e874fb4de74cfcb73a3}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free\_binds@{gprs\_ns2\_free\_binds}}
\index{gprs\_ns2\_free\_binds@{gprs\_ns2\_free\_binds}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free\_binds()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free\+\_\+binds (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+inst\+::binding}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+bind()}, \textbf{ list}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+first\+\_\+entry}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+free()}.

\mbox{\label{group__libgb_gae5257e82b4a770b091d9b042dec1d65c}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free\_nse@{gprs\_ns2\_free\_nse}}
\index{gprs\_ns2\_free\_nse@{gprs\_ns2\_free\_nse}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free\_nse()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free\+\_\+nse (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



Destroy given NS Entity. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity to destroy \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::alive}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ctrg}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::freed}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+AFF\+\_\+\+CAUSE\+\_\+\+FAILURE}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvcs()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ ns2\+\_\+free\+\_\+nsvcs()}, \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+term}, \textbf{ OSMO\+\_\+\+FSM\+\_\+\+TERM\+\_\+\+REQUEST}, and \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free()}.



Referenced by \textbf{ \+\_\+sns\+\_\+failed()}, \textbf{ DEFUN()}, \textbf{ DEFUN\+\_\+\+HIDDEN()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+connect2()}, and \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nses()}.

\mbox{\label{group__libgb_gaea3ed7fc6e9ccdb0d888771879476396}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free\_nses@{gprs\_ns2\_free\_nses}}
\index{gprs\_ns2\_free\_nses@{gprs\_ns2\_free\_nses}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free\_nses()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free\+\_\+nses (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nse()}, \textbf{ list}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+first\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+free()}.

\mbox{\label{group__libgb_gaffc30efefbc2e6819d144884c7fe4adc}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free\_nsvc@{gprs\_ns2\_free\_nsvc}}
\index{gprs\_ns2\_free\_nsvc@{gprs\_ns2\_free\_nsvc}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free\_nsvc()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free\+\_\+nsvc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Destroy/release given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC to destroy \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::blist}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::ctrg}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::free\+\_\+vc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::freed}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+AFF\+\_\+\+CAUSE\+\_\+\+VC\+\_\+\+FAILURE}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}, \textbf{ ns2\+\_\+sns\+\_\+replace\+\_\+nsvc()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+term}, \textbf{ OSMO\+\_\+\+FSM\+\_\+\+TERM\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+free()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::priv}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free()}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::statg}.



Referenced by \textbf{ DEFUN()}, \textbf{ do\+\_\+sns\+\_\+delete()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+connect()}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+bind()}, \textbf{ ns2\+\_\+clear\+\_\+sgsn()}, \textbf{ ns2\+\_\+create\+\_\+vc()}, \textbf{ ns2\+\_\+free\+\_\+nsvcs()}, \textbf{ ns2\+\_\+ip\+\_\+bind\+\_\+connect()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action()}, and \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+onenter()}.

\mbox{\label{group__libgb_gae309da0b80f9c63b11ade1551f0c9706}} 
\index{Libgb@{Libgb}!gprs\_ns2\_free\_nsvcs@{gprs\_ns2\_free\_nsvcs}}
\index{gprs\_ns2\_free\_nsvcs@{gprs\_ns2\_free\_nsvcs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_free\_nsvcs()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+free\+\_\+nsvcs (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



Destroy/release all NS-\/\+VC of given NSE. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NSE \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::freed}, \textbf{ ns2\+\_\+free\+\_\+nsvcs()}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FREE\+\_\+\+NSVCS}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}.



Referenced by \textbf{ DEFUN()}, \textbf{ DEFUN\+\_\+\+HIDDEN()}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nse()}, and \textbf{ gprs\+\_\+ns2\+\_\+sns\+\_\+del\+\_\+endpoint()}.

\mbox{\label{group__libgb_gab429a68a42be804a8c03c67a5f8e9987}} 
\index{Libgb@{Libgb}!gprs\_ns2\_instantiate@{gprs\_ns2\_instantiate}}
\index{gprs\_ns2\_instantiate@{gprs\_ns2\_instantiate}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_instantiate()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$ gprs\+\_\+ns2\+\_\+instantiate (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{\textbf{ osmo\+\_\+prim\+\_\+cb}}]{cb,  }\item[{void $\ast$}]{cb\+\_\+data }\end{DoxyParamCaption})}



Create a new GPRS NS instance. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & a talloc context to allocate NS instance from \\
\hline
\mbox{\texttt{ in}}  & {\em cb} & Call-\/back function for dispatching primitives to the user. The Call-\/back must free all msgb$\ast$ given in the primitive. \\
\hline
\mbox{\texttt{ in}}  & {\em cb\+\_\+data} & transparent user data passed to Call-\/back \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
dynamically allocated \doxyref{gprs\+\_\+ns\+\_\+inst}{p.}{structgprs__ns__inst}; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+inst\+::binding}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::cb}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::cb\+\_\+data}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ NS\+\_\+\+DEFAULT\+\_\+\+TXQUEUE\+\_\+\+MAX\+\_\+\+LENGTH}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+CONFIG\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROCEDURES\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROV}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+SIZE\+\_\+\+RETRIES}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::timeout}, and \textbf{ gprs\+\_\+ns2\+\_\+inst\+::txqueue\+\_\+max\+\_\+length}.

\mbox{\label{group__libgb_gabc2b19035b1d7b6457e9ab10fc49f9ed}} 
\index{Libgb@{Libgb}!gprs\_ns2\_ip\_connect@{gprs\_ns2\_ip\_connect}}
\index{gprs\_ns2\_ip\_connect@{gprs\_ns2\_ip\_connect}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_ip\_connect()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ gprs\+\_\+ns2\+\_\+ip\+\_\+connect (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{uint16\+\_\+t}]{nsvci }\end{DoxyParamCaption})}



Create, connect and activate a new IP-\/based NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & bind in which the new NS-\/\+VC is to be created \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & remote address to which to connect \\
\hline
\mbox{\texttt{ in}}  & {\em nse} & NS Entity in which the NS-\/\+VC is to be created \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & is only required when bind-\/$>$vc\+\_\+mode == NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to newly-\/allocated, connected and activated NS-\/\+VC; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect\+\_\+inactive()}, \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+start()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect2()}, and \textbf{ ns\+\_\+nse\+\_\+nsvc\+\_\+udp\+\_\+cmds()}.

\mbox{\label{group__libgb_gabcc6172a2429e3698b9e6de2d71e06fd}} 
\index{Libgb@{Libgb}!gprs\_ns2\_ip\_connect2@{gprs\_ns2\_ip\_connect2}}
\index{gprs\_ns2\_ip\_connect2@{gprs\_ns2\_ip\_connect2}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_ip\_connect2()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ gprs\+\_\+ns2\+\_\+ip\+\_\+connect2 (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{nsvci,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+dialect}}]{dialect }\end{DoxyParamCaption})}



Create, connect and activate a new IP-\/based NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & bind in which the new NS-\/\+VC is to be created \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & remote address to which to connect \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI of the NS Entity in which the NS-\/\+VC is to be created \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & is only required when bind-\/$>$vc\+\_\+mode == NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to newly-\/allocated, connected and activated NS-\/\+VC; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei()}, \textbf{ nsei}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}.

\mbox{\label{group__libgb_ga10c42f59382de5f13d626c4d4d02887f}} 
\index{Libgb@{Libgb}!gprs\_ns2\_ip\_connect\_inactive@{gprs\_ns2\_ip\_connect\_inactive}}
\index{gprs\_ns2\_ip\_connect\_inactive@{gprs\_ns2\_ip\_connect\_inactive}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_ip\_connect\_inactive()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ gprs\+\_\+ns2\+\_\+ip\+\_\+connect\+\_\+inactive (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{uint16\+\_\+t}]{nsvci }\end{DoxyParamCaption})}



Create, and connect an inactive, new IP-\/based NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & bind in which the new NS-\/\+VC is to be created \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & remote address to which to connect \\
\hline
\mbox{\texttt{ in}}  & {\em nse} & NS Entity in which the NS-\/\+VC is to be created \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & is only required when bind-\/$>$vc\+\_\+mode == NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to newly-\/allocated, connected and inactive NS-\/\+VC; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::mode}, \textbf{ ns2\+\_\+ip\+\_\+bind\+\_\+connect()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}.



Referenced by \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect()}, and \textbf{ ns2\+\_\+vc\+\_\+create\+\_\+ip()}.

\mbox{\label{group__libgb_ga88d4b06d16c8da762246fc6a55f2d924}} 
\index{Libgb@{Libgb}!gprs\_ns2\_ll\_str@{gprs\_ns2\_ll\_str}}
\index{gprs\_ns2\_ll\_str@{gprs\_ns2\_ll\_str}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_ll\_str()}
{\footnotesize\ttfamily const char $\ast$ gprs\+\_\+ns2\+\_\+ll\+\_\+str (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



string-\/format a given NS-\/\+VC to a thread-\/local static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC to be string-\/formatted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to the string on success; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+buf()}, and \textbf{ NS2\+\_\+\+LL\+\_\+\+MAX\+\_\+\+STR}.



Referenced by \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ do\+\_\+sns\+\_\+delete()}, and \textbf{ ns2\+\_\+vty\+\_\+dump\+\_\+nsvc()}.

\mbox{\label{group__libgb_ga19c42e04e0d43a7ea8c75ce03744d0db}} 
\index{Libgb@{Libgb}!gprs\_ns2\_ll\_str\_buf@{gprs\_ns2\_ll\_str\_buf}}
\index{gprs\_ns2\_ll\_str\_buf@{gprs\_ns2\_ll\_str\_buf}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_ll\_str\_buf()}
{\footnotesize\ttfamily char $\ast$ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



string-\/format a given NS-\/\+VC into a user-\/supplied buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & user-\/allocated output buffer \\
\hline
\mbox{\texttt{ in}}  & {\em buf\+\_\+len} & size of user-\/allocated output buffer in bytes \\
\hline
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC to be string-\/formatted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to buf on success; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+bind\+\_\+netif()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+nsvc\+\_\+dlci()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+sockaddr()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+vc\+\_\+remote()}, \textbf{ gprs\+\_\+ns2\+\_\+is\+\_\+ip\+\_\+bind()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+FR}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+FR\+\_\+\+GRE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+UDP}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+::ip}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+\_\+from\+\_\+sockaddr()}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+::port}, \textbf{ osmo\+\_\+sockaddr\+::sas}, and \textbf{ osmo\+\_\+sockaddr\+::u}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str()}, \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+c()}, and \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}.

\mbox{\label{group__libgb_gab273d41effb8704f79d90cb0a7536dfd}} 
\index{Libgb@{Libgb}!gprs\_ns2\_ll\_str\_c@{gprs\_ns2\_ll\_str\_c}}
\index{gprs\_ns2\_ll\_str\_c@{gprs\_ns2\_ll\_str\_c}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_ll\_str\_c()}
{\footnotesize\ttfamily char $\ast$ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



string-\/format a given NS-\/\+VC to a dynamically allocated string. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ctx} & talloc context from which to allocate \\
\hline
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC to be string-\/formatted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to the string on success; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+buf()}, and \textbf{ NS2\+\_\+\+LL\+\_\+\+MAX\+\_\+\+STR}.

\mbox{\label{group__libgb_gad3090673ef217831b309b9f446719d28}} 
\index{Libgb@{Libgb}!gprs\_ns2\_nse\_by\_nsei@{gprs\_ns2\_nse\_by\_nsei}}
\index{gprs\_ns2\_nse\_by\_nsei@{gprs\_ns2\_nse\_by\_nsei}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_nse\_by\_nsei()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei }\end{DoxyParamCaption})}



Resolve a NS Entity based on its NSEI. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS Instance in which we do the look-\/up \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI to look up \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
NS Entity in successful case; NULL if none found 
\end{DoxyReturn}


References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}.



Referenced by \textbf{ DEFUN()}, \textbf{ DEFUN\+\_\+\+HIDDEN()}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse2()}, \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+connect2()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect2()}, \textbf{ gprs\+\_\+ns2\+\_\+recv\+\_\+prim()}, \textbf{ ns2\+\_\+create\+\_\+vc()}, \textbf{ ns2\+\_\+create\+\_\+vc\+\_\+sns()}, and \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}.

\mbox{\label{group__libgb_ga634c69147ef8d2a69eadb4f873ef8f0a}} 
\index{Libgb@{Libgb}!gprs\_ns2\_nse\_foreach\_nsvc@{gprs\_ns2\_nse\_foreach\_nsvc}}
\index{gprs\_ns2\_nse\_foreach\_nsvc@{gprs\_ns2\_nse\_foreach\_nsvc}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_nse\_foreach\_nsvc()}
{\footnotesize\ttfamily int gprs\+\_\+ns2\+\_\+nse\+\_\+foreach\+\_\+nsvc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{\textbf{ gprs\+\_\+ns2\+\_\+foreach\+\_\+nsvc\+\_\+cb}}]{cb,  }\item[{void $\ast$}]{cb\+\_\+data }\end{DoxyParamCaption})}



Iterate over all nsvc of a NS Entity and call the callback. 

If the callback returns $<$ 0 it aborts the loop and returns the callback return code. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity to iterate over all nsvcs \\
\hline
\mbox{\texttt{ in}}  & {\em cb} & the callback to call \\
\hline
\mbox{\texttt{ in,out}}  & {\em cb\+\_\+data} & the private data of the callback \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if the loop completes. If a callback returns $<$ 0 it will returns this value. 
\end{DoxyReturn}


References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry\+\_\+safe}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}.



Referenced by \textbf{ DEFUN\+\_\+\+HIDDEN()}.

\mbox{\label{group__libgb_gae62378d1d637d12c4b9ac4cc77457860}} 
\index{Libgb@{Libgb}!gprs\_ns2\_nse\_nsei@{gprs\_ns2\_nse\_nsei}}
\index{gprs\_ns2\_nse\_nsei@{gprs\_ns2\_nse\_nsei}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_nse\_nsei()}
{\footnotesize\ttfamily uint16\+\_\+t gprs\+\_\+ns2\+\_\+nse\+\_\+nsei (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



Return the NSEI. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the nsei. 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}.

\mbox{\label{group__libgb_ga6bfddf6ae7b4e50cf9fbd54a21684643}} 
\index{Libgb@{Libgb}!gprs\_ns2\_nsvc\_by\_nsvci@{gprs\_ns2\_nsvc\_by\_nsvci}}
\index{gprs\_ns2\_nsvc\_by\_nsvci@{gprs\_ns2\_nsvc\_by\_nsvci}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_nsvc\_by\_nsvci()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+nsvci (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsvci }\end{DoxyParamCaption})}



Resolve a NS-\/\+VC Entity based on its NS-\/\+VCI. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS Instance in which we do the look-\/up \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & NS-\/\+VCI to look up \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
NS-\/\+VC Entity in successful case; NULL if none found 
\end{DoxyReturn}


References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}.



Referenced by \textbf{ DEFUN()}, \textbf{ ns2\+\_\+create\+\_\+vc()}, and \textbf{ ns2\+\_\+vc\+\_\+rx()}.

\mbox{\label{group__libgb_gaab99735179e89154d6cafc4c1fe173d8}} 
\index{Libgb@{Libgb}!gprs\_ns2\_nsvc\_by\_sockaddr\_nse@{gprs\_ns2\_nsvc\_by\_sockaddr\_nse}}
\index{gprs\_ns2\_nsvc\_by\_sockaddr\_nse@{gprs\_ns2\_nsvc\_by\_sockaddr\_nse}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_nsvc\_by\_sockaddr\_nse()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+sockaddr\+\_\+nse (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{sockaddr }\end{DoxyParamCaption})}



Find NS-\/\+VC for given socket address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity in which to search \\
\hline
\mbox{\texttt{ in}}  & {\em sockaddr} & socket address to search for \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
NS-\/\+VC matching sockaddr; NULL if none found 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+vc\+\_\+remote()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ OSMO\+\_\+\+ASSERT}, and \textbf{ osmo\+\_\+sockaddr\+\_\+cmp()}.



Referenced by \textbf{ nsvc\+\_\+by\+\_\+ip4\+\_\+elem()}, and \textbf{ nsvc\+\_\+by\+\_\+ip6\+\_\+elem()}.

\mbox{\label{group__libgb_ga12f2eb92f6cbcd19deb98efc9c30020c}} 
\index{Libgb@{Libgb}!gprs\_ns2\_nsvc\_state\_name@{gprs\_ns2\_nsvc\_state\_name}}
\index{gprs\_ns2\_nsvc\_state\_name@{gprs\_ns2\_nsvc\_state\_name}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_nsvc\_state\_name()}
{\footnotesize\ttfamily const char $\ast$ gprs\+\_\+ns2\+\_\+nsvc\+\_\+state\+\_\+name (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Return the current state name of a given NS-\/\+VC to a thread-\/local static buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC to return the state of \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to the string on success; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+name()}.

\mbox{\label{group__libgb_ga94c293f7021832116d1c2466c609667c}} 
\index{Libgb@{Libgb}!gprs\_ns2\_recv\_prim@{gprs\_ns2\_recv\_prim}}
\index{gprs\_ns2\_recv\_prim@{gprs\_ns2\_recv\_prim}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_recv\_prim()}
{\footnotesize\ttfamily int gprs\+\_\+ns2\+\_\+recv\+\_\+prim (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ osmo\+\_\+prim\+\_\+hdr} $\ast$}]{oph }\end{DoxyParamCaption})}



Receive a primitive from the NS User (Gb). 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance to which the primitive is issued \\
\hline
\mbox{\texttt{ in}}  & {\em oph} & The primitive \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::alive}, \textbf{ bvci}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::bvci}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::change}, \textbf{ container\+\_\+of}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ENDPOINT\+\_\+\+CONFIRM\+\_\+\+CHANGE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ENDPOINT\+\_\+\+REQUEST\+\_\+\+CHANGE}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+PRIM\+\_\+\+UNIT\+\_\+\+DATA}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::link\+\_\+selector}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::msg}, \textbf{ msgb\+\_\+free()}, \textbf{ ns2\+\_\+load\+\_\+sharing()}, \textbf{ ns2\+\_\+tx\+\_\+unit\+\_\+data()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::nsei}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::operation}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+REQUEST}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::primitive}, \textbf{ osmo\+\_\+prim\+\_\+hdr\+::sap}, \textbf{ SAP\+\_\+\+NS}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::u}, and \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::unitdata}.



Referenced by \textbf{ bssgp2\+\_\+nsi\+\_\+tx\+\_\+ptp()}.

\mbox{\label{group__libgb_ga1e5ac637ca7440022c72db90f6f0f25e}} 
\index{Libgb@{Libgb}!gprs\_ns2\_start\_alive\_all\_nsvcs@{gprs\_ns2\_start\_alive\_all\_nsvcs}}
\index{gprs\_ns2\_start\_alive\_all\_nsvcs@{gprs\_ns2\_start\_alive\_all\_nsvcs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_start\_alive\_all\_nsvcs()}
{\footnotesize\ttfamily void gprs\+\_\+ns2\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



Start the NS-\/\+ALIVE FSM in all NS-\/\+VCs of given NSE. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity in whihc to start NS-\/\+ALIVE FSMs \\
\hline
\end{DoxyParams}


References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+start()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ OSMO\+\_\+\+ASSERT}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::sns\+\_\+only}.



Referenced by \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+bss\+\_\+config\+\_\+sgsn()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+add()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, and \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+sgsn\+\_\+wait\+\_\+config\+\_\+ack()}.

\mbox{\label{group__libgb_gaeb32cf0eae94d480ba77b204062e5ad3}} 
\index{Libgb@{Libgb}!gprs\_ns\_cause\_str@{gprs\_ns\_cause\_str}}
\index{gprs\_ns\_cause\_str@{gprs\_ns\_cause\_str}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_cause\_str()}
{\footnotesize\ttfamily const char $\ast$ gprs\+\_\+ns\+\_\+cause\+\_\+str (\begin{DoxyParamCaption}\item[{enum \textbf{ ns\+\_\+cause}}]{cause }\end{DoxyParamCaption})}



Obtain a human-\/readable string for NS cause value. 



References \textbf{ cause}, \textbf{ get\+\_\+value\+\_\+string()}, and \textbf{ ns\+\_\+cause\+\_\+str}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+status()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+config\+\_\+bss()}, and \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+size()}.

\mbox{\label{group__libgb_ga65bb412f8727383ef2365ad00052ccfd}} 
\index{Libgb@{Libgb}!gprs\_ns\_close@{gprs\_ns\_close}}
\index{gprs\_ns\_close@{gprs\_ns\_close}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_close()}
{\footnotesize\ttfamily void gprs\+\_\+ns\+\_\+close (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



References \textbf{ osmo\+\_\+fd\+::data}, \textbf{ osmo\+\_\+fd\+::fd}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::fd}, \textbf{ gprs\+\_\+nsvc\+\_\+delete()}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry\+\_\+safe}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::nsip}, \textbf{ osmo\+\_\+fd\+\_\+unregister()}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::unknown\+\_\+nsvc}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+destroy()}.

\mbox{\label{group__libgb_gaf977c8dca440c87eb29d0f4eaa8dbead}} 
\index{Libgb@{Libgb}!gprs\_ns\_destroy@{gprs\_ns\_destroy}}
\index{gprs\_ns\_destroy@{gprs\_ns\_destroy}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_destroy()}
{\footnotesize\ttfamily void gprs\+\_\+ns\+\_\+destroy (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



Destroy an entire NS instance. 


\begin{DoxyParams}{Parameters}
{\em nsi} & \doxyref{gprs\+\_\+ns\+\_\+inst}{p.}{structgprs__ns__inst} that is to be destroyed\\
\hline
\end{DoxyParams}
This function releases all resources associated with the NS-\/instance. 

References \textbf{ gprs\+\_\+ns\+\_\+close()}, and \textbf{ gprs\+\_\+nsvc\+::nsi}.

\mbox{\label{group__libgb_ga3b865a4153c5f5f99c736fe4197f0498}} 
\index{Libgb@{Libgb}!gprs\_ns\_instantiate@{gprs\_ns\_instantiate}}
\index{gprs\_ns\_instantiate@{gprs\_ns\_instantiate}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_instantiate()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$ gprs\+\_\+ns\+\_\+instantiate (\begin{DoxyParamCaption}\item[{\textbf{ gprs\+\_\+ns\+\_\+cb\+\_\+t} $\ast$}]{cb,  }\item[{void $\ast$}]{ctx }\end{DoxyParamCaption})}



Create a new GPRS NS instance. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em cb} & Call-\/back function for incoming BSSGP data \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
dynamically allocated \doxyref{gprs\+\_\+ns\+\_\+inst}{p.}{structgprs__ns__inst} 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::cb}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ gprs\+\_\+sns\+\_\+fsm\+\_\+registered}, \textbf{ gprs\+\_\+sns\+\_\+init()}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ gprs\+\_\+nsvc\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET\+\_\+\+RETRIES}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROV}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::nsip}, \textbf{ gprs\+\_\+nsvc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::timeout}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::unknown\+\_\+nsvc}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::use\+\_\+reset\+\_\+block\+\_\+unblock}.

\mbox{\label{group__libgb_ga59af4cce7bdb355a40e03ea80378bf47}} 
\index{Libgb@{Libgb}!gprs\_ns\_ll\_clear@{gprs\_ns\_ll\_clear}}
\index{gprs\_ns\_ll\_clear@{gprs\_ns\_ll\_clear}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_ll\_clear()}
{\footnotesize\ttfamily void gprs\+\_\+ns\+\_\+ll\+\_\+clear (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ gprs\+\_\+nsvc\+::frgre}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+FR\+\_\+\+GRE}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+nsvc\+::ip}, and \textbf{ gprs\+\_\+nsvc\+::ll}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, and \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}.

\mbox{\label{group__libgb_gab001ddfdd310edd90c33dbb00c53672c}} 
\index{Libgb@{Libgb}!gprs\_ns\_ll\_copy@{gprs\_ns\_ll\_copy}}
\index{gprs\_ns\_ll\_copy@{gprs\_ns\_ll\_copy}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_ll\_copy()}
{\footnotesize\ttfamily void gprs\+\_\+ns\+\_\+ll\+\_\+copy (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{other }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+nsvc\+::frgre}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+FR\+\_\+\+GRE}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+nsvc\+::ip}, and \textbf{ gprs\+\_\+nsvc\+::ll}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, and \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}.

\mbox{\label{group__libgb_ga107928cae88251302409d4a986ef1cbf}} 
\index{Libgb@{Libgb}!gprs\_ns\_ll\_str@{gprs\_ns\_ll\_str}}
\index{gprs\_ns\_ll\_str@{gprs\_ns\_ll\_str}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_ll\_str()}
{\footnotesize\ttfamily const char $\ast$ gprs\+\_\+ns\+\_\+ll\+\_\+str (\begin{DoxyParamCaption}\item[{const struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+buf()}.



Referenced by \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ do\+\_\+sns\+\_\+add()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ do\+\_\+sns\+\_\+delete()}, \textbf{ dump\+\_\+nse()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, and \textbf{ gprs\+\_\+nsvc\+\_\+replace\+\_\+if\+\_\+found()}.

\mbox{\label{group__libgb_ga3c2b9ab76eb1ad97b07619e032697187}} 
\index{Libgb@{Libgb}!gprs\_ns\_ll\_str\_buf@{gprs\_ns\_ll\_str\_buf}}
\index{gprs\_ns\_ll\_str\_buf@{gprs\_ns\_ll\_str\_buf}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_ll\_str\_buf()}
{\footnotesize\ttfamily char $\ast$ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+len,  }\item[{const struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ gprs\+\_\+nsvc\+::frgre}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+FR\+\_\+\+GRE}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+nsvc\+::ip}, \textbf{ gprs\+\_\+nsvc\+::ll}, and \textbf{ osmo\+\_\+ntohs}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str()}, and \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+c()}.

\mbox{\label{group__libgb_gacc0a874cb1379e9ecf85f7b1fd8b5218}} 
\index{Libgb@{Libgb}!gprs\_ns\_ll\_str\_c@{gprs\_ns\_ll\_str\_c}}
\index{gprs\_ns\_ll\_str\_c@{gprs\_ns\_ll\_str\_c}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_ll\_str\_c()}
{\footnotesize\ttfamily char $\ast$ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+c (\begin{DoxyParamCaption}\item[{const void $\ast$}]{ctx,  }\item[{const struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str\+\_\+buf()}.

\mbox{\label{group__libgb_gaae95fb6ea50aa9ecbdf336f931ea0554}} 
\index{Libgb@{Libgb}!gprs\_ns\_msgb\_alloc@{gprs\_ns\_msgb\_alloc}}
\index{gprs\_ns\_msgb\_alloc@{gprs\_ns\_msgb\_alloc}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_msgb\_alloc()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



References \textbf{ DNS}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+alloc\+\_\+headroom()}, \textbf{ NS\+\_\+\+ALLOC\+\_\+\+HEADROOM}, and \textbf{ NS\+\_\+\+ALLOC\+\_\+\+SIZE}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, and \textbf{ read\+\_\+nsip\+\_\+msg()}.

\mbox{\label{group__libgb_ga1e9361569860d0a51867dbafa847dc84}} 
\index{Libgb@{Libgb}!gprs\_ns\_nsip\_connect@{gprs\_ns\_nsip\_connect}}
\index{gprs\_ns\_nsip\_connect@{gprs\_ns\_nsip\_connect}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_nsip\_connect()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+ns\+\_\+nsip\+\_\+connect (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{struct sockaddr\+\_\+in $\ast$}]{dest,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{nsvci }\end{DoxyParamCaption})}



Establish a NS connection (from the BSS) to the SGSN. 


\begin{DoxyParams}[1]{Parameters}
 & {\em nsi} & NS-\/instance \\
\hline
\mbox{\texttt{ in}}  & {\em dest} & Destination IP/\+Port \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI of the to-\/be-\/established NS-\/\+VC \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & NSVCI of the to-\/be-\/established NS-\/\+VC \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
struct \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} representing the new NS-\/\+VC
\end{DoxyReturn}
This function will establish a single NS/\+UDP/\+IP connection in uplink (BSS to SGSN) direction. 

References \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+rem\+\_\+addr()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ gprs\+\_\+nsvc\+\_\+reset()}, \textbf{ gprs\+\_\+nsvc\+::ip}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, and \textbf{ gprs\+\_\+nsvc\+::remote\+\_\+end\+\_\+is\+\_\+sgsn}.

\mbox{\label{group__libgb_ga7dc440599702b88f6d0128ca2cb08852}} 
\index{Libgb@{Libgb}!gprs\_ns\_nsip\_connect\_sns@{gprs\_ns\_nsip\_connect\_sns}}
\index{gprs\_ns\_nsip\_connect\_sns@{gprs\_ns\_nsip\_connect\_sns}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_nsip\_connect\_sns()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+ns\+\_\+nsip\+\_\+connect\+\_\+sns (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{struct sockaddr\+\_\+in $\ast$}]{dest,  }\item[{uint16\+\_\+t}]{nsei,  }\item[{uint16\+\_\+t}]{nsvci }\end{DoxyParamCaption})}



Establish a NS connection (from the BSS) to the SGSN using SNS auto-\/configuration. 


\begin{DoxyParams}[1]{Parameters}
 & {\em nsi} & NS-\/instance \\
\hline
\mbox{\texttt{ in}}  & {\em dest} & Destination IP/\+Port \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI of the to-\/be-\/established NS-\/\+VC \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & NSVCI of the to-\/be-\/established NS-\/\+VC \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
struct \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} representing the new NS-\/\+VC
\end{DoxyReturn}
This function will establish a single NS/\+UDP/\+IP connection in uplink (BSS to SGSN) direction. It will start with the SNS-\/\+SIZE procedure, followed by BSS-\/originated SNS-\/\+CONFIG, then SGSN-\/originated SNS-\/\+CONFIG.

Once configuration completes, the user will be notified by the S\+\_\+\+SNS\+\_\+\+CONFIGURED signal, at which point he typically would want to initiate NS-\/\+RESET by means of \doxyref{gprs\+\_\+nsvc\+\_\+reset()}{p.}{group__libgb_ga6122988c9645e3e06af9f887caf1424d}. 

References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+rem\+\_\+addr()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ gprs\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc()}, \textbf{ gprs\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+start()}, \textbf{ gprs\+\_\+nsvc\+::ip}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+term}, \textbf{ OSMO\+\_\+\+FSM\+\_\+\+TERM\+\_\+\+REQUEST}, and \textbf{ gprs\+\_\+nsvc\+::remote\+\_\+end\+\_\+is\+\_\+sgsn}.

\mbox{\label{group__libgb_ga3a023e567b75406abec89bb04c065426}} 
\index{Libgb@{Libgb}!gprs\_ns\_nsip\_listen@{gprs\_ns\_nsip\_listen}}
\index{gprs\_ns\_nsip\_listen@{gprs\_ns\_nsip\_listen}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_nsip\_listen()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+nsip\+\_\+listen (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



Create a listening socket for GPRS NS/\+UDP/\+IP. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS protocol instance to listen \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
$>$=0 (fd) in case of success, negative in case of error
\end{DoxyReturn}
A call to this function will create a UDP socket bound to the port number and IP address specified in the NS protocol instance. The file descriptor of the socket will be stored in nsi-\/$>$nsip.\+fd. 

References \textbf{ osmo\+\_\+fd\+::cb}, \textbf{ osmo\+\_\+fd\+::data}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::dscp}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::fd}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::local\+\_\+ip}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::local\+\_\+port}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::nsip}, \textbf{ nsip\+\_\+fd\+\_\+cb()}, \textbf{ osmo\+\_\+htonl}, \textbf{ OSMO\+\_\+\+SOCK\+\_\+\+F\+\_\+\+BIND}, \textbf{ OSMO\+\_\+\+SOCK\+\_\+\+F\+\_\+\+CONNECT}, \textbf{ OSMO\+\_\+\+SOCK\+\_\+\+F\+\_\+\+DSCP}, \textbf{ osmo\+\_\+sock\+\_\+init2\+\_\+ofd()}, \textbf{ osmo\+\_\+sock\+\_\+init\+\_\+ofd()}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::remote\+\_\+ip}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::remote\+\_\+port}.

\mbox{\label{group__libgb_ga96bdb6007b15da0a674b847a624b79ac}} 
\index{Libgb@{Libgb}!gprs\_ns\_process\_msg@{gprs\_ns\_process\_msg}}
\index{gprs\_ns\_process\_msg@{gprs\_ns\_process\_msg}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_process\_msg()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+process\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$}]{nsvc }\end{DoxyParamCaption})}



Process NS message independently from underlying transport layer. 


\begin{DoxyParams}[1]{Parameters}
 & {\em nsi} & NS instance to which the data belongs \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & message buffer containing newly-\/received data \\
\hline
\mbox{\texttt{ in,out}}  & {\em nsvc} & refers to the virtual connection, may be modified when processing a NS\+\_\+\+RESET \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success, $<$ 0 in case of error
\end{DoxyReturn}
This contains the main NS automaton. 

References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+status()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+unitdata()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+unblock()}, \textbf{ gprs\+\_\+nsvc\+\_\+reset()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ LOGPC}, \textbf{ msg}, \textbf{ msgb\+\_\+hexdump()}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+nsei}, \textbf{ ns\+\_\+att\+\_\+tlvdef}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN}, \textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+TRANS\+\_\+\+ID}, \textbf{ ns\+\_\+is\+\_\+sns()}, \textbf{ ns\+\_\+mark\+\_\+alive}, \textbf{ ns\+\_\+mark\+\_\+unblocked}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNITDATA}, \textbf{ ns\+\_\+set\+\_\+remote\+\_\+state}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY}, \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ NSE\+\_\+\+S\+\_\+\+RESET}, \textbf{ nsvc\+\_\+is\+\_\+not\+\_\+used()}, \textbf{ nsvc\+\_\+start\+\_\+timer()}, \textbf{ nsvc\+\_\+timer\+\_\+elapsed\+\_\+ms()}, \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+get\+\_\+item()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+set()}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ rate\+\_\+ctr\+\_\+add()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ S\+\_\+\+NS\+\_\+\+UNBLOCK}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ACK}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ADD}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CHANGE\+\_\+\+WEIGHT}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG\+\_\+\+ACK}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+DELETE}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE\+\_\+\+ACK}, and \textbf{ tlv\+\_\+parse()}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rcvmsg()}.

\mbox{\label{group__libgb_gab17cf22e8b846f116a6e14522c026e42}} 
\index{Libgb@{Libgb}!gprs\_ns\_rcvmsg@{gprs\_ns\_rcvmsg}}
\index{gprs\_ns\_rcvmsg@{gprs\_ns\_rcvmsg}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_rcvmsg()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+rcvmsg (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct sockaddr\+\_\+in $\ast$}]{saddr,  }\item[{enum \textbf{ gprs\+\_\+ns\+\_\+ll}}]{ll }\end{DoxyParamCaption})}



Receive incoming NS message from underlying transport layer. 


\begin{DoxyParams}[1]{Parameters}
 & {\em nsi} & NS instance to which the data belongs \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & message buffer containing newly-\/received data \\
\hline
\mbox{\texttt{ in}}  & {\em saddr} & socketaddr from which data was received \\
\hline
\mbox{\texttt{ in}}  & {\em ll} & link-\/layer type in which data was received \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success, $<$ 0 in case of error
\end{DoxyReturn}
This is the main entry point int othe NS imlementation where frames from the underlying transport (normally UDP) enter. 

References \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+rem\+\_\+addr()}, \textbf{ gprs\+\_\+nsvc\+::ip}, \textbf{ gprs\+\_\+nsvc\+::ll}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ msg}, \textbf{ gprs\+\_\+nsvc\+::nsi}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::unknown\+\_\+nsvc}.



Referenced by \textbf{ handle\+\_\+nsfrgre\+\_\+read()}, and \textbf{ handle\+\_\+nsip\+\_\+read()}.

\mbox{\label{group__libgb_gae088a546242d17e5ace8d8ec89957634}} 
\index{Libgb@{Libgb}!gprs\_ns\_rx\_block@{gprs\_ns\_rx\_block}}
\index{gprs\_ns\_rx\_block@{gprs\_ns\_rx\_block}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_rx\_block()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+rx\+\_\+block (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ cause}, \textbf{ gprs\+\_\+nsvc\+::ctrg}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns\+\_\+att\+\_\+tlvdef}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ ns\+\_\+mark\+\_\+blocked}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch()}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ S\+\_\+\+NS\+\_\+\+BLOCK}, \textbf{ tlv\+\_\+parse()}, \textbf{ TLVP\+\_\+\+PRESENT}, and \textbf{ TLVP\+\_\+\+VAL}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_ga5ce24eb1c924e1d333572061bef6f34d}} 
\index{Libgb@{Libgb}!gprs\_ns\_rx\_reset@{gprs\_ns\_rx\_reset}}
\index{gprs\_ns\_rx\_reset@{gprs\_ns\_rx\_reset}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_rx\_reset()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+rx\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ cause}, \textbf{ CHECK\+\_\+\+TX\+\_\+\+RC}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+clear()}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+copy()}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ gprs\+\_\+nsvc\+\_\+replace\+\_\+if\+\_\+found()}, \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns\+\_\+att\+\_\+tlvdef}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI}, \textbf{ NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG}, \textbf{ NS\+\_\+\+CTR\+\_\+\+REPLACED}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch()}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+mismatch()}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+replaced()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ nsei}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+udp\+\_\+idx()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+upd\+\_\+idx()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ S\+\_\+\+NS\+\_\+\+RESET}, \textbf{ tlv\+\_\+parse()}, \textbf{ TLVP\+\_\+\+PRESENT}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ tlvp\+\_\+val16be()}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_gad9f78b06629569a06c608463e570d5bb}} 
\index{Libgb@{Libgb}!gprs\_ns\_rx\_reset\_ack@{gprs\_ns\_rx\_reset\_ack}}
\index{gprs\_ns\_rx\_reset\_ack@{gprs\_ns\_rx\_reset\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_rx\_reset\_ack()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ CHECK\+\_\+\+TX\+\_\+\+RC}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+clear()}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+copy()}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ gprs\+\_\+nsvc\+\_\+replace\+\_\+if\+\_\+found()}, \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns\+\_\+att\+\_\+tlvdef}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI}, \textbf{ NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG}, \textbf{ NS\+\_\+\+CTR\+\_\+\+REPLACED}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+mismatch()}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+replaced()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ ns\+\_\+set\+\_\+remote\+\_\+state}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ NSE\+\_\+\+S\+\_\+\+RESET}, \textbf{ nsei}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ tlv\+\_\+parse()}, \textbf{ TLVP\+\_\+\+PRESENT}, and \textbf{ tlvp\+\_\+val16be()}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_ga9c2a6196ab11d3b569b95a2ef819efa4}} 
\index{Libgb@{Libgb}!gprs\_ns\_rx\_status@{gprs\_ns\_rx\_status}}
\index{gprs\_ns\_rx\_status@{gprs\_ns\_rx\_status}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_rx\_status()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+rx\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ cause}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ LOGPC}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns\+\_\+att\+\_\+tlvdef}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ tlv\+\_\+parse()}, \textbf{ TLVP\+\_\+\+PRESENT}, and \textbf{ TLVP\+\_\+\+VAL}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_ga7ea9ffa88b12e4acd42ad1efa146c5a4}} 
\index{Libgb@{Libgb}!gprs\_ns\_rx\_unitdata@{gprs\_ns\_rx\_unitdata}}
\index{gprs\_ns\_rx\_unitdata@{gprs\_ns\_rx\_unitdata}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_rx\_unitdata()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+rx\+\_\+unitdata (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bvci}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::cb}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+EVT\+\_\+\+UNIT\+\_\+\+DATA}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ if()}, \textbf{ msg}, \textbf{ msgb\+\_\+bssgph}, \textbf{ msgb\+\_\+bvci}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ gprs\+\_\+nsvc\+::nsi}, and \textbf{ gprs\+\_\+nsvc\+::state}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_gaf27635ee80125de543f7c5e4fefd3884}} 
\index{Libgb@{Libgb}!gprs\_ns\_sendmsg@{gprs\_ns\_sendmsg}}
\index{gprs\_ns\_sendmsg@{gprs\_ns\_sendmsg}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_sendmsg()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+sendmsg (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



High-\/level function for transmitting a NS-\/\+UNITDATA messsage. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS-\/instance on which we shall transmit \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & struct msgb to be trasnmitted\\
\hline
\end{DoxyParams}
This function obtains the NS-\/\+VC by the \doxyref{msgb\+\_\+nsei(msg)}{p.}{gprs__msgb_8h_ac613dcc5499dd7838886583340d68c66} and then checks if the NS-\/\+VC is ALIVE and not BLOCKED. After that, it adds a NS header for the NS-\/\+UNITDATA message type and sends it off.

Section 9.\+2.\+10\+: transmit side / NS-\/\+UNITDATA-\/\+REQUEST primitive 

References \textbf{ bvci}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ gprs\+\_\+active\+\_\+nsvc\+\_\+by\+\_\+nsei()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+nsei()}, \textbf{ if()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+bvci}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+nsei}, \textbf{ msgb\+\_\+push()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNITDATA}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ \+\_\+gprs\+\_\+ns\+\_\+sendmsg()}.

\mbox{\label{group__libgb_ga752e8b41655c789e047779edce0ee70a}} 
\index{Libgb@{Libgb}!gprs\_ns\_set\_log\_ss@{gprs\_ns\_set\_log\_ss}}
\index{gprs\_ns\_set\_log\_ss@{gprs\_ns\_set\_log\_ss}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_set\_log\_ss()}
{\footnotesize\ttfamily void gprs\+\_\+ns\+\_\+set\+\_\+log\+\_\+ss (\begin{DoxyParamCaption}\item[{int}]{ss }\end{DoxyParamCaption})}



References \textbf{ DNS}.

\mbox{\label{group__libgb_gab4442be20e1ec80c27a62eaa68427f31}} 
\index{Libgb@{Libgb}!gprs\_ns\_timer\_cb@{gprs\_ns\_timer\_cb}}
\index{gprs\_ns\_timer\_cb@{gprs\_ns\_timer\_cb}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_timer\_cb()}
{\footnotesize\ttfamily static void gprs\+\_\+ns\+\_\+timer\+\_\+cb (\begin{DoxyParamCaption}\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ \+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR}, \textbf{ gprs\+\_\+nsvc\+::alive\+\_\+retries}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+nsvc\+::ctrg}, \textbf{ data}, \textbf{ DEBUGP}, \textbf{ DNS}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+OM\+\_\+\+INTERVENTION}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+CTR\+\_\+\+DEAD}, \textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE}, \textbf{ NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET}, \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch()}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ NSE\+\_\+\+S\+\_\+\+RESET}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::nsip}, \textbf{ nsvc\+\_\+start\+\_\+timer()}, \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+ALIVE}, \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+RESET}, \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ S\+\_\+\+NS\+\_\+\+ALIVE\+\_\+\+EXP}, \textbf{ S\+\_\+\+NS\+\_\+\+BLOCK}, \textbf{ gprs\+\_\+nsvc\+::state}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::timeout}, \textbf{ gprs\+\_\+nsvc\+::timer\+\_\+mode}, \textbf{ timer\+\_\+mode\+\_\+strs}, \textbf{ timer\+\_\+mode\+\_\+tout}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::use\+\_\+reset\+\_\+block\+\_\+unblock}.



Referenced by \textbf{ gprs\+\_\+nsvc\+\_\+create2()}.

\mbox{\label{group__libgb_gab852cf7403be3971638416b919e1824c}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx@{gprs\_ns\_tx}}
\index{gprs\_ns\_tx@{gprs\_ns\_tx}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+tx (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+nsvc\+::ctrg}, \textbf{ DNS}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ gprs\+\_\+ns\+\_\+frgre\+\_\+sendmsg()}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+FR\+\_\+\+GRE}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ gprs\+\_\+nsvc\+::ll}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l2len()}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT}, \textbf{ NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT}, \textbf{ ns\+\_\+is\+\_\+sns()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ nsip\+\_\+sendmsg()}, \textbf{ nsvc\+\_\+is\+\_\+not\+\_\+used()}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ rate\+\_\+ctr\+\_\+add()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, and \textbf{ rate\+\_\+ctr\+\_\+inc()}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+sendmsg()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack()}, and \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}.

\mbox{\label{group__libgb_gad54c7788be7c90e1078b890190a68d9f}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_alive@{gprs\_ns\_tx\_alive}}
\index{gprs\_ns\_tx\_alive@{gprs\_ns\_tx\_alive}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_alive()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+alive (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Transmit a NS-\/\+ALIVE on a given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the NS-\/\+ALIVE is to be transmitted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGP}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE}, \textbf{ gprs\+\_\+nsvc\+::nsei}, and \textbf{ gprs\+\_\+nsvc\+::nsvci}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, and \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test()}.

\mbox{\label{group__libgb_gabaebf46f59bee30756b28c3d8e0fc396}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_alive\_ack@{gprs\_ns\_tx\_alive\_ack}}
\index{gprs\_ns\_tx\_alive\_ack@{gprs\_ns\_tx\_alive\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_alive\_ack()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+alive\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Transmit a NS-\/\+ALIVE-\/\+ACK on a given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the NS-\/\+ALIVE-\/\+ACK is to be transmitted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGP}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ gprs\+\_\+nsvc\+::nsei}, and \textbf{ gprs\+\_\+nsvc\+::nsvci}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_ga7ae883da168076940f0132407d012b98}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_block@{gprs\_ns\_tx\_block}}
\index{gprs\_ns\_tx\_block@{gprs\_ns\_tx\_block}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_block()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+block (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause }\end{DoxyParamCaption})}



Transmit a NS-\/\+BLOCK on a given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the NS-\/\+BLOCK is to be transmitted \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Numeric NS Cause value \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ cause}, \textbf{ gprs\+\_\+nsvc\+::ctrg}, \textbf{ DNS}, \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+CTR\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ ns\+\_\+mark\+\_\+blocked}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, and \textbf{ rate\+\_\+ctr\+\_\+inc()}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{group__libgb_ga576bec4c6d55e02db2aa6ed8ecb54eb4}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_block\_ack@{gprs\_ns\_tx\_block\_ack}}
\index{gprs\_ns\_tx\_block\_ack@{gprs\_ns\_tx\_block\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_block\_ack()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+tx\+\_\+block\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Transmit a NS-\/\+BLOCK-\/\+ACK on a given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the NS-\/\+BLOCK is to be transmitted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ DNS}, \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ osmo\+\_\+htons}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block()}.

\mbox{\label{group__libgb_ga424ba65d6bfe8f33fbcd4ebd085bd0fa}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_reset@{gprs\_ns\_tx\_reset}}
\index{gprs\_ns\_tx\_reset@{gprs\_ns\_tx\_reset}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_reset()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause }\end{DoxyParamCaption})}



Transmit a NS-\/\+RESET on a given NSVC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC used for transmission \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Numeric NS cause value \\
\hline
\end{DoxyParams}


References \textbf{ cause}, \textbf{ DNS}, \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ osmo\+\_\+htons}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, and \textbf{ gprs\+\_\+nsvc\+\_\+reset()}.

\mbox{\label{group__libgb_gadc6fbf234afcc0d30ddd3fc42333a978}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_reset\_ack@{gprs\_ns\_tx\_reset\_ack}}
\index{gprs\_ns\_tx\_reset\_ack@{gprs\_ns\_tx\_reset\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_reset\_ack()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+tx\+\_\+reset\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DNS}, \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ osmo\+\_\+htons}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}.

\mbox{\label{group__libgb_ga1273e9cf5ff147147acd21af115c8b75}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_simple@{gprs\_ns\_tx\_simple}}
\index{gprs\_ns\_tx\_simple@{gprs\_ns\_tx\_simple}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_simple()}
{\footnotesize\ttfamily static int gprs\+\_\+ns\+\_\+tx\+\_\+simple (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{pdu\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ pdu\+\_\+type}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive\+\_\+ack()}, and \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+unblock()}.

\mbox{\label{group__libgb_ga62404c7a8fbedba3f56065e977fb4a96}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_sns\_ack@{gprs\_ns\_tx\_sns\_ack}}
\index{gprs\_ns\_tx\_sns\_ack@{gprs\_ns\_tx\_sns\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_sns\_ack()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{trans\+\_\+id,  }\item[{uint8\+\_\+t $\ast$}]{cause,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$}]{ip4\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip4\+\_\+elems }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+ACK as per Section 9.\+3.\+1. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the ACK \\
\hline
\mbox{\texttt{ in}}  & {\em trans\+\_\+id} & Transaction ID which to acknowledge \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Pointer to cause value (NULL if no cause to be sent) \\
\hline
\mbox{\texttt{ in}}  & {\em ip4\+\_\+elems} & Array of IPv4 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip4\+\_\+elems} & number of ip4\+\_\+elems \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ cause}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+v\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+LIST}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ACK}.



Referenced by \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+configured()}.

\mbox{\label{group__libgb_ga3be5562b0ec145ca8bd91e6712066339}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_sns\_config@{gprs\_ns\_tx\_sns\_config}}
\index{gprs\_ns\_tx\_sns\_config@{gprs\_ns\_tx\_sns\_config}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_sns\_config()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{bool}]{end\+\_\+flag,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$}]{ip4\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip4\+\_\+elems }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+CONFIG as per Section 9.\+3.\+4. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+CONFIG \\
\hline
\mbox{\texttt{ in}}  & {\em end\+\_\+flag} & Whether or not this is the last SNS-\/\+CONFIG \\
\hline
\mbox{\texttt{ in}}  & {\em ip4\+\_\+elems} & Array of IPv4 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip4\+\_\+elems} & number of ip4\+\_\+elems \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+v\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+LIST}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG}.



Referenced by \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+config\+\_\+bss\+\_\+onenter()}.

\mbox{\label{group__libgb_ga188c5ad22acbbe9b8f38df83a68c6359}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_sns\_config\_ack@{gprs\_ns\_tx\_sns\_config\_ack}}
\index{gprs\_ns\_tx\_sns\_config\_ack@{gprs\_ns\_tx\_sns\_config\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_sns\_config\_ack()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t $\ast$}]{cause }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+CONFIG-\/\+ACK as per Section 9.\+3.\+5. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+CONFIG-\/\+ACK \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Pointer to cause value (NULL if no cause to be sent) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ cause}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG\+\_\+\+ACK}.



Referenced by \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+config\+\_\+sgsn()}.

\mbox{\label{group__libgb_ga9b51a08c7378db1160667369fc6b7d22}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_sns\_size@{gprs\_ns\_tx\_sns\_size}}
\index{gprs\_ns\_tx\_sns\_size@{gprs\_ns\_tx\_sns\_size}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_sns\_size()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{bool}]{reset\+\_\+flag,  }\item[{uint16\+\_\+t}]{max\+\_\+nr\+\_\+nsvc,  }\item[{uint16\+\_\+t $\ast$}]{ip4\+\_\+ep\+\_\+nr,  }\item[{uint16\+\_\+t $\ast$}]{ip6\+\_\+ep\+\_\+nr }\end{DoxyParamCaption})}



Encode + transmit a SNS-\/\+SIZE as per Section 9.\+3.\+7. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+SIZE \\
\hline
\mbox{\texttt{ in}}  & {\em reset\+\_\+flag} & Whether or not to add a RESET flag \\
\hline
\mbox{\texttt{ in}}  & {\em max\+\_\+nr\+\_\+nsvc} & Maximum number of NS-\/\+VCs \\
\hline
\mbox{\texttt{ in}}  & {\em ip4\+\_\+ep\+\_\+nr} & Number of IPv4 endpoints (NULL if none) \\
\hline
\mbox{\texttt{ in}}  & {\em ip6\+\_\+ep\+\_\+nr} & Number of IPv6 endpoints (NULL if none) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tv16\+\_\+put()}, \textbf{ msgb\+\_\+tv\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+EP\+\_\+\+NR}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+EP\+\_\+\+NR}, \textbf{ NS\+\_\+\+IE\+\_\+\+MAX\+\_\+\+NR\+\_\+\+NSVC}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+RESET\+\_\+\+FLAG}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE}.



Referenced by \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+size\+\_\+onenter()}.

\mbox{\label{group__libgb_gacc0c8deced1ba714e961bb0ef9b355b2}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_sns\_size\_ack@{gprs\_ns\_tx\_sns\_size\_ack}}
\index{gprs\_ns\_tx\_sns\_size\_ack@{gprs\_ns\_tx\_sns\_size\_ack}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_sns\_size\_ack()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t $\ast$}]{cause }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+SIZE-\/\+ACK as per Section 9.\+3.\+8. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+SIZE-\/\+ACK \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Pointer to cause value (NULL if no cause to be sent) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ cause}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE\+\_\+\+ACK}.

\mbox{\label{group__libgb_gade9467a790f755eb8e003041658f1618}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_status@{gprs\_ns\_tx\_status}}
\index{gprs\_ns\_tx\_status@{gprs\_ns\_tx\_status}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_status()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{struct \textbf{ msgb} $\ast$}]{orig\+\_\+msg }\end{DoxyParamCaption})}



Transmit a NS-\/\+STATUS on a given NSVC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC to be used for transmission \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Numeric NS cause value \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & BVCI to be reset within NSVC \\
\hline
\mbox{\texttt{ in}}  & {\em orig\+\_\+msg} & message causing the STATUS \\
\hline
\end{DoxyParams}


References \textbf{ bvci}, \textbf{ cause}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ msgb\+::l2h}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+BVCI\+\_\+\+UNKNOWN}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+SEM\+\_\+\+INCORR\+\_\+\+PDU}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+PDU}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ osmo\+\_\+htons}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+unitdata()}, and \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}.

\mbox{\label{group__libgb_ga1a14e18e1103e46acd675b02f3d71ccb}} 
\index{Libgb@{Libgb}!gprs\_ns\_tx\_unblock@{gprs\_ns\_tx\_unblock}}
\index{gprs\_ns\_tx\_unblock@{gprs\_ns\_tx\_unblock}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_tx\_unblock()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+tx\+\_\+unblock (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Transmit a NS-\/\+UNBLOCK on a given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the NS-\/\+UNBLOCK is to be transmitted \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ DNS}, \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK}, \textbf{ gprs\+\_\+nsvc\+::nsei}, and \textbf{ gprs\+\_\+nsvc\+::nsvci}.



Referenced by \textbf{ DEFUN()}, and \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_ga9382997ee06358e2806857df6784a08c}} 
\index{Libgb@{Libgb}!gprs\_ns\_vc\_create@{gprs\_ns\_vc\_create}}
\index{gprs\_ns\_vc\_create@{gprs\_ns\_vc\_create}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_vc\_create()}
{\footnotesize\ttfamily int gprs\+\_\+ns\+\_\+vc\+\_\+create (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{fallback\+\_\+nsvc,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$}]{new\+\_\+nsvc }\end{DoxyParamCaption})}



Create/get NS-\/\+VC independently from underlying transport layer. 


\begin{DoxyParams}[1]{Parameters}
 & {\em nsi} & NS instance to which the data belongs \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & message buffer containing newly-\/received data \\
\hline
\mbox{\texttt{ in}}  & {\em fallback\+\_\+nsvc} & is used to send error messages back to the peer and to initialise the ll info of a created NS-\/\+VC object \\
\hline
\mbox{\texttt{ out}}  & {\em new\+\_\+nsvc} & contains a pointer to a NS-\/\+VC object if one has been created or found \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
$<$ 0 in case of error, GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+SKIPPED if a message has been skipped, GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+REJECTED if a message has been rejected and answered accordingly, GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+CREATED if a new NS-\/\+VC object has been created and registered, and GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+FOUND if an existing NS-\/\+VC object has been found with the same NSEI.
\end{DoxyReturn}
This contains the initial NS automaton state (NS-\/\+VC not yet attached). 

References \textbf{ CHECK\+\_\+\+TX\+\_\+\+RC}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DNS}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+CREATED}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+FOUND}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+REJECTED}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+CS\+\_\+\+SKIPPED}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+copy()}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str()}, \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+nsvci()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ if()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns\+\_\+att\+\_\+tlvdef}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE}, \textbf{ NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ gprs\+\_\+nsvc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+get\+\_\+ctr()}, \textbf{ rate\+\_\+ctr\+\_\+inc()}, \textbf{ tlv\+\_\+parse()}, \textbf{ TLVP\+\_\+\+PRESENT}, and \textbf{ tlvp\+\_\+val16be()}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rcvmsg()}.

\mbox{\label{group__libgb_ga712419ff6dc9e319d1234ce91d7120f0}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_by\_nsei@{gprs\_nsvc\_by\_nsei}}
\index{gprs\_nsvc\_by\_nsei@{gprs\_nsvc\_by\_nsei}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_by\_nsei()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+nsvc\+\_\+by\+\_\+nsei (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsei }\end{DoxyParamCaption})}



Lookup struct \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} based on NSEI. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance in which to search \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI to be searched \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
first \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} of respective NSEI 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ nsei}, \textbf{ gprs\+\_\+nsvc\+::nsei}, and \textbf{ gprs\+\_\+nsvc\+::nsi}.



Referenced by \textbf{ DEFUN()}, and \textbf{ gprs\+\_\+ns\+\_\+sendmsg()}.

\mbox{\label{group__libgb_gafa4c23bcbf2a4a9ab15e9640bb4dc987}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_by\_nsvci@{gprs\_nsvc\_by\_nsvci}}
\index{gprs\_nsvc\_by\_nsvci@{gprs\_nsvc\_by\_nsvci}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_by\_nsvci()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+nsvc\+\_\+by\+\_\+nsvci (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsvci }\end{DoxyParamCaption})}



Lookup struct \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} based on NSVCI. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance in which to search \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & NSVCI to be searched \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} of respective NSVCI 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ gprs\+\_\+nsvc\+::nsi}, and \textbf{ gprs\+\_\+nsvc\+::nsvci}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, and \textbf{ gprs\+\_\+nsvc\+\_\+replace\+\_\+if\+\_\+found()}.

\mbox{\label{group__libgb_ga28b5b2f8f3a70ed7da94bac9698d32c1}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_by\_rem\_addr@{gprs\_nsvc\_by\_rem\_addr}}
\index{gprs\_nsvc\_by\_rem\_addr@{gprs\_nsvc\_by\_rem\_addr}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_by\_rem\_addr()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+nsvc\+\_\+by\+\_\+rem\+\_\+addr (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{const struct sockaddr\+\_\+in $\ast$}]{sin }\end{DoxyParamCaption})}



Lookup NS-\/\+VC based on specified remote peer socket addr. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS Instance within which we shall look up the NS-\/\+VC \\
\hline
\mbox{\texttt{ in}}  & {\em sin} & Remote peer Socket Address (IP + UDP Port) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
NS-\/\+VC matching the given peer; NULL in case of none 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ gprs\+\_\+nsvc\+::ip}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, and \textbf{ gprs\+\_\+nsvc\+::nsi}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect()}, \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+rcvmsg()}, and \textbf{ nsvc\+\_\+by\+\_\+ip4\+\_\+elem()}.

\mbox{\label{group__libgb_ga0e47ee32b76167bd38089a98570c890b}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_create2@{gprs\_nsvc\_create2}}
\index{gprs\_nsvc\_create2@{gprs\_nsvc\_create2}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_create2()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+nsvc} $\ast$ gprs\+\_\+nsvc\+\_\+create2 (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi,  }\item[{uint16\+\_\+t}]{nsvci,  }\item[{uint8\+\_\+t}]{sig\+\_\+weight,  }\item[{uint8\+\_\+t}]{data\+\_\+weight }\end{DoxyParamCaption})}



Create a new NS-\/\+VC (Virtual Circuit) within given instance. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS Instance in which to create the NSVC \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci\mbox{]}} & NS Virtual Connection Identifier for this NSVC \\
\hline
\mbox{\texttt{ in}}  & {\em sig\+\_\+weight} & Signalling Weight of this NS-\/\+VC. Use \char`\"{}0\char`\"{} for no signalling \\
\hline
\mbox{\texttt{ in}}  & {\em data\+\_\+weight} & Data WEight of this NS-\/\+VC. Use \char`\"{}0\char`\"{} for no data \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
newly-\/created \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} within nsi. NULL on error. 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns\+\_\+inst\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+nsvc\+::ctrg}, \textbf{ gprs\+\_\+nsvc\+::data\+\_\+weight}, \textbf{ data\+\_\+weight}, \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+nsvci()}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ gprs\+\_\+nsvc\+::list}, \textbf{ llist\+\_\+add()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::nsip}, \textbf{ nsvc\+\_\+ctrg\+\_\+desc}, \textbf{ nsvc\+\_\+statg\+\_\+desc}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ gprs\+\_\+nsvc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+alloc()}, \textbf{ osmo\+\_\+timer\+\_\+setup()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+alloc()}, \textbf{ gprs\+\_\+nsvc\+::sig\+\_\+weight}, \textbf{ sig\+\_\+weight}, \textbf{ gprs\+\_\+nsvc\+::statg}, \textbf{ gprs\+\_\+nsvc\+::timer}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::use\+\_\+reset\+\_\+block\+\_\+unblock}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns\+\_\+instantiate()}, \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect()}, \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, and \textbf{ gprs\+\_\+nsvc\+\_\+create\+\_\+ip4()}.

\mbox{\label{group__libgb_ga5ad66da47bc39c25ee764c6ab5bb3af0}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_delete@{gprs\_nsvc\_delete}}
\index{gprs\_nsvc\_delete@{gprs\_nsvc\_delete}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_delete()}
{\footnotesize\ttfamily void gprs\+\_\+nsvc\+\_\+delete (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Delete given NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & \doxyref{gprs\+\_\+nsvc}{p.}{structgprs__nsvc} to be deleted \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+nsvc\+::ctrg}, \textbf{ gprs\+\_\+nsvc\+::list}, \textbf{ llist\+\_\+del()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+free()}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free()}, \textbf{ gprs\+\_\+nsvc\+::statg}, and \textbf{ gprs\+\_\+nsvc\+::timer}.



Referenced by \textbf{ do\+\_\+sns\+\_\+delete()}, and \textbf{ gprs\+\_\+ns\+\_\+close()}.

\mbox{\label{group__libgb_ga10cb424e1dbef26b190abbdd1eb96807}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_replace\_if\_found@{gprs\_nsvc\_replace\_if\_found}}
\index{gprs\_nsvc\_replace\_if\_found@{gprs\_nsvc\_replace\_if\_found}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_replace\_if\_found()}
{\footnotesize\ttfamily static int gprs\+\_\+nsvc\+\_\+replace\+\_\+if\+\_\+found (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{nsvci,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$}]{nsvc,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$$\ast$}]{old\+\_\+nsvc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DNS}, \textbf{ gprs\+\_\+ns\+\_\+ll\+\_\+str()}, \textbf{ gprs\+\_\+nsvc\+\_\+by\+\_\+nsvci()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, and \textbf{ gprs\+\_\+nsvc\+::nsvci}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, and \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}.

\mbox{\label{group__libgb_ga6122988c9645e3e06af9f887caf1424d}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_reset@{gprs\_nsvc\_reset}}
\index{gprs\_nsvc\_reset@{gprs\_nsvc\_reset}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_reset()}
{\footnotesize\ttfamily int gprs\+\_\+nsvc\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause }\end{DoxyParamCaption})}



Initiate a RESET procedure. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC in which to start the procedure \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Numeric NS cause value\\
\hline
\end{DoxyParams}
This is a high-\/level function initiating a NS-\/\+RESET procedure. It will not only send a NS-\/\+RESET, but also set the state to BLOCKED and start the Tns-\/reset timer. 

References \textbf{ cause}, \textbf{ DNS}, \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGP}, \textbf{ ns\+\_\+set\+\_\+state}, \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}, \textbf{ NSE\+\_\+\+S\+\_\+\+RESET}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ nsvc\+\_\+start\+\_\+timer()}, and \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+RESET}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+connect()}, and \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_gaba312846769d4d29dae8b4162d44809a}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_start\_test@{gprs\_nsvc\_start\_test}}
\index{gprs\_nsvc\_start\_test@{gprs\_nsvc\_start\_test}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_start\_test()}
{\footnotesize\ttfamily void gprs\+\_\+nsvc\+\_\+start\+\_\+test (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Start the ALIVE timer procedure in all NS-\/\+VCs part of this NS Instance. 



References \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+alive()}, \textbf{ nsvc\+\_\+is\+\_\+not\+\_\+used()}, \textbf{ nsvc\+\_\+start\+\_\+timer()}, and \textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST}.



Referenced by \textbf{ do\+\_\+sns\+\_\+add()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, and \textbf{ gprs\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs()}.

\mbox{\label{group__libgb_ga9b05c8ee019089b898ae1760fb03bfe3}} 
\index{Libgb@{Libgb}!gprs\_nsvc\_state\_append@{gprs\_nsvc\_state\_append}}
\index{gprs\_nsvc\_state\_append@{gprs\_nsvc\_state\_append}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_nsvc\_state\_append()}
{\footnotesize\ttfamily char $\ast$ gprs\+\_\+nsvc\+\_\+state\+\_\+append (\begin{DoxyParamCaption}\item[{char $\ast$}]{s,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Append the nsvc state to a talloc string. 


\begin{DoxyParams}[1]{Parameters}
 & {\em s} & The string to append to (allocated with talloc) \\
\hline
\mbox{\texttt{ in}}  & {\em nsvc} & The NS-\/\+VC to print the state of \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new string with state information appended to it
\end{DoxyReturn}
This function will append a comma-\/separated state of the NS-\/\+VC to the string. The string needs to be allocated with talloc (e.\+g. talloc\+\_\+strdup) 

References \textbf{ NS\+\_\+\+DESC\+\_\+A}, \textbf{ NS\+\_\+\+DESC\+\_\+B}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ gprs\+\_\+nsvc\+::remote\+\_\+end\+\_\+is\+\_\+sgsn}, \textbf{ gprs\+\_\+nsvc\+::remote\+\_\+state}, and \textbf{ gprs\+\_\+nsvc\+::state}.

\mbox{\label{group__libgb_gab446c9ab3d6ee45c1ea71c916ee94b4a}} 
\index{Libgb@{Libgb}!gprs\_start\_alive\_all\_nsvcs@{gprs\_start\_alive\_all\_nsvcs}}
\index{gprs\_start\_alive\_all\_nsvcs@{gprs\_start\_alive\_all\_nsvcs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_start\_alive\_all\_nsvcs()}
{\footnotesize\ttfamily void gprs\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns\+\_\+inst} $\ast$}]{nsi }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test()}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::gprs\+\_\+nsvcs}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, and \textbf{ gprs\+\_\+nsvc\+::nsi}.



Referenced by \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+config\+\_\+sgsn()}.

\mbox{\label{group__libgb_ga5c19a1727f618d34260abc10903e31b6}} 
\index{Libgb@{Libgb}!grps\_ns\_frgre\_sendmsg@{grps\_ns\_frgre\_sendmsg}}
\index{grps\_ns\_frgre\_sendmsg@{grps\_ns\_frgre\_sendmsg}!Libgb@{Libgb}}
\doxysubsubsection{grps\_ns\_frgre\_sendmsg()}
{\footnotesize\ttfamily int grps\+\_\+ns\+\_\+frgre\+\_\+sendmsg (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}

\mbox{\label{group__libgb_gaf453c173df6aae213320991981b2376b}} 
\index{Libgb@{Libgb}!handle\_nsip\_read@{handle\_nsip\_read}}
\index{handle\_nsip\_read@{handle\_nsip\_read}!Libgb@{Libgb}}
\doxysubsubsection{handle\_nsip\_read()}
{\footnotesize\ttfamily static int handle\+\_\+nsip\+\_\+read (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{bfd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+fd\+::data}, \textbf{ GPRS\+\_\+\+NS\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+ns\+\_\+rcvmsg()}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, and \textbf{ read\+\_\+nsip\+\_\+msg()}.



Referenced by \textbf{ nsip\+\_\+fd\+\_\+cb()}.

\mbox{\label{group__libgb_ga2d3c686c5e059a1b738d02c7263d18ce}} 
\index{Libgb@{Libgb}!handle\_nsip\_write@{handle\_nsip\_write}}
\index{handle\_nsip\_write@{handle\_nsip\_write}!Libgb@{Libgb}}
\doxysubsubsection{handle\_nsip\_write()}
{\footnotesize\ttfamily static int handle\+\_\+nsip\+\_\+write (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{bfd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ nsip\+\_\+fd\+\_\+cb()}.

\mbox{\label{group__libgb_gadef1dcd90f8be0ab76907c52f650b2bf}} 
\index{Libgb@{Libgb}!ns2\_bind\_alloc@{ns2\_bind\_alloc}}
\index{ns2\_bind\_alloc@{ns2\_bind\_alloc}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_bind\_alloc()}
{\footnotesize\ttfamily int ns2\+\_\+bind\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{const char $\ast$}]{name,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$$\ast$}]{result }\end{DoxyParamCaption})}



common allocation + low-\/level initialization of a bind. 

Called by vc-\/drivers 

References \textbf{ gprs\+\_\+ns2\+\_\+inst\+::bind\+\_\+rate\+\_\+ctr\+\_\+idx}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::binding}, \textbf{ gprs\+\_\+ns2\+\_\+bind\+\_\+by\+\_\+name()}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::list}, \textbf{ llist\+\_\+add\+\_\+tail()}, \textbf{ name}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::name}, \textbf{ nsbind\+\_\+statg\+\_\+desc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsvc}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+alloc()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::sns\+\_\+data\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::sns\+\_\+sig\+\_\+weight}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::statg}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+frgre\+\_\+bind()}, and \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind()}.

\mbox{\label{group__libgb_gaac5456dfa66b9156ee6acef9c1ea75bd}} 
\index{Libgb@{Libgb}!ns2\_count\_transfer\_cap@{ns2\_count\_transfer\_cap}}
\index{ns2\_count\_transfer\_cap@{ns2\_count\_transfer\_cap}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_count\_transfer\_cap()}
{\footnotesize\ttfamily int ns2\+\_\+count\+\_\+transfer\+\_\+cap (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{uint16\+\_\+t}]{bvci }\end{DoxyParamCaption})}



calculate the transfer capabilities for a nse 


\begin{DoxyParams}{Parameters}
{\em nse} & the nse to count the transfer capability \\
\hline
{\em bvci} & a bvci -\/ unused \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the transfer capability in mbit. On error $<$ 0. 
\end{DoxyReturn}


References \textbf{ add\+\_\+bind\+\_\+array()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::alive}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsvc}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::transfer\+\_\+capability}.



Referenced by \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}.

\mbox{\label{group__libgb_ga5a86fd0cb7aa872bff2df9abe0dcfa10}} 
\index{Libgb@{Libgb}!ns2\_create\_vc@{ns2\_create\_vc}}
\index{ns2\_create\_vc@{ns2\_create\_vc}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_create\_vc()}
{\footnotesize\ttfamily enum \textbf{ ns2\+\_\+cs} ns2\+\_\+create\+\_\+vc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote,  }\item[{const char $\ast$}]{logname,  }\item[{struct \textbf{ msgb} $\ast$$\ast$}]{reject,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$$\ast$}]{success }\end{DoxyParamCaption})}



Create a new NS-\/\+VC based on a [received] message. 

Depending on the bind it might create a NSE. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & the bind through which msg was received \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & the actual received message \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & address of remote peer sending message \\
\hline
\mbox{\texttt{ in}}  & {\em logname} & A name to describe the VC. E.\+g. ip address pair \\
\hline
\mbox{\texttt{ out}}  & {\em reject} & A message filled to be sent back. Only used in failure cases. \\
\hline
\mbox{\texttt{ out}}  & {\em success} & A pointer which will be set to the new VC on success \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
enum value indicating the status, e.\+g. GPRS\+\_\+\+NS2\+\_\+\+CS\+\_\+\+CREATED 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::accept\+\_\+ipaccess}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ DLNS}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+IPACCESS}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+sockaddr()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+ns2\+\_\+lltype\+\_\+str()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei()}, \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+nsvci()}, \textbf{ if()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::ll}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSE}, \textbf{ LOGNSVC}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns2\+\_\+create\+\_\+vc\+\_\+sns()}, \textbf{ NS2\+\_\+\+CS\+\_\+\+CREATED}, \textbf{ NS2\+\_\+\+CS\+\_\+\+ERROR}, \textbf{ NS2\+\_\+\+CS\+\_\+\+REJECTED}, \textbf{ NS2\+\_\+\+CS\+\_\+\+SKIPPED}, \textbf{ ns2\+\_\+dialect\+\_\+to\+\_\+vc\+\_\+mode()}, \textbf{ ns2\+\_\+tlv\+\_\+parse()}, \textbf{ ns2\+\_\+vc\+\_\+alloc()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}, \textbf{ osmo\+\_\+identifier\+\_\+sanitize\+\_\+buf()}, \textbf{ osmo\+\_\+sockaddr\+\_\+to\+\_\+str()}, \textbf{ osmo\+\_\+sockaddr\+\_\+to\+\_\+str\+\_\+buf()}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ reject\+\_\+status\+\_\+msg()}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, and \textbf{ tlvp\+\_\+val16be()}.



Referenced by \textbf{ handle\+\_\+nsfrgre\+\_\+read()}, and \textbf{ handle\+\_\+nsip\+\_\+recvfrom()}.

\mbox{\label{group__libgb_gaaabc5efc74d7af8ae0eafd3a442348db}} 
\index{Libgb@{Libgb}!ns2\_create\_vc\_sns@{ns2\_create\_vc\_sns}}
\index{ns2\_create\_vc\_sns@{ns2\_create\_vc\_sns}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_create\_vc\_sns()}
{\footnotesize\ttfamily static enum \textbf{ ns2\+\_\+cs} ns2\+\_\+create\+\_\+vc\+\_\+sns (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$$\ast$}]{success,  }\item[{uint16\+\_\+t}]{nsei }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::accept\+\_\+sns}, \textbf{ DLNS}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse2()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+SNS}, \textbf{ gprs\+\_\+ns2\+\_\+lltype\+\_\+str()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei()}, \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+sockaddr\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+sns\+\_\+add\+\_\+bind()}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+::ip}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::ll}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGNSE}, \textbf{ LOGP}, \textbf{ NS2\+\_\+\+CS\+\_\+\+CREATED}, \textbf{ NS2\+\_\+\+CS\+\_\+\+ERROR}, \textbf{ NS2\+\_\+\+CS\+\_\+\+SKIPPED}, \textbf{ ns2\+\_\+ip\+\_\+bind\+\_\+connect()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+sns\+\_\+default\+\_\+binds()}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+\_\+from\+\_\+sockaddr()}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+::port}, \textbf{ osmo\+\_\+sockaddr\+::sas}, and \textbf{ osmo\+\_\+sockaddr\+::u}.



Referenced by \textbf{ ns2\+\_\+create\+\_\+vc()}.

\mbox{\label{group__libgb_ga7102b236a5ce1606bc80470d4433177f}} 
\index{Libgb@{Libgb}!ns2\_dialect\_to\_vc\_mode@{ns2\_dialect\_to\_vc\_mode}}
\index{ns2\_dialect\_to\_vc\_mode@{ns2\_dialect\_to\_vc\_mode}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_dialect\_to\_vc\_mode()}
{\footnotesize\ttfamily enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+mode} ns2\+\_\+dialect\+\_\+to\+\_\+vc\+\_\+mode (\begin{DoxyParamCaption}\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+dialect}}]{dialect }\end{DoxyParamCaption})}



References \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+IPACCESS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+SNS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+STATIC\+\_\+\+ALIVE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+STATIC\+\_\+\+RESETBLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+ALIVE}, and \textbf{ GPRS\+\_\+\+NS2\+\_\+\+VC\+\_\+\+MODE\+\_\+\+BLOCKRESET}.



Referenced by \textbf{ ns2\+\_\+create\+\_\+vc()}, and \textbf{ ns2\+\_\+ip\+\_\+bind\+\_\+connect()}.

\mbox{\label{group__libgb_gaf4fa46b7a6becd511e1bc09a0e6eaf7f}} 
\index{Libgb@{Libgb}!ns2\_free\_nsvcs@{ns2\_free\_nsvcs}}
\index{ns2\_free\_nsvcs@{ns2\_free\_nsvcs}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_free\_nsvcs()}
{\footnotesize\ttfamily void ns2\+\_\+free\+\_\+nsvcs (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, \textbf{ list}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+first\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nse()}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvcs()}, and \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+bss()}.

\mbox{\label{group__libgb_gab61ba10e3f8ca80d53f24ffa0ff355b4}} 
\index{Libgb@{Libgb}!ns2\_load\_sharing@{ns2\_load\_sharing}}
\index{ns2\_load\_sharing@{ns2\_load\_sharing}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_load\_sharing()}
{\footnotesize\ttfamily static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+load\+\_\+sharing (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{uint32\+\_\+t}]{link\+\_\+selector }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bvci}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+FR}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+modulo()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+signal()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+weight\+\_\+modulo()}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+recv\+\_\+prim()}.

\mbox{\label{group__libgb_ga91e857f47a346ffe00fddae98231453e}} 
\index{Libgb@{Libgb}!ns2\_load\_sharing\_first@{ns2\_load\_sharing\_first}}
\index{ns2\_load\_sharing\_first@{ns2\_load\_sharing\_first}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_load\_sharing\_first()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+load\+\_\+sharing\+\_\+first (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}.

\mbox{\label{group__libgb_ga495d080d753fb17f608b346d3b2a3e86}} 
\index{Libgb@{Libgb}!ns2\_load\_sharing\_modulo@{ns2\_load\_sharing\_modulo}}
\index{ns2\_load\_sharing\_modulo@{ns2\_load\_sharing\_modulo}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_load\_sharing\_modulo()}
{\footnotesize\ttfamily static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+load\+\_\+sharing\+\_\+modulo (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{uint32\+\_\+t}]{load\+\_\+selector }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bvci}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc\+\_\+count}.



Referenced by \textbf{ ns2\+\_\+load\+\_\+sharing()}.

\mbox{\label{group__libgb_ga60161b6e65f96110b4c601dfa1894c2c}} 
\index{Libgb@{Libgb}!ns2\_load\_sharing\_signal@{ns2\_load\_sharing\_signal}}
\index{ns2\_load\_sharing\_signal@{ns2\_load\_sharing\_signal}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_load\_sharing\_signal()}
{\footnotesize\ttfamily static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+load\+\_\+sharing\+\_\+signal (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}.



Referenced by \textbf{ ns2\+\_\+load\+\_\+sharing()}.

\mbox{\label{group__libgb_ga4791ee8304698ef7aeaf5e3a90e5352a}} 
\index{Libgb@{Libgb}!ns2\_load\_sharing\_weight\_modulo@{ns2\_load\_sharing\_weight\_modulo}}
\index{ns2\_load\_sharing\_weight\_modulo@{ns2\_load\_sharing\_weight\_modulo}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_load\_sharing\_weight\_modulo()}
{\footnotesize\ttfamily static struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+load\+\_\+sharing\+\_\+weight\+\_\+modulo (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{uint32\+\_\+t}]{load\+\_\+selector }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ bvci}, \textbf{ data\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::data\+\_\+weight}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc\+\_\+count}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::sum\+\_\+data\+\_\+weight}.



Referenced by \textbf{ ns2\+\_\+load\+\_\+sharing()}.

\mbox{\label{group__libgb_gaef982d4ad9d66e2176fc9b6c3065b16f}} 
\index{Libgb@{Libgb}!ns2\_msgb\_alloc@{ns2\_msgb\_alloc}}
\index{ns2\_msgb\_alloc@{ns2\_msgb\_alloc}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_msgb\_alloc()}
{\footnotesize\ttfamily struct \textbf{ msgb} $\ast$ ns2\+\_\+msgb\+\_\+alloc (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Allocate a message buffer for use with the NS2 stack. 



References \textbf{ DLNS}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+alloc\+\_\+headroom()}, \textbf{ NS\+\_\+\+ALLOC\+\_\+\+HEADROOM}, and \textbf{ NS\+\_\+\+ALLOC\+\_\+\+SIZE}.



Referenced by \textbf{ ns2\+\_\+tx\+\_\+block()}, \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+reset()}, \textbf{ ns2\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+config()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+procedure()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+size()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+status()}, and \textbf{ reject\+\_\+status\+\_\+msg()}.

\mbox{\label{group__libgb_ga82bdef0ac42721ad508d51a55ade9519}} 
\index{Libgb@{Libgb}!ns2\_nse\_data\_sum@{ns2\_nse\_data\_sum}}
\index{ns2\_nse\_data\_sum@{ns2\_nse\_data\_sum}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_nse\_data\_sum()}
{\footnotesize\ttfamily void ns2\+\_\+nse\+\_\+data\+\_\+sum (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::data\+\_\+weight}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc\+\_\+count}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::sig\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::sum\+\_\+data\+\_\+weight}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::sum\+\_\+sig\+\_\+weight}.



Referenced by \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}.

\mbox{\label{group__libgb_gac29cdd91e0d537d4f679aa98316897af}} 
\index{Libgb@{Libgb}!ns2\_nse\_notify\_unblocked@{ns2\_nse\_notify\_unblocked}}
\index{ns2\_nse\_notify\_unblocked@{ns2\_nse\_notify\_unblocked}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_nse\_notify\_unblocked()}
{\footnotesize\ttfamily void ns2\+\_\+nse\+\_\+notify\+\_\+unblocked (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{bool}]{unblocked }\end{DoxyParamCaption})}



Notify a nse about the change of a NS-\/\+VC. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC which has detected the change (and shall not be notified). \\
\hline
\mbox{\texttt{ in}}  & {\em unblocked} & whether the NSE should be marked as unblocked (true) or blocked (false) \\
\hline
\end{DoxyParams}


References \textbf{ GPRS\+\_\+\+NS2\+\_\+\+AFF\+\_\+\+CAUSE\+\_\+\+FAILURE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+AFF\+\_\+\+CAUSE\+\_\+\+RECOVERY}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+\_\+by\+\_\+nsei()}, \textbf{ ns2\+\_\+nse\+\_\+data\+\_\+sum()}, \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}, \textbf{ ns2\+\_\+sns\+\_\+notify\+\_\+alive()}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, and \textbf{ osmo\+\_\+clock\+\_\+gettime()}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, \textbf{ ns2\+\_\+st\+\_\+alive\+\_\+onenter()}, \textbf{ ns2\+\_\+st\+\_\+blocked\+\_\+onenter()}, \textbf{ ns2\+\_\+st\+\_\+reset\+\_\+onenter()}, \textbf{ ns2\+\_\+st\+\_\+unblocked\+\_\+on\+\_\+enter()}, and \textbf{ ns2\+\_\+st\+\_\+unconfigured\+\_\+onenter()}.

\mbox{\label{group__libgb_gad29306f779636fb7354530774bb15c5d}} 
\index{Libgb@{Libgb}!ns2\_nse\_set\_dialect@{ns2\_nse\_set\_dialect}}
\index{ns2\_nse\_set\_dialect@{ns2\_nse\_set\_dialect}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_nse\_set\_dialect()}
{\footnotesize\ttfamily int ns2\+\_\+nse\+\_\+set\+\_\+dialect (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+dialect}}]{dialect }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+SNS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+UNDEF}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ip\+\_\+sns\+\_\+role\+\_\+sgsn}, \textbf{ ns2\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc()}, \textbf{ ns2\+\_\+sns\+\_\+sgsn\+\_\+fsm\+\_\+alloc()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+term}, and \textbf{ OSMO\+\_\+\+FSM\+\_\+\+TERM\+\_\+\+REQUEST}.



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse2()}, and \textbf{ ns\+\_\+nse\+\_\+nsvc\+\_\+udp\+\_\+cmds()}.

\mbox{\label{group__libgb_ga40b96498f6b9e94ec7d434e1633824fc}} 
\index{Libgb@{Libgb}!ns2\_nse\_update\_mtu@{ns2\_nse\_update\_mtu}}
\index{ns2\_nse\_update\_mtu@{ns2\_nse\_update\_mtu}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_nse\_update\_mtu()}
{\footnotesize\ttfamily void ns2\+\_\+nse\+\_\+update\+\_\+mtu (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::alive}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+AFF\+\_\+\+CAUSE\+\_\+\+MTU\+\_\+\+CHANGE}, \textbf{ list}, \textbf{ llist\+\_\+empty()}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::mtu}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::mtu}, \textbf{ ns2\+\_\+prim\+\_\+status\+\_\+ind()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}.



Referenced by \textbf{ gprs\+\_\+n2\+\_\+fr\+\_\+mtu\+\_\+chg\+\_\+cb()}, and \textbf{ ns2\+\_\+vc\+\_\+alloc()}.

\mbox{\label{group__libgb_gacd837cc413dfb48cf60a79d6d855464d}} 
\index{Libgb@{Libgb}!ns2\_prim\_status\_ind@{ns2\_prim\_status\_ind}}
\index{ns2\_prim\_status\_ind@{ns2\_prim\_status\_ind}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_prim\_status\_ind()}
{\footnotesize\ttfamily void ns2\+\_\+prim\+\_\+status\+\_\+ind (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+affecting\+\_\+cause}}]{cause }\end{DoxyParamCaption})}



Send a STATUS.\+ind primitive to the specified NS instance user. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsi} & NS instance on which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em nsei} & NSEI to which the statue relates \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & BVCI to which the status relates \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & The cause of the status \\
\hline
\end{DoxyParams}


References \textbf{ bvci}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::bvci}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::cause}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::cb}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::cb\+\_\+data}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::first}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::first}, \textbf{ gprs\+\_\+ns2\+\_\+aff\+\_\+cause\+\_\+prim\+\_\+str()}, \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str\+\_\+buf()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+PRIM\+\_\+\+STATUS}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGNSE}, \textbf{ LOGNSVC}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::mtu}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::mtu}, \textbf{ ns2\+\_\+count\+\_\+transfer\+\_\+cap()}, \textbf{ NS2\+\_\+\+LL\+\_\+\+MAX\+\_\+\+STR}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::nsvc}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::oph}, \textbf{ osmo\+\_\+prim\+\_\+init()}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::persistent}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::persistent}, \textbf{ PRIM\+\_\+\+OP\+\_\+\+INDICATION}, \textbf{ SAP\+\_\+\+NS}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::status}, \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::transfer}, and \textbf{ osmo\+\_\+gprs\+\_\+ns2\+\_\+prim\+::u}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nse()}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+unblocked()}, \textbf{ ns2\+\_\+nse\+\_\+update\+\_\+mtu()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+bss()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+bss\+\_\+size\+\_\+onenter()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+onenter()}, and \textbf{ ns2\+\_\+st\+\_\+unblocked\+\_\+on\+\_\+enter()}.

\mbox{\label{group__libgb_gaa1688dacd62ee5d8402633a58196cbd6}} 
\index{Libgb@{Libgb}!ns2\_recv\_vc@{ns2\_recv\_vc}}
\index{ns2\_recv\_vc@{ns2\_recv\_vc}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_recv\_vc()}
{\footnotesize\ttfamily int ns2\+\_\+recv\+\_\+vc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



Bottom-\/side entry-\/point for received NS PDU from the driver/bind. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC for which the message was received \\
\hline
 & {\em msg} & the received message. Ownership is transferred, caller must not free it! \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ msg}.



Referenced by \textbf{ fr\+\_\+dlci\+\_\+rx\+\_\+cb()}, \textbf{ handle\+\_\+nsfrgre\+\_\+read()}, and \textbf{ handle\+\_\+nsip\+\_\+recvfrom()}.

\mbox{\label{group__libgb_ga2f388e483471e6108aa0ad2e8c8b580b}} 
\index{Libgb@{Libgb}!ns2\_tlv\_parse@{ns2\_tlv\_parse}}
\index{ns2\_tlv\_parse@{ns2\_tlv\_parse}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_tlv\_parse()}
{\footnotesize\ttfamily static int ns2\+\_\+tlv\+\_\+parse (\begin{DoxyParamCaption}\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{dec,  }\item[{const uint8\+\_\+t $\ast$}]{buf,  }\item[{int}]{buf\+\_\+len,  }\item[{uint8\+\_\+t}]{lv\+\_\+tag,  }\item[{uint8\+\_\+t}]{lv\+\_\+tag2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ ns\+\_\+att\+\_\+tlvdef1}, \textbf{ ns\+\_\+att\+\_\+tlvdef2}, and \textbf{ tlv\+\_\+parse()}.



Referenced by \textbf{ ns2\+\_\+create\+\_\+vc()}.

\mbox{\label{group__libgb_ga07c13484b7fee94a56f3079de207fc38}} 
\index{Libgb@{Libgb}!ns2\_vc\_alloc@{ns2\_vc\_alloc}}
\index{ns2\_vc\_alloc@{ns2\_vc\_alloc}!Libgb@{Libgb}}
\doxysubsubsection{ns2\_vc\_alloc()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+vc\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{bool}]{initiater,  }\item[{enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+mode}}]{vc\+\_\+mode,  }\item[{const char $\ast$}]{id }\end{DoxyParamCaption})}



Allocate a NS-\/\+VC within the given bind + NSE. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & The \textquotesingle{}bind\textquotesingle{} on which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em nse} & The NS Entity on which we operate \\
\hline
\mbox{\texttt{ in}}  & {\em initiater} & -\/ if this is an incoming remote (!initiater) or a local outgoing connection (initater) \\
\hline
\mbox{\texttt{ in}}  & {\em id} & -\/ human-\/readable identifier \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
newly allocated NS-\/\+VC on success; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::blist}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::ctrg}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::data\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::list}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::ll}, \textbf{ llist\+\_\+add\+\_\+tail()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::mode}, \textbf{ ns2\+\_\+nse\+\_\+update\+\_\+mtu()}, \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsvc}, \textbf{ nsvc\+\_\+ctrg\+\_\+desc}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nsvc\+\_\+rate\+\_\+ctr\+\_\+idx}, \textbf{ nsvc\+\_\+statg\+\_\+desc}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+clock\+\_\+gettime()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+alloc()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+free()}, \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+set\+\_\+name()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+alloc()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+free()}, \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+set\+\_\+name()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::sig\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::statg}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::ts\+\_\+alive\+\_\+change}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+fr\+\_\+connect()}, \textbf{ ns2\+\_\+create\+\_\+vc()}, and \textbf{ ns2\+\_\+ip\+\_\+bind\+\_\+connect()}.

\mbox{\label{group__libgb_ga3f6cc64906dcf91e6834708426f078bb}} 
\index{Libgb@{Libgb}!ns\_is\_sns@{ns\_is\_sns}}
\index{ns\_is\_sns@{ns\_is\_sns}!Libgb@{Libgb}}
\doxysubsubsection{ns\_is\_sns()}
{\footnotesize\ttfamily static bool ns\+\_\+is\+\_\+sns (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{pdu\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ pdu\+\_\+type}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ACK}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ADD}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CHANGE\+\_\+\+WEIGHT}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG\+\_\+\+ACK}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+DELETE}, \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE\+\_\+\+ACK}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, and \textbf{ gprs\+\_\+ns\+\_\+tx()}.

\mbox{\label{group__libgb_ga5ad5e742139221bf540577285c5373d2}} 
\index{Libgb@{Libgb}!ns\_osmo\_signal\_dispatch@{ns\_osmo\_signal\_dispatch}}
\index{ns\_osmo\_signal\_dispatch@{ns\_osmo\_signal\_dispatch}!Libgb@{Libgb}}
\doxysubsubsection{ns\_osmo\_signal\_dispatch()}
{\footnotesize\ttfamily static void ns\+\_\+osmo\+\_\+signal\+\_\+dispatch (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{unsigned int}]{signal,  }\item[{uint8\+\_\+t}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ns\+\_\+signal\+\_\+data\+::cause}, \textbf{ ns\+\_\+signal\+\_\+data\+::nsvc}, \textbf{ osmo\+\_\+signal\+\_\+dispatch()}, and \textbf{ SS\+\_\+\+L\+\_\+\+NS}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, and \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}.

\mbox{\label{group__libgb_ga191b44ed2d0b01c52f1d828cfd036f70}} 
\index{Libgb@{Libgb}!ns\_osmo\_signal\_dispatch\_mismatch@{ns\_osmo\_signal\_dispatch\_mismatch}}
\index{ns\_osmo\_signal\_dispatch\_mismatch@{ns\_osmo\_signal\_dispatch\_mismatch}!Libgb@{Libgb}}
\doxysubsubsection{ns\_osmo\_signal\_dispatch\_mismatch()}
{\footnotesize\ttfamily static void ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+mismatch (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{uint8\+\_\+t}]{pdu\+\_\+type,  }\item[{uint8\+\_\+t}]{ie\+\_\+type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ns\+\_\+signal\+\_\+data\+::ie\+\_\+type}, \textbf{ ns\+\_\+signal\+\_\+data\+::msg}, \textbf{ ns\+\_\+signal\+\_\+data\+::nsvc}, \textbf{ osmo\+\_\+signal\+\_\+dispatch()}, \textbf{ ns\+\_\+signal\+\_\+data\+::pdu\+\_\+type}, \textbf{ pdu\+\_\+type}, \textbf{ S\+\_\+\+NS\+\_\+\+MISMATCH}, and \textbf{ SS\+\_\+\+L\+\_\+\+NS}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, and \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}.

\mbox{\label{group__libgb_ga1035399d0153e62c79ce31c812baba93}} 
\index{Libgb@{Libgb}!ns\_osmo\_signal\_dispatch\_replaced@{ns\_osmo\_signal\_dispatch\_replaced}}
\index{ns\_osmo\_signal\_dispatch\_replaced@{ns\_osmo\_signal\_dispatch\_replaced}!Libgb@{Libgb}}
\doxysubsubsection{ns\_osmo\_signal\_dispatch\_replaced()}
{\footnotesize\ttfamily static void ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+replaced (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{old\+\_\+nsvc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ ns\+\_\+signal\+\_\+data\+::nsvc}, \textbf{ ns\+\_\+signal\+\_\+data\+::old\+\_\+nsvc}, \textbf{ osmo\+\_\+signal\+\_\+dispatch()}, \textbf{ S\+\_\+\+NS\+\_\+\+REPLACED}, and \textbf{ SS\+\_\+\+L\+\_\+\+NS}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, and \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}.

\mbox{\label{group__libgb_gadd96fb73402ad8f2289f91e7db5fc7dc}} 
\index{Libgb@{Libgb}!ns\_set\_state\_with\_log@{ns\_set\_state\_with\_log}}
\index{ns\_set\_state\_with\_log@{ns\_set\_state\_with\_log}!Libgb@{Libgb}}
\doxysubsubsection{ns\_set\_state\_with\_log()}
{\footnotesize\ttfamily static void ns\+\_\+set\+\_\+state\+\_\+with\+\_\+log (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{uint32\+\_\+t}]{state,  }\item[{bool}]{is\+\_\+remote,  }\item[{const char $\ast$}]{file,  }\item[{unsigned}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ DNS}, \textbf{ file()}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGPSRC}, \textbf{ NS\+\_\+\+DESC\+\_\+A}, \textbf{ NS\+\_\+\+DESC\+\_\+B}, \textbf{ NS\+\_\+\+DESC\+\_\+R}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsvci}, \textbf{ gprs\+\_\+nsvc\+::remote\+\_\+state}, and \textbf{ gprs\+\_\+nsvc\+::state}.

\mbox{\label{group__libgb_ga4260bbd45e9ba7ca80c4dab290fbc121}} 
\index{Libgb@{Libgb}!nsip\_fd\_cb@{nsip\_fd\_cb}}
\index{nsip\_fd\_cb@{nsip\_fd\_cb}!Libgb@{Libgb}}
\doxysubsubsection{nsip\_fd\_cb()}
{\footnotesize\ttfamily static int nsip\+\_\+fd\+\_\+cb (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{bfd,  }\item[{unsigned int}]{what }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ handle\+\_\+nsip\+\_\+read()}, \textbf{ handle\+\_\+nsip\+\_\+write()}, \textbf{ OSMO\+\_\+\+FD\+\_\+\+READ}, and \textbf{ OSMO\+\_\+\+FD\+\_\+\+WRITE}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+nsip\+\_\+listen()}.

\mbox{\label{group__libgb_ga3917c8399af28401c72a6abf2df89379}} 
\index{Libgb@{Libgb}!nsip\_sendmsg@{nsip\_sendmsg}}
\index{nsip\_sendmsg@{nsip\_sendmsg}!Libgb@{Libgb}}
\doxysubsubsection{nsip\_sendmsg()}
{\footnotesize\ttfamily static int nsip\+\_\+sendmsg (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+nsvc\+::bts\+\_\+addr}, \textbf{ osmo\+\_\+fd\+::fd}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::fd}, \textbf{ gprs\+\_\+nsvc\+::ip}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ gprs\+\_\+nsvc\+::nsi}, and \textbf{ gprs\+\_\+ns\+\_\+inst\+::nsip}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+tx()}.

\mbox{\label{group__libgb_ga592fe5ba72d379eec43f7dfb05efff39}} 
\index{Libgb@{Libgb}!nsvc\_is\_not\_used@{nsvc\_is\_not\_used}}
\index{nsvc\_is\_not\_used@{nsvc\_is\_not\_used}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_is\_not\_used()}
{\footnotesize\ttfamily static bool nsvc\+\_\+is\+\_\+not\+\_\+used (\begin{DoxyParamCaption}\item[{const struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ gprs\+\_\+nsvc\+::data\+\_\+weight}, and \textbf{ gprs\+\_\+nsvc\+::sig\+\_\+weight}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, and \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test()}.

\mbox{\label{group__libgb_gaa8f8feabfa3e74122c1576b53cbc7a00}} 
\index{Libgb@{Libgb}!nsvc\_start\_timer@{nsvc\_start\_timer}}
\index{nsvc\_start\_timer@{nsvc\_start\_timer}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_start\_timer()}
{\footnotesize\ttfamily static void nsvc\+\_\+start\+\_\+timer (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc,  }\item[{enum \textbf{ nsvc\+\_\+timer\+\_\+mode}}]{mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DEBUGP}, \textbf{ DNS}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ mode}, \textbf{ gprs\+\_\+nsvc\+::nsei}, \textbf{ gprs\+\_\+nsvc\+::nsi}, \textbf{ osmo\+\_\+gettimeofday()}, \textbf{ osmo\+\_\+timer\+\_\+del()}, \textbf{ osmo\+\_\+timer\+\_\+schedule()}, \textbf{ gprs\+\_\+ns\+\_\+inst\+::timeout}, \textbf{ gprs\+\_\+nsvc\+::timer}, \textbf{ gprs\+\_\+nsvc\+::timer\+\_\+mode}, \textbf{ timer\+\_\+mode\+\_\+strs}, \textbf{ timer\+\_\+mode\+\_\+tout}, and \textbf{ gprs\+\_\+nsvc\+::timer\+\_\+started}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, \textbf{ gprs\+\_\+nsvc\+\_\+reset()}, and \textbf{ gprs\+\_\+nsvc\+\_\+start\+\_\+test()}.

\mbox{\label{group__libgb_ga31e91636eff1a21452f5863d422ba386}} 
\index{Libgb@{Libgb}!nsvc\_timer\_elapsed\_ms@{nsvc\_timer\_elapsed\_ms}}
\index{nsvc\_timer\_elapsed\_ms@{nsvc\_timer\_elapsed\_ms}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_timer\_elapsed\_ms()}
{\footnotesize\ttfamily static int nsvc\+\_\+timer\+\_\+elapsed\+\_\+ms (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+nsvc} $\ast$}]{nsvc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ osmo\+\_\+gettimeofday()}, \textbf{ gprs\+\_\+nsvc\+::timer\+\_\+started}, and \textbf{ timersub}.



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}.

\mbox{\label{group__libgb_gabb90b52f6836507b34b13214eb0fb824}} 
\index{Libgb@{Libgb}!read\_nsip\_msg@{read\_nsip\_msg}}
\index{read\_nsip\_msg@{read\_nsip\_msg}!Libgb@{Libgb}}
\doxysubsubsection{read\_nsip\_msg()}
{\footnotesize\ttfamily static struct \textbf{ msgb} $\ast$ read\+\_\+nsip\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{bfd,  }\item[{int $\ast$}]{error,  }\item[{struct sockaddr\+\_\+in $\ast$}]{saddr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ DNS}, \textbf{ osmo\+\_\+fd\+::fd}, \textbf{ gprs\+\_\+ns\+\_\+msgb\+\_\+alloc()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ NS\+\_\+\+ALLOC\+\_\+\+HEADROOM}, \textbf{ NS\+\_\+\+ALLOC\+\_\+\+SIZE}, and \textbf{ osmo\+\_\+sock\+\_\+get\+\_\+name2()}.



Referenced by \textbf{ handle\+\_\+nsip\+\_\+read()}.

\mbox{\label{group__libgb_ga68e702f38fa170d71c2b0c65c40f5a78}} 
\index{Libgb@{Libgb}!reject\_status\_msg@{reject\_status\_msg}}
\index{reject\_status\_msg@{reject\_status\_msg}!Libgb@{Libgb}}
\doxysubsubsection{reject\_status\_msg()}
{\footnotesize\ttfamily static int reject\+\_\+status\+\_\+msg (\begin{DoxyParamCaption}\item[{struct \textbf{ msgb} $\ast$}]{orig\+\_\+msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{struct \textbf{ msgb} $\ast$$\ast$}]{reject,  }\item[{enum \textbf{ ns\+\_\+cause}}]{cause }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Create a status message to be sent over a new connection. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em orig\+\_\+msg} & the original message \\
\hline
\mbox{\texttt{ in}}  & {\em tp} & TLVP parsed of the original message \\
\hline
\mbox{\texttt{ out}}  & {\em reject} & callee-\/allocated message buffer of the generated NS-\/\+STATUS \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Cause for the rejection \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success 
\end{DoxyReturn}


References \textbf{ cause}, \textbf{ DLNS}, \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+str()}, \textbf{ msgb\+::l2h}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGP}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+INVAL\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+MISSING\+\_\+\+ESSENT\+\_\+\+IE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+BLOCKED}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PDU\+\_\+\+INCOMP\+\_\+\+PSTATE}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+SEM\+\_\+\+INCORR\+\_\+\+PDU}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+PDU}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+STATUS}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ TLVP\+\_\+\+PRES\+\_\+\+LEN}, \textbf{ TLVP\+\_\+\+VAL}, and \textbf{ tlvp\+\_\+val16be()}.



Referenced by \textbf{ ns2\+\_\+create\+\_\+vc()}.



\doxysubsection{Variable Documentation}
\mbox{\label{group__libgb_gad0ec69510d667bdc3628cc3719af72dc}} 
\index{Libgb@{Libgb}!\_\_attribute\_\_@{\_\_attribute\_\_}}
\index{\_\_attribute\_\_@{\_\_attribute\_\_}!Libgb@{Libgb}}
\doxysubsubsection{\_\_attribute\_\_}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+pdu\+\_\+type} \+\_\+\+\_\+attribute\+\_\+\+\_\+}

\mbox{\label{group__libgb_gac3c027f9a365f5741871df5ace13943f}} 
\index{Libgb@{Libgb}!data@{data}}
\index{data@{data}!Libgb@{Libgb}}
\doxysubsubsection{data\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily uint8\+\_\+t data[0]}



variable-\/length payload 



Referenced by \textbf{ alive\+\_\+timeout\+\_\+handler()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+allstate()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+blocked()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+unblocked()}, \textbf{ bssgp\+\_\+bvc\+\_\+fsm\+\_\+wait\+\_\+reset\+\_\+ack()}, \textbf{ bssgp\+\_\+set\+\_\+bssgp\+\_\+callback()}, \textbf{ DEFUN()}, \textbf{ fc\+\_\+timer\+\_\+cb()}, \textbf{ fr\+\_\+backlog\+\_\+timer\+\_\+cb()}, \textbf{ fr\+\_\+t391\+\_\+cb()}, \textbf{ fr\+\_\+t392\+\_\+cb()}, \textbf{ fr\+\_\+tx\+\_\+cb()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+set\+\_\+sns\+\_\+weight()}, \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+config\+\_\+bss()}, \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+config\+\_\+sgsn()}, \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+configured()}, \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+size()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+bss()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+sgsn()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+bss\+\_\+config\+\_\+bss()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+bss\+\_\+config\+\_\+sgsn()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+bss\+\_\+size()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+sgsn\+\_\+wait\+\_\+config()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+sgsn\+\_\+wait\+\_\+config\+\_\+ack()}, and \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}.

\mbox{\label{group__libgb_gae556352d5816355de7f918c1e89cee09}} 
\index{Libgb@{Libgb}!data@{data}}
\index{data@{data}!Libgb@{Libgb}}
\doxysubsubsection{data\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily uint8\+\_\+t gprs\+\_\+ns\+\_\+hdr\+::data[0]}



variable-\/length payload 



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+status()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+unitdata()}, \textbf{ gprs\+\_\+ns\+\_\+sendmsg()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, \textbf{ ns2\+\_\+create\+\_\+vc()}, \textbf{ ns2\+\_\+sns\+\_\+rx()}, and \textbf{ ns2\+\_\+tx\+\_\+unit\+\_\+data()}.

\mbox{\label{group__libgb_gaa735d48fdb1cd18d9409ce64bcbd4cd6}} 
\index{Libgb@{Libgb}!data\_weight@{data\_weight}}
\index{data\_weight@{data\_weight}!Libgb@{Libgb}}
\doxysubsubsection{data\_weight\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily uint8\+\_\+t data\+\_\+weight}



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ ip46\+\_\+weight\+\_\+sum()}, \textbf{ ip4\+\_\+weight\+\_\+sum()}, \textbf{ ip6\+\_\+weight\+\_\+sum()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+weight\+\_\+modulo()}, \textbf{ ns2\+\_\+vc\+\_\+create\+\_\+ip()}, and \textbf{ ns\+\_\+nse\+\_\+nsvc\+\_\+udp\+\_\+cmds()}.

\mbox{\label{group__libgb_gafc6eb0445799511fffd6313aa749843d}} 
\index{Libgb@{Libgb}!data\_weight@{data\_weight}}
\index{data\_weight@{data\_weight}!Libgb@{Libgb}}
\doxysubsubsection{data\_weight\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily uint8\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::data\+\_\+weight}



Referenced by \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ gprs\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ gprs\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc()}, \textbf{ ip4\+\_\+weight\+\_\+sum()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ ns2\+\_\+update\+\_\+weight\+\_\+entry()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ update\+\_\+ip4\+\_\+elem()}, \textbf{ update\+\_\+remote\+\_\+ip4\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip4()}.

\mbox{\label{group__libgb_gabed43c7f40f10f8b58934398c9172105}} 
\index{Libgb@{Libgb}!data\_weight@{data\_weight}}
\index{data\_weight@{data\_weight}!Libgb@{Libgb}}
\doxysubsubsection{data\_weight\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily uint8\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::data\+\_\+weight}



Referenced by \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ ip6\+\_\+weight\+\_\+sum()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip6()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ ns2\+\_\+update\+\_\+weight\+\_\+entry()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ update\+\_\+ip6\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip6()}.

\mbox{\label{group__libgb_gac2466a43ee4da2fa855f23cc907403f7}} 
\index{Libgb@{Libgb}!gprs\_ns2\_aff\_cause\_prim\_strs@{gprs\_ns2\_aff\_cause\_prim\_strs}}
\index{gprs\_ns2\_aff\_cause\_prim\_strs@{gprs\_ns2\_aff\_cause\_prim\_strs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_aff\_cause\_prim\_strs}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns2\+\_\+aff\+\_\+cause\+\_\+prim\+\_\+strs[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_VC\_FAILURE,   \textcolor{stringliteral}{"{}NSVC failure"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_VC\_RECOVERY, \textcolor{stringliteral}{"{}NSVC recovery"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_FAILURE,         \textcolor{stringliteral}{"{}NSE failure"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_RECOVERY,               \textcolor{stringliteral}{"{}NSE recovery"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_SNS\_CONFIGURED,   \textcolor{stringliteral}{"{}NSE SNS configured"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_SNS\_FAILURE, \textcolor{stringliteral}{"{}NSE SNS failure"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_SNS\_NO\_ENDPOINTS,       \textcolor{stringliteral}{"{}NSE SNS no endpoints"{}}\},}
\DoxyCodeLine{        \{ GPRS\_NS2\_AFF\_CAUSE\_MTU\_CHANGE,   \textcolor{stringliteral}{"{}NSE MTU changed"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns2\+\_\+aff\+\_\+cause\+\_\+prim\+\_\+str()}.

\mbox{\label{group__libgb_ga77f0bb3388ee9e429a7b79666c878f33}} 
\index{Libgb@{Libgb}!gprs\_ns2\_cause\_strs@{gprs\_ns2\_cause\_strs}}
\index{gprs\_ns2\_cause\_strs@{gprs\_ns2\_cause\_strs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_cause\_strs}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns2\+\_\+cause\+\_\+strs[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ NS\_CAUSE\_TRANSIT\_FAIL,   \textcolor{stringliteral}{"{}Transit network failure"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_OM\_INTERVENTION,     \textcolor{stringliteral}{"{}O\&M intervention"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_EQUIP\_FAIL,               \textcolor{stringliteral}{"{}Equipment failure"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_NSVC\_BLOCKED,   \textcolor{stringliteral}{"{}NS-\/VC blocked"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_NSVC\_UNKNOWN,   \textcolor{stringliteral}{"{}NS-\/VC unknown"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_BVCI\_UNKNOWN,   \textcolor{stringliteral}{"{}BVCI unknown"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_SEM\_INCORR\_PDU,       \textcolor{stringliteral}{"{}Semantically incorrect PDU"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_PDU\_INCOMP\_PSTATE, \textcolor{stringliteral}{"{}PDU not compatible with protocol state"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_PROTO\_ERR\_UNSPEC,   \textcolor{stringliteral}{"{}Protocol error, unspecified"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_ESSENT\_IE,     \textcolor{stringliteral}{"{}Invalid essential IE"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_MISSING\_ESSENT\_IE, \textcolor{stringliteral}{"{}Missing essential IE"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_NR\_IPv4\_EP,   \textcolor{stringliteral}{"{}Invalid Number of IPv4 Endpoints"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_NR\_IPv6\_EP,   \textcolor{stringliteral}{"{}Invalid Number of IPv6 Endpoints"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_NR\_NS\_VC,       \textcolor{stringliteral}{"{}Invalid Number of NS-\/VCs"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_WEIGH,             \textcolor{stringliteral}{"{}Invalid Weights"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_UNKN\_IP\_EP,               \textcolor{stringliteral}{"{}Unknown IP Endpoint"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_UNKN\_IP\_ADDR,   \textcolor{stringliteral}{"{}Unknown IP Address"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_UNKN\_IP\_TEST\_FAILED,     \textcolor{stringliteral}{"{}IP Test Failed"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+str()}.

\mbox{\label{group__libgb_ga76bb15745c3f10c09986062f9aff2478}} 
\index{Libgb@{Libgb}!gprs\_ns2\_lltype\_strs@{gprs\_ns2\_lltype\_strs}}
\index{gprs\_ns2\_lltype\_strs@{gprs\_ns2\_lltype\_strs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_lltype\_strs}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns2\+\_\+lltype\+\_\+strs[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ GPRS\_NS2\_LL\_UDP,       \textcolor{stringliteral}{"{}UDP"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_LL\_FR\_GRE, \textcolor{stringliteral}{"{}FR\_GRE"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_LL\_FR, \textcolor{stringliteral}{"{}FR"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns2\+\_\+lltype\+\_\+str()}.

\mbox{\label{group__libgb_gab3a055f57e877f799059e07232302bc4}} 
\index{Libgb@{Libgb}!gprs\_ns2\_prim\_strs@{gprs\_ns2\_prim\_strs}}
\index{gprs\_ns2\_prim\_strs@{gprs\_ns2\_prim\_strs}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns2\_prim\_strs}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns2\+\_\+prim\+\_\+strs[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ GPRS\_NS2\_PRIM\_UNIT\_DATA,       \textcolor{stringliteral}{"{}UNIT DATA"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_PRIM\_CONGESTION,     \textcolor{stringliteral}{"{}CONGESTION"{}} \},}
\DoxyCodeLine{        \{ GPRS\_NS2\_PRIM\_STATUS,             \textcolor{stringliteral}{"{}STATUS"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns2\+\_\+prim\+\_\+str()}.

\mbox{\label{group__libgb_ga3637cd9e75327b41f140bf82690c3164}} 
\index{Libgb@{Libgb}!gprs\_ns\_pdu\_strings@{gprs\_ns\_pdu\_strings}}
\index{gprs\_ns\_pdu\_strings@{gprs\_ns\_pdu\_strings}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_pdu\_strings\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns\+\_\+pdu\+\_\+strings[$\,$]\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, \textbf{ ns2\+\_\+sns\+\_\+rx()}, and \textbf{ ns2\+\_\+vc\+\_\+rx()}.

\mbox{\label{group__libgb_ga3637cd9e75327b41f140bf82690c3164}} 
\index{Libgb@{Libgb}!gprs\_ns\_pdu\_strings@{gprs\_ns\_pdu\_strings}}
\index{gprs\_ns\_pdu\_strings@{gprs\_ns\_pdu\_strings}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_pdu\_strings\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns\+\_\+pdu\+\_\+strings[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        }
\DoxyCodeLine{        \{ NS\_PDUT\_UNITDATA,     \textcolor{stringliteral}{"{}NS-\/UNITDATA"{}} \},        }
\DoxyCodeLine{        \{ NS\_PDUT\_RESET,   \textcolor{stringliteral}{"{}NS-\/RESET"{}} \},           }
\DoxyCodeLine{        \{ NS\_PDUT\_RESET\_ACK,   \textcolor{stringliteral}{"{}NS-\/RESET-\/ACK"{}} \},       }
\DoxyCodeLine{        \{ NS\_PDUT\_BLOCK,   \textcolor{stringliteral}{"{}NS-\/BLOCK"{}} \},           }
\DoxyCodeLine{        \{ NS\_PDUT\_BLOCK\_ACK,   \textcolor{stringliteral}{"{}NS-\/BLOCK-\/ACK"{}} \},       }
\DoxyCodeLine{        \{ NS\_PDUT\_UNBLOCK,       \textcolor{stringliteral}{"{}NS-\/UNBLOCK"{}} \},         }
\DoxyCodeLine{        \{ NS\_PDUT\_UNBLOCK\_ACK,       \textcolor{stringliteral}{"{}NS-\/UNBLOCK-\/ACK"{}} \},     }
\DoxyCodeLine{        \{ NS\_PDUT\_STATUS, \textcolor{stringliteral}{"{}NS-\/STATUS"{}} \},          }
\DoxyCodeLine{        \{ NS\_PDUT\_ALIVE,   \textcolor{stringliteral}{"{}NS-\/ALIVE"{}} \},           }
\DoxyCodeLine{        \{ NS\_PDUT\_ALIVE\_ACK,   \textcolor{stringliteral}{"{}NS-\/ALIVE-\/ACK"{}} \},       }
\DoxyCodeLine{        }
\DoxyCodeLine{        \{ SNS\_PDUT\_ACK,                     \textcolor{stringliteral}{"{}SNS-\/ACK"{}} \},            }
\DoxyCodeLine{        \{ SNS\_PDUT\_ADD,                     \textcolor{stringliteral}{"{}SNS-\/ADD"{}} \},            }
\DoxyCodeLine{        \{ SNS\_PDUT\_CHANGE\_WEIGHT, \textcolor{stringliteral}{"{}SNS-\/CHANGEWEIGHT"{}} \},   }
\DoxyCodeLine{        \{ SNS\_PDUT\_CONFIG,               \textcolor{stringliteral}{"{}SNS-\/CONFIG"{}} \},         }
\DoxyCodeLine{        \{ SNS\_PDUT\_CONFIG\_ACK,               \textcolor{stringliteral}{"{}SNS-\/CONFIG-\/ACK"{}} \},     }
\DoxyCodeLine{        \{ SNS\_PDUT\_DELETE,               \textcolor{stringliteral}{"{}SNS-\/DELETE"{}} \},         }
\DoxyCodeLine{        \{ SNS\_PDUT\_SIZE,           \textcolor{stringliteral}{"{}SNS-\/SIZE"{}} \},           }
\DoxyCodeLine{        \{ SNS\_PDUT\_SIZE\_ACK,           \textcolor{stringliteral}{"{}SNS-\/SIZE-\/ACK"{}} \},       }
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, \textbf{ ns2\+\_\+sns\+\_\+rx()}, and \textbf{ ns2\+\_\+vc\+\_\+rx()}.

\mbox{\label{group__libgb_gae5752b7bb37cb4caee7f3b08327d5120}} 
\index{Libgb@{Libgb}!gprs\_ns\_signal\_ns\_names@{gprs\_ns\_signal\_ns\_names}}
\index{gprs\_ns\_signal\_ns\_names@{gprs\_ns\_signal\_ns\_names}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_ns\_signal\_ns\_names}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} gprs\+\_\+ns\+\_\+signal\+\_\+ns\+\_\+names[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ S\_NS\_RESET,         \textcolor{stringliteral}{"{}NS-\/RESET"{}} \},}
\DoxyCodeLine{        \{ S\_NS\_BLOCK,         \textcolor{stringliteral}{"{}NS-\/BLOCK"{}} \},}
\DoxyCodeLine{        \{ S\_NS\_UNBLOCK,             \textcolor{stringliteral}{"{}NS-\/UNBLOCK"{}} \},}
\DoxyCodeLine{        \{ S\_NS\_ALIVE\_EXP, \textcolor{stringliteral}{"{}NS-\/ALIVE expired"{}} \},}
\DoxyCodeLine{        \{ S\_NS\_REPLACED,   \textcolor{stringliteral}{"{}NSVC replaced"{}} \},}
\DoxyCodeLine{        \{ S\_NS\_MISMATCH,   \textcolor{stringliteral}{"{}Unexpected IE"{}} \},}
\DoxyCodeLine{        \{ S\_SNS\_CONFIGURED,     \textcolor{stringliteral}{"{}SNS Configured"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{group__libgb_ga9be683febf33673183f70698007b378b}} 
\index{Libgb@{Libgb}!gprs\_sns\_fsm\_registered@{gprs\_sns\_fsm\_registered}}
\index{gprs\_sns\_fsm\_registered@{gprs\_sns\_fsm\_registered}!Libgb@{Libgb}}
\doxysubsubsection{gprs\_sns\_fsm\_registered}
{\footnotesize\ttfamily bool gprs\+\_\+sns\+\_\+fsm\+\_\+registered = false\hspace{0.3cm}{\ttfamily [static]}}



Referenced by \textbf{ gprs\+\_\+ns\+\_\+instantiate()}.

\mbox{\label{group__libgb_gaf48591de2860238a7a8f1e679a7f86ca}} 
\index{Libgb@{Libgb}!ip\_addr@{ip\_addr}}
\index{ip\_addr@{ip\_addr}!Libgb@{Libgb}}
\doxysubsubsection{ip\_addr\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily struct in6\+\_\+addr ip\+\_\+addr}



Referenced by \textbf{ gprs\+\_\+sns\+\_\+st\+\_\+configured()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+delete()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip6()}.

\mbox{\label{group__libgb_gaabfbf473c14a82c23b55e72724d95741}} 
\index{Libgb@{Libgb}!ip\_addr@{ip\_addr}}
\index{ip\_addr@{ip\_addr}!Libgb@{Libgb}}
\doxysubsubsection{ip\_addr\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily uint32\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::ip\+\_\+addr}



Referenced by \textbf{ add\+\_\+ip4\+\_\+elem()}, \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ do\+\_\+sns\+\_\+delete()}, \textbf{ gprs\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ gprs\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+get\+\_\+sbind\+\_\+ip4\+\_\+entry()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ nsvc\+\_\+by\+\_\+ip4\+\_\+elem()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ remove\+\_\+ip4\+\_\+elem()}, \textbf{ update\+\_\+ip4\+\_\+elem()}, \textbf{ update\+\_\+remote\+\_\+ip4\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip4()}.

\mbox{\label{group__libgb_ga842dfe0d04f78ae21d1f899206980f56}} 
\index{Libgb@{Libgb}!ip\_addr@{ip\_addr}}
\index{ip\_addr@{ip\_addr}!Libgb@{Libgb}}
\doxysubsubsection{ip\_addr\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily struct in6\+\_\+addr gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::ip\+\_\+addr}



Referenced by \textbf{ add\+\_\+ip6\+\_\+elem()}, \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ do\+\_\+sns\+\_\+delete()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+get\+\_\+sbind\+\_\+ip6\+\_\+entry()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip6()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ nsvc\+\_\+by\+\_\+ip6\+\_\+elem()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ remove\+\_\+ip6\+\_\+elem()}, \textbf{ update\+\_\+ip6\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip6()}.

\mbox{\label{group__libgb_gaeca0f99568ede69adf168484614985e0}} 
\index{Libgb@{Libgb}!ns\_att\_tlvdef@{ns\_att\_tlvdef}}
\index{ns\_att\_tlvdef@{ns\_att\_tlvdef}!Libgb@{Libgb}}
\doxysubsubsection{ns\_att\_tlvdef}
{\footnotesize\ttfamily const struct \textbf{ tlv\+\_\+definition} ns\+\_\+att\+\_\+tlvdef\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .def = \{}
\DoxyCodeLine{                [NS\_IE\_CAUSE]        = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_VCI]    = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_PDU]    = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_BVCI]  = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_NSEI]  = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_IPv4\_LIST] = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_IPv6\_LIST] = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_MAX\_NR\_NSVC] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_IPv4\_EP\_NR] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_IPv6\_EP\_NR] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_RESET\_FLAG] = \{ TLV\_TYPE\_TV, 0 \},}
\DoxyCodeLine{                }
\DoxyCodeLine{                [NS\_IE\_IP\_ADDR] = \{ TLV\_TYPE\_FIXED, 5 \},}
\DoxyCodeLine{        \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+status()}, and \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}.

\mbox{\label{group__libgb_ga363b8416d26d768b960f4366953a1a50}} 
\index{Libgb@{Libgb}!ns\_att\_tlvdef1@{ns\_att\_tlvdef1}}
\index{ns\_att\_tlvdef1@{ns\_att\_tlvdef1}!Libgb@{Libgb}}
\doxysubsubsection{ns\_att\_tlvdef1}
{\footnotesize\ttfamily const struct \textbf{ tlv\+\_\+definition} ns\+\_\+att\+\_\+tlvdef1\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .def = \{}
\DoxyCodeLine{                [NS\_IE\_CAUSE]        = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_VCI]    = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_PDU]    = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_BVCI]  = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_NSEI]  = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_IPv4\_LIST] = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_IPv6\_LIST] = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_MAX\_NR\_NSVC] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_IPv4\_EP\_NR] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_IPv6\_EP\_NR] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_RESET\_FLAG] = \{ TLV\_TYPE\_TV, 0 \},}
\DoxyCodeLine{                }
\DoxyCodeLine{                [NS\_IE\_IP\_ADDR] = \{ TLV\_TYPE\_FIXED, 5 \},}
\DoxyCodeLine{        \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ ns2\+\_\+tlv\+\_\+parse()}.

\mbox{\label{group__libgb_ga0498e1f265c3340b4a832c5afc1dd04b}} 
\index{Libgb@{Libgb}!ns\_att\_tlvdef2@{ns\_att\_tlvdef2}}
\index{ns\_att\_tlvdef2@{ns\_att\_tlvdef2}!Libgb@{Libgb}}
\doxysubsubsection{ns\_att\_tlvdef2}
{\footnotesize\ttfamily const struct \textbf{ tlv\+\_\+definition} ns\+\_\+att\+\_\+tlvdef2\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .def = \{}
\DoxyCodeLine{                [NS\_IE\_CAUSE]        = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_VCI]    = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_PDU]    = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_BVCI]  = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_NSEI]  = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_IPv4\_LIST] = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_IPv6\_LIST] = \{ TLV\_TYPE\_TvLV, 0 \},}
\DoxyCodeLine{                [NS\_IE\_MAX\_NR\_NSVC] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_IPv4\_EP\_NR] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_IPv6\_EP\_NR] = \{ TLV\_TYPE\_FIXED, 2 \},}
\DoxyCodeLine{                [NS\_IE\_RESET\_FLAG] = \{ TLV\_TYPE\_TV, 0 \},}
\DoxyCodeLine{                }
\DoxyCodeLine{                [NS\_IE\_IP\_ADDR] = \{ TLV\_TYPE\_FIXED, 17 \},}
\DoxyCodeLine{        \},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ ns2\+\_\+tlv\+\_\+parse()}.

\mbox{\label{group__libgb_ga7764591b01700d2abddf85cae4ddf811}} 
\index{Libgb@{Libgb}!ns\_cause\_str@{ns\_cause\_str}}
\index{ns\_cause\_str@{ns\_cause\_str}!Libgb@{Libgb}}
\doxysubsubsection{ns\_cause\_str}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} ns\+\_\+cause\+\_\+str[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ NS\_CAUSE\_TRANSIT\_FAIL,   \textcolor{stringliteral}{"{}Transit network failure"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_OM\_INTERVENTION,     \textcolor{stringliteral}{"{}O\&M intervention"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_EQUIP\_FAIL,               \textcolor{stringliteral}{"{}Equipment failure"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_NSVC\_BLOCKED,   \textcolor{stringliteral}{"{}NS-\/VC blocked"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_NSVC\_UNKNOWN,   \textcolor{stringliteral}{"{}NS-\/VC unknown"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_BVCI\_UNKNOWN,   \textcolor{stringliteral}{"{}BVCI unknown"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_SEM\_INCORR\_PDU,       \textcolor{stringliteral}{"{}Semantically incorrect PDU"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_PDU\_INCOMP\_PSTATE, \textcolor{stringliteral}{"{}PDU not compatible with protocol state"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_PROTO\_ERR\_UNSPEC,   \textcolor{stringliteral}{"{}Protocol error, unspecified"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_ESSENT\_IE,     \textcolor{stringliteral}{"{}Invalid essential IE"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_MISSING\_ESSENT\_IE, \textcolor{stringliteral}{"{}Missing essential IE"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_NR\_IPv4\_EP,   \textcolor{stringliteral}{"{}Invalid Number of IPv4 Endpoints"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_NR\_IPv6\_EP,   \textcolor{stringliteral}{"{}Invalid Number of IPv6 Endpoints"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_NR\_NS\_VC,       \textcolor{stringliteral}{"{}Invalid Number of NS-\/VCs"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_INVAL\_WEIGH,             \textcolor{stringliteral}{"{}Invalid Weights"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_UNKN\_IP\_EP,               \textcolor{stringliteral}{"{}Unknown IP Endpoint"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_UNKN\_IP\_ADDR,   \textcolor{stringliteral}{"{}Unknown IP Address"{}} \},}
\DoxyCodeLine{        \{ NS\_CAUSE\_UNKN\_IP\_TEST\_FAILED,     \textcolor{stringliteral}{"{}IP Test Failed"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns\+\_\+cause\+\_\+str()}.

\mbox{\label{group__libgb_gaac2c82a62a04dbc86b26e14665077be9}} 
\index{Libgb@{Libgb}!ns\_ctr\_description@{ns\_ctr\_description}}
\index{ns\_ctr\_description@{ns\_ctr\_description}!Libgb@{Libgb}}
\doxysubsubsection{ns\_ctr\_description}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+desc} ns\+\_\+ctr\+\_\+description[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [NS\_CTR\_PKTS\_IN]  = \{ \textcolor{stringliteral}{"{}packets:in"{}},       \textcolor{stringliteral}{"{}Packets at NS Level  ( In)"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_PKTS\_OUT]        = \{ \textcolor{stringliteral}{"{}packets:out"{}},      \textcolor{stringliteral}{"{}Packets at NS Level  (Out)"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_PKTS\_OUT\_DROP]      = \{ \textcolor{stringliteral}{"{}packets:out:drop"{}}, \textcolor{stringliteral}{"{}Dropped Packets      (Out)"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_BYTES\_IN]        = \{ \textcolor{stringliteral}{"{}bytes:in"{}},         \textcolor{stringliteral}{"{}Bytes at NS Level    ( In)"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_BYTES\_OUT]      = \{ \textcolor{stringliteral}{"{}bytes:out"{}},        \textcolor{stringliteral}{"{}Bytes at NS Level    (Out)"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_BYTES\_OUT\_DROP]    = \{ \textcolor{stringliteral}{"{}bytes:out:drop"{}},   \textcolor{stringliteral}{"{}Dropped Bytes        (Out)"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_BLOCKED]  = \{ \textcolor{stringliteral}{"{}blocked"{}},          \textcolor{stringliteral}{"{}NS-\/VC Block count         "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_UNBLOCKED]      = \{ \textcolor{stringliteral}{"{}unblocked"{}},        \textcolor{stringliteral}{"{}NS-\/VC Unblock count       "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_DEAD]                = \{ \textcolor{stringliteral}{"{}dead"{}},             \textcolor{stringliteral}{"{}NS-\/VC gone dead count     "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_REPLACED]        = \{ \textcolor{stringliteral}{"{}replaced"{}},         \textcolor{stringliteral}{"{}NS-\/VC replaced other count"{}} \},}
\DoxyCodeLine{        [NS\_CTR\_NSEI\_CHG]        = \{ \textcolor{stringliteral}{"{}nsei-\/chg"{}},         \textcolor{stringliteral}{"{}NS-\/VC changed NSEI count  "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_INV\_VCI]  = \{ \textcolor{stringliteral}{"{}inv-\/nsvci"{}},        \textcolor{stringliteral}{"{}NS-\/VCI was invalid count  "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_INV\_NSEI]        = \{ \textcolor{stringliteral}{"{}inv-\/nsei"{}},         \textcolor{stringliteral}{"{}NSEI was invalid count    "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_LOST\_ALIVE]    = \{ \textcolor{stringliteral}{"{}lost:alive"{}},       \textcolor{stringliteral}{"{}ALIVE ACK missing count   "{}} \},}
\DoxyCodeLine{        [NS\_CTR\_LOST\_RESET]    = \{ \textcolor{stringliteral}{"{}lost:reset"{}},       \textcolor{stringliteral}{"{}RESET ACK missing count   "{}} \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{group__libgb_gaca4cb40f5d5b43031a2f6472fd9e2d49}} 
\index{Libgb@{Libgb}!nsbind\_stat\_description@{nsbind\_stat\_description}}
\index{nsbind\_stat\_description@{nsbind\_stat\_description}!Libgb@{Libgb}}
\doxysubsubsection{nsbind\_stat\_description}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+desc} nsbind\+\_\+stat\+\_\+description[$\,$]}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [NS2\_BIND\_STAT\_BACKLOG\_LEN] = \{ \textcolor{stringliteral}{"{}tx\_backlog\_length"{}},   \textcolor{stringliteral}{"{}Transmit backlog length"{}}, \textcolor{stringliteral}{"{}packets"{}}, 16, 0 \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{group__libgb_ga6a5f92344079c4e8645bdd26a29da9a6}} 
\index{Libgb@{Libgb}!nsbind\_statg\_desc@{nsbind\_statg\_desc}}
\index{nsbind\_statg\_desc@{nsbind\_statg\_desc}!Libgb@{Libgb}}
\doxysubsubsection{nsbind\_statg\_desc}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+desc} nsbind\+\_\+statg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}ns.bind"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}NS Bind Statistics"{}},}
\DoxyCodeLine{        .num\_items = ARRAY\_SIZE(nsbind\_stat\_description),}
\DoxyCodeLine{        .item\_desc = nsbind\_stat\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ ns2\+\_\+bind\+\_\+alloc()}.

\mbox{\label{group__libgb_gaf92123cfb89b018759500ae71141d240}} 
\index{Libgb@{Libgb}!nse\_ctrg\_desc@{nse\_ctrg\_desc}}
\index{nse\_ctrg\_desc@{nse\_ctrg\_desc}!Libgb@{Libgb}}
\doxysubsubsection{nse\_ctrg\_desc}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} nse\+\_\+ctrg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}ns:nse"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}NSE Peer Statistics"{}},}
\DoxyCodeLine{        .num\_ctr = ARRAY\_SIZE(ns\_ctr\_description),}
\DoxyCodeLine{        .ctr\_desc = ns\_ctr\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns2\+\_\+create\+\_\+nse2()}.

\mbox{\label{group__libgb_gaeeaa3ec06e4e09940aab43d8f42efee7}} 
\index{Libgb@{Libgb}!nsvc\_ctr\_description@{nsvc\_ctr\_description}}
\index{nsvc\_ctr\_description@{nsvc\_ctr\_description}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_ctr\_description}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+desc} nsvc\+\_\+ctr\+\_\+description[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}packets:in"{}}, \textcolor{stringliteral}{"{}Packets at NS Level  ( In)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}packets:out"{}},\textcolor{stringliteral}{"{}Packets at NS Level  (Out)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}bytes:in"{}},   \textcolor{stringliteral}{"{}Bytes at NS Level    ( In)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}bytes:out"{}},  \textcolor{stringliteral}{"{}Bytes at NS Level    (Out)"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}blocked"{}},    \textcolor{stringliteral}{"{}NS-\/VC Block count         "{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}dead"{}},       \textcolor{stringliteral}{"{}NS-\/VC gone dead count     "{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}replaced"{}},   \textcolor{stringliteral}{"{}NS-\/VC replaced other count"{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}nsei-\/chg"{}},   \textcolor{stringliteral}{"{}NS-\/VC changed NSEI count  "{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}inv-\/nsvci"{}},  \textcolor{stringliteral}{"{}NS-\/VCI was invalid count  "{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}inv-\/nsei"{}},   \textcolor{stringliteral}{"{}NSEI was invalid count    "{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}lost:alive"{}}, \textcolor{stringliteral}{"{}ALIVE ACK missing count   "{}} \},}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}lost:reset"{}}, \textcolor{stringliteral}{"{}RESET ACK missing count   "{}} \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{group__libgb_ga69a4444775cc91afdd08fd3e5d0f711f}} 
\index{Libgb@{Libgb}!nsvc\_ctrg\_desc@{nsvc\_ctrg\_desc}}
\index{nsvc\_ctrg\_desc@{nsvc\_ctrg\_desc}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_ctrg\_desc\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} nsvc\+\_\+ctrg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}ns:nsvc"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}NSVC Peer Statistics"{}},}
\DoxyCodeLine{        .num\_ctr = ARRAY\_SIZE(nsvc\_ctr\_description),}
\DoxyCodeLine{        .ctr\_desc = nsvc\_ctr\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+nsvc\+\_\+create2()}.

\mbox{\label{group__libgb_ga69a4444775cc91afdd08fd3e5d0f711f}} 
\index{Libgb@{Libgb}!nsvc\_ctrg\_desc@{nsvc\_ctrg\_desc}}
\index{nsvc\_ctrg\_desc@{nsvc\_ctrg\_desc}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_ctrg\_desc\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const struct \textbf{ rate\+\_\+ctr\+\_\+group\+\_\+desc} nsvc\+\_\+ctrg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}ns:nsvc"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}NSVC Peer Statistics"{}},}
\DoxyCodeLine{        .num\_ctr = ARRAY\_SIZE(ns\_ctr\_description),}
\DoxyCodeLine{        .ctr\_desc = ns\_ctr\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ ns2\+\_\+vc\+\_\+alloc()}.

\mbox{\label{group__libgb_ga1181f009fc021fa02b721d92a694f06d}} 
\index{Libgb@{Libgb}!nsvc\_stat\_description@{nsvc\_stat\_description}}
\index{nsvc\_stat\_description@{nsvc\_stat\_description}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_stat\_description\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+desc} nsvc\+\_\+stat\+\_\+description[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ \textcolor{stringliteral}{"{}alive.delay"{}}, \textcolor{stringliteral}{"{}ALIVE response time        "{}}, \textcolor{stringliteral}{"{}ms"{}}, 16, 0 \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{group__libgb_ga1181f009fc021fa02b721d92a694f06d}} 
\index{Libgb@{Libgb}!nsvc\_stat\_description@{nsvc\_stat\_description}}
\index{nsvc\_stat\_description@{nsvc\_stat\_description}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_stat\_description\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+desc} nsvc\+\_\+stat\+\_\+description[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [NS\_STAT\_ALIVE\_DELAY] = \{ \textcolor{stringliteral}{"{}alive.delay"{}}, \textcolor{stringliteral}{"{}ALIVE response time        "{}}, \textcolor{stringliteral}{"{}ms"{}}, 16, 0 \},}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{group__libgb_ga48683aaac3dc83962671893532ae47fb}} 
\index{Libgb@{Libgb}!nsvc\_statg\_desc@{nsvc\_statg\_desc}}
\index{nsvc\_statg\_desc@{nsvc\_statg\_desc}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_statg\_desc\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+desc} nsvc\+\_\+statg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}ns.nsvc"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}NSVC Peer Statistics"{}},}
\DoxyCodeLine{        .num\_items = ARRAY\_SIZE(nsvc\_stat\_description),}
\DoxyCodeLine{        .item\_desc = nsvc\_stat\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+nsvc\+\_\+create2()}.

\mbox{\label{group__libgb_ga48683aaac3dc83962671893532ae47fb}} 
\index{Libgb@{Libgb}!nsvc\_statg\_desc@{nsvc\_statg\_desc}}
\index{nsvc\_statg\_desc@{nsvc\_statg\_desc}!Libgb@{Libgb}}
\doxysubsubsection{nsvc\_statg\_desc\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const struct \textbf{ osmo\+\_\+stat\+\_\+item\+\_\+group\+\_\+desc} nsvc\+\_\+statg\+\_\+desc\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        .group\_name\_prefix = \textcolor{stringliteral}{"{}ns.nsvc"{}},}
\DoxyCodeLine{        .group\_description = \textcolor{stringliteral}{"{}NSVC Peer Statistics"{}},}
\DoxyCodeLine{        .num\_items = ARRAY\_SIZE(nsvc\_stat\_description),}
\DoxyCodeLine{        .item\_desc = nsvc\_stat\_description,}
\DoxyCodeLine{        .class\_id = OSMO\_STATS\_CLASS\_PEER,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ ns2\+\_\+vc\+\_\+alloc()}.

\mbox{\label{group__libgb_ga0e07a2d5d9c696b4a9a498cb60099666}} 
\index{Libgb@{Libgb}!pdu\_type@{pdu\_type}}
\index{pdu\_type@{pdu\_type}!Libgb@{Libgb}}
\doxysubsubsection{pdu\_type\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily uint8\+\_\+t pdu\+\_\+type}



NS PDU type. 



Referenced by \textbf{ bssgp\+\_\+pdu\+\_\+type\+\_\+flags()}, \textbf{ bssgp\+\_\+rcvmsg()}, \textbf{ bssgp\+\_\+rx\+\_\+ptp()}, \textbf{ bssgp\+\_\+rx\+\_\+sign()}, \textbf{ bssgp\+\_\+tx\+\_\+simple\+\_\+bvci()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ ns2\+\_\+validate()}, \textbf{ ns\+\_\+is\+\_\+sns()}, and \textbf{ ns\+\_\+osmo\+\_\+signal\+\_\+dispatch\+\_\+mismatch()}.

\mbox{\label{group__libgb_gae190547db8cb0e80359614aa4155f989}} 
\index{Libgb@{Libgb}!pdu\_type@{pdu\_type}}
\index{pdu\_type@{pdu\_type}!Libgb@{Libgb}}
\doxysubsubsection{pdu\_type\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily uint8\+\_\+t gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}



NS PDU type. 



Referenced by \textbf{ gprs\+\_\+ns\+\_\+process\+\_\+msg()}, \textbf{ gprs\+\_\+ns\+\_\+rx\+\_\+sns()}, \textbf{ gprs\+\_\+ns\+\_\+sendmsg()}, \textbf{ gprs\+\_\+ns\+\_\+tx()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+simple()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack()}, \textbf{ gprs\+\_\+ns\+\_\+tx\+\_\+status()}, \textbf{ gprs\+\_\+ns\+\_\+vc\+\_\+create()}, \textbf{ ns2\+\_\+create\+\_\+vc()}, \textbf{ ns2\+\_\+sns\+\_\+rx()}, \textbf{ ns2\+\_\+tx\+\_\+block()}, \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+reset()}, \textbf{ ns2\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+config()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+procedure()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+size()}, \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+status()}, \textbf{ ns2\+\_\+tx\+\_\+unit\+\_\+data()}, \textbf{ ns2\+\_\+vc\+\_\+rx()}, and \textbf{ reject\+\_\+status\+\_\+msg()}.

\mbox{\label{group__libgb_gab1131cc8d0b31f63a1a242ae889a0ef6}} 
\index{Libgb@{Libgb}!sig\_weight@{sig\_weight}}
\index{sig\_weight@{sig\_weight}!Libgb@{Libgb}}
\doxysubsubsection{sig\_weight\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily uint8\+\_\+t sig\+\_\+weight}



Referenced by \textbf{ DEFUN()}, \textbf{ gprs\+\_\+nsvc\+\_\+create2()}, \textbf{ ns2\+\_\+vc\+\_\+create\+\_\+ip()}, and \textbf{ ns\+\_\+nse\+\_\+nsvc\+\_\+udp\+\_\+cmds()}.

\mbox{\label{group__libgb_gad2a29c03576a483d60df9befd4ceaf44}} 
\index{Libgb@{Libgb}!sig\_weight@{sig\_weight}}
\index{sig\_weight@{sig\_weight}!Libgb@{Libgb}}
\doxysubsubsection{sig\_weight\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily uint8\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::sig\+\_\+weight}



Referenced by \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ gprs\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ gprs\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc()}, \textbf{ ip4\+\_\+weight\+\_\+sum()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ ns2\+\_\+update\+\_\+weight\+\_\+entry()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ update\+\_\+ip4\+\_\+elem()}, \textbf{ update\+\_\+remote\+\_\+ip4\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip4()}.

\mbox{\label{group__libgb_ga18f9069a6669b0bd902f9cb13c742af8}} 
\index{Libgb@{Libgb}!sig\_weight@{sig\_weight}}
\index{sig\_weight@{sig\_weight}!Libgb@{Libgb}}
\doxysubsubsection{sig\_weight\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily uint8\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::sig\+\_\+weight}



Referenced by \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ ip6\+\_\+weight\+\_\+sum()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip6()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ ns2\+\_\+update\+\_\+weight\+\_\+entry()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ update\+\_\+ip6\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip6()}.

\mbox{\label{group__libgb_ga30ae8df0f132489b2af625ea7087db09}} 
\index{Libgb@{Libgb}!timer\_mode\_strs@{timer\_mode\_strs}}
\index{timer\_mode\_strs@{timer\_mode\_strs}!Libgb@{Libgb}}
\doxysubsubsection{timer\_mode\_strs}
{\footnotesize\ttfamily const struct \textbf{ value\+\_\+string} timer\+\_\+mode\+\_\+strs[$\,$]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        \{ NSVC\_TIMER\_TNS\_RESET, \textcolor{stringliteral}{"{}tns-\/reset"{}} \},}
\DoxyCodeLine{        \{ NSVC\_TIMER\_TNS\_ALIVE, \textcolor{stringliteral}{"{}tns-\/alive"{}} \},}
\DoxyCodeLine{        \{ NSVC\_TIMER\_TNS\_TEST, \textcolor{stringliteral}{"{}tns-\/test"{}} \},}
\DoxyCodeLine{        \{ 0, NULL \}}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, and \textbf{ nsvc\+\_\+start\+\_\+timer()}.

\mbox{\label{group__libgb_ga019aab91323644c381d140ebe3cfeca7}} 
\index{Libgb@{Libgb}!timer\_mode\_tout@{timer\_mode\_tout}}
\index{timer\_mode\_tout@{timer\_mode\_tout}!Libgb@{Libgb}}
\doxysubsubsection{timer\_mode\_tout}
{\footnotesize\ttfamily enum \textbf{ ns\+\_\+timeout} timer\+\_\+mode\+\_\+tout[\textbf{ \+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR}]\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{        [NSVC\_TIMER\_TNS\_RESET]      = NS\_TOUT\_TNS\_RESET,}
\DoxyCodeLine{        [NSVC\_TIMER\_TNS\_ALIVE]      = NS\_TOUT\_TNS\_ALIVE,}
\DoxyCodeLine{        [NSVC\_TIMER\_TNS\_TEST]        = NS\_TOUT\_TNS\_TEST,}
\DoxyCodeLine{\}}

\end{DoxyCode}


Referenced by \textbf{ gprs\+\_\+ns\+\_\+timer\+\_\+cb()}, and \textbf{ nsvc\+\_\+start\+\_\+timer()}.

\mbox{\label{group__libgb_ga8d93540b1ceafa3f9425c72763b256d0}} 
\index{Libgb@{Libgb}!udp\_port@{udp\_port}}
\index{udp\_port@{udp\_port}!Libgb@{Libgb}}
\doxysubsubsection{udp\_port\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily uint16\+\_\+t udp\+\_\+port}

\mbox{\label{group__libgb_gae2bc723e0e77fca0e9b662baa0e958a5}} 
\index{Libgb@{Libgb}!udp\_port@{udp\_port}}
\index{udp\_port@{udp\_port}!Libgb@{Libgb}}
\doxysubsubsection{udp\_port\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily uint16\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem\+::udp\+\_\+port}



Referenced by \textbf{ add\+\_\+ip4\+\_\+elem()}, \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ do\+\_\+sns\+\_\+delete()}, \textbf{ gprs\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ gprs\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+get\+\_\+sbind\+\_\+ip4\+\_\+entry()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip4()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ nsvc\+\_\+by\+\_\+ip4\+\_\+elem()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ remove\+\_\+ip4\+\_\+elem()}, \textbf{ update\+\_\+ip4\+\_\+elem()}, \textbf{ update\+\_\+remote\+\_\+ip4\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip4()}.

\mbox{\label{group__libgb_ga9e402a0343186bca315c8b4a70df394a}} 
\index{Libgb@{Libgb}!udp\_port@{udp\_port}}
\index{udp\_port@{udp\_port}!Libgb@{Libgb}}
\doxysubsubsection{udp\_port\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily uint16\+\_\+t gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem\+::udp\+\_\+port}



Referenced by \textbf{ add\+\_\+ip6\+\_\+elem()}, \textbf{ create\+\_\+missing\+\_\+nsvcs()}, \textbf{ create\+\_\+nsvc\+\_\+for\+\_\+new\+\_\+sbind()}, \textbf{ do\+\_\+sns\+\_\+change\+\_\+weight()}, \textbf{ do\+\_\+sns\+\_\+delete()}, \textbf{ ns2\+\_\+add\+\_\+procedure()}, \textbf{ ns2\+\_\+get\+\_\+sbind\+\_\+ip6\+\_\+entry()}, \textbf{ ns2\+\_\+nsvc\+\_\+create\+\_\+ip6()}, \textbf{ ns2\+\_\+sns\+\_\+add\+\_\+elements()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure()}, \textbf{ nsvc\+\_\+by\+\_\+ip6\+\_\+elem()}, \textbf{ remove\+\_\+bind\+\_\+elem()}, \textbf{ remove\+\_\+ip6\+\_\+elem()}, \textbf{ update\+\_\+ip6\+\_\+elem()}, and \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip6()}.

