libosmogb  1.5.1.118-645a
Osmocom Gb library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
gprs_ns2_sns.c File Reference

NS Sub-Network Service Protocol implementation 3GPP TS 08.16 version 8.0.1 Release 1999 / ETSI TS 101 299 V8.0.1 (2002-05) as well as its successor 3GPP TS 48.016. More...

#include <errno.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdint.h>
#include <osmocom/core/fsm.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/socket.h>
#include <osmocom/core/sockaddr_str.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/gprs/gprs_msgb.h>
#include <osmocom/gprs/gprs_ns2.h>
#include <osmocom/gprs/protocol/gsm_08_16.h>
#include "gprs_ns2_internal.h"
#include <osmocom/vty/vty.h>
#include <osmocom/vty/misc.h>

Data Structures

struct  sns_endpoint
 
struct  ns2_sns_bind
 
struct  ns2_sns_state
 

Macros

#define S(x)   (1 << (x))
 
#define ip4_weight_sum_data(x, y)   ip4_weight_sum(x, y, true)
 
#define ip4_weight_sum_sig(x, y)   ip4_weight_sum(x, y, false)
 
#define ip6_weight_sum_data(x, y)   ip6_weight_sum(x, y, true)
 
#define ip6_weight_sum_sig(x, y)   ip6_weight_sum(x, y, false)
 
#define nss_weight_sum_data(nss)   nss_weight_sum(nss, true)
 
#define nss_weight_sum_sig(nss)   nss_weight_sum(nss, false)
 

Enumerations

enum  ns2_sns_type {
  IPv4,
  IPv6
}
 
enum  ns2_sns_role {
  GPRS_SNS_ROLE_BSS,
  GPRS_SNS_ROLE_SGSN
}
 
enum  gprs_sns_bss_state {
  GPRS_SNS_ST_UNCONFIGURED,
  GPRS_SNS_ST_BSS_SIZE,
  GPRS_SNS_ST_BSS_CONFIG_BSS,
  GPRS_SNS_ST_BSS_CONFIG_SGSN,
  GPRS_SNS_ST_CONFIGURED,
  GPRS_SNS_ST_SGSN_WAIT_CONFIG,
  GPRS_SNS_ST_SGSN_WAIT_CONFIG_ACK,
  GPRS_SNS_ST_UNCONFIGURED,
  GPRS_SNS_ST_SIZE,
  GPRS_SNS_ST_CONFIG_BSS,
  GPRS_SNS_ST_CONFIG_SGSN,
  GPRS_SNS_ST_CONFIGURED
}
 
enum  gprs_sns_event {
  GPRS_SNS_EV_REQ_SELECT_ENDPOINT,
  GPRS_SNS_EV_RX_SIZE,
  GPRS_SNS_EV_RX_SIZE_ACK,
  GPRS_SNS_EV_RX_CONFIG,
  GPRS_SNS_EV_RX_CONFIG_END,
  GPRS_SNS_EV_RX_CONFIG_ACK,
  GPRS_SNS_EV_RX_ADD,
  GPRS_SNS_EV_RX_DELETE,
  GPRS_SNS_EV_RX_CHANGE_WEIGHT,
  GPRS_SNS_EV_RX_ACK,
  GPRS_SNS_EV_REQ_NO_NSVC,
  GPRS_SNS_EV_REQ_NSVC_ALIVE,
  GPRS_SNS_EV_REQ_ADD_BIND,
  GPRS_SNS_EV_REQ_DELETE_BIND,
  GPRS_SNS_EV_START,
  GPRS_SNS_EV_SIZE,
  GPRS_SNS_EV_SIZE_ACK,
  GPRS_SNS_EV_CONFIG,
  GPRS_SNS_EV_CONFIG_END,
  GPRS_SNS_EV_CONFIG_ACK,
  GPRS_SNS_EV_ADD,
  GPRS_SNS_EV_DELETE,
  GPRS_SNS_EV_CHANGE_WEIGHT
}
 

Functions

static struct gprs_ns2_nsense_inst_from_fi (struct osmo_fsm_inst *fi)
 
static int ip4_weight_sum (const struct gprs_ns_ie_ip4_elem *ip4, unsigned int num, bool data_weight)
 
static int ip6_weight_sum (const struct gprs_ns_ie_ip6_elem *ip6, unsigned int num, bool data_weight)
 
