\doxysection{src/gb/gprs\+\_\+ns2\+\_\+internal.h File Reference}
\label{gprs__ns2__internal_8h}\index{src/gb/gprs\_ns2\_internal.h@{src/gb/gprs\_ns2\_internal.h}}
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/core/rate\+\_\+ctr.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/protocol/gsm\+\_\+08\+\_\+16.\+h$>$}\newline
{\ttfamily \#include $<$osmocom/gprs/gprs\+\_\+ns2.\+h$>$}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+inst}
\begin{DoxyCompactList}\small\item\em An instance of the NS protocol stack. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+nse}
\begin{DoxyCompactList}\small\item\em Structure repesenting a NSE. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc}
\begin{DoxyCompactList}\small\item\em Structure representing a single NS-\/\+VC. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind}
\begin{DoxyCompactList}\small\item\em Structure repesenting a bind instance. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+driver}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ LOGNSE}(nse,  lvl,  fmt,  args ...)~ \textbf{ LOGP}(\textbf{ DLNS}, lvl, \char`\"{}NSE(\%05\textbf{ u}) \char`\"{} fmt, (nse)-\/$>$\textbf{ nsei}, \#\# args)
\item 
\#define \textbf{ LOGBIND}(bind,  lvl,  fmt,  args ...)~ \textbf{ LOGP}(\textbf{ DLNS}, lvl, \char`\"{}BIND(\%s) \char`\"{} fmt, (bind)-\/$>$\textbf{ name}, \#\# args)
\item 
\#define \textbf{ LOGNSVC\+\_\+\+SS}(ss,  nsvc,  lvl,  fmt,  args ...)
\item 
\#define \textbf{ LOGNSVC}(nsvc,  lvl,  fmt,  args ...)~ \textbf{ LOGNSVC\+\_\+\+SS}(\textbf{ DLNS}, nsvc, lvl, fmt, \#\# args)
\item 
\#define \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}(nsvc,  direction,  \textbf{ pdu\+\_\+type},  lvl,  fmt,  args ...)~ \textbf{ LOGNSVC\+\_\+\+SS}(\textbf{ DLNSSIGNAL}, nsvc, lvl, \char`\"{}\%s \%s\char`\"{} fmt, direction, \textbf{ get\+\_\+value\+\_\+string}(\textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ pdu\+\_\+type}), \#\# args)
\item 
\#define \textbf{ LOG\+\_\+\+NS\+\_\+\+DATA}(nsvc,  direction,  \textbf{ pdu\+\_\+type},  lvl,  fmt,  args ...)~ \textbf{ LOGNSVC\+\_\+\+SS}(\textbf{ DLNSDATA}, nsvc, lvl, \char`\"{}\%s \%s\char`\"{} fmt, direction, \textbf{ get\+\_\+value\+\_\+string}(\textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ pdu\+\_\+type}), \#\# args)
\item 
\#define \textbf{ LOG\+\_\+\+NS\+\_\+\+RX\+\_\+\+SIGNAL}(nsvc,  \textbf{ pdu\+\_\+type})~\textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}(nsvc, \char`\"{}Rx\char`\"{}, pdu\+\_\+type, \textbf{ LOGL\+\_\+\+INFO}, \char`\"{}\textbackslash{}n\char`\"{})
\item 
\#define \textbf{ LOG\+\_\+\+NS\+\_\+\+TX\+\_\+\+SIGNAL}(nsvc,  \textbf{ pdu\+\_\+type})~\textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}(nsvc, \char`\"{}Tx\char`\"{}, pdu\+\_\+type, \textbf{ LOGL\+\_\+\+INFO}, \char`\"{}\textbackslash{}n\char`\"{})
\item 
\#define \textbf{ RATE\+\_\+\+CTR\+\_\+\+INC\+\_\+\+NS}(nsvc,  ctr)
\item 
\#define \textbf{ RATE\+\_\+\+CTR\+\_\+\+ADD\+\_\+\+NS}(nsvc,  ctr,  val)
\item 
\#define \textbf{ NS\+\_\+\+TIMERS\+\_\+\+COUNT}~11
\item 
\#define \textbf{ TNS\+\_\+\+BLOCK\+\_\+\+STR}~\char`\"{}tns-\/block\char`\"{}
\item 
\#define \textbf{ TNS\+\_\+\+BLOCK\+\_\+\+RETRIES\+\_\+\+STR}~\char`\"{}tns-\/block-\/retries\char`\"{}
\item 
\#define \textbf{ TNS\+\_\+\+RESET\+\_\+\+STR}~\char`\"{}tns-\/reset\char`\"{}
\item 
\#define \textbf{ TNS\+\_\+\+RESET\+\_\+\+RETRIES\+\_\+\+STR}~\char`\"{}tns-\/reset-\/retries\char`\"{}
\item 
\#define \textbf{ TNS\+\_\+\+TEST\+\_\+\+STR}~\char`\"{}tns-\/test\char`\"{}
\item 
\#define \textbf{ TNS\+\_\+\+ALIVE\+\_\+\+STR}~\char`\"{}tns-\/alive\char`\"{}
\item 
\#define \textbf{ TNS\+\_\+\+ALIVE\+\_\+\+RETRIES\+\_\+\+STR}~\char`\"{}tns-\/alive-\/retries\char`\"{}
\item 
\#define \textbf{ TSNS\+\_\+\+PROV\+\_\+\+STR}~\char`\"{}tsns-\/prov\char`\"{}
\item 
\#define \textbf{ TSNS\+\_\+\+SIZE\+\_\+\+RETRIES\+\_\+\+STR}~\char`\"{}tsns-\/size-\/retries\char`\"{}
\item 
\#define \textbf{ TSNS\+\_\+\+CONFIG\+\_\+\+RETRIES\+\_\+\+STR}~\char`\"{}tsns-\/\textbf{ config}-\/retries\char`\"{}
\item 
\#define \textbf{ TSNS\+\_\+\+PROCEDURES\+\_\+\+RETRIES\+\_\+\+STR}~\char`\"{}tsns-\/procedures-\/retries\char`\"{}
\item 
\#define \textbf{ NS\+\_\+\+TIMERS}
\item 
\#define \textbf{ NS\+\_\+\+TIMERS\+\_\+\+HELP}
\item 
\#define \textbf{ NS\+\_\+\+ALLOC\+\_\+\+SIZE}~3072
\item 
\#define \textbf{ NS\+\_\+\+ALLOC\+\_\+\+HEADROOM}~20
\item 
\#define \textbf{ NS\+\_\+\+DEFAULT\+\_\+\+TXQUEUE\+\_\+\+MAX\+\_\+\+LENGTH}~128
\item 
\#define \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED}~0x0001
\item 
\#define \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE}~0x0002
\item 
\#define \textbf{ NSE\+\_\+\+S\+\_\+\+RESET}~0x0004
\item 
\#define \textbf{ NS\+\_\+\+DESC\+\_\+B}(st)~((st) \& \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED} ? \char`\"{}BLOCKED\char`\"{} \+: \char`\"{}UNBLOCKED\char`\"{})
\item 
\#define \textbf{ NS\+\_\+\+DESC\+\_\+A}(st)~((st) \& \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE} ? \char`\"{}ALIVE\char`\"{} \+: \char`\"{}DEAD\char`\"{})
\item 
\#define \textbf{ NS\+\_\+\+DESC\+\_\+R}(st)~((st) \& \textbf{ NSE\+\_\+\+S\+\_\+\+RESET} ? \char`\"{}RESET\char`\"{} \+: \char`\"{}UNRESET\char`\"{})
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ ns2\+\_\+timeout} \{ \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK\+\_\+\+RETRIES}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET\+\_\+\+RETRIES}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROV}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+SIZE\+\_\+\+RETRIES}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+CONFIG\+\_\+\+RETRIES}
, \newline
\textbf{ NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROCEDURES\+\_\+\+RETRIES}
 \}
\item 
enum \textbf{ nsvc\+\_\+timer\+\_\+mode} \{ \newline
\textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST}
, \newline
\textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+ALIVE}
, \newline
\textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+RESET}
, \newline
\textbf{ \+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR}
, \newline
\textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST}
, \newline
\textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+ALIVE}
, \newline
\textbf{ NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+RESET}
, \newline
\textbf{ \+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR}
 \}
\item 
enum \textbf{ ns2\+\_\+vc\+\_\+stat} \{ \textbf{ NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY}
 \}
\item 
enum \textbf{ ns2\+\_\+bind\+\_\+stat} \{ \textbf{ NS2\+\_\+\+BIND\+\_\+\+STAT\+\_\+\+BACKLOG\+\_\+\+LEN}
 \}
\item 
enum \textbf{ ns2\+\_\+cs} \{ \newline
\textbf{ NS2\+\_\+\+CS\+\_\+\+CREATED}
, \newline
\textbf{ NS2\+\_\+\+CS\+\_\+\+FOUND}
, \newline
\textbf{ NS2\+\_\+\+CS\+\_\+\+REJECTED}
, \newline
\textbf{ NS2\+\_\+\+CS\+\_\+\+SKIPPED}
, \newline
\textbf{ NS2\+\_\+\+CS\+\_\+\+ERROR}
 \}
