aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/gb_proxy.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-05-13 14:14:56 +0200
committerHarald Welte <laforge@gnumonks.org>2010-05-13 14:14:56 +0200
commit4cf12e9350056bdbd98e7c0559e6272dbaba9f15 (patch)
tree27c4bbfa0c87bb81a9342627b44e87ed6d05bef1 /openbsc/src/gprs/gb_proxy.c
parent9aa97fc13725375535c73a0c2f71d3045bb4044c (diff)
[GPRS] Gb Proxy: More verbose logging
Diffstat (limited to 'openbsc/src/gprs/gb_proxy.c')
-rw-r--r--openbsc/src/gprs/gb_proxy.c42
1 files changed, 27 insertions, 15 deletions
diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c
index 9580ea3a3..5fbf9bfcc 100644
--- a/openbsc/src/gprs/gb_proxy.c
+++ b/openbsc/src/gprs/gb_proxy.c
@@ -190,7 +190,7 @@ static int gbprox_relay2bvci(struct msgb *msg, uint16_t ptp_bvci,
peer = peer_by_bvci(ptp_bvci);
if (!peer) {
- LOGP(DGPRS, LOGL_ERROR, "Cannot find BSS for BVCI %u\n",
+ LOGP(DGPRS, LOGL_ERROR, "BVCI=%u: Cannot find BSS\n",
ptp_bvci);
return -ENOENT;
}
@@ -210,7 +210,7 @@ static int gbprox_rx_sig_from_bss(struct msgb *msg, struct gprs_nsvc *nsvc,
struct gprs_ra_id raid;
if (ns_bvci != 0) {
- LOGP(DGPRS, LOGL_NOTICE, "NSEI=%u BVCI %u is not signalling\n",
+ LOGP(DGPRS, LOGL_NOTICE, "NSEI=%u BVCI=%u is not signalling\n",
nsvc->nsei, ns_bvci);
return -EINVAL;
}
@@ -242,10 +242,10 @@ static int gbprox_rx_sig_from_bss(struct msgb *msg, struct gprs_nsvc *nsvc,
memcpy(from_peer->ra, TLVP_VAL(&tp, BSSGP_IE_ROUTEING_AREA),
sizeof(from_peer->ra));
gsm48_parse_ra(&raid, from_peer->ra);
- LOGP(DGPRS, LOGL_INFO, "NSEI=%u RAC snooping: RAC %u-%u-%u-%u "
- "behind BVCI=%u, NSVCI=%u\n", nsvc->nsei, raid.mcc,
- raid.mnc, raid.lac, raid.rac , from_peer->bvci,
- nsvc->nsvci);
+ LOGP(DGPRS, LOGL_INFO, "NSEI=%u BSSGP SUSPEND/RESUME "
+ "RAC snooping: RAC %u-%u-%u-%u behind BVCI=%u, "
+ "NSVCI=%u\n",nsvc->nsei, raid.mcc, raid.mnc, raid.lac,
+ raid.rac , from_peer->bvci, nsvc->nsvci);
/* FIXME: This only supports one BSS per RA */
break;
case BSSGP_PDUT_BVC_RESET:
@@ -309,19 +309,31 @@ err_mand_ie:
static int gbprox_rx_paging(struct msgb *msg, struct tlv_parsed *tp,
struct gprs_nsvc *nsvc, uint16_t ns_bvci)
{
- struct gbprox_peer *peer;
+ struct gbprox_peer *peer = NULL;
+ LOGP(DGPRS, LOGL_INFO, "NSEI=%u(SGSN) BSSGP PAGING ",
+ nsvc->nsei);
if (TLVP_PRESENT(tp, BSSGP_IE_BVCI)) {
uint16_t bvci = ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BVCI));
- return gbprox_relay2bvci(msg, bvci, ns_bvci);
+ LOGPC(DGPRS, LOGL_INFO, "routing by BVCI to peer BVCI=%u\n",
+ bvci);
} else if (TLVP_PRESENT(tp, BSSGP_IE_ROUTEING_AREA)) {
peer = peer_by_rac(TLVP_VAL(tp, BSSGP_IE_ROUTEING_AREA));
- return gbprox_relay2peer(msg, peer, ns_bvci);
+ LOGPC(DGPRS, LOGL_INFO, "routing by RAC to peer BVCI=%u\n",
+ peer->bvci);
} else if (TLVP_PRESENT(tp, BSSGP_IE_LOCATION_AREA)) {
peer = peer_by_lac(TLVP_VAL(tp, BSSGP_IE_LOCATION_AREA));
- return gbprox_relay2peer(msg, peer, ns_bvci);
+ LOGPC(DGPRS, LOGL_INFO, "routing by LAC to peer BVCI=%u\n",
+ peer->bvci);
} else
+ LOGPC(DGPRS, LOGL_INFO, "\n");
+
+ if (!peer) {
+ LOGP(DGPRS, LOGL_ERROR, "NSEI=%u(SGSN) BSSGP PAGING: "
+ "unable to route, missing IE\n", nsvc->nsei);
return -EINVAL;
+ }
+ return gbprox_relay2peer(msg, peer, ns_bvci);
}
/* Receive an incoming BVC-RESET message from the SGSN */
@@ -342,8 +354,8 @@ static int rx_reset_from_sgsn(struct msgb *msg, struct tlv_parsed *tp,
* respective peer */
peer = peer_by_bvci(ptp_bvci);
if (!peer) {
- LOGP(DGPRS, LOGL_ERROR, "Cannot find BSS for BVCI %u\n",
- ptp_bvci);
+ LOGP(DGPRS, LOGL_ERROR, "NSEI=%u BVCI=%u: Cannot find BSS\n",
+ nsvc->nsei, ptp_bvci);
return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI,
NULL, msg);
}
@@ -373,7 +385,7 @@ static int gbprox_rx_sig_from_sgsn(struct msgb *msg, struct gprs_nsvc *nsvc,
int rc = 0;
if (ns_bvci != 0) {
- LOGP(DGPRS, LOGL_NOTICE, "NSEI=%u(SGSN) BVCI %u is not "
+ LOGP(DGPRS, LOGL_NOTICE, "NSEI=%u(SGSN) BVCI=%u is not "
"signalling\n", nsvc->nsei, ns_bvci);
/* FIXME: Send proper error message */
return -EINVAL;
@@ -412,7 +424,7 @@ static int gbprox_rx_sig_from_sgsn(struct msgb *msg, struct gprs_nsvc *nsvc,
case BSSGP_PDUT_STATUS:
/* Some exception has occurred */
LOGP(DGPRS, LOGL_NOTICE,
- "NSEI=%u(SGSN) STATUS ", nsvc->nsei);
+ "NSEI=%u(SGSN) BSSGP STATUS ", nsvc->nsei);
if (!TLVP_PRESENT(&tp, BSSGP_IE_CAUSE)) {
LOGPC(DGPRS, LOGL_NOTICE, "\n");
goto err_mand_ie;
@@ -443,7 +455,7 @@ static int gbprox_rx_sig_from_sgsn(struct msgb *msg, struct gprs_nsvc *nsvc,
break;
case BSSGP_PDUT_SGSN_INVOKE_TRACE:
LOGP(DGPRS, LOGL_ERROR,
- "NSEI=%u(SGSN) INVOKE TRACE not supported\n", nsvc->nsei);
+ "NSEI=%u(SGSN) BSSGP INVOKE TRACE not supported\n",nsvc->nsei);
rc = bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_FEAT, NULL, msg);
break;
default: