This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.
Michal Grznár mihal.grznar at gmail.comHi, I am sorry for my previous bad post format. There are the right diff
files.
And the problem was as I said in Imsi attach procedure new TLLI == new
allocated P-tmsi, and there was a problem that the function gprs_tmsi2tlli()
function there was not called and so I had to mask the upper bits in
function where the p-tmsi is allocated, there is also a pcap trace where
you can see it.
thanks, regards
Michal
2014-05-17 13:50 GMT+02:00 Harald Welte <laforge at gnumonks.org>:
> Hi Michal,
>
> thanks a lot for reporting back on your experience.
>
> Hoewever, it is customary to post changes as unified diff ('diff -u'
> format here on this list for review. I have a hard time understanding
> the format that you posted. Can you pleaes re-post your changes?
> Either with diff -u created manually, or with 'git diff' or similar.
>
> On Mon, May 05, 2014 at 11:13:37PM +0200, Michal Grznár wrote:
> > Hi, I am using OsmoSGSN in topology with OpenGGSN and proprietary
> simulator
> > and the problem is that in IP-subnetwork, which I am using there is no
> > use for RESET or UNBLOCK procedure, so I had to do a PATCH in
> > gprs_ns.c, which was needed to complete succesful connection between
> > sim-bss and OsmoSGSN:
>
> If you would like to see such code merged, please extend osmo-sgsn so
> that the type of BSS can be configured via vty, and make the code
> conditional. At that point you could simply have a different config
> file for your sim-bss than we have.
>
> > another PATCH I needed to do was to change a little bit procedure for
> > allocation of P-TMSI in procedure uint32_t sgsn_alloc_ptmsi(void) in
> > gprs_sgsn.c
> >
> > uint32_t sgsn_alloc_ptmsi(void)
> > {
> > struct sgsn_mm_ctx *mm;
> > uint32_t ptmsi;
> >
> > restart:
> > +++ ptmsi = rand() | 0xc0000000; /*because of GPRS IMSI
> > ATTACH*/
> > llist_for_each_entry(mm, &sgsn_mm_ctxts, list) {
> > if (mm->p_tmsi == ptmsi)
> > goto restart;
> > }
> > return ptmsi;
> > }
> >
> > because in GPRS IMSI ATTACH in message ATTACH COMPLETE (3GPP 24.008,
> > 23.003, 48.018) there is new TLLI==new allocated P-TMSI and I need local
> > TLLI, so I had to do it this way
>
> This is most certainly not the right way to fix the problem. The TLLI
> is generated at a different layer than the P-TMSI. The P-TMSI should be
> completely random, and the TLLI derived from that should mask the upper
> bits, using the gprs_tmsi2tlli() function.
>
> Can you please explain more what the actual problem was and how it
> manifested iself? If possible, include pcap traces for further
> illustration.
>
> Thanks,
> Harald
>
> --
> - Harald Welte <laforge at gnumonks.org>
> http://laforge.gnumonks.org/
>
> ============================================================================
> "Privacy in residential applications is a desirable marketing option."
> (ETSI EN 300 175-7 Ch.
> A6)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/openbsc/attachments/20140523/d6637cec/attachment.htm>
-------------- next part --------------
--- gprs_ns_before_patch.c 2014-05-23 10:36:09.041829000 +0200
+++ gprs_ns_patch.c 2014-05-23 10:34:17.101829001 +0200
@@ -1217,16 +1217,14 @@
switch (nsh->pdu_type) {
case NS_PDUT_ALIVE:
- /* If we're dead and blocked and suddenly receive a
- * NS-ALIVE out of the blue, we might have been re-started
- * and should send a NS-RESET to make sure everything recovers
- * fine. */
-
-LOGP(DNS, LOGL_INFO, "Rx NS ALIVE\n");
-if ((*nsvc)->state == NSE_S_BLOCKED)
- rc = gprs_ns_tx_reset((*nsvc), NS_CAUSE_PDU_INCOMP_PSTATE);
- else
- rc = gprs_ns_tx_alive_ack(*nsvc);
+ LOGP(DNS, LOGL_INFO, "Rx NS ALIVE\n");
+ rc = gprs_ns_tx_alive_ack(*nsvc);
+ /*mark NS-VC as unblocked and active*/
+ (*nsvc)->state = NSE_S_ALIVE;
+ (*nsvc)->remote_state = NSE_S_ALIVE;
+ /*Initiate TEST proc.: Send ALIVE_ACK and start timer*/
+ rc = gprs_ns_tx_simple((*nsvc), NS_PDUT_ALIVE_ACK);
+ nsvc_start_timer((*nsvc), NSVC_TIMER_TNS_TEST);
break;
case NS_PDUT_ALIVE_ACK:
/* stop Tns-alive and start Tns-test */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pcap_trace_wireshark.pcap
Type: application/octet-stream
Size: 3675 bytes
Desc: not available
URL: <http://lists.osmocom.org/pipermail/openbsc/attachments/20140523/d6637cec/attachment.obj>
-------------- next part --------------
--- gprs_sgsn_before_patch.c 2014-05-23 11:14:48.121829000 +0200
+++ gprs_sgsn_patch.c 2014-05-23 11:15:48.229829001 +0200
@@ -361,7 +361,7 @@
uint32_t ptmsi;
restart:
- ptmsi = rand();
+ ptmsi = rand() | 0xc0000000; //because of GPRS IMSI ATTACH
llist_for_each_entry(mm, &sgsn_mm_ctxts, list) {
if (mm->p_tmsi == ptmsi)
goto restart;