\begin{DoxyCompactList}\small\item\em Osmocom NS2 VC create status. \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{ ns2\+\_\+sns\+\_\+event} \{ \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+SELECT\+\_\+\+ENDPOINT}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+SIZE}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+SIZE\+\_\+\+ACK}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG\+\_\+\+END}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG\+\_\+\+ACK}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+ADD}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+DELETE}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CHANGE\+\_\+\+WEIGHT}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+ACK}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NO\+\_\+\+NSVC}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FREE\+\_\+\+NSVCS}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NSVC\+\_\+\+ALIVE}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+ADD\+\_\+\+BIND}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+DELETE\+\_\+\+BIND}
, \newline
\textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+CHANGE\+\_\+\+WEIGHT}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\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 
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 
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{ ns2\+\_\+free\+\_\+nsvcs} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\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}\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 
void \textbf{ ns2\+\_\+sns\+\_\+write\+\_\+vty} (struct \textbf{ vty} $\ast$\textbf{ vty}, const struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\begin{DoxyCompactList}\small\item\em write IP-\/\+SNS to a vty \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+sns\+\_\+dump\+\_\+vty} (struct \textbf{ vty} $\ast$\textbf{ vty}, const char $\ast$prefix, const struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, bool stats)
\begin{DoxyCompactList}\small\item\em Dump the IP-\/\+SNS state to a vty. \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 
void \textbf{ ns2\+\_\+nse\+\_\+notify\+\_\+alive} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, bool alive)
\item 
void \textbf{ ns2\+\_\+nse\+\_\+update\+\_\+mtu} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\item 
int \textbf{ ns2\+\_\+nse\+\_\+set\+\_\+dialect} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect)
\item 
int \textbf{ ns2\+\_\+validate} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t \textbf{ pdu\+\_\+type}, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp, uint8\+\_\+t $\ast$\textbf{ cause})
\item 
int \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$ip6\+\_\+elems, unsigned int num\+\_\+ip6\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+ACK as per Section 9.\+3.\+1. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+config} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, bool end\+\_\+flag, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$ip4\+\_\+elems, unsigned int num\+\_\+ip4\+\_\+elems, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$ip6\+\_\+elems, unsigned int num\+\_\+ip6\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+CONFIG as per Section 9.\+3.\+4. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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{ ns2\+\_\+tx\+\_\+sns\+\_\+size} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, bool reset\+\_\+flag, uint16\+\_\+t max\+\_\+nr\+\_\+nsvc, int ip4\+\_\+ep\+\_\+nr, int ip6\+\_\+ep\+\_\+nr)
\begin{DoxyCompactList}\small\item\em Encode + transmit a SNS-\/\+SIZE as per Section 9.\+3.\+7. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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{ ns2\+\_\+tx\+\_\+sns\+\_\+add} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t trans\+\_\+id, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$ip4\+\_\+elems, unsigned int num\+\_\+ip4\+\_\+elems, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$ip6\+\_\+elems, unsigned int num\+\_\+ip6\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+ADD as per Section 9.\+3.\+2. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+change\+\_\+weight} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t trans\+\_\+id, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$ip4\+\_\+elems, unsigned int num\+\_\+ip4\+\_\+elems, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$ip6\+\_\+elems, unsigned int num\+\_\+ip6\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+CHANGE-\/\+WEIGHT as per Section 9.\+3.\+3. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+del} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t trans\+\_\+id, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$ip4\+\_\+elems, unsigned int num\+\_\+ip4\+\_\+elems, const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$ip6\+\_\+elems, unsigned int num\+\_\+ip6\+\_\+elems)
\begin{DoxyCompactList}\small\item\em Encode + Transmit a SNS-\/\+DEL as per Section 9.\+3.\+6. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+block} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause}, uint16\+\_\+t $\ast$nsvci)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+BLOCK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint16\+\_\+t $\ast$nsvci)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+BLOCK-\/\+ACK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+reset} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause})
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+RESET on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+reset\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+RESET-\/\+ACK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+unblock} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+UNBLOCK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+unblock\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+UNBLOCK-\/\+ACK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+alive} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+ALIVE on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+alive\+\_\+ack} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+ALIVE-\/\+ACK on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+unit\+\_\+data} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint16\+\_\+t \textbf{ bvci}, uint8\+\_\+t sducontrol, struct \textbf{ msgb} $\ast$\textbf{ msg})
\begin{DoxyCompactList}\small\item\em Transmit NS-\/\+UNITDATA on a given NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+tx\+\_\+status} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, uint8\+\_\+t \textbf{ cause}, uint16\+\_\+t \textbf{ bvci}, struct \textbf{ msgb} $\ast$orig\+\_\+msg, uint16\+\_\+t $\ast$nsvci)
\begin{DoxyCompactList}\small\item\em Transmit a NS-\/\+STATUS on a given NS-\/\+VC. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ \textbf{ ns2\+\_\+ip\+\_\+bind\+\_\+connect} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, const struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote)
\begin{DoxyCompactList}\small\item\em Create new NS-\/\+VC to a given remote address. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+ip\+\_\+count\+\_\+bind} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote)
\begin{DoxyCompactList}\small\item\em Count UDP binds compatible with remote. \end{DoxyCompactList}\item 
struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$ \textbf{ ns2\+\_\+ip\+\_\+get\+\_\+bind\+\_\+by\+\_\+index} (struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$nsi, struct \textbf{ osmo\+\_\+sockaddr} $\ast$remote, int index)
\item 
void \textbf{ ns2\+\_\+ip\+\_\+set\+\_\+txqueue\+\_\+max\+\_\+length} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind, unsigned int max\+\_\+length)
\item 
int \textbf{ ns2\+\_\+sns\+\_\+rx} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\begin{DoxyCompactList}\small\item\em main entry point for receiving SNS messages from the network. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ \textbf{ ns2\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, const char $\ast$id)
\begin{DoxyCompactList}\small\item\em Allocate an IP-\/\+SNS FSM for the BSS side. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ \textbf{ ns2\+\_\+sns\+\_\+sgsn\+\_\+fsm\+\_\+alloc} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, const char $\ast$id)
\begin{DoxyCompactList}\small\item\em Allocate an IP-\/\+SNS FSM for the SGSN side. \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+sns\+\_\+replace\+\_\+nsvc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em called when a nsvc is beeing freed or the nsvc became dead \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+sns\+\_\+notify\+\_\+alive} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, bool alive)
\item 
void \textbf{ ns2\+\_\+sns\+\_\+update\+\_\+weights} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$bind)
\item 
struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, const char $\ast$id, bool initiate)
\begin{DoxyCompactList}\small\item\em gprs\+\_\+ns2\+\_\+vc\+\_\+fsm\+\_\+alloc \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+start} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Start a NS-\/\+VC FSM. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+force\+\_\+unconfigured} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Reset a NS-\/\+VC FSM. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+rx} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, struct \textbf{ msgb} $\ast$\textbf{ msg}, struct \textbf{ tlv\+\_\+parsed} $\ast$tp)
\begin{DoxyCompactList}\small\item\em entry point for messages from the driver/\+VL \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+alive} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\item 
int \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em is the given NS-\/\+VC unblocked? \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+block} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Block a NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+reset} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Reset a NS-\/\+VC. \end{DoxyCompactList}\item 
int \textbf{ ns2\+\_\+vc\+\_\+unblock} (struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc)
\begin{DoxyCompactList}\small\item\em Unblock a NS-\/\+VC. \end{DoxyCompactList}\item 
void \textbf{ ns2\+\_\+vty\+\_\+dump\+\_\+nsvc} (struct \textbf{ vty} $\ast$\textbf{ vty}, struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$nsvc, bool stats)
\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 
enum \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+mode} \textbf{ ns2\+\_\+dialect\+\_\+to\+\_\+vc\+\_\+mode} (enum \textbf{ gprs\+\_\+ns2\+\_\+dialect} dialect)
\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\+\_\+sns\+\_\+add\+\_\+sns\+\_\+default\+\_\+binds} (struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$nse)
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{gprs__ns2__internal_8h_a640d8a10c73397312dbf6c13c67d2d93}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOG\_NS\_DATA@{LOG\_NS\_DATA}}
\index{LOG\_NS\_DATA@{LOG\_NS\_DATA}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOG\_NS\_DATA}
{\footnotesize\ttfamily \#define LOG\+\_\+\+NS\+\_\+\+DATA(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{direction,  }\item[{}]{\textbf{ pdu\+\_\+type},  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ LOGNSVC\+\_\+\+SS}(\textbf{ DLNSDATA}, nsvc, lvl, \char`\"{}\%s \%s\char`\"{} fmt, direction, \textbf{ get\+\_\+value\+\_\+string}(\textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ pdu\+\_\+type}), \#\# args)}

\mbox{\label{gprs__ns2__internal_8h_a4ce0682cb0ed340a53800edd247b87bc}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOG\_NS\_RX\_SIGNAL@{LOG\_NS\_RX\_SIGNAL}}
\index{LOG\_NS\_RX\_SIGNAL@{LOG\_NS\_RX\_SIGNAL}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOG\_NS\_RX\_SIGNAL}
{\footnotesize\ttfamily \#define LOG\+\_\+\+NS\+\_\+\+RX\+\_\+\+SIGNAL(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{\textbf{ pdu\+\_\+type} }\end{DoxyParamCaption})~\textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}(nsvc, \char`\"{}Rx\char`\"{}, pdu\+\_\+type, \textbf{ LOGL\+\_\+\+INFO}, \char`\"{}\textbackslash{}n\char`\"{})}

\mbox{\label{gprs__ns2__internal_8h_abce25c7e71a5c7b4fa303444c15fd45c}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOG\_NS\_SIGNAL@{LOG\_NS\_SIGNAL}}
\index{LOG\_NS\_SIGNAL@{LOG\_NS\_SIGNAL}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOG\_NS\_SIGNAL}
{\footnotesize\ttfamily \#define LOG\+\_\+\+NS\+\_\+\+SIGNAL(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{direction,  }\item[{}]{\textbf{ pdu\+\_\+type},  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ LOGNSVC\+\_\+\+SS}(\textbf{ DLNSSIGNAL}, nsvc, lvl, \char`\"{}\%s \%s\char`\"{} fmt, direction, \textbf{ get\+\_\+value\+\_\+string}(\textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ pdu\+\_\+type}), \#\# args)}

\mbox{\label{gprs__ns2__internal_8h_a3ebd6777392f39f6679fd16ecb2fc082}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOG\_NS\_TX\_SIGNAL@{LOG\_NS\_TX\_SIGNAL}}
\index{LOG\_NS\_TX\_SIGNAL@{LOG\_NS\_TX\_SIGNAL}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOG\_NS\_TX\_SIGNAL}
{\footnotesize\ttfamily \#define LOG\+\_\+\+NS\+\_\+\+TX\+\_\+\+SIGNAL(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{\textbf{ pdu\+\_\+type} }\end{DoxyParamCaption})~\textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}(nsvc, \char`\"{}Tx\char`\"{}, pdu\+\_\+type, \textbf{ LOGL\+\_\+\+INFO}, \char`\"{}\textbackslash{}n\char`\"{})}

\mbox{\label{gprs__ns2__internal_8h_ae37aa8db3bf9ef29edc901b15de96217}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOGBIND@{LOGBIND}}
\index{LOGBIND@{LOGBIND}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOGBIND}
{\footnotesize\ttfamily \#define LOGBIND(\begin{DoxyParamCaption}\item[{}]{bind,  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ LOGP}(\textbf{ DLNS}, lvl, \char`\"{}BIND(\%s) \char`\"{} fmt, (bind)-\/$>$\textbf{ name}, \#\# args)}

\mbox{\label{gprs__ns2__internal_8h_a26274ef48fb2dd948caf6e6e7b43631e}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOGNSE@{LOGNSE}}
\index{LOGNSE@{LOGNSE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOGNSE}
{\footnotesize\ttfamily \#define LOGNSE(\begin{DoxyParamCaption}\item[{}]{nse,  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ LOGP}(\textbf{ DLNS}, lvl, \char`\"{}NSE(\%05\textbf{ u}) \char`\"{} fmt, (nse)-\/$>$\textbf{ nsei}, \#\# args)}

\mbox{\label{gprs__ns2__internal_8h_aa3c3fc1584f08e80b435306fcc8483df}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOGNSVC@{LOGNSVC}}
\index{LOGNSVC@{LOGNSVC}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOGNSVC}
{\footnotesize\ttfamily \#define LOGNSVC(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})~ \textbf{ LOGNSVC\+\_\+\+SS}(\textbf{ DLNS}, nsvc, lvl, fmt, \#\# args)}

\mbox{\label{gprs__ns2__internal_8h_affe9a9469bd7a2597d0d4e55ae128537}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!LOGNSVC\_SS@{LOGNSVC\_SS}}
\index{LOGNSVC\_SS@{LOGNSVC\_SS}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{LOGNSVC\_SS}
{\footnotesize\ttfamily \#define LOGNSVC\+\_\+\+SS(\begin{DoxyParamCaption}\item[{}]{ss,  }\item[{}]{nsvc,  }\item[{}]{lvl,  }\item[{}]{fmt,  }\item[{}]{args ... }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{                                                                    \(\backslash\)}
\DoxyCodeLine{                if ((nsvc)-\/>nsvci\_is\_valid) \{                                   \(\backslash\)}
\DoxyCodeLine{                        LOGP(ss, lvl, \textcolor{stringliteral}{"{}NSE(\%05u)-\/NSVC(\%05u) "{}} fmt,              \(\backslash\)}
\DoxyCodeLine{                             (nsvc)-\/>nse-\/>nsei, (nsvc)-\/>nsvci, \#\# args);        \(\backslash\)}
\DoxyCodeLine{                \} \textcolor{keywordflow}{else} \{                                                        \(\backslash\)}
\DoxyCodeLine{                        LOGP(ss, lvl, \textcolor{stringliteral}{"{}NSE(\%05u)-\/NSVC(none) "{}} fmt,              \(\backslash\)}
\DoxyCodeLine{                             (nsvc)-\/>nse-\/>nsei, \#\# args);                       \(\backslash\)}
\DoxyCodeLine{                \}                                                               \(\backslash\)}
\DoxyCodeLine{        \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
\mbox{\label{gprs__ns2__internal_8h_a21dcafeca8157bed0188c7aa3c516bb3}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_ALLOC\_HEADROOM@{NS\_ALLOC\_HEADROOM}}
\index{NS\_ALLOC\_HEADROOM@{NS\_ALLOC\_HEADROOM}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_ALLOC\_HEADROOM}
{\footnotesize\ttfamily \#define NS\+\_\+\+ALLOC\+\_\+\+HEADROOM~20}

\mbox{\label{gprs__ns2__internal_8h_af5363aace93ed474cb25cd097313ae55}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_ALLOC\_SIZE@{NS\_ALLOC\_SIZE}}
\index{NS\_ALLOC\_SIZE@{NS\_ALLOC\_SIZE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_ALLOC\_SIZE}
{\footnotesize\ttfamily \#define NS\+\_\+\+ALLOC\+\_\+\+SIZE~3072}

\mbox{\label{gprs__ns2__internal_8h_acb0093f830e234351c5152f2cb18eaa9}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_DEFAULT\_TXQUEUE\_MAX\_LENGTH@{NS\_DEFAULT\_TXQUEUE\_MAX\_LENGTH}}
\index{NS\_DEFAULT\_TXQUEUE\_MAX\_LENGTH@{NS\_DEFAULT\_TXQUEUE\_MAX\_LENGTH}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_DEFAULT\_TXQUEUE\_MAX\_LENGTH}
{\footnotesize\ttfamily \#define NS\+\_\+\+DEFAULT\+\_\+\+TXQUEUE\+\_\+\+MAX\+\_\+\+LENGTH~128}

\mbox{\label{gprs__ns2__internal_8h_af601813cfa22b316bb8681b29a2b0bab}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_DESC\_A@{NS\_DESC\_A}}
\index{NS\_DESC\_A@{NS\_DESC\_A}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_DESC\_A}
{\footnotesize\ttfamily \#define NS\+\_\+\+DESC\+\_\+A(\begin{DoxyParamCaption}\item[{}]{st }\end{DoxyParamCaption})~((st) \& \textbf{ NSE\+\_\+\+S\+\_\+\+ALIVE} ? \char`\"{}ALIVE\char`\"{} \+: \char`\"{}DEAD\char`\"{})}

\mbox{\label{gprs__ns2__internal_8h_a197ee2afe1666dce1146bcaa8a00df33}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_DESC\_B@{NS\_DESC\_B}}
\index{NS\_DESC\_B@{NS\_DESC\_B}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_DESC\_B}
{\footnotesize\ttfamily \#define NS\+\_\+\+DESC\+\_\+B(\begin{DoxyParamCaption}\item[{}]{st }\end{DoxyParamCaption})~((st) \& \textbf{ NSE\+\_\+\+S\+\_\+\+BLOCKED} ? \char`\"{}BLOCKED\char`\"{} \+: \char`\"{}UNBLOCKED\char`\"{})}

\mbox{\label{gprs__ns2__internal_8h_aa179c38f7aa2575a5109fd2b40bfc3dc}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_DESC\_R@{NS\_DESC\_R}}
\index{NS\_DESC\_R@{NS\_DESC\_R}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_DESC\_R}
{\footnotesize\ttfamily \#define NS\+\_\+\+DESC\+\_\+R(\begin{DoxyParamCaption}\item[{}]{st }\end{DoxyParamCaption})~((st) \& \textbf{ NSE\+\_\+\+S\+\_\+\+RESET} ? \char`\"{}RESET\char`\"{} \+: \char`\"{}UNRESET\char`\"{})}

\mbox{\label{gprs__ns2__internal_8h_aedf7b460e889da2bb26efa3e858946c6}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TIMERS@{NS\_TIMERS}}
\index{NS\_TIMERS@{NS\_TIMERS}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_TIMERS}
{\footnotesize\ttfamily \#define NS\+\_\+\+TIMERS}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}("{}} TNS\_BLOCK\_STR \textcolor{stringliteral}{"{}|"{}} TNS\_BLOCK\_RETRIES\_STR \textcolor{stringliteral}{"{}|"{}} TNS\_RESET\_STR \textcolor{stringliteral}{"{}|"{}} TNS\_RESET\_RETRIES\_STR \textcolor{stringliteral}{"{}|"{}} TNS\_TEST\_STR \textcolor{stringliteral}{"{}|"{}}\(\backslash\)}
\DoxyCodeLine{        TNS\_ALIVE\_STR \textcolor{stringliteral}{"{}|"{}} TNS\_ALIVE\_RETRIES\_STR \textcolor{stringliteral}{"{}|"{}} TSNS\_PROV\_STR \textcolor{stringliteral}{"{}|"{}} TSNS\_SIZE\_RETRIES\_STR \textcolor{stringliteral}{"{}|"{}} TSNS\_CONFIG\_RETRIES\_STR \textcolor{stringliteral}{"{}|"{}}\(\backslash\)}
\DoxyCodeLine{        TSNS\_PROCEDURES\_RETRIES\_STR \textcolor{stringliteral}{"{})"{}}}

\end{DoxyCode}
\mbox{\label{gprs__ns2__internal_8h_a8893f811b32e1d3d8b81a043e90a1c2d}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TIMERS\_COUNT@{NS\_TIMERS\_COUNT}}
\index{NS\_TIMERS\_COUNT@{NS\_TIMERS\_COUNT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_TIMERS\_COUNT}
{\footnotesize\ttfamily \#define NS\+\_\+\+TIMERS\+\_\+\+COUNT~11}

\mbox{\label{gprs__ns2__internal_8h_a57477386d3c188b4cce27f3cec0ed5aa}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TIMERS\_HELP@{NS\_TIMERS\_HELP}}
\index{NS\_TIMERS\_HELP@{NS\_TIMERS\_HELP}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NS\_TIMERS\_HELP}
{\footnotesize\ttfamily \#define NS\+\_\+\+TIMERS\+\_\+\+HELP}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}(un)blocking Timer (Tns-\/block) timeout\(\backslash\)n"{}}              \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}(un)blocking Timer (Tns-\/block) number of retries\(\backslash\)n"{}}    \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}Reset Timer (Tns-\/reset) timeout\(\backslash\)n"{}}                     \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}Reset Timer (Tns-\/reset) number of retries\(\backslash\)n"{}}           \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}Test Timer (Tns-\/test) timeout\(\backslash\)n"{}}                       \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}Alive Timer (Tns-\/alive) timeout\(\backslash\)n"{}}                     \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}Alive Timer (Tns-\/alive) number of retries\(\backslash\)n"{}}           \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}SNS Provision Timer (Tsns-\/prov) timeout\(\backslash\)n"{}}             \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}SNS Size number of retries\(\backslash\)n"{}}                          \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}SNS Config number of retries\(\backslash\)n"{}}                        \(\backslash\)}
\DoxyCodeLine{        \textcolor{stringliteral}{"{}SNS Procedures number of retries\(\backslash\)n"{}}                    \(\backslash\)}

\end{DoxyCode}
\mbox{\label{gprs__ns2__internal_8h_a6301bf5438b51498dd61144880b487bc}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSE\_S\_ALIVE@{NSE\_S\_ALIVE}}
\index{NSE\_S\_ALIVE@{NSE\_S\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NSE\_S\_ALIVE}
{\footnotesize\ttfamily \#define NSE\+\_\+\+S\+\_\+\+ALIVE~0x0002}

\mbox{\label{gprs__ns2__internal_8h_a2710f3dc87f800f2b6182a339043fe6a}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSE\_S\_BLOCKED@{NSE\_S\_BLOCKED}}
\index{NSE\_S\_BLOCKED@{NSE\_S\_BLOCKED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NSE\_S\_BLOCKED}
{\footnotesize\ttfamily \#define NSE\+\_\+\+S\+\_\+\+BLOCKED~0x0001}

\mbox{\label{gprs__ns2__internal_8h_ab3e4e8ac0fd5bc7bdc3d4889e9bc032d}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSE\_S\_RESET@{NSE\_S\_RESET}}
\index{NSE\_S\_RESET@{NSE\_S\_RESET}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{NSE\_S\_RESET}
{\footnotesize\ttfamily \#define NSE\+\_\+\+S\+\_\+\+RESET~0x0004}

\mbox{\label{gprs__ns2__internal_8h_ae01ac1250b96a60ea5257b9c48c52688}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!RATE\_CTR\_ADD\_NS@{RATE\_CTR\_ADD\_NS}}
\index{RATE\_CTR\_ADD\_NS@{RATE\_CTR\_ADD\_NS}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{RATE\_CTR\_ADD\_NS}
{\footnotesize\ttfamily \#define RATE\+\_\+\+CTR\+\_\+\+ADD\+\_\+\+NS(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{ctr,  }\item[{}]{val }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{ \(\backslash\)}
\DoxyCodeLine{                struct gprs\_ns2\_vc *\_nsvc = (nsvc); \(\backslash\)}
\DoxyCodeLine{                rate\_ctr\_add(rate\_ctr\_group\_get\_ctr(\_nsvc-\/>ctrg, ctr), val); \(\backslash\)}
\DoxyCodeLine{                rate\_ctr\_add(rate\_ctr\_group\_get\_ctr(\_nsvc-\/>nse-\/>ctrg, ctr), val); \(\backslash\)}
\DoxyCodeLine{        \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
\mbox{\label{gprs__ns2__internal_8h_ad476b829dd54fe41a983334c73c2d7e6}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!RATE\_CTR\_INC\_NS@{RATE\_CTR\_INC\_NS}}
\index{RATE\_CTR\_INC\_NS@{RATE\_CTR\_INC\_NS}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{RATE\_CTR\_INC\_NS}
{\footnotesize\ttfamily \#define RATE\+\_\+\+CTR\+\_\+\+INC\+\_\+\+NS(\begin{DoxyParamCaption}\item[{}]{nsvc,  }\item[{}]{ctr }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{ \(\backslash\)}
\DoxyCodeLine{                struct gprs\_ns2\_vc *\_nsvc = (nsvc); \(\backslash\)}
\DoxyCodeLine{                rate\_ctr\_inc(rate\_ctr\_group\_get\_ctr(\_nsvc-\/>ctrg, ctr)); \(\backslash\)}
\DoxyCodeLine{                rate\_ctr\_inc(rate\_ctr\_group\_get\_ctr(\_nsvc-\/>nse-\/>ctrg, ctr)); \(\backslash\)}
\DoxyCodeLine{        \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
\mbox{\label{gprs__ns2__internal_8h_adfcfcd9376f5d0d4d5566db01a0d78b6}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_ALIVE\_RETRIES\_STR@{TNS\_ALIVE\_RETRIES\_STR}}
\index{TNS\_ALIVE\_RETRIES\_STR@{TNS\_ALIVE\_RETRIES\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_ALIVE\_RETRIES\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+ALIVE\+\_\+\+RETRIES\+\_\+\+STR~\char`\"{}tns-\/alive-\/retries\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_a06db01ba66554064683fd5429e52c1eb}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_ALIVE\_STR@{TNS\_ALIVE\_STR}}
\index{TNS\_ALIVE\_STR@{TNS\_ALIVE\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_ALIVE\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+ALIVE\+\_\+\+STR~\char`\"{}tns-\/alive\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_ac1dd5e864eea826c5361e41332010ab8}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_BLOCK\_RETRIES\_STR@{TNS\_BLOCK\_RETRIES\_STR}}
\index{TNS\_BLOCK\_RETRIES\_STR@{TNS\_BLOCK\_RETRIES\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_BLOCK\_RETRIES\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+BLOCK\+\_\+\+RETRIES\+\_\+\+STR~\char`\"{}tns-\/block-\/retries\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_a8b4180e354bdebf6e08aac40b1388221}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_BLOCK\_STR@{TNS\_BLOCK\_STR}}
\index{TNS\_BLOCK\_STR@{TNS\_BLOCK\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_BLOCK\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+BLOCK\+\_\+\+STR~\char`\"{}tns-\/block\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_a4957349b38e8ef0eafafa2831b43f2f0}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_RESET\_RETRIES\_STR@{TNS\_RESET\_RETRIES\_STR}}
\index{TNS\_RESET\_RETRIES\_STR@{TNS\_RESET\_RETRIES\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_RESET\_RETRIES\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+RESET\+\_\+\+RETRIES\+\_\+\+STR~\char`\"{}tns-\/reset-\/retries\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_ac91db45e6a4a5140c0a9a676f0464bf3}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_RESET\_STR@{TNS\_RESET\_STR}}
\index{TNS\_RESET\_STR@{TNS\_RESET\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_RESET\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+RESET\+\_\+\+STR~\char`\"{}tns-\/reset\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_a7e2870177ef04d0533baa05bdc093b22}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TNS\_TEST\_STR@{TNS\_TEST\_STR}}
\index{TNS\_TEST\_STR@{TNS\_TEST\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TNS\_TEST\_STR}
{\footnotesize\ttfamily \#define TNS\+\_\+\+TEST\+\_\+\+STR~\char`\"{}tns-\/test\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_a85f5d82ed7f40cf3cc4486380f0f69d1}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TSNS\_CONFIG\_RETRIES\_STR@{TSNS\_CONFIG\_RETRIES\_STR}}
\index{TSNS\_CONFIG\_RETRIES\_STR@{TSNS\_CONFIG\_RETRIES\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TSNS\_CONFIG\_RETRIES\_STR}
{\footnotesize\ttfamily \#define TSNS\+\_\+\+CONFIG\+\_\+\+RETRIES\+\_\+\+STR~\char`\"{}tsns-\/\textbf{ config}-\/retries\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_af87488781705dbfa3026b5bb51e82e26}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TSNS\_PROCEDURES\_RETRIES\_STR@{TSNS\_PROCEDURES\_RETRIES\_STR}}
\index{TSNS\_PROCEDURES\_RETRIES\_STR@{TSNS\_PROCEDURES\_RETRIES\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TSNS\_PROCEDURES\_RETRIES\_STR}
{\footnotesize\ttfamily \#define TSNS\+\_\+\+PROCEDURES\+\_\+\+RETRIES\+\_\+\+STR~\char`\"{}tsns-\/procedures-\/retries\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_ad73a885b61465b3c67b50c10990d3b1a}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TSNS\_PROV\_STR@{TSNS\_PROV\_STR}}
\index{TSNS\_PROV\_STR@{TSNS\_PROV\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TSNS\_PROV\_STR}
{\footnotesize\ttfamily \#define TSNS\+\_\+\+PROV\+\_\+\+STR~\char`\"{}tsns-\/prov\char`\"{}}

\mbox{\label{gprs__ns2__internal_8h_a89e4975004b2d37cf2ffa0896fdd531c}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!TSNS\_SIZE\_RETRIES\_STR@{TSNS\_SIZE\_RETRIES\_STR}}
\index{TSNS\_SIZE\_RETRIES\_STR@{TSNS\_SIZE\_RETRIES\_STR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{TSNS\_SIZE\_RETRIES\_STR}
{\footnotesize\ttfamily \#define TSNS\+\_\+\+SIZE\+\_\+\+RETRIES\+\_\+\+STR~\char`\"{}tsns-\/size-\/retries\char`\"{}}



\doxysubsection{Enumeration Type Documentation}
\mbox{\label{gprs__ns2__internal_8h_a31e7cf3ce6a7295b1cb4f3396f9f3e54}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_bind\_stat@{ns2\_bind\_stat}}
\index{ns2\_bind\_stat@{ns2\_bind\_stat}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_bind\_stat}
{\footnotesize\ttfamily enum \textbf{ ns2\+\_\+bind\+\_\+stat}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_BIND\_STAT\_BACKLOG\_LEN@{NS2\_BIND\_STAT\_BACKLOG\_LEN}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_BIND\_STAT\_BACKLOG\_LEN@{NS2\_BIND\_STAT\_BACKLOG\_LEN}}}\mbox{\label{gprs__ns2__internal_8h_a31e7cf3ce6a7295b1cb4f3396f9f3e54a1382679501285bc8b396097608312931}} 
NS2\+\_\+\+BIND\+\_\+\+STAT\+\_\+\+BACKLOG\+\_\+\+LEN&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__internal_8h_ae37d580af7d68ecfad48486680f8d15d}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_cs@{ns2\_cs}}
\index{ns2\_cs@{ns2\_cs}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_cs}
{\footnotesize\ttfamily enum \textbf{ ns2\+\_\+cs}}



Osmocom NS2 VC create status. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_CS\_CREATED@{NS2\_CS\_CREATED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_CS\_CREATED@{NS2\_CS\_CREATED}}}\mbox{\label{gprs__ns2__internal_8h_ae37d580af7d68ecfad48486680f8d15da1395fa2081de1843c39c5ded92cc5f0c}} 
NS2\+\_\+\+CS\+\_\+\+CREATED&A NSVC object has been created. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_CS\_FOUND@{NS2\_CS\_FOUND}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_CS\_FOUND@{NS2\_CS\_FOUND}}}\mbox{\label{gprs__ns2__internal_8h_ae37d580af7d68ecfad48486680f8d15da12efef10c4714373f38f3b858c3b6007}} 
NS2\+\_\+\+CS\+\_\+\+FOUND&A NSVC object has been found. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_CS\_REJECTED@{NS2\_CS\_REJECTED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_CS\_REJECTED@{NS2\_CS\_REJECTED}}}\mbox{\label{gprs__ns2__internal_8h_ae37d580af7d68ecfad48486680f8d15dadbe355400098c9a572b6ea3b50e99490}} 
NS2\+\_\+\+CS\+\_\+\+REJECTED&Rejected and answered message. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_CS\_SKIPPED@{NS2\_CS\_SKIPPED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_CS\_SKIPPED@{NS2\_CS\_SKIPPED}}}\mbox{\label{gprs__ns2__internal_8h_ae37d580af7d68ecfad48486680f8d15da8788017b53934fc76fe7d8ba984c6db4}} 
NS2\+\_\+\+CS\+\_\+\+SKIPPED&Skipped message. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_CS\_ERROR@{NS2\_CS\_ERROR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_CS\_ERROR@{NS2\_CS\_ERROR}}}\mbox{\label{gprs__ns2__internal_8h_ae37d580af7d68ecfad48486680f8d15daaa77a54e654e35de36548e8faef0b63c}} 
NS2\+\_\+\+CS\+\_\+\+ERROR&Failed to process message. \\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cc}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_event@{ns2\_sns\_event}}
\index{ns2\_sns\_event@{ns2\_sns\_event}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_event}
{\footnotesize\ttfamily enum \textbf{ ns2\+\_\+sns\+\_\+event}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_SELECT\_ENDPOINT@{NS2\_SNS\_EV\_REQ\_SELECT\_ENDPOINT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_SELECT\_ENDPOINT@{NS2\_SNS\_EV\_REQ\_SELECT\_ENDPOINT}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccaef100daa4a4a0823c7c08e060f6668dd}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+SELECT\+\_\+\+ENDPOINT&Select a SNS endpoint from the list. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_SIZE@{NS2\_SNS\_EV\_RX\_SIZE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_SIZE@{NS2\_SNS\_EV\_RX\_SIZE}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccac1e623d0fe6ad56af69d76e29e4e82f4}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+SIZE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_SIZE\_ACK@{NS2\_SNS\_EV\_RX\_SIZE\_ACK}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_SIZE\_ACK@{NS2\_SNS\_EV\_RX\_SIZE\_ACK}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccad4cc6efa92d673439b794a18f961ebb2}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+SIZE\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_CONFIG@{NS2\_SNS\_EV\_RX\_CONFIG}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_CONFIG@{NS2\_SNS\_EV\_RX\_CONFIG}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cca54e88ffe8353d347c8f17b5b990bcd0a}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_CONFIG\_END@{NS2\_SNS\_EV\_RX\_CONFIG\_END}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_CONFIG\_END@{NS2\_SNS\_EV\_RX\_CONFIG\_END}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccaae38e9b685939d3890562d24a4a59869}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG\+\_\+\+END&SNS-\/\+CONFIG with end flag received. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_CONFIG\_ACK@{NS2\_SNS\_EV\_RX\_CONFIG\_ACK}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_CONFIG\_ACK@{NS2\_SNS\_EV\_RX\_CONFIG\_ACK}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cca68c08f27d2c4b5b139b511db1e68a639}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG\+\_\+\+ACK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_ADD@{NS2\_SNS\_EV\_RX\_ADD}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_ADD@{NS2\_SNS\_EV\_RX\_ADD}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccaa1656b8db5def31f45b787cbe9edef2a}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+ADD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_DELETE@{NS2\_SNS\_EV\_RX\_DELETE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_DELETE@{NS2\_SNS\_EV\_RX\_DELETE}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cca6796b9f419f5aea102972e9341a96ec4}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+DELETE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_CHANGE\_WEIGHT@{NS2\_SNS\_EV\_RX\_CHANGE\_WEIGHT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_CHANGE\_WEIGHT@{NS2\_SNS\_EV\_RX\_CHANGE\_WEIGHT}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccae200426d4e0a4ecb4631dbf8672efae2}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CHANGE\+\_\+\+WEIGHT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_RX\_ACK@{NS2\_SNS\_EV\_RX\_ACK}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_RX\_ACK@{NS2\_SNS\_EV\_RX\_ACK}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccabdb8924a65dc4d5f3fb1faa24dcacd2a}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+ACK&Rx of SNS-\/\+ACK (response to ADD/\+DELETE/\+CHG\+\_\+\+WEIGHT. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_NO\_NSVC@{NS2\_SNS\_EV\_REQ\_NO\_NSVC}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_NO\_NSVC@{NS2\_SNS\_EV\_REQ\_NO\_NSVC}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cca842966acb6a9e5e23211ab6999d431c8}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NO\+\_\+\+NSVC&no more NS-\/\+VC remaining (all dead) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_FREE\_NSVCS@{NS2\_SNS\_EV\_REQ\_FREE\_NSVCS}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_FREE\_NSVCS@{NS2\_SNS\_EV\_REQ\_FREE\_NSVCS}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccab1869895e8451e3239b04e2ce4e52884}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FREE\+\_\+\+NSVCS&free all NS-\/\+VCs \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_NSVC\_ALIVE@{NS2\_SNS\_EV\_REQ\_NSVC\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_NSVC\_ALIVE@{NS2\_SNS\_EV\_REQ\_NSVC\_ALIVE}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cca268ca04b10cb990a48c2bd4257ba5213}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NSVC\+\_\+\+ALIVE&a NS-\/\+VC became alive \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_ADD\_BIND@{NS2\_SNS\_EV\_REQ\_ADD\_BIND}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_ADD\_BIND@{NS2\_SNS\_EV\_REQ\_ADD\_BIND}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716cca1eefc4abbb8c7a268f29d32c71556c55}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+ADD\+\_\+\+BIND&add a new local bind to this NSE \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_DELETE\_BIND@{NS2\_SNS\_EV\_REQ\_DELETE\_BIND}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_DELETE\_BIND@{NS2\_SNS\_EV\_REQ\_DELETE\_BIND}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccaca19c9032b27c506d723b6d34b94304e}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+DELETE\+\_\+\+BIND&remove a local bind from this NSE \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS2\_SNS\_EV\_REQ\_CHANGE\_WEIGHT@{NS2\_SNS\_EV\_REQ\_CHANGE\_WEIGHT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS2\_SNS\_EV\_REQ\_CHANGE\_WEIGHT@{NS2\_SNS\_EV\_REQ\_CHANGE\_WEIGHT}}}\mbox{\label{gprs__ns2__internal_8h_a847f22c7469020edf4a94a4db7e716ccab208801a329452ee8eabedef75f6d91f}} 
NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+CHANGE\+\_\+\+WEIGHT&a bind changed its weight \\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945de}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_timeout@{ns2\_timeout}}
\index{ns2\_timeout@{ns2\_timeout}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_timeout}
{\footnotesize\ttfamily enum \textbf{ ns2\+\_\+timeout}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_BLOCK@{NS\_TOUT\_TNS\_BLOCK}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_BLOCK@{NS\_TOUT\_TNS\_BLOCK}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea1b88b04adf65281e7bcf29402e1f020b}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_BLOCK\_RETRIES@{NS\_TOUT\_TNS\_BLOCK\_RETRIES}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_BLOCK\_RETRIES@{NS\_TOUT\_TNS\_BLOCK\_RETRIES}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea693b33132aa0f6212d78d1376580fb1b}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+BLOCK\+\_\+\+RETRIES&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_RESET@{NS\_TOUT\_TNS\_RESET}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_RESET@{NS\_TOUT\_TNS\_RESET}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea48736cfedf1e8f0bd435dc0cc61d9a6f}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_RESET\_RETRIES@{NS\_TOUT\_TNS\_RESET\_RETRIES}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_RESET\_RETRIES@{NS\_TOUT\_TNS\_RESET\_RETRIES}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945deaba64fc2c5555e6aff03cac04fc8c2c03}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+RESET\+\_\+\+RETRIES&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_TEST@{NS\_TOUT\_TNS\_TEST}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_TEST@{NS\_TOUT\_TNS\_TEST}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea76893fc8b4f6b3c5f27702a0a1675d78}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+TEST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_ALIVE@{NS\_TOUT\_TNS\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_ALIVE@{NS\_TOUT\_TNS\_ALIVE}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dead767683eaf1ba4f4b9ce9ff1a45a0947}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TNS\_ALIVE\_RETRIES@{NS\_TOUT\_TNS\_ALIVE\_RETRIES}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TNS\_ALIVE\_RETRIES@{NS\_TOUT\_TNS\_ALIVE\_RETRIES}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea9336ff01b118c798994367338341a8e4}} 
NS\+\_\+\+TOUT\+\_\+\+TNS\+\_\+\+ALIVE\+\_\+\+RETRIES&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TSNS\_PROV@{NS\_TOUT\_TSNS\_PROV}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TSNS\_PROV@{NS\_TOUT\_TSNS\_PROV}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea0e83fee5874c82abdf5158ee09b7081f}} 
NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROV&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TSNS\_SIZE\_RETRIES@{NS\_TOUT\_TSNS\_SIZE\_RETRIES}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TSNS\_SIZE\_RETRIES@{NS\_TOUT\_TSNS\_SIZE\_RETRIES}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea601ac76e62d0e1579f425f1d3e965821}} 
NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+SIZE\+\_\+\+RETRIES&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TSNS\_CONFIG\_RETRIES@{NS\_TOUT\_TSNS\_CONFIG\_RETRIES}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TSNS\_CONFIG\_RETRIES@{NS\_TOUT\_TSNS\_CONFIG\_RETRIES}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945dea4885014dc69bef5c59eb9a9d911bbbc4}} 
NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+CONFIG\+\_\+\+RETRIES&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_TOUT\_TSNS\_PROCEDURES\_RETRIES@{NS\_TOUT\_TSNS\_PROCEDURES\_RETRIES}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_TOUT\_TSNS\_PROCEDURES\_RETRIES@{NS\_TOUT\_TSNS\_PROCEDURES\_RETRIES}}}\mbox{\label{gprs__ns2__internal_8h_a9cab19354504175789dfdeaff9d945deaf19e5d334a9cfcc05a1e779c926766bc}} 
NS\+\_\+\+TOUT\+\_\+\+TSNS\+\_\+\+PROCEDURES\+\_\+\+RETRIES&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__internal_8h_ae65610949bdff8033fe8969a518ea2ec}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_stat@{ns2\_vc\_stat}}
\index{ns2\_vc\_stat@{ns2\_vc\_stat}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_stat}
{\footnotesize\ttfamily enum \textbf{ ns2\+\_\+vc\+\_\+stat}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_STAT\_ALIVE\_DELAY@{NS\_STAT\_ALIVE\_DELAY}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_STAT\_ALIVE\_DELAY@{NS\_STAT\_ALIVE\_DELAY}}}\mbox{\label{gprs__ns2__internal_8h_ae65610949bdff8033fe8969a518ea2eca7de5febc578b6ceb366f8cac1e9e4c9d}} 
NS\+\_\+\+STAT\+\_\+\+ALIVE\+\_\+\+DELAY&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__internal_8h_a9eb02dcd9b1864987ffa538af6852728}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns\_ctr@{ns\_ctr}}
\index{ns\_ctr@{ns\_ctr}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\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}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a3e5eef852df124a2e8c7b33d7ffab16a}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a11ddb0337a62952a892f026ace741e49}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a229595e2e6daebf26e606dc873149b41}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a1b113f24a4d2f522aacdcf18fa7a2a49}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728abcf9e62a101dd40a858def909cc763dd}} 
NS\+\_\+\+CTR\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_DEAD@{NS\_CTR\_DEAD}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_DEAD@{NS\_CTR\_DEAD}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a7c8d3a66448534aec6cd5b18aa49ecf6}} 
NS\+\_\+\+CTR\+\_\+\+DEAD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728abcbaeb1e120682bdef61591268517dc0}} 
NS\+\_\+\+CTR\+\_\+\+REPLACED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728ac5bc01cd8e995b6a033c187d0c8251c7}} 
NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a77b95b76e243f7eb6bac218ab3e139af}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a2e9edabd27a0e209bfd901dc0bc225b9}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a340c633ef4293e1f30f2818a3c09c052}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a06973f5082ec693df62edbfda72a1fc2}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_PKTS\_IN@{NS\_CTR\_PKTS\_IN}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a3e5eef852df124a2e8c7b33d7ffab16a}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_PKTS\_OUT@{NS\_CTR\_PKTS\_OUT}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a11ddb0337a62952a892f026ace741e49}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_PKTS\_OUT\_DROP@{NS\_CTR\_PKTS\_OUT\_DROP}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_PKTS\_OUT\_DROP@{NS\_CTR\_PKTS\_OUT\_DROP}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a0817a06e6d4c6b6d50d6e93b10b3f1d9}} 
NS\+\_\+\+CTR\+\_\+\+PKTS\+\_\+\+OUT\+\_\+\+DROP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BYTES\_IN@{NS\_CTR\_BYTES\_IN}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a229595e2e6daebf26e606dc873149b41}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BYTES\_OUT@{NS\_CTR\_BYTES\_OUT}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a1b113f24a4d2f522aacdcf18fa7a2a49}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BYTES\_OUT\_DROP@{NS\_CTR\_BYTES\_OUT\_DROP}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BYTES\_OUT\_DROP@{NS\_CTR\_BYTES\_OUT\_DROP}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728af5c7df2bfa6f4c2a173fcde67d6a6155}} 
NS\+\_\+\+CTR\+\_\+\+BYTES\+\_\+\+OUT\+\_\+\+DROP&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_BLOCKED@{NS\_CTR\_BLOCKED}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728abcf9e62a101dd40a858def909cc763dd}} 
NS\+\_\+\+CTR\+\_\+\+BLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_UNBLOCKED@{NS\_CTR\_UNBLOCKED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_UNBLOCKED@{NS\_CTR\_UNBLOCKED}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a6b153ab7cd8b00ad38d71f3dd7dd57c1}} 
NS\+\_\+\+CTR\+\_\+\+UNBLOCKED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_DEAD@{NS\_CTR\_DEAD}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_DEAD@{NS\_CTR\_DEAD}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a7c8d3a66448534aec6cd5b18aa49ecf6}} 
NS\+\_\+\+CTR\+\_\+\+DEAD&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_REPLACED@{NS\_CTR\_REPLACED}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728abcbaeb1e120682bdef61591268517dc0}} 
NS\+\_\+\+CTR\+\_\+\+REPLACED&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_NSEI\_CHG@{NS\_CTR\_NSEI\_CHG}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728ac5bc01cd8e995b6a033c187d0c8251c7}} 
NS\+\_\+\+CTR\+\_\+\+NSEI\+\_\+\+CHG&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_INV\_VCI@{NS\_CTR\_INV\_VCI}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a77b95b76e243f7eb6bac218ab3e139af}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+VCI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_INV\_NSEI@{NS\_CTR\_INV\_NSEI}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a2e9edabd27a0e209bfd901dc0bc225b9}} 
NS\+\_\+\+CTR\+\_\+\+INV\+\_\+\+NSEI&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_LOST\_ALIVE@{NS\_CTR\_LOST\_ALIVE}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a340c633ef4293e1f30f2818a3c09c052}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NS\_CTR\_LOST\_RESET@{NS\_CTR\_LOST\_RESET}}}\mbox{\label{gprs__ns2__internal_8h_ga9eb02dcd9b1864987ffa538af6852728a06973f5082ec693df62edbfda72a1fc2}} 
NS\+\_\+\+CTR\+\_\+\+LOST\+\_\+\+RESET&\\
\hline

