Commit graph

72 commits

Author SHA1 Message Date
Holger Hans Peter Freyther
4e0fdfd543 abis_rsl.c: Clarify from which specification this table comes from
It appears to be the table of TS 05.02.
2009-07-09 20:43:16 +02:00
Holger Hans Peter Freyther
72baef356e ipacess-config: Handle NVATTR NACKs in ipaccess-config
Currently we send the attribute changes in a send and forget
fashion. But sometimes the nanoBTS is sending us a NACK, e.g
with a invalid unit id. Start handling the NACK and provide
an error message to the user. The error message is not yet
describing the cause of the error but this is a slight progress
to the previous silent failure.
2009-07-08 23:13:58 +02:00
a58188dd82 Merge commit 'origin/master' 2009-07-05 14:19:06 +02:00
f6845a7d9f Store classmark1/2/3 in equipment SQL table
For further evaluation/analysis, this patch stores the classmark 1, 2 and 3
values of every equipment in the SQL database.  We can use this non-volatile
data to determine the supported features for each handset that we've ever
seen on our network.
2009-07-05 14:08:13 +02:00
c1c4a95f73 remove SI3 and SI4 rest octets
As Dieter has pointed out, we currently send incorrect information
in the rest octets, particularly about our GPRS capability.  Since
the format of the rest octets is highly complex, and we don't
actually need any of those features yet, we might just fill them
with padding.
2009-07-05 13:41:40 +02:00
Holger Hans Peter Freyther
5bcfb4fdef ipaccess-config: Add --help to the ipaccess-config
Just a beginning...
2009-07-04 11:53:10 +02:00
ccd693645b make sure we always schedule a location updating reject
IT sems that if a MS uses the TMSI of a previous network, we did not start
the reject timer.  Thanks to Andreas Eversberg.
2009-07-04 10:18:00 +02:00
6e1536e30e remove bogus extra check for data->imsi[0] in mncc_send
As Andreas points out, we already check for this condition some 10 lines
below, no need to check twice.
2009-07-04 10:11:24 +02:00
df0c65037a remove superfluous check for lchan->use > 0
If we receive one of those strange BS-11 "Cause 22" errors,  we don't need
to check if the lchan use counter is > 0.  If it was 0, the lchan gets
released anyway.
2009-07-04 10:05:51 +02:00
692f5857e5 release channel on ERROR INDICATION
This was proposed by Andreas Eversberg.  I made it conditional on the T200
timer expired cause, as I'm not sure if we really should give up that quickly
on other errors such as just simply receiving an unsolicited response.
2009-07-04 09:40:05 +02:00
12560da2ca gsm48 lchan signal handling: use correct pointer
As Andreas Eversberg has pointed out, we need to use signal_data
rather than handler_data.
2009-07-04 09:35:21 +02:00
cde20850f0 make sure misdn plugin handles DL_UNITDATA_IND
This reportedly fixes the problem that we didn't see MEASurement REPort
messages from the BS-11.
2009-07-04 09:28:00 +02:00
90a93cf9e5 add more TLV parser definitiosn for IPA NM attributes 2009-07-03 12:46:27 +02:00
21460f0f4f add code to ipaccess-config set nanoBST NVRAM attributes 2009-07-03 11:26:45 +02:00
55c139b5e7 Merge branch 'master' of gitosis@bs11-abis.gnumonks.org:openbsc 2009-07-01 11:24:18 +02:00
2f2f5960ac ip.access test numbers 2009-07-01 11:03:54 +02:00
84a1fd8838 add more ipaccess 12.21 OML extension definitions 2009-07-01 09:56:21 +02:00
Andreas Eversberg
e4d5146077 the pointer "tall_bsc_ctx" belongs to the gsm_data.c file not to include file. 2009-06-29 15:19:38 +02:00
067712067e Merge branch 'master' of gitosis@bs11-abis.gnumonks.org:openbsc 2009-06-29 13:07:06 +02:00
81d517d555 ipaccess-find: remove compile-time specified local ip address 2009-06-29 10:43:04 +02:00
ed83184c6d fix various RSL msgb memory leaks in error paths 2009-06-27 03:09:53 +02:00
79639661f5 cosmetic cleanup of LOCATION UPDATE REQ print-out 2009-06-27 03:09:45 +02:00
0299368434 add new DMEAS debug category for measurement reporting
disable it by default
2009-06-27 03:09:38 +02:00
cd1c42852a make tests compile again after talloc branch changes 2009-06-26 20:30:46 +02:00
857e00d9a7 use taloc_zero() rather than talloc() and explisit memset() 2009-06-26 20:25:23 +02:00
1ff81b519a fix two segfaults
* when paging callback is called, we need to consider a failed paging
  operation (i.e. lchan == NULL)