static int nss_weight_sum (const struct ns2_sns_state *nss, bool data_weight)
 
static struct gprs_ns2_vcnsvc_by_ip4_elem (struct gprs_ns2_nse *nse, const struct gprs_ns_ie_ip4_elem *ip4)
 
static struct gprs_ns2_vcnsvc_by_ip6_elem (struct gprs_ns2_nse *nse, const struct gprs_ns_ie_ip6_elem *ip6)
 
const struct osmo_sockaddrgprs_ns2_nse_sns_remote (struct gprs_ns2_nse *nse)
 Return the initial SNS remote socket address. More...
 
void ns2_sns_replace_nsvc (struct gprs_ns2_vc *nsvc)
 called when a nsvc is beeing freed or the nsvc became dead More...
 
static void ns2_clear_ipv46_entries_local (struct ns2_sns_state *gss)
 
static void ns2_clear_ipv46_entries_remote (struct ns2_sns_state *gss)
 
static void ns2_vc_create_ip (struct osmo_fsm_inst *fi, struct gprs_ns2_nse *nse, const struct osmo_sockaddr *remote, uint8_t sig_weight, uint8_t data_weight)
 
static void ns2_nsvc_create_ip4 (struct osmo_fsm_inst *fi, struct gprs_ns2_nse *nse, const struct gprs_ns_ie_ip4_elem *ip4)
 
static void ns2_nsvc_create_ip6 (struct osmo_fsm_inst *fi, struct gprs_ns2_nse *nse, const struct gprs_ns_ie_ip6_elem *ip6)
 
static struct gprs_ns2_vcnsvc_for_bind_and_remote (struct gprs_ns2_nse *nse, struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote)
 
static int create_missing_nsvcs (struct osmo_fsm_inst *fi)
 
static int add_remote_ip4_elem (struct ns2_sns_state *gss, const struct gprs_ns_ie_ip4_elem *ip4)
 
static int remove_remote_ip4_elem (struct ns2_sns_state *gss, const struct gprs_ns_ie_ip4_elem *ip4)
 
static int update_remote_ip4_elem (struct ns2_sns_state *gss, const struct gprs_ns_ie_ip4_elem *ip4)
 
static int add_remote_ip6_elem (struct ns2_sns_state *gss, const struct gprs_ns_ie_ip6_elem *ip6)
 
static int remove_remote_ip6_elem (struct ns2_sns_state *gss, const struct gprs_ns_ie_ip6_elem *ip6)
 
static int update_remote_ip6_elem (struct ns2_sns_state *gss, const struct gprs_ns_ie_ip6_elem *ip6)
 
static int do_sns_change_weight (struct osmo_fsm_inst *fi, const struct gprs_ns_ie_ip4_elem *ip4, const struct gprs_ns_ie_ip6_elem *ip6)
 
static int do_sns_delete (struct osmo_fsm_inst *fi, const struct gprs_ns_ie_ip4_elem *ip4, const struct gprs_ns_ie_ip6_elem *ip6)
 
static int do_sns_add (struct osmo_fsm_inst *fi, const struct gprs_ns_ie_ip4_elem *ip4, const struct gprs_ns_ie_ip6_elem *ip6)
 
