| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Every NS-VC now has a set of counters for incoming and outgoing
number of packets and bytes.
We also split the VTY part of the gprs_ns.c implementation into gprs_ns_vty.c
to make sure the protocol can actually be used without the VTY code being
present.
|
|
|
|
|
|
|
| |
As only NS-UNITDATA messages are ever passed into the Gb Proxy,
we need to do the msgb_free() at a much higher point in the calling
stack, i.e. inside the NS protocol layer. This means it is now
the same logic as in OpenBSC itself.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
With persistent NS-VC configuration (configured through VTY),
we can respond properly to BSS with a somewhat strange NS
implementation Such as the BSplus. It enables us to respond
with a proper NS-RESET (including NSVCI/NSEI) when receiving
a NS-ALIVE or other PDU for a BLOCKED/DEAD NS-VC after our
end of the connection is rebooted.
|
| |
|
| |
|
| |
|
|
|
|
| |
The Gb Proxy can then restart the RESET procedure.
|
| |
|
| |
|
| |
|
|
|
|
| |
this seems to work more portably (ppc/32bit big endian)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
In this case, don't blindly allocate a new NS-VC but rather use the NSEI
to lookup the 'struct gprs_nsvc' for it.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
In order to reuse the existing bssgp_tx_* functions without pulling
in the dependencies of gprs_bssgp.c, we have to move those functions
to gprs_bssgp_util.c
Furthermore, we can remove gbprox_nsi and replace it with bssgp_nsi,
and we can do proper processing of BVC-RESET messages coming from
the SGSN on the signalling BVC. In that case we need to send RESET
messages to all the BSS.
|
|
|
|
|
|
| |
The signals will be sent upon reception of NS-BLOCK/UNBLOCK/RESET PDUs
We also export functions to generate/send BLOCK/UNBLOCK and RESET.
|
| |
|
| |
|
|
|
|
|
| |
After RESET / RESET-ACK and ALIVE / ALIVE-ACK, the connection needs to
be unblocked from the BSS side to the SGSN.
|
| |
|
| |
|
|
|
|
| |
This will allow to use the timer in more than 2 modes
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
BSSGP stores a pointer to the Cell Identifier IE in msgb->cb, which
is later used by the GMM layer to identify the cell that has sent a
given message.
This now also means that the gsm_04_08_gprs.c code is free of any
legacy references to msg->trx or struct gsm_bts.
|
|
|
|
|
| |
libosmocore already uses them, it's time (at least for new code)
in openbsc to do the same.
|
|
|
|
|
|
|
|
|
|
|
| |
We now expect the highest level (actual SGSN GMM code) to know
all identifiers for every element in the protocol stack, i.e.
TLLI, SAPI, BVCI and NSEI. The layer-inetrnal state is looked
up based on those identifiers.
The reason for this is to ensure only the highest level state
needs to be persistent, while everything else can be regenerated
dynamically (e.g. in a SGSN restart)
|
|
|
|
|
|
|
|
|
|
| |
In the old code
l3h = BSSGP, l4h = LLC, cb[gmmh] = 04.08
Now, this has been changed to
cb[bssgph] = BSSGP, cb[llch] = LLC, l3h = 04.08
This way, GSM general 04.08 and GPRS 04.08 code can expect a
GSM 04.08 header at msgb->l3h
|
| |
|
| |
|
|
|
|
|
| |
A BTS context represents the mapping betewen (RA-ID, Cell-ID) and
(BVCI, NSEI) as well as the per-BVC local state.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of continuing to add more and more functionality to the
bsc_hack binary, we should have the new SGSN code run as a separate
executable.
After this commit we now build a 'osmo_sgsn' executable, using its
own osmo_sgsn.cfg config file.
However, the SGSN is not yet functional, mainly due to the fact that
the BSSGP and GMM code are written with the assumption that there
is a msgb->trx->bts and the according 'sturct gsm_bts' data model
around - which clearly is no longer the case outside of bsc_hack.
|
|
|
|
| |
The Gb-proxy is now fully configured by config file / VTY
|
|
|
|
|
|
|
|
| |
The ida of the Gb proxy is to aggregate Gb links with a number of BSS
and then present all the BSSGP-VC's together inside one NS-VC to the
actual SGSN.
The code is not yet expected to be complete.
|
|
|
|
|
|
|
|
|
|
|
| |
According to TS 08.16, the BSSGP layer needs to specify NSEI and BVCI when
executing the NS UNITDATA REQUEST primitive of the underlying NS layer.
Rather than passing around a pointer to the 'struct gprs_nsvc', we now
have NSEI and BVCI as members of 'struct obsc_msgb_cb' and set them
when BSSGP hands a message down to NS.
NS then does a lookup of the 'gprs_nsvc' based on the NSEI parameter.
|
|
|
|
| |
was received
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* move UDP listener code for NSIP from input/ipaccess.c and into gprs_ns.c
* add PDU type, IE and CAUSE values for later IP based 3GPP TS 48.016
* support multiple NS-VCs and their lookup based on NSVC and sockaddr_in
* maintain the remote_state (blocked/alive) for each NSVC
* introduce the concept of GPRS_NS instances, move all global vars to instance
* remove hardcoded calls to gprs_bssgp_rcvmsg() and replace it by callback
WARNING: This is not finished code. While it will compile, it will not work
yet, as BSSGP needs to be converted to properly indicate the NSVC to which it
needs to send data.
|
|
|
|
|
|
| |
The explicit 'tlli, gmmh' members of struct msgb are gone from
current libosmocore and have been replaced by the more generic
'control buffer' mechanism.
|
| |
|
|
This branch contains the partial SGSN/GGSN implementation that
was originally developed as part of the gprs branch.
|