* we have to zero-initialize every transaction that is allocated
2009-06-26 20:17:06 +02:00
a1d5b23c58 zero-initialize some more memory that we allocate 2009-06-26 19:42:28 +02:00
e821a06a96 add FIXME about memory leak every time we close telnet 2009-06-26 19:42:14 +02:00
baf4d3a9cf fix MNCC memory leak
after passing the mncc structure (contained in msgb) to the mncc layer,
we have to release its memory.  This leak was discovered as a direct result of
using talloc.
2009-06-26 19:40:48 +02:00
9cfc9356a7 use named variant when allocating msgb's
when we generate a talloc report (SIGUSR1), we can now see which system
allocated a given msgb, this helps memory leak debugging
2009-06-26 19:39:35 +02:00
91192ee318 Merge branch 'master' into talloc 2009-06-26 18:19:53 +02:00
c3217a15a6 fix typos 2009-06-26 13:21:57 +02:00
03cb7cd814 abis_nm.h: Fix various typos 2009-06-25 08:23:19 +02:00
0b4ab2849e Add parsing of 'L1 information' IE of MEASUREMENT RESULT 2009-06-22 01:43:12 +02:00
a1467eb0d8 Add parsing of 'L1 information' IE of MEASUREMENT RESULT 2009-06-22 01:37:50 +02:00
49a840547b fix various talloc / dynamic bts/trx related bugs
Prior to this patch, nanobts was not able to operate after recent changes
2009-06-22 01:36:25 +02:00
e712a5fd34 switch to dynamically allocated BTS and TRX data structures
This makes it much easier to do run-time configuration using the vty
interface.
2009-06-21 16:17:15 +02:00
a58617f638 fix setfault during registration of VTY TRX function 2009-06-20 22:37:07 +02:00
a8379774ee introduce talloc all over OpenBSC 2009-06-20 22:36:41 +02:00
7f597bc369 fix setfault during registration of VTY TRX function 2009-06-20 22:36:12 +02:00
3ae3cec493 replace 'struct gsm_attr' by 'struct tlv_parsed'
This is where we will store the 12.21 / NM attributes for the given
object.
2009-06-20 19:22:24 +02:00
91afe4ced2 Introduce BS and MS power control related functions
* add bts->band field plus corresponding VTY and commandline argument
* add trx->nominal_power and trx->max_power_red fields
* add rsl_chan_bs_power_ctrl() to control TRX RF power for a given TS
* add rsl_chan_ms_power_ctrl() to control MS RF power for a given lchan.
2009-06-20 19:22:18 +02:00
f739ae6570 BS11: use abis_nm_set_{bts,radio}_attr()
BS11 should only use the raw message sending function if there is no
standard alternative.  For TRX and BTS attributes, we have the standard
variant.
2009-06-20 19:22:11 +02:00
Andreas Eversberg
9eaa5da565 mncc: Add IMSI to gsm_mncc
This allows us to do subscriber lookups based on IMSI and e.g. establish
MT calls to subscribers with no assigned extension.
2009-06-15 23:22:09 +02:00
b4feea561a Merge branch 'mncc-harald' 2009-06-14 22:15:37 +08:00
88cc99a7f0 Merge branch 'master' of gitosis@bs11-abis.gnumonks.org:openbsc 2009-06-14 22:15:32 +08:00
Andreas Eversberg
b992a8ab1b Use correct cause value and cause location
Fixed indication of cause value and location.
Replaced plain cause numbers by definitions from header file.
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index f323a2a..39e7b1f 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1865,8 +1865,7 @@ int mncc_release_ind(struct gsm_network *net, struct gsm_trans *trans,

 	memset(&rel, 0, sizeof(rel));
 	rel.callref = callref;
-	mncc_set_cause(&rel, GSM48_CAUSE_LOC_PRN_S_LU,
-		       GSM48_CC_CAUSE_UNASSIGNED_NR);
+	mncc_set_cause(&rel, location, value);
 	return mncc_recvmsg(net, trans, MNCC_REL_IND, &rel);
 }