\end{DoxyEnumFields}
\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!nsvc\_timer\_mode@{nsvc\_timer\_mode}}
\index{nsvc\_timer\_mode@{nsvc\_timer\_mode}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{nsvc\_timer\_mode}
{\footnotesize\ttfamily enum \textbf{ nsvc\+\_\+timer\+\_\+mode}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NSVC\_TIMER\_TNS\_TEST@{NSVC\_TIMER\_TNS\_TEST}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSVC\_TIMER\_TNS\_TEST@{NSVC\_TIMER\_TNS\_TEST}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a71d606ca3b510246d183acfab5ca8b11}} 
NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NSVC\_TIMER\_TNS\_ALIVE@{NSVC\_TIMER\_TNS\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSVC\_TIMER\_TNS\_ALIVE@{NSVC\_TIMER\_TNS\_ALIVE}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a1efef849296320b862e0c3c5b1b66376}} 
NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NSVC\_TIMER\_TNS\_RESET@{NSVC\_TIMER\_TNS\_RESET}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSVC\_TIMER\_TNS\_RESET@{NSVC\_TIMER\_TNS\_RESET}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a0d8bd1932d05fb987203fe77d2ef5d7e}} 
NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{\_NSVC\_TIMER\_NR@{\_NSVC\_TIMER\_NR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!\_NSVC\_TIMER\_NR@{\_NSVC\_TIMER\_NR}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a9f9f3d4880e284c257e372128100facf}} 
\+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NSVC\_TIMER\_TNS\_TEST@{NSVC\_TIMER\_TNS\_TEST}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSVC\_TIMER\_TNS\_TEST@{NSVC\_TIMER\_TNS\_TEST}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a71d606ca3b510246d183acfab5ca8b11}} 
NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+TEST&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NSVC\_TIMER\_TNS\_ALIVE@{NSVC\_TIMER\_TNS\_ALIVE}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSVC\_TIMER\_TNS\_ALIVE@{NSVC\_TIMER\_TNS\_ALIVE}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a1efef849296320b862e0c3c5b1b66376}} 
NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+ALIVE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NSVC\_TIMER\_TNS\_RESET@{NSVC\_TIMER\_TNS\_RESET}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!NSVC\_TIMER\_TNS\_RESET@{NSVC\_TIMER\_TNS\_RESET}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a0d8bd1932d05fb987203fe77d2ef5d7e}} 
NSVC\+\_\+\+TIMER\+\_\+\+TNS\+\_\+\+RESET&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{\_NSVC\_TIMER\_NR@{\_NSVC\_TIMER\_NR}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!\_NSVC\_TIMER\_NR@{\_NSVC\_TIMER\_NR}}}\mbox{\label{gprs__ns2__internal_8h_a22fa3f1397f5263438aefa3a6fd0fc71a9f9f3d4880e284c257e372128100facf}} 
\+\_\+\+NSVC\+\_\+\+TIMER\+\_\+\+NR&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\label{gprs__ns2__internal_8h_a6d14b6db5637595add5fb19f45db9f61}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_ip\_bind\_connect@{ns2\_ip\_bind\_connect}}
\index{ns2\_ip\_bind\_connect@{ns2\_ip\_bind\_connect}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_ip\_bind\_connect()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$ ns2\+\_\+ip\+\_\+bind\+\_\+connect (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{const struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote }\end{DoxyParamCaption})}



