[gprs] fully integrate VTY configuration into Gb proxy

The Gb-proxy is now fully configured by config file / VTY
This commit is contained in:
Harald Welte 2010-05-01 11:28:43 +02:00
parent 3771d09ec0
commit 1203de3993
2 changed files with 42 additions and 36 deletions

View File

@ -76,10 +76,46 @@ enum ns_cause {
/* Our Implementation */
#include <netinet/in.h>
#include <osmocore/linuxlist.h>
#include <osmocore/msgb.h>
#include <osmocore/timer.h>
#include <osmocore/select.h>
#define NSE_S_BLOCKED 0x0001
#define NSE_S_ALIVE 0x0002
enum gprs_ns_ll {
GPRS_NS_LL_UDP,
GPRS_NS_LL_E1,
};
enum gprs_ns_evt {
GPRS_NS_EVT_UNIT_DATA,
};
struct gprs_nsvc;
typedef int gprs_ns_cb_t(enum gprs_ns_evt event, struct gprs_nsvc *nsvc,
struct msgb *msg, u_int16_t bvci);
/* An instance of the NS protocol stack */
struct gprs_ns_inst {
/* callback to the user for incoming UNIT DATA IND */
gprs_ns_cb_t *cb;
/* linked lists of all NSVC in this instance */
struct llist_head gprs_nsvcs;
/* which link-layer are we based on? */
enum gprs_ns_ll ll;
union {
/* NS-over-IP specific bits */
struct {
struct bsc_fd fd;
} nsip;
};
};
struct gprs_nsvc {
struct llist_head list;
struct gprs_ns_inst *nsi;
@ -103,16 +139,6 @@ struct gprs_nsvc {
};
};
struct gprs_ns_inst;
enum gprs_ns_evt {
GPRS_NS_EVT_UNIT_DATA,
};
typedef int gprs_ns_cb_t(enum gprs_ns_evt event, struct gprs_nsvc *nsvc,
struct msgb *msg, u_int16_t bvci);
/* Create a new NS protocol instance */
struct gprs_ns_inst *gprs_ns_instantiate(gprs_ns_cb_t *cb);
@ -137,5 +163,6 @@ int nsip_listen(struct gprs_ns_inst *nsi, uint16_t udp_port);
/* Establish a connection (from the BSS) to the SGSN */
struct gprs_nsvc *nsip_connect(struct gprs_ns_inst *nsi,
struct sockaddr_in *dest, uint16_t nsvci);
struct sockaddr_in *dest, uint16_t nsei,
uint16_t nsvci);
#endif

View File

@ -72,30 +72,6 @@ static const struct tlv_definition ns_att_tlvdef = {
},
};
enum gprs_ns_ll {
GPRS_NS_LL_UDP,
GPRS_NS_LL_E1,
};
/* An instance of the NS protocol stack */
struct gprs_ns_inst {
/* callback to the user for incoming UNIT DATA IND */
gprs_ns_cb_t *cb;
/* linked lists of all NSVC in this instance */
struct llist_head gprs_nsvcs;
/* which link-layer are we based on? */
enum gprs_ns_ll ll;
union {
/* NS-over-IP specific bits */
struct {
struct bsc_fd fd;
} nsip;
};
};
/* Lookup struct gprs_nsvc based on NSVCI */
static struct gprs_nsvc *nsvc_by_nsvci(struct gprs_ns_inst *nsi,
u_int16_t nsvci)
@ -565,7 +541,8 @@ int nsip_listen(struct gprs_ns_inst *nsi, uint16_t udp_port)
/* Establish a connection (from the BSS) to the SGSN */
struct gprs_nsvc *nsip_connect(struct gprs_ns_inst *nsi,
struct sockaddr_in *dest, uint16_t nsvci)
struct sockaddr_in *dest, uint16_t nsei,
uint16_t nsvci)
{
struct gprs_nsvc *nsvc;
@ -574,6 +551,8 @@ struct gprs_nsvc *nsip_connect(struct gprs_ns_inst *nsi,
nsvc = nsvc_create(nsi, nsvci);
nsvc->ip.bts_addr = *dest;
}
nsvc->nsei = nsei;
nsvc->nsvci = nsvci;
nsvc->remote_end_is_sgsn = 1;
/* Initiate a RESET procedure */