static void ns2_sns_st_bss_unconfigured (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_bss_size (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static int ns2_sns_count_num_local_ep (struct osmo_fsm_inst *fi, enum ns2_sns_type stype)
 
static void ns2_sns_compute_local_ep_from_binds (struct osmo_fsm_inst *fi)
 
static void ns2_sns_st_bss_size_onenter (struct osmo_fsm_inst *fi, uint32_t old_state)
 
static void ns2_sns_st_bss_config_bss (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_bss_config_bss_onenter (struct osmo_fsm_inst *fi, uint32_t old_state)
 
static int ns_sns_configured_timeout (struct osmo_fsm_inst *fi)
 
static int ns_sns_append_remote_eps (struct osmo_fsm_inst *fi, const struct tlv_parsed *tp)
 
static void ns2_sns_st_bss_config_sgsn_onenter (struct osmo_fsm_inst *fi, uint32_t old_state)
 
static void ns2_sns_st_bss_config_sgsn (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_configured_add (struct osmo_fsm_inst *fi, struct ns2_sns_state *gss, struct tlv_parsed *tp)
 
static void ns2_sns_st_configured_delete (struct osmo_fsm_inst *fi, struct ns2_sns_state *gss, struct tlv_parsed *tp)
 
static void ns2_sns_st_configured_change (struct osmo_fsm_inst *fi, struct ns2_sns_state *gss, struct tlv_parsed *tp)
 
static void ns2_sns_st_configured (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_configured_onenter (struct osmo_fsm_inst *fi, uint32_t old_state)
 
static int ns2_sns_fsm_bss_timer_cb (struct osmo_fsm_inst *fi)
 
static void ns2_sns_st_all_action (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_all_action_bss (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
struct osmo_fsm_instns2_sns_bss_fsm_alloc (struct gprs_ns2_nse *nse, const char *id)
 Allocate an IP-SNS FSM for the BSS side. More...
 
int ns2_sns_rx (struct gprs_ns2_vc *nsvc, struct msgb *msg, struct tlv_parsed *tp)
 main entry point for receiving SNS messages from the network. More...
 
static void vty_dump_sns_ip4 (struct vty *vty, const char *prefix, const struct gprs_ns_ie_ip4_elem *ip4)
 
static void vty_dump_sns_ip6 (struct vty *vty, const char *prefix, const struct gprs_ns_ie_ip6_elem *ip6)
 
void ns2_sns_dump_vty (struct vty *vty, const char *prefix, const struct gprs_ns2_nse *nse, bool stats)
 Dump the IP-SNS state to a vty. More...
 
void ns2_sns_write_vty (struct vty *vty, const struct gprs_ns2_nse *nse)
 write IP-SNS to a vty More...
 
static struct sns_endpointns2_get_sns_endpoint (struct ns2_sns_state *state, const struct osmo_sockaddr *saddr)
 
int gprs_ns2_sns_add_endpoint (struct gprs_ns2_nse *nse, const struct osmo_sockaddr *saddr)
 gprs_ns2_sns_add_endpoint More...
 
int gprs_ns2_sns_del_endpoint (struct gprs_ns2_nse *nse, const struct osmo_sockaddr *saddr)
 gprs_ns2_sns_del_endpoint More...
 
int gprs_ns2_sns_count (struct gprs_ns2_nse *nse)
 gprs_ns2_sns_count More...
 
void ns2_sns_notify_alive (struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc, bool alive)
 
int gprs_ns2_sns_add_bind (struct gprs_ns2_nse *nse, struct gprs_ns2_vc_bind *bind)
 
int gprs_ns2_sns_del_bind (struct gprs_ns2_nse *nse, struct gprs_ns2_vc_bind *bind)
 
void ns2_sns_update_weights (struct gprs_ns2_vc_bind *bind)
 
static void ns2_sns_st_sgsn_unconfigured (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_sgsn_wait_config (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static void ns2_sns_st_sgsn_wait_config_ack_onenter (struct osmo_fsm_inst *fi, uint32_t old_state)
 
static void ns2_sns_st_sgsn_wait_config_ack (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
static int ns2_sns_fsm_sgsn_timer_cb (struct osmo_fsm_inst *fi)
 
static void ns2_sns_st_all_action_sgsn (struct osmo_fsm_inst *fi, uint32_t event, void *data)
 
struct osmo_fsm_instns2_sns_sgsn_fsm_alloc (struct gprs_ns2_nse *nse, const char *id)
 Allocate an IP-SNS FSM for the SGSN side. More...
 
static __attribute__ ((constructor))
 

Variables

static const struct value_string gprs_sns_event_names []
 
static const struct osmo_fsm_state ns2_sns_bss_states []
 
static struct osmo_fsm gprs_ns2_sns_bss_fsm
 
static const struct osmo_fsm_state ns2_sns_sgsn_states []
 
static struct osmo_fsm gprs_ns2_sns_sgsn_fsm
 

Detailed Description

NS Sub-Network Service Protocol implementation 3GPP TS 08.16 version 8.0.1 Release 1999 / ETSI TS 101 299 V8.0.1 (2002-05) as well as its successor 3GPP TS 48.016.

Macro Definition Documentation

#define ip4_weight_sum_data (   x,
 
)    ip4_weight_sum(x, y, true)
#define ip4_weight_sum_sig (   x,
 
)    ip4_weight_sum(x, y, false)
#define ip6_weight_sum_data (   x,
 
)    ip6_weight_sum(x, y, true)
#define ip6_weight_sum_sig (   x,
 
)    ip6_weight_sum(x, y, false)
#define nss_weight_sum_data (   nss)    nss_weight_sum(nss, true)
#define nss_weight_sum_sig (   nss)    nss_weight_sum(nss, false)
#define S (   x)    (1 << (x))

Enumeration Type Documentation

Enumerator
GPRS_SNS_ST_UNCONFIGURED 
GPRS_SNS_ST_BSS_SIZE 

SNS-SIZE procedure ongoing.

GPRS_SNS_ST_BSS_CONFIG_BSS 

SNS-CONFIG procedure (BSS->SGSN) ongoing.

GPRS_SNS_ST_BSS_CONFIG_SGSN 

SNS-CONFIG procedure (SGSN->BSS) ongoing.

GPRS_SNS_ST_CONFIGURED 
GPRS_SNS_ST_SGSN_WAIT_CONFIG 
GPRS_SNS_ST_SGSN_WAIT_CONFIG_ACK 
GPRS_SNS_ST_UNCONFIGURED 
GPRS_SNS_ST_SIZE 

SNS-SIZE procedure ongoing.

GPRS_SNS_ST_CONFIG_BSS 

SNS-CONFIG procedure (BSS->SGSN) ongoing.

GPRS_SNS_ST_CONFIG_SGSN 

SNS-CONFIG procedure (SGSN->BSS) ongoing.

GPRS_SNS_ST_CONFIGURED 
Enumerator
GPRS_SNS_EV_REQ_SELECT_ENDPOINT 

Select a SNS endpoint from the list.

GPRS_SNS_EV_RX_SIZE 
GPRS_SNS_EV_RX_SIZE_ACK 
GPRS_SNS_EV_RX_CONFIG 
GPRS_SNS_EV_RX_CONFIG_END 

SNS-CONFIG with end flag received.

GPRS_SNS_EV_RX_CONFIG_ACK 
GPRS_SNS_EV_RX_ADD 
GPRS_SNS_EV_RX_DELETE 
GPRS_SNS_EV_RX_CHANGE_WEIGHT 
GPRS_SNS_EV_RX_ACK 

Rx of SNS-ACK (response to ADD/DELETE/CHG_WEIGHT.

GPRS_SNS_EV_REQ_NO_NSVC 

no more NS-VC remaining (all dead)

GPRS_SNS_EV_REQ_NSVC_ALIVE 

a NS-VC became alive

GPRS_SNS_EV_REQ_ADD_BIND 

add a new local bind to this NSE

GPRS_SNS_EV_REQ_DELETE_BIND 

remove a local bind from this NSE

GPRS_SNS_EV_START 
GPRS_SNS_EV_SIZE 
GPRS_SNS_EV_SIZE_ACK 
GPRS_SNS_EV_CONFIG 
GPRS_SNS_EV_CONFIG_END 

SNS-CONFIG with end flag received.

GPRS_SNS_EV_CONFIG_ACK 
GPRS_SNS_EV_ADD 
GPRS_SNS_EV_DELETE 
GPRS_SNS_EV_CHANGE_WEIGHT 
Enumerator
GPRS_SNS_ROLE_BSS 
GPRS_SNS_ROLE_SGSN 
Enumerator
IPv4 
IPv6 

Function Documentation

static __attribute__ ( (constructor)  )
static

References OSMO_ASSERT, and osmo_fsm_register().

static int add_remote_ip4_elem ( struct ns2_sns_state gss,
const struct gprs_ns_ie_ip4_elem ip4 
)
static
static int add_remote_ip6_elem ( struct ns2_sns_state gss,
const struct gprs_ns_ie_ip6_elem ip6 
)
static
const struct osmo_sockaddr* gprs_ns2_nse_sns_remote ( struct gprs_ns2_nse nse)

Return the initial SNS remote socket address.

Parameters
nseNS Entity
Returns
address of the initial SNS connection; NULL in case of error

References gprs_ns2_nse::bss_sns_fi, ns2_sns_state::initial, osmo_fsm_inst::priv, and sns_endpoint::saddr.

int gprs_ns2_sns_count ( struct gprs_ns2_nse nse)

gprs_ns2_sns_count

Parameters
[in]nseNS Entity whose IP-SNS endpoints shall be printed
Returns
the count of endpoints or < 0 if NSE doesn't contain sns.

References gprs_ns2_nse::bss_sns_fi, gprs_ns2_nse::dialect, GPRS_NS2_DIALECT_SNS, GPRS_NS2_LL_UDP, sns_endpoint::list, gprs_ns2_nse::ll, llist_for_each_entry, osmo_fsm_inst::priv, and ns2_sns_state::sns_endpoints.

Referenced by vty_nse_check_sns().

int gprs_ns2_sns_del_endpoint ( struct gprs_ns2_nse nse,
const struct osmo_sockaddr saddr 
)
static int ip4_weight_sum ( const struct gprs_ns_ie_ip4_elem ip4,
unsigned int  num,
bool  data_weight 
)
static
static int ip6_weight_sum ( const struct gprs_ns_ie_ip6_elem ip6,
unsigned int  num,
bool  data_weight 
)
static
static struct sns_endpoint* ns2_get_sns_endpoint ( struct ns2_sns_state state,
const struct osmo_sockaddr saddr 
)
static
static void ns2_nsvc_create_ip4 ( struct osmo_fsm_inst fi,
struct gprs_ns2_nse nse,
const struct gprs_ns_ie_ip4_elem ip4 
)
static
static void ns2_nsvc_create_ip6 ( struct osmo_fsm_inst fi,
struct gprs_ns2_nse nse,
const struct gprs_ns_ie_ip6_elem ip6 
)
static
struct osmo_fsm_inst* ns2_sns_bss_fsm_alloc ( struct gprs_ns2_nse nse,
const char *  id 
)

Allocate an IP-SNS FSM for the BSS side.

Parameters
[in]nseNS Entity in which the FSM runs
[in]idstring identifier
Returns
FSM instance on success; NULL on error

References ns2_sns_state::binds, GPRS_SNS_ROLE_BSS, INIT_LLIST_HEAD, LOGL_DEBUG, ns2_sns_state::nse, ns2_sns_state::num_max_ip4_remote, ns2_sns_state::num_max_ip6_remote, osmo_fsm_inst_alloc(), osmo_fsm_inst_term, OSMO_FSM_TERM_ERROR, osmo_fsm_inst::priv, ns2_sns_state::role, and ns2_sns_state::sns_endpoints.

Referenced by ns2_nse_set_dialect().

static int ns2_sns_count_num_local_ep ( struct osmo_fsm_inst fi,
enum ns2_sns_type  stype 
)
static
void ns2_sns_dump_vty ( struct vty vty,
const char *  prefix,
const struct gprs_ns2_nse nse,
bool  stats 
)

Dump the IP-SNS state to a vty.

Parameters
[in]vtyVTY to which the state shall be printed
[in]prefixprefix to print at start of each line (typically indenting)
[in]nseNS Entity whose IP-SNS state shall be printed
[in]statsWhether or not statistics shall also be printed

References gprs_ns2_nse::bss_sns_fi, ns2_sns_state::ip4_local, ns2_sns_state::ip4_remote, ns2_sns_state::ip6_local, ns2_sns_state::ip6_remote, ns2_sns_state::num_ip4_local, ns2_sns_state::num_ip4_remote, ns2_sns_state::num_ip6_local, ns2_sns_state::num_ip6_remote, ns2_sns_state::num_max_ip4_remote, ns2_sns_state::num_max_ip6_remote, ns2_sns_state::num_max_nsvcs, osmo_fsm_inst::priv, vty_dump_sns_ip4(), vty_dump_sns_ip6(), VTY_NEWLINE, vty_out(), and vty_out_fsm_inst2().

Referenced by dump_nse().

int ns2_sns_rx ( struct gprs_ns2_vc nsvc,
struct msgb msg,
struct tlv_parsed tp 
)
struct osmo_fsm_inst* ns2_sns_sgsn_fsm_alloc ( struct gprs_ns2_nse nse,
const char *  id 
)

Allocate an IP-SNS FSM for the SGSN side.

Parameters
[in]nseNS Entity in which the FSM runs
[in]idstring identifier
Returns
FSM instance on success; NULL on error

References ns2_sns_state::binds, GPRS_SNS_ROLE_SGSN, INIT_LLIST_HEAD, LOGL_DEBUG, ns2_sns_state::nse, osmo_fsm_inst_alloc(), osmo_fsm_inst_term, OSMO_FSM_TERM_ERROR, osmo_fsm_inst::priv, ns2_sns_state::role, and ns2_sns_state::sns_endpoints.

Referenced by ns2_nse_set_dialect().

static void ns2_sns_st_bss_config_sgsn_onenter ( struct osmo_fsm_inst fi,
uint32_t  old_state 
)
static
static void ns2_sns_st_bss_unconfigured ( struct osmo_fsm_inst fi,
uint32_t  event,
void *  data 
)
static
static void ns2_sns_st_configured_change ( struct osmo_fsm_inst fi,
struct ns2_sns_state gss,
struct tlv_parsed tp 
)
static
static void ns2_sns_st_sgsn_unconfigured ( struct osmo_fsm_inst fi,
uint32_t  event,
void *  data 
)
static
void ns2_sns_update_weights ( struct gprs_ns2_vc_bind bind)
void ns2_sns_write_vty ( struct vty vty,
const struct gprs_ns2_nse nse 
)

write IP-SNS to a vty

Parameters
[in]vtyVTY to which the state shall be printed
[in]nseNS Entity whose IP-SNS state shall be printed

References gprs_ns2_nse::bss_sns_fi, osmo_sockaddr_str::ip, llist_for_each_entry, osmo_sockaddr_str_from_sockaddr(), osmo_sockaddr_str::port, osmo_fsm_inst::priv, sns_endpoint::saddr, ns2_sns_state::sns_endpoints, osmo_sockaddr::u, VTY_NEWLINE, and vty_out().

Referenced by _config_write_ns_nse().

static void ns2_vc_create_ip ( struct osmo_fsm_inst fi,
struct gprs_ns2_nse nse,
const struct osmo_sockaddr remote,
uint8_t  sig_weight,
uint8_t  data_weight 
)
static
static int ns_sns_configured_timeout ( struct osmo_fsm_inst fi)
inlinestatic
static int nss_weight_sum ( const struct ns2_sns_state nss,
bool  data_weight 
)
static
static struct gprs_ns2_vc* nsvc_by_ip4_elem ( struct gprs_ns2_nse nse,
const struct gprs_ns_ie_ip4_elem ip4 
)
static
static struct gprs_ns2_vc* nsvc_by_ip6_elem ( struct gprs_ns2_nse nse,
const struct gprs_ns_ie_ip6_elem ip6 
)
static
static struct gprs_ns2_vc* nsvc_for_bind_and_remote ( struct gprs_ns2_nse nse,
struct gprs_ns2_vc_bind bind,
const struct osmo_sockaddr remote 
)
static
static int remove_remote_ip4_elem ( struct ns2_sns_state gss,
const struct gprs_ns_ie_ip4_elem ip4 
)
static
static int remove_remote_ip6_elem ( struct ns2_sns_state gss,
const struct gprs_ns_ie_ip6_elem ip6 
)
static
static void vty_dump_sns_ip4 ( struct vty vty,
const char *  prefix,
const struct gprs_ns_ie_ip4_elem ip4 
)
static
static void vty_dump_sns_ip6 ( struct vty vty,
const char *  prefix,
const struct gprs_ns_ie_ip6_elem ip6 
)
static

Variable Documentation

struct osmo_fsm gprs_ns2_sns_bss_fsm
static
Initial value:
= {
.name = "GPRS-NS2-SNS-BSS",
.states = ns2_sns_bss_states,
.allstate_event_mask = S(GPRS_SNS_EV_REQ_NO_NSVC) |
.allstate_action = ns2_sns_st_all_action_bss,
.cleanup = NULL,
.event_names = gprs_sns_event_names,
.pre_term = NULL,
.log_subsys = DLNS,
}
static const struct value_string gprs_sns_event_names[]
Definition: gprs_ns2_sns.c:97
add a new local bind to this NSE
Definition: gprs_ns2_sns.c:93
#define DLNS
static const struct osmo_fsm_state ns2_sns_bss_states[]
Definition: gprs_ns2_sns.c:1378
static void ns2_sns_st_all_action_bss(struct osmo_fsm_inst *fi, uint32_t event, void *data)
Definition: gprs_ns2_sns.c:1525
no more NS-VC remaining (all dead)
Definition: gprs_ns2_sns.c:91
Select a SNS endpoint from the list.
Definition: gprs_ns2_sns.c:81
remove a local bind from this NSE
Definition: gprs_ns2_sns.c:94
static int ns2_sns_fsm_bss_timer_cb(struct osmo_fsm_inst *fi)
Definition: gprs_ns2_sns.c:1429
#define ARRAY_SIZE(x)
#define S(x)
Definition: gprs_ns2_sns.c:57
struct osmo_fsm gprs_ns2_sns_sgsn_fsm
static
Initial value:
= {
.name = "GPRS-NS2-SNS-SGSN",
.allstate_event_mask = S(GPRS_SNS_EV_RX_SIZE) |
.allstate_action = ns2_sns_st_all_action_sgsn,
.cleanup = NULL,
.event_names = gprs_sns_event_names,
.pre_term = NULL,
.log_subsys = DLNS,
}
static const struct value_string gprs_sns_event_names[]
Definition: gprs_ns2_sns.c:97
add a new local bind to this NSE
Definition: gprs_ns2_sns.c:93
#define DLNS
Definition: gprs_ns2_sns.c:82
static void ns2_sns_st_all_action_sgsn(struct osmo_fsm_inst *fi, uint32_t event, void *data)
Definition: gprs_ns2_sns.c:2175
no more NS-VC remaining (all dead)
Definition: gprs_ns2_sns.c:91
static int ns2_sns_fsm_sgsn_timer_cb(struct osmo_fsm_inst *fi)
Definition: gprs_ns2_sns.c:2150
remove a local bind from this NSE
Definition: gprs_ns2_sns.c:94
#define ARRAY_SIZE(x)
static const struct osmo_fsm_state ns2_sns_sgsn_states[]
Definition: gprs_ns2_sns.c:2111
#define S(x)
Definition: gprs_ns2_sns.c:57
const struct value_string gprs_sns_event_names[]
static
Initial value:
= {
{ GPRS_SNS_EV_REQ_SELECT_ENDPOINT, "REQ_SELECT_ENDPOINT" },
{ GPRS_SNS_EV_RX_SIZE, "RX_SIZE" },
{ GPRS_SNS_EV_RX_SIZE_ACK, "RX_SIZE_ACK" },
{ GPRS_SNS_EV_RX_CONFIG, "RX_CONFIG" },
{ GPRS_SNS_EV_RX_CONFIG_END, "RX_CONFIG_END" },
{ GPRS_SNS_EV_RX_CONFIG_ACK, "RX_CONFIG_ACK" },
{ GPRS_SNS_EV_RX_ADD, "RX_ADD" },
{ GPRS_SNS_EV_RX_DELETE, "RX_DELETE" },
{ GPRS_SNS_EV_RX_ACK, "RX_ACK" },
{ GPRS_SNS_EV_RX_CHANGE_WEIGHT, "RX_CHANGE_WEIGHT" },
{ GPRS_SNS_EV_REQ_NO_NSVC, "REQ_NO_NSVC" },
{ GPRS_SNS_EV_REQ_NSVC_ALIVE, "REQ_NSVC_ALIVE"},
{ GPRS_SNS_EV_REQ_ADD_BIND, "REQ_ADD_BIND"},
{ GPRS_SNS_EV_REQ_DELETE_BIND, "REQ_DELETE_BIND"},
{ 0, NULL }
}
Definition: gprs_ns2_sns.c:87
add a new local bind to this NSE
Definition: gprs_ns2_sns.c:93
Rx of SNS-ACK (response to ADD/DELETE/CHG_WEIGHT.
Definition: gprs_ns2_sns.c:90
SNS-CONFIG with end flag received.
Definition: gprs_ns2_sns.c:85
Definition: gprs_ns2_sns.c:83
Definition: gprs_ns2_sns.c:82
Definition: gprs_ns2_sns.c:88
no more NS-VC remaining (all dead)
Definition: gprs_ns2_sns.c:91
Select a SNS endpoint from the list.
Definition: gprs_ns2_sns.c:81
Definition: gprs_ns2_sns.c:86
remove a local bind from this NSE
Definition: gprs_ns2_sns.c:94
Definition: gprs_ns2_sns.c:89
a NS-VC became alive
Definition: gprs_ns2_sns.c:92
Definition: gprs_ns2_sns.c:84
const struct osmo_fsm_state ns2_sns_bss_states[]
static
const struct osmo_fsm_state ns2_sns_sgsn_states[]
static