Create new NS-\/\+VC to a given remote address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bind} & the bind we want to connect \\
\hline
\mbox{\texttt{ in}}  & {\em nse} & NS entity to be used for the new NS-\/\+VC \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & remote address to connect to \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to newly-\/allocated and connected NS-\/\+VC; NULL on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+sockaddr()}, \textbf{ gprs\+\_\+ns2\+\_\+is\+\_\+ip\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+lltype\+\_\+str()}, \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+sockaddr\+\_\+bind()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGNSE}, \textbf{ ns2\+\_\+dialect\+\_\+to\+\_\+vc\+\_\+mode()}, \textbf{ ns2\+\_\+vc\+\_\+alloc()}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+identifier\+\_\+sanitize\+\_\+buf()}, \textbf{ osmo\+\_\+sockaddr\+\_\+to\+\_\+str()}, \textbf{ osmo\+\_\+sockaddr\+\_\+to\+\_\+str\+\_\+buf()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::priv}, and \textbf{ priv\+\_\+vc\+::remote}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect\+\_\+inactive()}, \textbf{ ns2\+\_\+create\+\_\+vc\+\_\+sns()}, and \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+bss\+\_\+size\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_ab8317d0fe7598c71d4013dec9eb1ff3a}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_ip\_count\_bind@{ns2\_ip\_count\_bind}}
\index{ns2\_ip\_count\_bind@{ns2\_ip\_count\_bind}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_ip\_count\_bind()}
{\footnotesize\ttfamily int ns2\+\_\+ip\+\_\+count\+\_\+bind (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote }\end{DoxyParamCaption})}



