libosmogb  1.5.2
Osmocom Gb library
gprs_ns2.h
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include <stdint.h>
7 #include <netinet/in.h>
8 
9 #include <osmocom/core/prim.h>
12 
13 struct osmo_sockaddr;
14 struct osmo_sockaddr_str;
15 struct osmo_fr_network;
16 
17 struct gprs_ns2_inst;
18 struct gprs_ns2_nse;
19 struct gprs_ns2_vc;
20 struct gprs_ns2_vc_bind;
21 struct gprs_ns2_vc_driver;
22 struct gprs_ns_ie_ip4_elem;
23 struct gprs_ns_ie_ip6_elem;
24 
33 };
34 
41 };
42 
49 };
50 
56 };
57 
58 extern const struct value_string gprs_ns2_prim_strs[];
59 extern const struct value_string gprs_ns2_lltype_strs[];
60 
62 static inline const char *gprs_ns2_prim_str(enum gprs_ns2_prim val)
63 { return get_value_string(gprs_ns2_prim_strs, val); }
64 
66 static inline const char *gprs_ns2_lltype_str(enum gprs_ns2_ll val)
67 { return get_value_string(gprs_ns2_lltype_strs, val); }
68 
75 };
76 
83  /* osmocom own causes */
88 };
89 
90 extern const struct value_string gprs_ns2_aff_cause_prim_strs[];
91 
93 static inline const char *gprs_ns2_aff_cause_prim_str(enum gprs_ns2_affecting_cause val)
95 
101 };
102 
103 extern const struct value_string gprs_ns2_cause_strs[];
104 
106 static inline const char *gprs_ns2_cause_str(enum ns_cause val)
107 { return get_value_string(gprs_ns2_cause_strs, val); }
108 
111 
112  uint16_t nsei;
113  uint16_t bvci;
114 
115  union {
116  struct {
118  uint32_t link_selector;
119  /* TODO: implement resource distribution
120  * add place holder for the link selector */
124  } unitdata;
125  struct {
127  } congestion;
128  struct {
130  char *nsvc;
131  /* 48.016 5.2.2.6 transfer capability */
132  int transfer;
133  /* osmocom specific */
134  /* Persistent NSE/NSVC are configured by vty */
136  /* Only true on the first time it's available.
137  * Allow the BSSGP layer to reset persistent NSE */
138  bool first;
139  /* MTU of a NS SDU. It's the lowest MTU of all (alive & dead) NSVCs */
140  uint16_t mtu;
141  } status;
142  } u;
143 };
144 
145 /* instance */
146 struct gprs_ns2_inst *gprs_ns2_instantiate(void *ctx, osmo_prim_cb cb, void *cb_data);
147 void gprs_ns2_free(struct gprs_ns2_inst *inst);
148 
149 /* Entrypoint for primitives from the NS USER */
150 int gprs_ns2_recv_prim(struct gprs_ns2_inst *nsi, struct osmo_prim_hdr *oph);
151 
153 typedef int (*gprs_ns2_foreach_nsvc_cb)(struct gprs_ns2_vc *nsvc, void *ctx);
154 
156  gprs_ns2_foreach_nsvc_cb cb, void *cb_data);
157 struct gprs_ns2_nse *gprs_ns2_nse_by_nsei(struct gprs_ns2_inst *nsi, uint16_t nsei);
158 struct gprs_ns2_nse *gprs_ns2_create_nse(struct gprs_ns2_inst *nsi, uint16_t nsei,
159  enum gprs_ns2_ll linklayer,
161 uint16_t gprs_ns2_nse_nsei(struct gprs_ns2_nse *nse);
162 void gprs_ns2_free_nse(struct gprs_ns2_nse *nse);
163 void gprs_ns2_free_nses(struct gprs_ns2_inst *nsi);
164 
165 /* create vc */
166 void gprs_ns2_free_nsvc(struct gprs_ns2_vc *nsvc);
167 void gprs_ns2_free_nsvcs(struct gprs_ns2_nse *nse);
168 struct gprs_ns2_vc *gprs_ns2_nsvc_by_nsvci(struct gprs_ns2_inst *nsi, uint16_t nsvci);
169 
170 /* generic VL driver */
172  const char *name);
173 
174 /* IP VL driver */
176  const char *name,
177  const struct osmo_sockaddr *local,
178  int dscp,
179  struct gprs_ns2_vc_bind **result);
181  const struct osmo_sockaddr *sockaddr);
182 
183 /* FR VL driver */
185  struct gprs_ns2_inst *nsi,
186  const char *netif);
187 const char *gprs_ns2_fr_bind_netif(struct gprs_ns2_vc_bind *bind);
190  const char *name,
191  const char *netif,
192  struct osmo_fr_network *fr_network,
193  enum osmo_fr_role fr_role,
194  struct gprs_ns2_vc_bind **result);
195 int gprs_ns2_is_fr_bind(struct gprs_ns2_vc_bind *bind);
196 struct gprs_ns2_vc *gprs_ns2_fr_nsvc_by_dlci(struct gprs_ns2_vc_bind *bind, uint16_t dlci);
198  struct gprs_ns2_nse *nse,
199  uint16_t nsvci,
200  uint16_t dlci);
202  uint16_t nsei,
203  uint16_t nsvci,
204  uint16_t dlci);
205 
206 /* create a VC connection */
208  const struct osmo_sockaddr *remote,
209  struct gprs_ns2_nse *nse,
210  uint16_t nsvci);
211 
213  const struct osmo_sockaddr *remote,
214  uint16_t nsei,
215  uint16_t nsvci,
216  enum gprs_ns2_dialect dialect);
218  const struct osmo_sockaddr *remote,
219  struct gprs_ns2_nse *nse,
220  uint16_t nsvci);
222  uint8_t signalling, uint8_t data);
223 
225 void gprs_ns2_free_binds(struct gprs_ns2_inst *nsi);
226 
227 /* create a VC SNS connection */
228 int gprs_ns2_sns_count(struct gprs_ns2_nse *nse);
230  const struct osmo_sockaddr *saddr);
232  const struct osmo_sockaddr *saddr);
235 const struct osmo_sockaddr *gprs_ns2_nse_sns_remote(struct gprs_ns2_nse *nse);
236 
237 const struct osmo_sockaddr *gprs_ns2_ip_vc_remote(const struct gprs_ns2_vc *nsvc);
238 const struct osmo_sockaddr *gprs_ns2_ip_vc_local(const struct gprs_ns2_vc *nsvc);
239 bool gprs_ns2_ip_vc_equal(const struct gprs_ns2_vc *nsvc,
240  const struct osmo_sockaddr *local,
241  const struct osmo_sockaddr *remote,
242  uint16_t nsvci);
243 const struct osmo_sockaddr *gprs_ns2_ip_bind_sockaddr(struct gprs_ns2_vc_bind *bind);
244 int gprs_ns2_is_ip_bind(struct gprs_ns2_vc_bind *bind);
245 int gprs_ns2_ip_bind_set_dscp(struct gprs_ns2_vc_bind *bind, int dscp);
247  struct gprs_ns2_vc_bind *bind,
248  const struct osmo_sockaddr *saddr);
249 
250 int gprs_ns2_frgre_bind(struct gprs_ns2_inst *nsi,
251  const char *name,
252  const struct osmo_sockaddr *local,
253  int dscp,
254  struct gprs_ns2_vc_bind **result);
256 uint16_t gprs_ns2_fr_nsvc_dlci(const struct gprs_ns2_vc *nsvc);
257 
259  struct gprs_ns2_nse *nse,
260  const struct osmo_sockaddr *sockaddr);
262 
263 /* VC information */
264 const char *gprs_ns2_ll_str(struct gprs_ns2_vc *nsvc);
265 char *gprs_ns2_ll_str_buf(char *buf, size_t buf_len, struct gprs_ns2_vc *nsvc);
266 char *gprs_ns2_ll_str_c(const void *ctx, struct gprs_ns2_vc *nsvc);
267 const char *gprs_ns2_nsvc_state_name(struct gprs_ns2_vc *nsvc);
268 
269 /* vty */
270 int gprs_ns2_vty_init(struct gprs_ns2_inst *nsi);
271 
Definition: gprs_ns2.h:71
Structure representing a single NS-VC.
Definition: gprs_ns2_internal.h:188
void gprs_ns2_free_nse(struct gprs_ns2_nse *nse)
Destroy given NS Entity.
Definition: gprs_ns2.c:828
Definition: gprs_ns2.h:53
int(* gprs_ns2_foreach_nsvc_cb)(struct gprs_ns2_vc *nsvc, void *ctx)
a callback to iterate over all NSVC
Definition: gprs_ns2.h:153
struct gprs_ns2_nse * gprs_ns2_nse_by_nsei(struct gprs_ns2_inst *nsi, uint16_t nsei)
Resolve a NS Entity based on its NSEI.
Definition: gprs_ns2.c:745
struct gprs_ns2_vc_bind * gprs_ns2_bind_by_name(struct gprs_ns2_inst *nsi, const char *name)
Search for a bind with a unique name.
Definition: gprs_ns2.c:1366
const struct value_string gprs_ns2_prim_strs[]
Definition: gprs_ns2.c:225
Definition: gprs_ns2.h:54
struct gprs_ns2_vc * gprs_ns2_nsvc_by_sockaddr_nse(struct gprs_ns2_nse *nse, const struct osmo_sockaddr *sockaddr)
Find NS-VC for given socket address.
Definition: gprs_ns2.c:1095
int gprs_ns2_sns_del_endpoint(struct gprs_ns2_nse *nse, const struct osmo_sockaddr *saddr)
gprs_ns2_sns_del_endpoint
Definition: gprs_ns2_sns.c:1753
bool first
Definition: gprs_ns2.h:138
struct gprs_ns2_vc * gprs_ns2_ip_connect_inactive(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote, struct gprs_ns2_nse *nse, uint16_t nsvci)
Create, and connect an inactive, new IP-based NS-VC.
Definition: gprs_ns2.c:1028
struct gprs_ns2_vc * gprs_ns2_ip_connect(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote, struct gprs_ns2_nse *nse, uint16_t nsvci)
Create, connect and activate a new IP-based NS-VC.
Definition: gprs_ns2.c:1053
Structure repesenting a bind instance.
Definition: gprs_ns2_internal.h:231
gprs_ns2_congestion_cause
Osmocom NS primitives according to 48.016 5.2.2.4 Service primitives.
Definition: gprs_ns2.h:70
uint16_t nsvci
uniquely identifies NS-VC if VC contains nsvci
Definition: gprs_ns2_internal.h:205
const char * get_value_string(const struct value_string *vs, uint32_t val)
Structure repesenting a NSE.
Definition: gprs_ns2_internal.h:144
int gprs_ns2_frgre_bind(struct gprs_ns2_inst *nsi, const char *name, const struct osmo_sockaddr *local, int dscp, struct gprs_ns2_vc_bind **result)
Create a new bind for NS over FR-GRE.
Definition: gprs_ns2_frgre.c:544
uint16_t gprs_ns2_fr_nsvc_dlci(const struct gprs_ns2_vc *nsvc)
Return the dlci of the nsvc.
Definition: gprs_ns2_fr.c:1062
bool gprs_ns2_ip_vc_equal(const struct gprs_ns2_vc *nsvc, const struct osmo_sockaddr *local, const struct osmo_sockaddr *remote, uint16_t nsvci)
Compare the NS-VC with the given parameter.
Definition: gprs_ns2_udp.c:464
uint8_t data[0]
variable-length payload
Definition: gsm_08_16.h:202
osmo_prim_cb cb
callback to the user for incoming UNIT DATA IND
Definition: gprs_ns2_internal.h:121
struct gprs_ns2_vc * gprs_ns2_fr_connect2(struct gprs_ns2_vc_bind *bind, uint16_t nsei, uint16_t nsvci, uint16_t dlci)
Create, connect and activate a new FR-based NS-VC.
Definition: gprs_ns2_fr.c:1005
Definition: gprs_ns2.h:87
struct gprs_ns2_vc * gprs_ns2_nsvc_by_sockaddr_bind(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *saddr)
Find a NS-VC by its remote socket address.
Definition: gprs_ns2_udp.c:121
gprs_ns2_affecting_cause
Osmocom NS primitives according to 48.016 5.2.2.6 Service primitives.
Definition: gprs_ns2.h:78
An instance of the NS protocol stack.
Definition: gprs_ns2_internal.h:119
struct osmo_prim_hdr oph
Definition: gprs_ns2.h:110
static const char * gprs_ns2_lltype_str(enum gprs_ns2_ll val)
Obtain a human-readable string for NS link-layer type.
Definition: gprs_ns2.h:66
const struct value_string gprs_ns2_lltype_strs[]
Definition: gprs_ns2.c:232
gprs_ns2_prim
Osmocom NS primitives according to 48.016 5.2 Service primitives.
Definition: gprs_ns2.h:52
Definition: gprs_ns2.h:74
Definition: gprs_ns2.h:99
const struct osmo_sockaddr * gprs_ns2_ip_bind_sockaddr(struct gprs_ns2_vc_bind *bind)
Return the locally bound socket address of the bind.
Definition: gprs_ns2_udp.c:494
struct gprs_ns2_nse * gprs_ns2_create_nse(struct gprs_ns2_inst *nsi, uint16_t nsei, enum gprs_ns2_ll linklayer, enum gprs_ns2_dialect dialect)
Create a NS Entity within given NS instance.
Definition: gprs_ns2.c:780
Definition: gprs_ns2_internal.h:274
uint16_t nsei
Definition: gprs_ns2.h:112
Definition: gprs_ns2.h:80
bool persistent
Definition: gprs_ns2.h:135
Definition: gprs_ns2.h:39
Definition: gprs_ns2.h:86
int transfer
Definition: gprs_ns2.h:132
struct gprs_ns2_vc * gprs_ns2_fr_connect(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_nse *nse, uint16_t nsvci, uint16_t dlci)
Create, connect and activate a new FR-based NS-VC.
Definition: gprs_ns2_fr.c:963
Definition: gprs_ns2.h:36
uint32_t link_selector
Definition: gprs_ns2.h:118
uint16_t bvci
Definition: gprs_ns2.h:113
struct gprs_ns2_inst * nsi
entry back to ns2_inst
Definition: gprs_ns2_internal.h:148
gprs_ns2_vc_mode
Definition: gprs_ns2.h:25
void gprs_ns2_free(struct gprs_ns2_inst *inst)
Destroy a NS Instance (including all its NSEs, binds, ...).
Definition: gprs_ns2.c:1298
struct gprs_ns2_nse * nse
pointer to NS Instance
Definition: gprs_ns2_internal.h:196
struct osmo_gprs_ns2_prim::@20::@23 status
int gprs_ns2_fr_bind(struct gprs_ns2_inst *nsi, const char *name, const char *netif, struct osmo_fr_network *fr_network, enum osmo_fr_role fr_role, struct gprs_ns2_vc_bind **result)
Create a new bind for NS over FR.
Definition: gprs_ns2_fr.c:798
Definition: gprs_ns2.h:40
gprs_ns2_dialect
Definition: gprs_ns2.h:35
Definition: gprs_ns2.h:84
Definition: gprs_ns2.h:55
int gprs_ns2_is_fr_bind(struct gprs_ns2_vc_bind *bind)
determine if given bind is for FR-GRE encapsulation.
Definition: gprs_ns2_fr.c:332
enum osmo_fr_role gprs_ns2_fr_bind_role(struct gprs_ns2_vc_bind *bind)
Return the frame relay role of a bind.
Definition: gprs_ns2_fr.c:905
struct gprs_ns2_vc * gprs_ns2_nsvc_by_nsvci(struct gprs_ns2_inst *nsi, uint16_t nsvci)
Resolve a NS-VC Entity based on its NS-VCI.
Definition: gprs_ns2.c:761
gprs_ns2_change_ip_endpoint
Osmocom NS primitives according to 48.016 5.2.2.7 Service primitives.
Definition: gprs_ns2.h:97
struct osmo_gprs_ns2_prim::@20::@22 congestion
long long _resource_distribution_placeholder2
Definition: gprs_ns2.h:122
Section 10.3.2d List of IP6 Elements.
Definition: gsm_08_16.h:32
const struct osmo_sockaddr * gprs_ns2_ip_vc_local(const struct gprs_ns2_vc *nsvc)
Return the socket address of the local peer of a NS-VC.
Definition: gprs_ns2_udp.c:432
void * cb_data
callback data
Definition: gprs_ns2_internal.h:124
const struct osmo_sockaddr * gprs_ns2_ip_vc_remote(const struct gprs_ns2_vc *nsvc)
Return the socket address of the remote peer of a NS-VC.
Definition: gprs_ns2_udp.c:446
Definition: gprs_ns2.h:109
void gprs_ns2_ip_bind_set_sns_weight(struct gprs_ns2_vc_bind *bind, uint8_t signalling, uint8_t data)
set the signalling and data weight for this bind
Definition: gprs_ns2_udp.c:586
void gprs_ns2_free_binds(struct gprs_ns2_inst *nsi)
Definition: gprs_ns2.c:1352
long long _resource_distribution_placeholder3
Definition: gprs_ns2.h:123
Definition: gprs_ns2.h:81
const char * name
unique name
Definition: gprs_ns2_internal.h:233
NS/UDP/IP.
Definition: gprs_ns2.h:46
osmo_fr_role
Definition: frame_relay.h:37
enum gprs_ns2_change_ip_endpoint change
Definition: gprs_ns2.h:117
static const char * gprs_ns2_aff_cause_prim_str(enum gprs_ns2_affecting_cause val)
Obtain a human-readable string for NS affecting cause in primitives.
Definition: gprs_ns2.h:93
static const char * gprs_ns2_cause_str(enum ns_cause val)
Obtain a human-readable string for NS primitives.
Definition: gprs_ns2.h:106
char * gprs_ns2_ll_str_c(const void *ctx, struct gprs_ns2_vc *nsvc)
string-format a given NS-VC to a dynamically allocated string.
Definition: gprs_ns2.c:311
static const char * gprs_ns2_prim_str(enum gprs_ns2_prim val)
Obtain a human-readable string for NS primitives.
Definition: gprs_ns2.h:62
const struct value_string gprs_ns2_cause_strs[]
Definition: gprs_ns2.c:140
NS/FR.
Definition: gprs_ns2.h:47
struct gprs_ns2_vc_bind * gprs_ns2_fr_bind_by_netif(struct gprs_ns2_inst *nsi, const char *netif)
Find NS bind for a given network interface.
Definition: gprs_ns2_fr.c:936
void gprs_ns2_free_nsvcs(struct gprs_ns2_nse *nse)
Destroy/release all NS-VC of given NSE.
Definition: gprs_ns2.c:657
Definition: gprs_ns2.h:98
void gprs_ns2_start_alive_all_nsvcs(struct gprs_ns2_nse *nse)
Start the NS-ALIVE FSM in all NS-VCs of given NSE.
Definition: gprs_ns2.c:1311
The VC will only use ALIVE/ACK (no RESET/BLOCK/UNBLOCK), which is for Gb-IP interface compliant to 3G...
Definition: gprs_ns2.h:32
void gprs_ns2_free_nsvc(struct gprs_ns2_vc *nsvc)
Destroy/release given NS-VC.
Definition: gprs_ns2.c:627
Definition: gprs_ns2.h:85
struct gprs_ns2_inst * nsi
a pointer back to the nsi
Definition: gprs_ns2_internal.h:241
const char * gprs_ns2_ll_str(struct gprs_ns2_vc *nsvc)
string-format a given NS-VC to a thread-local static buffer.
Definition: gprs_ns2.c:301
Definition: gprs_ns2.h:38
int gprs_ns2_is_frgre_bind(struct gprs_ns2_vc_bind *bind)
determine if given bind is for FR-GRE encapsulation.
Definition: gprs_ns2_frgre.c:533
const char * gprs_ns2_nsvc_state_name(struct gprs_ns2_vc *nsvc)
Return the current state name of a given NS-VC to a thread-local static buffer.
Definition: gprs_ns2.c:322
The VC will use RESET/BLOCK/UNBLOCK to start the connection and do ALIVE/ACK.
Definition: gprs_ns2.h:29
ns_cause
NS Cause (TS 08.16, Section 10.3.2, Table 13)
Definition: gsm_08_16.h:83
Section 10.3.2c List of IP4 Elements.
Definition: gsm_08_16.h:24
int(* osmo_prim_cb)(struct osmo_prim_hdr *oph, void *ctx)
Definition: gprs_ns2.h:37
int gprs_ns2_sns_add_endpoint(struct gprs_ns2_nse *nse, const struct osmo_sockaddr *saddr)
gprs_ns2_sns_add_endpoint
Definition: gprs_ns2_sns.c:1713
int gprs_ns2_recv_prim(struct gprs_ns2_inst *nsi, struct osmo_prim_hdr *oph)
Receive a primitive from the NS User (Gb).
Definition: gprs_ns2.c:476
long long _resource_distribution_placeholder1
Definition: gprs_ns2.h:121
const char * gprs_ns2_fr_bind_netif(struct gprs_ns2_vc_bind *bind)
Return the network interface of the bind.
Definition: gprs_ns2_fr.c:920
void gprs_ns2_free_bind(struct gprs_ns2_vc_bind *bind)
Destroy a given bind.
Definition: gprs_ns2.c:1326
void gprs_ns2_free_nses(struct gprs_ns2_inst *nsi)
Definition: gprs_ns2.c:846
uint16_t mtu
Definition: gprs_ns2.h:140
int gprs_ns2_vty_init(struct gprs_ns2_inst *nsi)
Definition: gprs_ns2_vty.c:2050
GPRS Networks Service (NS) messages on the Gb interface.
const struct osmo_sockaddr * gprs_ns2_nse_sns_remote(struct gprs_ns2_nse *nse)
Return the initial SNS remote socket address.
Definition: gprs_ns2_sns.c:234
Definition: gprs_ns2.h:73
enum gprs_ns2_congestion_cause cause
Definition: gprs_ns2.h:126
Definition: gprs_ns2.h:82
char * gprs_ns2_ll_str_buf(char *buf, size_t buf_len, struct gprs_ns2_vc *nsvc)
string-format a given NS-VC into a user-supplied buffer.
Definition: gprs_ns2.c:244
undefined, used by vty
Definition: gprs_ns2.h:45
struct gprs_ns2_vc_bind * bind
pointer to NS VL bind.
Definition: gprs_ns2_internal.h:199
gprs_ns2_ll
Osmocom NS link layer types.
Definition: gprs_ns2.h:44
char * nsvc
Definition: gprs_ns2.h:130
int gprs_ns2_nse_foreach_nsvc(struct gprs_ns2_nse *nse, gprs_ns2_foreach_nsvc_cb cb, void *cb_data)
Iterate over all nsvc of a NS Entity and call the callback.
Definition: gprs_ns2.c:1121
int gprs_ns2_ip_bind_set_dscp(struct gprs_ns2_vc_bind *bind, int dscp)
Set the DSCP (TOS) bit value of the given bind.
Definition: gprs_ns2_udp.c:510
Definition: gprs_ns2.h:79
NS/FR/GRE/IP.
Definition: gprs_ns2.h:48
uint16_t gprs_ns2_nse_nsei(struct gprs_ns2_nse *nse)
Return the NSEI.
Definition: gprs_ns2.c:821
enum gprs_ns2_dialect dialect
which dialect does this NSE speaks?
Definition: gprs_ns2_internal.h:173
int gprs_ns2_sns_add_bind(struct gprs_ns2_nse *nse, struct gprs_ns2_vc_bind *bind)
Definition: gprs_ns2_sns.c:1867
struct gprs_ns2_vc * gprs_ns2_fr_nsvc_by_dlci(struct gprs_ns2_vc_bind *bind, uint16_t dlci)
Return the nsvc by dlci.
Definition: gprs_ns2_fr.c:1041
struct osmo_gprs_ns2_prim::@20::@21 unitdata
Definition: frame_relay.h:53
Definition: gprs_ns2.h:72
Definition: gprs_ns2.h:100
int gprs_ns2_sns_count(struct gprs_ns2_nse *nse)
gprs_ns2_sns_count
Definition: gprs_ns2_sns.c:1806
union osmo_gprs_ns2_prim::@20 u
struct gprs_ns2_inst * gprs_ns2_instantiate(void *ctx, osmo_prim_cb cb, void *cb_data)
Create a new GPRS NS instance.
Definition: gprs_ns2.c:1269
int gprs_ns2_ip_bind(struct gprs_ns2_inst *nsi, const char *name, const struct osmo_sockaddr *local, int dscp, struct gprs_ns2_vc_bind **result)
Bind to an IPv4/IPv6 address.
Definition: gprs_ns2_udp.c:310
struct gprs_ns2_vc_bind * gprs_ns2_ip_bind_by_sockaddr(struct gprs_ns2_inst *nsi, const struct osmo_sockaddr *sockaddr)
Find NS bind for a given socket address.
Definition: gprs_ns2_udp.c:283
int gprs_ns2_is_ip_bind(struct gprs_ns2_vc_bind *bind)
Is the given bind an IP bind?
Definition: gprs_ns2_udp.c:504
const struct value_string gprs_ns2_aff_cause_prim_strs[]
Definition: gprs_ns2.c:213
int gprs_ns2_sns_del_bind(struct gprs_ns2_nse *nse, struct gprs_ns2_vc_bind *bind)
Definition: gprs_ns2_sns.c:1898
struct gprs_ns2_vc * gprs_ns2_ip_connect2(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote, uint16_t nsei, uint16_t nsvci, enum gprs_ns2_dialect dialect)
Create, connect and activate a new IP-based NS-VC.
Definition: gprs_ns2.c:1074