@@ -1879,7 +1878,9 @@ void free_trans(struct gsm_trans *trans)
 	/* send release to L4, if callref still exists */
 	if (trans->callref) {
 		/* Ressource unavailable */
-		mncc_release_ind(trans->network, trans, trans->callref, 1, 47);
+		mncc_release_ind(trans->network, trans, trans->callref,
+			GSM48_CAUSE_LOC_PRN_S_LU,
+			GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
 		if (trans->state != GSM_CSTATE_NULL)
 			new_cc_state(trans, GSM_CSTATE_NULL);
 	}
@@ -1960,7 +1961,7 @@ static int setup_trig_pag_evt(unsigned int hooknum, unsigned int event,
 				subscr->extension);
 			/* Temporarily out of order */
 			mncc_release_ind(transt->network, transt, transt->callref,
-					 1, 27);
+					 1, GSM48_CC_CAUSE_DEST_OOO);
 			transt->callref = 0;
 			free_trans(transt);
 			break;
@@ -2270,7 +2271,8 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
 			"This is not allowed!\n");
 		/* Temporarily out of order */
 		rc = mncc_release_ind(trans->network, trans, trans->callref,
-				      1, 47);
+				      GSM48_CAUSE_LOC_PRN_S_LU,
+				      GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
 		trans->callref = 0;
 		free_trans(trans);
 		return rc;
@@ -2287,7 +2289,8 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
 	if ((trans_id_mask & 0x007f) == 0x7f) {
 		/* no free transaction ID */
 		rc = mncc_release_ind(trans->network, trans, trans->callref,
-				      1, 47);
+				      GSM48_CAUSE_LOC_PRN_S_LU,
+				      GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
 		trans->callref = 0;
 		free_trans(trans);
 		return rc;
@@ -3373,14 +3376,18 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
 				"unknown callref %d\n", data->called.number,
 				get_mncc_name(msg_type), data->callref);
 			/* Invalid call reference */
-			return mncc_release_ind(net, NULL, data->callref, 1, 81);
+			return mncc_release_ind(net, NULL, data->callref,
+				GSM48_CAUSE_LOC_PRN_S_LU,
+				GSM48_CC_CAUSE_INVAL_TRANS_ID);
 		}
 		if (!data->called.number[0] && !data->called.imsi[0]) {
 			DEBUGP(DCC, "(bts - trx - ts - ti) "
 				"Received '%s' from MNCC with "
 				"no number or IMSI\n", get_mncc_name(msg_type));
 			/* Invalid number */
-			return mncc_release_ind(net, NULL, data->callref, 1, 28);
+			return mncc_release_ind(net, NULL, data->callref,
+				GSM48_CAUSE_LOC_PRN_S_LU,
+				GSM48_CC_CAUSE_INV_NR_FORMAT);
 		}
 		/* New transaction due to setup, find subscriber */
 		if (data->called.number[0])
@@ -3394,7 +3401,9 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
 				"unknown subscriber %s\n", data->called.number,
 				get_mncc_name(msg_type), data->called.number);
 			/* Unknown subscriber */
-			return mncc_release_ind(net, NULL, data->callref, 1, 1);
+			return mncc_release_ind(net, NULL, data->callref,
+				GSM48_CAUSE_LOC_PRN_S_LU,
+				GSM48_CC_CAUSE_UNASSIGNED_NR);
 		}
 		/* If subscriber is not "attached" */
 		if (!subscr->lac) {
@@ -3404,14 +3413,18 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
 				get_mncc_name(msg_type), data->called.number);
 			subscr_put(subscr);
 			/* Temporarily out of order */
-			return mncc_release_ind(net, NULL, data->callref, 1, 27);
+			return mncc_release_ind(net, NULL, data->callref,
+				GSM48_CAUSE_LOC_PRN_S_LU,
+				GSM48_CC_CAUSE_DEST_OOO);
 		}
 		/* Create transaction */
 		if (!(trans = calloc(1, sizeof(struct gsm_trans)))) {
 			DEBUGP(DCC, "No memory for trans.\n");
 			subscr_put(subscr);
 			/* Ressource unavailable */
-			mncc_release_ind(net, NULL, data->callref, 1, 47);
+			mncc_release_ind(net, NULL, data->callref,
+				GSM48_CAUSE_LOC_PRN_S_LU,
+				GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
 			return -ENOMEM;
 		}
 		trans->callref = data->callref;
2009-06-14 22:14:12 +08:00
Andreas Eversberg
fbc65b7583 Fix lchan refcounting in case of IMSI DETACH
Removed lchan_put() after IMSI detach function.
We don't need to put lchan, because we don't hold a ressource.
2009-06-14 22:09:12 +08:00
Holger Hans Peter Freyther
56f59bb2dc make btstype2str return a const char* to make gcc 4.4 happy 2009-06-12 17:39:38 +02:00
b5711a65d9 Merge commit 'origin/master' into mncc-harald 2009-06-12 20:15:16 +08:00