Count UDP binds compatible with remote. 



References \textbf{ gprs\+\_\+ns2\+\_\+inst\+::binding}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+sockaddr()}, \textbf{ gprs\+\_\+ns2\+\_\+is\+\_\+ip\+\_\+bind()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ osmo\+\_\+sockaddr\+::sa}, and \textbf{ osmo\+\_\+sockaddr\+::u}.

\mbox{\label{gprs__ns2__internal_8h_af086fbb52419c7dfa939c63a8bfd2025}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_ip\_get\_bind\_by\_index@{ns2\_ip\_get\_bind\_by\_index}}
\index{ns2\_ip\_get\_bind\_by\_index@{ns2\_ip\_get\_bind\_by\_index}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_ip\_get\_bind\_by\_index()}
{\footnotesize\ttfamily struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$ ns2\+\_\+ip\+\_\+get\+\_\+bind\+\_\+by\+\_\+index (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+inst} $\ast$}]{nsi,  }\item[{struct \textbf{ osmo\+\_\+sockaddr} $\ast$}]{remote,  }\item[{int}]{index }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+inst\+::binding}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+sockaddr()}, \textbf{ gprs\+\_\+ns2\+\_\+is\+\_\+ip\+\_\+bind()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ osmo\+\_\+sockaddr\+::sa}, and \textbf{ osmo\+\_\+sockaddr\+::u}.

\mbox{\label{gprs__ns2__internal_8h_ad19bf86640befcf389f785e9e9edcbe4}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_ip\_set\_txqueue\_max\_length@{ns2\_ip\_set\_txqueue\_max\_length}}
\index{ns2\_ip\_set\_txqueue\_max\_length@{ns2\_ip\_set\_txqueue\_max\_length}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_ip\_set\_txqueue\_max\_length()}
{\footnotesize\ttfamily void ns2\+\_\+ip\+\_\+set\+\_\+txqueue\+\_\+max\+\_\+length (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind,  }\item[{unsigned int}]{max\+\_\+length }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+is\+\_\+ip\+\_\+bind()}, \textbf{ priv\+\_\+bind\+::iofd}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+txqueue\+\_\+max\+\_\+length()}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::priv}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__internal_8h_a716007903e26bf9c53638ebceb4292bd}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_nse\_notify\_alive@{ns2\_nse\_notify\_alive}}
\index{ns2\_nse\_notify\_alive@{ns2\_nse\_notify\_alive}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_nse\_notify\_alive()}
{\footnotesize\ttfamily void ns2\+\_\+nse\+\_\+notify\+\_\+alive (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{bool}]{alive }\end{DoxyParamCaption})}

\mbox{\label{gprs__ns2__internal_8h_a7e6f41cc82f675013b36d9d5d166afbc}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_add\_sns\_default\_binds@{ns2\_sns\_add\_sns\_default\_binds}}
\index{ns2\_sns\_add\_sns\_default\_binds@{ns2\_sns\_add\_sns\_default\_binds}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_add\_sns\_default\_binds()}
{\footnotesize\ttfamily int ns2\+\_\+sns\+\_\+add\+\_\+sns\+\_\+default\+\_\+binds (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::dialect}, \textbf{ gprs\+\_\+ns2\+\_\+bind\+\_\+by\+\_\+name()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+DIALECT\+\_\+\+SNS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+LL\+\_\+\+UDP}, \textbf{ gprs\+\_\+ns2\+\_\+sns\+\_\+add\+\_\+bind()}, \textbf{ ip\+\_\+sns\+\_\+default\+\_\+binds}, \textbf{ list}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::ll}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ vty\+\_\+bind\+::name}, \textbf{ OSMO\+\_\+\+ASSERT}, \textbf{ vty\+\_\+nse\+\_\+bind\+::vbind}, and \textbf{ vty\+\_\+nsi}.



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

\mbox{\label{gprs__ns2__internal_8h_a3c691dbefe35ae253e6d6b7586056cb8}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_bss\_fsm\_alloc@{ns2\_sns\_bss\_fsm\_alloc}}
\index{ns2\_sns\_bss\_fsm\_alloc@{ns2\_sns\_bss\_fsm\_alloc}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_bss\_fsm\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ ns2\+\_\+sns\+\_\+bss\+\_\+fsm\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{const char $\ast$}]{id }\end{DoxyParamCaption})}



Allocate an IP-\/\+SNS FSM for the BSS side. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity in which the FSM runs \\
\hline
\mbox{\texttt{ in}}  & {\em id} & string identifier \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
FSM instance on success; NULL on error 
\end{DoxyReturn}


References \textbf{ ns2\+\_\+sns\+\_\+state\+::binds}, \textbf{ gprs\+\_\+ns2\+\_\+sns\+\_\+bss\+\_\+fsm}, \textbf{ GPRS\+\_\+\+SNS\+\_\+\+ROLE\+\_\+\+BSS}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ ns2\+\_\+sns\+\_\+state\+::nse}, \textbf{ ns2\+\_\+sns\+\_\+state\+::num\+\_\+max\+\_\+ip4\+\_\+remote}, \textbf{ ns2\+\_\+sns\+\_\+state\+::num\+\_\+max\+\_\+ip6\+\_\+remote}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+alloc()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+term}, \textbf{ OSMO\+\_\+\+FSM\+\_\+\+TERM\+\_\+\+ERROR}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ ns2\+\_\+sns\+\_\+state\+::procedures}, \textbf{ ns2\+\_\+sns\+\_\+state\+::role}, and \textbf{ ns2\+\_\+sns\+\_\+state\+::sns\+\_\+endpoints}.



Referenced by \textbf{ ns2\+\_\+nse\+\_\+set\+\_\+dialect()}.

\mbox{\label{gprs__ns2__internal_8h_ae2267f26b99bd01aab670f39e9961431}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_dump\_vty@{ns2\_sns\_dump\_vty}}
\index{ns2\_sns\_dump\_vty@{ns2\_sns\_dump\_vty}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_dump\_vty()}
{\footnotesize\ttfamily void ns2\+\_\+sns\+\_\+dump\+\_\+vty (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const char $\ast$}]{prefix,  }\item[{const struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{bool}]{stats }\end{DoxyParamCaption})}



Dump the IP-\/\+SNS state to a vty. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em vty} & VTY to which the state shall be printed \\
\hline
\mbox{\texttt{ in}}  & {\em prefix} & prefix to print at start of each line (typically indenting) \\
\hline
\mbox{\texttt{ in}}  & {\em nse} & NS Entity whose IP-\/\+SNS state shall be printed \\
\hline
\mbox{\texttt{ in}}  & {\em stats} & Whether or not statistics shall also be printed \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ ns2\+\_\+sns\+\_\+elems\+::ip4}, \textbf{ ns2\+\_\+sns\+\_\+elems\+::ip6}, \textbf{ ns2\+\_\+sns\+\_\+state\+::local}, \textbf{ ns2\+\_\+sns\+\_\+state\+::nse}, \textbf{ ns2\+\_\+sns\+\_\+elems\+::num\+\_\+ip4}, \textbf{ ns2\+\_\+sns\+\_\+elems\+::num\+\_\+ip6}, \textbf{ ns2\+\_\+sns\+\_\+state\+::num\+\_\+max\+\_\+ip4\+\_\+remote}, \textbf{ ns2\+\_\+sns\+\_\+state\+::num\+\_\+max\+\_\+ip6\+\_\+remote}, \textbf{ ns2\+\_\+sns\+\_\+state\+::num\+\_\+max\+\_\+nsvcs}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ ns2\+\_\+sns\+\_\+state\+::remote}, \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip4()}, \textbf{ vty\+\_\+dump\+\_\+sns\+\_\+ip6()}, \textbf{ VTY\+\_\+\+NEWLINE}, \textbf{ vty\+\_\+out()}, and \textbf{ vty\+\_\+out\+\_\+fsm\+\_\+inst2()}.



Referenced by \textbf{ dump\+\_\+nse()}.

\mbox{\label{gprs__ns2__internal_8h_aa00bc6bb30e9c934094f7918d327f55d}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_notify\_alive@{ns2\_sns\_notify\_alive}}
\index{ns2\_sns\_notify\_alive@{ns2\_sns\_notify\_alive}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_notify\_alive()}
{\footnotesize\ttfamily void ns2\+\_\+sns\+\_\+notify\+\_\+alive (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{bool}]{alive }\end{DoxyParamCaption})}



References \textbf{ ns2\+\_\+sns\+\_\+state\+::alive}, \textbf{ ns2\+\_\+sns\+\_\+state\+::block\+\_\+no\+\_\+nsvc\+\_\+events}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ GPRS\+\_\+\+SNS\+\_\+\+ST\+\_\+\+CONFIGURED}, \textbf{ GPRS\+\_\+\+SNS\+\_\+\+ST\+\_\+\+LOCAL\+\_\+\+PROCEDURE}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NO\+\_\+\+NSVC}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NSVC\+\_\+\+ALIVE}, \textbf{ ns2\+\_\+sns\+\_\+replace\+\_\+nsvc()}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ sns\+\_\+failed}, \textbf{ ns2\+\_\+sns\+\_\+state\+::sns\+\_\+nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}, and \textbf{ gprs\+\_\+ns2\+\_\+nse\+::sum\+\_\+sig\+\_\+weight}.



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

\mbox{\label{gprs__ns2__internal_8h_adfd57f8125425556f7b4fb4cdf25d3ac}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_replace\_nsvc@{ns2\_sns\_replace\_nsvc}}
\index{ns2\_sns\_replace\_nsvc@{ns2\_sns\_replace\_nsvc}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_replace\_nsvc()}
{\footnotesize\ttfamily void ns2\+\_\+sns\+\_\+replace\+\_\+nsvc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



called when a nsvc is beeing freed or the nsvc became dead 



References \textbf{ ns2\+\_\+sns\+\_\+state\+::alive}, \textbf{ ns2\+\_\+sns\+\_\+state\+::block\+\_\+no\+\_\+nsvc\+\_\+events}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ if()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+NO\+\_\+\+NSVC}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ ns2\+\_\+sns\+\_\+state\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ ns2\+\_\+sns\+\_\+state\+::sns\+\_\+nsvc}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+free\+\_\+nsvc()}, and \textbf{ ns2\+\_\+sns\+\_\+notify\+\_\+alive()}.

\mbox{\label{gprs__ns2__internal_8h_a748970869dfd797c71c35f1456a62cea}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_rx@{ns2\_sns\_rx}}
\index{ns2\_sns\_rx@{ns2\_sns\_rx}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_rx()}
{\footnotesize\ttfamily int ns2\+\_\+sns\+\_\+rx (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})}



main entry point for receiving SNS messages from the network. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the message was received \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & message buffer of the IP-\/\+SNS message \\
\hline
\mbox{\texttt{ in}}  & {\em tp} & parsed TLV structure of message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ if()}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+NOTICE}, \textbf{ LOGNSVC}, \textbf{ LOGPFSML}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+ACK}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+ADD}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CHANGE\+\_\+\+WEIGHT}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG\+\_\+\+ACK}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+CONFIG\+\_\+\+END}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+DELETE}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+SIZE}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+RX\+\_\+\+SIZE\+\_\+\+ACK}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \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}.

\mbox{\label{gprs__ns2__internal_8h_afec7869847907b90ac7d4cbf55bd8157}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_sgsn\_fsm\_alloc@{ns2\_sns\_sgsn\_fsm\_alloc}}
\index{ns2\_sns\_sgsn\_fsm\_alloc@{ns2\_sns\_sgsn\_fsm\_alloc}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_sgsn\_fsm\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ ns2\+\_\+sns\+\_\+sgsn\+\_\+fsm\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse,  }\item[{const char $\ast$}]{id }\end{DoxyParamCaption})}



Allocate an IP-\/\+SNS FSM for the SGSN side. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nse} & NS Entity in which the FSM runs \\
\hline
\mbox{\texttt{ in}}  & {\em id} & string identifier \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
FSM instance on success; NULL on error 
\end{DoxyReturn}


References \textbf{ ns2\+\_\+sns\+\_\+state\+::binds}, \textbf{ gprs\+\_\+ns2\+\_\+sns\+\_\+sgsn\+\_\+fsm}, \textbf{ GPRS\+\_\+\+SNS\+\_\+\+ROLE\+\_\+\+SGSN}, \textbf{ INIT\+\_\+\+LLIST\+\_\+\+HEAD}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ ns2\+\_\+sns\+\_\+state\+::nse}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+alloc()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+term}, \textbf{ OSMO\+\_\+\+FSM\+\_\+\+TERM\+\_\+\+ERROR}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ ns2\+\_\+sns\+\_\+state\+::procedures}, \textbf{ ns2\+\_\+sns\+\_\+state\+::role}, and \textbf{ ns2\+\_\+sns\+\_\+state\+::sns\+\_\+endpoints}.



Referenced by \textbf{ ns2\+\_\+nse\+\_\+set\+\_\+dialect()}.

\mbox{\label{gprs__ns2__internal_8h_ab5754a216e9f9648da979c792eb1a243}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_update\_weights@{ns2\_sns\_update\_weights}}
\index{ns2\_sns\_update\_weights@{ns2\_sns\_update\_weights}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_update\_weights()}
{\footnotesize\ttfamily void ns2\+\_\+sns\+\_\+update\+\_\+weights (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind} $\ast$}]{bind }\end{DoxyParamCaption})}



References \textbf{ ns2\+\_\+sns\+\_\+bind\+::bind}, \textbf{ ns2\+\_\+sns\+\_\+state\+::binds}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ ns2\+\_\+sns\+\_\+state\+::family}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+sockaddr()}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ NS2\+\_\+\+SNS\+\_\+\+EV\+\_\+\+REQ\+\_\+\+CHANGE\+\_\+\+WEIGHT}, \textbf{ gprs\+\_\+ns2\+\_\+inst\+::nse}, \textbf{ ns2\+\_\+sns\+\_\+state\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::nsi}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ osmo\+\_\+sockaddr\+::sa}, and \textbf{ osmo\+\_\+sockaddr\+::u}.



Referenced by \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+bind\+\_\+set\+\_\+sns\+\_\+weight()}.

\mbox{\label{gprs__ns2__internal_8h_aea97419cda0623aa07a331d364734d4f}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_sns\_write\_vty@{ns2\_sns\_write\_vty}}
\index{ns2\_sns\_write\_vty@{ns2\_sns\_write\_vty}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_sns\_write\_vty()}
{\footnotesize\ttfamily void ns2\+\_\+sns\+\_\+write\+\_\+vty (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{const struct \textbf{ gprs\+\_\+ns2\+\_\+nse} $\ast$}]{nse }\end{DoxyParamCaption})}



write IP-\/\+SNS to a vty 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em vty} & VTY to which the state shall be printed \\
\hline
\mbox{\texttt{ in}}  & {\em nse} & NS Entity whose IP-\/\+SNS state shall be printed \\
\hline
\end{DoxyParams}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+::ip}, \textbf{ list}, \textbf{ llist\+\_\+for\+\_\+each\+\_\+entry}, \textbf{ ns2\+\_\+sns\+\_\+state\+::nse}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+\_\+from\+\_\+sockaddr()}, \textbf{ osmo\+\_\+sockaddr\+\_\+str\+::port}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, \textbf{ sns\+\_\+endpoint\+::saddr}, \textbf{ osmo\+\_\+sockaddr\+::sas}, \textbf{ ns2\+\_\+sns\+\_\+state\+::sns\+\_\+endpoints}, \textbf{ osmo\+\_\+sockaddr\+::u}, \textbf{ VTY\+\_\+\+NEWLINE}, and \textbf{ vty\+\_\+out()}.



Referenced by \textbf{ \+\_\+config\+\_\+write\+\_\+ns\+\_\+nse()}.

\mbox{\label{gprs__ns2__internal_8h_a4cb68b068f784c9bc04285ad54c4b970}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_alive@{ns2\_tx\_alive}}
\index{ns2\_tx\_alive@{ns2\_tx\_alive}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_alive()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+alive (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}.



Referenced by \textbf{ alive\+\_\+timeout\+\_\+handler()}, and \textbf{ start\+\_\+test\+\_\+procedure()}.

\mbox{\label{gprs__ns2__internal_8h_a5277a226f04cef71158e341d1c188215}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_alive\_ack@{ns2\_tx\_alive\_ack}}
\index{ns2\_tx\_alive\_ack@{ns2\_tx\_alive\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_alive\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+alive\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+ALIVE\+\_\+\+ACK}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}.

\mbox{\label{gprs__ns2__internal_8h_ae4bb7409b68649f770771aecea8b7f89}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_block@{ns2\_tx\_block}}
\index{ns2\_tx\_block@{ns2\_tx\_block}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_block()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+block (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause,  }\item[{uint16\+\_\+t $\ast$}]{nsvci }\end{DoxyParamCaption})}



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


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em vc} & NS-\/\+VC on which the NS-\/\+BLOCK is to be transmitted \\
\hline
\mbox{\texttt{ in}}  & {\em cause} & Numeric NS Cause value \\
\hline
\mbox{\texttt{ in}}  & {\em nsvci} & if given this NSVCI will be encoded. If NULL the nsvc-\/$>$nsvci will be used. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


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



Referenced by \textbf{ ns2\+\_\+st\+\_\+blocked()}, and \textbf{ ns2\+\_\+st\+\_\+blocked\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_a2aeea899ea197e17c50b25a1984777c4}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_block\_ack@{ns2\_tx\_block\_ack}}
\index{ns2\_tx\_block\_ack@{ns2\_tx\_block\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_block\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+block\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint16\+\_\+t $\ast$}]{nsvci }\end{DoxyParamCaption})}



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
\mbox{\texttt{ in}}  & {\em nsvci} & if given this NSVCI will be encoded. If NULL the nsvc-\/$>$nsvci will be used. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+TX\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ msg}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, \textbf{ osmo\+\_\+htons}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



Referenced by \textbf{ ns2\+\_\+st\+\_\+blocked()}, \textbf{ ns2\+\_\+st\+\_\+unblocked()}, and \textbf{ ns2\+\_\+vc\+\_\+rx()}.

\mbox{\label{gprs__ns2__internal_8h_a21fc801be73dece60dd7f9ce77b2657d}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_reset@{ns2\_tx\_reset}}
\index{ns2\_tx\_reset@{ns2\_tx\_reset}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_reset()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause }\end{DoxyParamCaption})}



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


\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}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


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



Referenced by \textbf{ ns2\+\_\+st\+\_\+reset\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_aab194245c1ecfd389541d16fe925daf4}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_reset\_ack@{ns2\_tx\_reset\_ack}}
\index{ns2\_tx\_reset\_ack@{ns2\_tx\_reset\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_reset\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+reset\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



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


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC used for transmission \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


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



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

\mbox{\label{gprs__ns2__internal_8h_a736dac1217712ea6a4623fb3573f8148}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_ack@{ns2\_tx\_sns\_ack}}
\index{ns2\_tx\_sns\_ack@{ns2\_tx\_sns\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$}]{ip6\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip6\+\_\+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\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ cause}, \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+str()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSVC}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+v\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+LIST}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+LIST}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ACK}.



Referenced by \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+add()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+change()}, and \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+delete()}.

\mbox{\label{gprs__ns2__internal_8h_a484cc36dcc1751bd63ca1cf46372214c}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_add@{ns2\_tx\_sns\_add}}
\index{ns2\_tx\_sns\_add@{ns2\_tx\_sns\_add}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_add()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+add (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{trans\+\_\+id,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$}]{ip4\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip4\+\_\+elems,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$}]{ip6\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip6\+\_\+elems }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+ADD as per Section 9.\+3.\+2. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+CONFIG \\
\hline
\mbox{\texttt{ in}}  & {\em trans\+\_\+id} & The transaction id \\
\hline
\mbox{\texttt{ in}}  & {\em ip4\+\_\+elems} & Array of IPv4 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip4\+\_\+elems} & number of ip4\+\_\+elems \\
\hline
\mbox{\texttt{ in}}  & {\em ip6\+\_\+elems} & Array of IPv6 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip6\+\_\+elems} & number of ip6\+\_\+elems \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+procedure()}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+ADD}.



Referenced by \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_a6ae52b82c59110ecf857ee1a91af12c2}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_change\_weight@{ns2\_tx\_sns\_change\_weight}}
\index{ns2\_tx\_sns\_change\_weight@{ns2\_tx\_sns\_change\_weight}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_change\_weight()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+change\+\_\+weight (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{trans\+\_\+id,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$}]{ip4\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip4\+\_\+elems,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$}]{ip6\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip6\+\_\+elems }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+CHANGE-\/\+WEIGHT as per Section 9.\+3.\+3. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+CONFIG \\
\hline
\mbox{\texttt{ in}}  & {\em trans\+\_\+id} & The transaction id \\
\hline
\mbox{\texttt{ in}}  & {\em ip4\+\_\+elems} & Array of IPv4 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip4\+\_\+elems} & number of ip4\+\_\+elems \\
\hline
\mbox{\texttt{ in}}  & {\em ip6\+\_\+elems} & Array of IPv6 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip6\+\_\+elems} & number of ip6\+\_\+elems \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+procedure()}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CHANGE\+\_\+\+WEIGHT}.



Referenced by \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_a007abf66ae6853224c53878e9d089c8a}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_config@{ns2\_tx\_sns\_config}}
\index{ns2\_tx\_sns\_config@{ns2\_tx\_sns\_config}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_config()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+config (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{bool}]{end\+\_\+flag,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$}]{ip4\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip4\+\_\+elems,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$}]{ip6\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip6\+\_\+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\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSVC}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ msgb\+\_\+v\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv4\+\_\+\+LIST}, \textbf{ NS\+\_\+\+IE\+\_\+\+IPv6\+\_\+\+LIST}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG}.



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

\mbox{\label{gprs__ns2__internal_8h_a348bf9d5913c312bc7a248bc7b918b84}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_config\_ack@{ns2\_tx\_sns\_config\_ack}}
\index{ns2\_tx\_sns\_config\_ack@{ns2\_tx\_sns\_config\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_config\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+config\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ cause}, \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+str()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+TX\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSVC}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+CONFIG\+\_\+\+ACK}.



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

\mbox{\label{gprs__ns2__internal_8h_a07c10c2f7b982cee616be45695deb2be}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_del@{ns2\_tx\_sns\_del}}
\index{ns2\_tx\_sns\_del@{ns2\_tx\_sns\_del}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_del()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+del (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{trans\+\_\+id,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip4\+\_\+elem} $\ast$}]{ip4\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip4\+\_\+elems,  }\item[{const struct \textbf{ gprs\+\_\+ns\+\_\+ie\+\_\+ip6\+\_\+elem} $\ast$}]{ip6\+\_\+elems,  }\item[{unsigned int}]{num\+\_\+ip6\+\_\+elems }\end{DoxyParamCaption})}



Encode + Transmit a SNS-\/\+DEL as per Section 9.\+3.\+6. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC through which to transmit the SNS-\/\+CONFIG \\
\hline
\mbox{\texttt{ in}}  & {\em trans\+\_\+id} & The transaction id \\
\hline
\mbox{\texttt{ in}}  & {\em ip4\+\_\+elems} & Array of IPv4 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip4\+\_\+elems} & number of ip4\+\_\+elems \\
\hline
\mbox{\texttt{ in}}  & {\em ip6\+\_\+elems} & Array of IPv6 Elements \\
\hline
\mbox{\texttt{ in}}  & {\em num\+\_\+ip6\+\_\+elems} & number of ip6\+\_\+elems \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ ns2\+\_\+tx\+\_\+sns\+\_\+procedure()}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+DELETE}.



Referenced by \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+local\+\_\+procedure\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_a6f260734d563e80c92a771525dd02a1e}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_size@{ns2\_tx\_sns\_size}}
\index{ns2\_tx\_sns\_size@{ns2\_tx\_sns\_size}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_size()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+size (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{bool}]{reset\+\_\+flag,  }\item[{uint16\+\_\+t}]{max\+\_\+nr\+\_\+nsvc,  }\item[{int}]{ip4\+\_\+ep\+\_\+nr,  }\item[{int}]{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 ($<$ 0 will omit the TLV) \\
\hline
\mbox{\texttt{ in}}  & {\em ip6\+\_\+ep\+\_\+nr} & Number of IPv6 endpoints ($<$ 0 will omit the TLV) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative in case of error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSVC}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tv16\+\_\+put()}, \textbf{ msgb\+\_\+tv\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \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{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE}.



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

\mbox{\label{gprs__ns2__internal_8h_a72b95357595d7a14fd98fabaa98a025f}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_sns\_size\_ack@{ns2\_tx\_sns\_size\_ack}}
\index{ns2\_tx\_sns\_size\_ack@{ns2\_tx\_sns\_size\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_sns\_size\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+sns\+\_\+size\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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\+\_\+ns2\+\_\+nse\+::bss\+\_\+sns\+\_\+fi}, \textbf{ cause}, \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+str()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSVC}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \textbf{ NS\+\_\+\+IE\+\_\+\+CAUSE}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ SNS\+\_\+\+PDUT\+\_\+\+SIZE\+\_\+\+ACK}.



Referenced by \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+sgsn()}.

\mbox{\label{gprs__ns2__internal_8h_ad56f996a8fc07656840ea8b1f2962c02}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_status@{ns2\_tx\_status}}
\index{ns2\_tx\_status@{ns2\_tx\_status}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_status()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+status (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{cause,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{struct \textbf{ msgb} $\ast$}]{orig\+\_\+msg,  }\item[{uint16\+\_\+t $\ast$}]{nsvci }\end{DoxyParamCaption})}



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


\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
\mbox{\texttt{ in}}  & {\em nsvci} & if given this NSVCI will be encoded. If NULL the nsvc-\/$>$nsvci will be used. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::bind}, \textbf{ bvci}, \textbf{ cause}, \textbf{ gprs\+\_\+ns2\+\_\+cause\+\_\+str()}, \textbf{ msgb\+::l2h}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ msgb\+\_\+length()}, \textbf{ msgb\+\_\+put()}, \textbf{ msgb\+\_\+tvlv\+\_\+put()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+bind\+::mtu}, \textbf{ ns2\+\_\+msgb\+\_\+alloc()}, \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{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, \textbf{ osmo\+\_\+htons}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, and \textbf{ TVLV\+\_\+\+GROSS\+\_\+\+LEN()}.



Referenced by \textbf{ ns2\+\_\+vc\+\_\+fsm\+\_\+allstate\+\_\+action()}, and \textbf{ ns2\+\_\+vc\+\_\+rx()}.

\mbox{\label{gprs__ns2__internal_8h_aa43653f3496a22b23aae04860ed19736}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_unblock@{ns2\_tx\_unblock}}
\index{ns2\_tx\_unblock@{ns2\_tx\_unblock}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_unblock()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+unblock (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\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{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}.



Referenced by \textbf{ ns2\+\_\+st\+\_\+blocked\+\_\+onenter()}.

\mbox{\label{gprs__ns2__internal_8h_a4dc992a745fc6fc153f54bba97c3921c}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_unblock\_ack@{ns2\_tx\_unblock\_ack}}
\index{ns2\_tx\_unblock\_ack@{ns2\_tx\_unblock\_ack}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_unblock\_ack()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+unblock\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



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


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


References \textbf{ ERR\+\_\+\+IF\+\_\+\+NSVC\+\_\+\+USES\+\_\+\+SNS}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ ns2\+\_\+tx\+\_\+simple()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNBLOCK\+\_\+\+ACK}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}.



Referenced by \textbf{ ns2\+\_\+st\+\_\+blocked()}, and \textbf{ ns2\+\_\+st\+\_\+unblocked()}.

\mbox{\label{gprs__ns2__internal_8h_aeae1ac28e0f5b8c717db52e013719564}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_tx\_unit\_data@{ns2\_tx\_unit\_data}}
\index{ns2\_tx\_unit\_data@{ns2\_tx\_unit\_data}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_tx\_unit\_data()}
{\footnotesize\ttfamily int ns2\+\_\+tx\+\_\+unit\+\_\+data (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint16\+\_\+t}]{bvci,  }\item[{uint8\+\_\+t}]{sducontrol,  }\item[{struct \textbf{ msgb} $\ast$}]{msg }\end{DoxyParamCaption})}



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


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nsvc} & NS-\/\+VC on which the NS-\/\+UNITDATA is to be transmitted \\
\hline
\mbox{\texttt{ in}}  & {\em bvci} & BVCI to encode in NS-\/\+UNITDATA header \\
\hline
\mbox{\texttt{ in}}  & {\em sducontrol} & SDU control octet of NS header \\
\hline
\mbox{\texttt{ in}}  & {\em msg} & message buffer containing payload \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 in case of success 
\end{DoxyReturn}


References \textbf{ bvci}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::data}, \textbf{ if()}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSE}, \textbf{ LOG\+\_\+\+CTX\+\_\+\+GB\+\_\+\+NSVC}, \textbf{ LOG\+\_\+\+NS\+\_\+\+DATA}, \textbf{ log\+\_\+set\+\_\+context()}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGL\+\_\+\+INFO}, \textbf{ LOGNSVC}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ msgb\+\_\+push()}, \textbf{ NS\+\_\+\+PDUT\+\_\+\+UNITDATA}, \textbf{ ns\+\_\+vc\+\_\+tx()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nse}, and \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}.



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

\mbox{\label{gprs__ns2__internal_8h_a9c65ce2043db24730bbef93bc95531fc}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_validate@{ns2\_validate}}
\index{ns2\_validate@{ns2\_validate}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_validate()}
{\footnotesize\ttfamily int ns2\+\_\+validate (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{uint8\+\_\+t}]{pdu\+\_\+type,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp,  }\item[{uint8\+\_\+t $\ast$}]{cause }\end{DoxyParamCaption})}



References \textbf{ cause}, \textbf{ msg}, \textbf{ msgb\+\_\+l2len()}, \textbf{ ns2\+\_\+validate\+\_\+block()}, \textbf{ ns2\+\_\+validate\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+validate\+\_\+reset()}, \textbf{ ns2\+\_\+validate\+\_\+reset\+\_\+ack()}, \textbf{ ns2\+\_\+validate\+\_\+status()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+PROTO\+\_\+\+ERR\+\_\+\+UNSPEC}, \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}, and \textbf{ pdu\+\_\+type}.



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

\mbox{\label{gprs__ns2__internal_8h_ad70d7d94bd162da15e45feb7baf677e6}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_block@{ns2\_vc\_block}}
\index{ns2\_vc\_block@{ns2\_vc\_block}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_block()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+block (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Block a NS-\/\+VC. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+BLOCK}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__internal_8h_ac902d44031c2e069dbff891a17ade203}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_force\_unconfigured@{ns2\_vc\_force\_unconfigured}}
\index{ns2\_vc\_force\_unconfigured@{ns2\_vc\_force\_unconfigured}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_force\_unconfigured()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+force\+\_\+unconfigured (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Reset a NS-\/\+VC FSM. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+FORCE\+\_\+\+UNCONFIGURED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}.



Referenced by \textbf{ fr\+\_\+dlci\+\_\+status\+\_\+cb()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+all\+\_\+action\+\_\+sgsn()}, and \textbf{ nsvc\+\_\+force\+\_\+unconf\+\_\+cb()}.

\mbox{\label{gprs__ns2__internal_8h_a913e35985349bd0c17f22035e93fe885}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_fsm\_alloc@{ns2\_vc\_fsm\_alloc}}
\index{ns2\_vc\_fsm\_alloc@{ns2\_vc\_fsm\_alloc}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_fsm\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fsm\+\_\+inst} $\ast$ ns2\+\_\+vc\+\_\+fsm\+\_\+alloc (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{const char $\ast$}]{id,  }\item[{bool}]{initiator }\end{DoxyParamCaption})}



gprs\+\_\+ns2\+\_\+vc\+\_\+fsm\+\_\+alloc 


\begin{DoxyParams}{Parameters}
{\em ctx} & \\
\hline
{\em vc} & \\
\hline
{\em id} & a char representation of the virtual curcuit \\
\hline
{\em initiator} & initiator is the site which starts the connection. Usually the BSS. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
NULL on error, otherwise the fsm 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::alive}, \textbf{ alive\+\_\+timeout\+\_\+handler()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::initiator}, \textbf{ LOGL\+\_\+\+DEBUG}, \textbf{ ns2\+\_\+vc\+\_\+fsm}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+alloc()}, \textbf{ osmo\+\_\+timer\+\_\+setup()}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}, and \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::timer}.



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

\mbox{\label{gprs__ns2__internal_8h_ae977d9683f6c393c6778a7b9a1c8ec5b}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_fsm\_start@{ns2\_vc\_fsm\_start}}
\index{ns2\_vc\_fsm\_start@{ns2\_vc\_fsm\_start}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_fsm\_start()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+fsm\+\_\+start (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Start a NS-\/\+VC FSM. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+START}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNCONFIGURED}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}.



Referenced by \textbf{ fr\+\_\+dlci\+\_\+status\+\_\+cb()}, \textbf{ gprs\+\_\+ns2\+\_\+ip\+\_\+connect()}, \textbf{ gprs\+\_\+ns2\+\_\+start\+\_\+alive\+\_\+all\+\_\+nsvcs()}, \textbf{ handle\+\_\+nsfrgre\+\_\+read()}, \textbf{ handle\+\_\+nsip\+\_\+recvfrom()}, and \textbf{ nsvc\+\_\+force\+\_\+unconf\+\_\+cb()}.

\mbox{\label{gprs__ns2__internal_8h_a683575788f386dc72250ed8afc0140d5}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_is\_alive@{ns2\_vc\_is\_alive}}
\index{ns2\_vc\_is\_alive@{ns2\_vc\_is\_alive}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_is\_alive()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+is\+\_\+alive (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}

\mbox{\label{gprs__ns2__internal_8h_af8aef72b70ff1417147064845df03430}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_is\_unblocked@{ns2\_vc\_is\_unblocked}}
\index{ns2\_vc\_is\_unblocked@{ns2\_vc\_is\_unblocked}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_is\_unblocked()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+is\+\_\+unblocked (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



is the given NS-\/\+VC unblocked? 



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+ST\+\_\+\+UNBLOCKED}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::state}.



Referenced by \textbf{ ns2\+\_\+count\+\_\+transfer\+\_\+cap()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+first()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+modulo()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+signal()}, \textbf{ ns2\+\_\+load\+\_\+sharing\+\_\+weight\+\_\+modulo()}, \textbf{ ns2\+\_\+nse\+\_\+data\+\_\+sum()}, \textbf{ ns2\+\_\+sns\+\_\+notify\+\_\+alive()}, \textbf{ ns2\+\_\+sns\+\_\+replace\+\_\+nsvc()}, \textbf{ ns2\+\_\+sns\+\_\+st\+\_\+configured\+\_\+onenter()}, and \textbf{ ns2\+\_\+vty\+\_\+dump\+\_\+nsvc()}.

\mbox{\label{gprs__ns2__internal_8h_a0dc6760a6294bbb0ac05a3d85e6b68db}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_reset@{ns2\_vc\_reset}}
\index{ns2\_vc\_reset@{ns2\_vc\_reset}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_reset()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+reset (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Reset a NS-\/\+VC. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+RESET}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__internal_8h_a1de00620baa57622669440ee18b7532f}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_rx@{ns2\_vc\_rx}}
\index{ns2\_vc\_rx@{ns2\_vc\_rx}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_rx()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+rx (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{struct \textbf{ msgb} $\ast$}]{msg,  }\item[{struct \textbf{ tlv\+\_\+parsed} $\ast$}]{tp }\end{DoxyParamCaption})}



entry point for messages from the driver/\+VL 


\begin{DoxyParams}{Parameters}
{\em nsvc} & virtual circuit on which the message was received \\
\hline
{\em msg} & message that was received \\
\hline
{\em tp} & parsed TLVs of the received message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ cause}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ get\+\_\+value\+\_\+string()}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+ALIVE\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+BLOCK\+\_\+\+FOREIGN}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+RESET\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+STATUS}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNBLOCK\+\_\+\+ACK}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+RX\+\_\+\+UNITDATA}, \textbf{ gprs\+\_\+ns2\+\_\+nsvc\+\_\+by\+\_\+nsvci()}, \textbf{ gprs\+\_\+ns\+\_\+pdu\+\_\+strings}, \textbf{ if()}, \textbf{ LOG\+\_\+\+NS\+\_\+\+SIGNAL}, \textbf{ LOGL\+\_\+\+ERROR}, \textbf{ LOGPFSML}, \textbf{ msg}, \textbf{ msgb\+\_\+free()}, \textbf{ ns2\+\_\+tx\+\_\+block\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+reset\+\_\+ack()}, \textbf{ ns2\+\_\+tx\+\_\+status()}, \textbf{ ns2\+\_\+validate()}, \textbf{ NS\+\_\+\+CAUSE\+\_\+\+NSVC\+\_\+\+UNKNOWN}, \textbf{ NS\+\_\+\+IE\+\_\+\+NSEI}, \textbf{ NS\+\_\+\+IE\+\_\+\+VCI}, \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{ gprs\+\_\+ns2\+\_\+vc\+::nse}, \textbf{ nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsei}, \textbf{ gprs\+\_\+ns2\+\_\+nse\+::nsi}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, \textbf{ gprs\+\_\+ns\+\_\+hdr\+::pdu\+\_\+type}, \textbf{ TLVP\+\_\+\+PRESENT}, and \textbf{ tlvp\+\_\+val16be()}.

\mbox{\label{gprs__ns2__internal_8h_a994ec40d741138b5b9ab544cdf9d0505}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vc\_unblock@{ns2\_vc\_unblock}}
\index{ns2\_vc\_unblock@{ns2\_vc\_unblock}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vc\_unblock()}
{\footnotesize\ttfamily int ns2\+\_\+vc\+\_\+unblock (\begin{DoxyParamCaption}\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc }\end{DoxyParamCaption})}



Unblock a NS-\/\+VC. 


\begin{DoxyParams}{Parameters}
{\em nsvc} & the virtual circuit \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success; negative on error 
\end{DoxyReturn}


References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ GPRS\+\_\+\+NS2\+\_\+\+EV\+\_\+\+REQ\+\_\+\+OM\+\_\+\+UNBLOCK}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+\_\+priv\+::nsvc}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+dispatch}, and \textbf{ osmo\+\_\+fsm\+\_\+inst\+::priv}.



Referenced by \textbf{ DEFUN()}.

\mbox{\label{gprs__ns2__internal_8h_a5a1056d649a55dbe250de52899370ddf}} 
\index{gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}!ns2\_vty\_dump\_nsvc@{ns2\_vty\_dump\_nsvc}}
\index{ns2\_vty\_dump\_nsvc@{ns2\_vty\_dump\_nsvc}!gprs\_ns2\_internal.h@{gprs\_ns2\_internal.h}}
\doxysubsubsection{ns2\_vty\_dump\_nsvc()}
{\footnotesize\ttfamily void ns2\+\_\+vty\+\_\+dump\+\_\+nsvc (\begin{DoxyParamCaption}\item[{struct \textbf{ vty} $\ast$}]{vty,  }\item[{struct \textbf{ gprs\+\_\+ns2\+\_\+vc} $\ast$}]{nsvc,  }\item[{bool}]{stats }\end{DoxyParamCaption})}



References \textbf{ gprs\+\_\+ns2\+\_\+vc\+::ctrg}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::data\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::fi}, \textbf{ gprs\+\_\+ns2\+\_\+ll\+\_\+str()}, \textbf{ ns2\+\_\+vc\+\_\+is\+\_\+unblocked()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::nsvci\+\_\+is\+\_\+valid}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::om\+\_\+blocked}, \textbf{ osmo\+\_\+fsm\+\_\+inst\+\_\+state\+\_\+name()}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::persistent}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::sig\+\_\+weight}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::statg}, \textbf{ gprs\+\_\+ns2\+\_\+vc\+::ts\+\_\+alive\+\_\+change}, \textbf{ vty\+\_\+out()}, \textbf{ vty\+\_\+out\+\_\+newline()}, \textbf{ vty\+\_\+out\+\_\+rate\+\_\+ctr\+\_\+group()}, \textbf{ vty\+\_\+out\+\_\+stat\+\_\+item\+\_\+group()}, and \textbf{ vty\+\_\+out\+\_\+uptime()}.



Referenced by \textbf{ DEFUN()}, \textbf{ dump\+\_\+nse()}, and \textbf{ dump\+\_\+vty()}.

