aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/include/openbsc/bsc_msc.h2
-rw-r--r--openbsc/src/libbsc/bsc_msc.c50
-rw-r--r--openbsc/src/osmo-bsc_nat/bsc_nat.c13
3 files changed, 45 insertions, 20 deletions
diff --git a/openbsc/include/openbsc/bsc_msc.h b/openbsc/include/openbsc/bsc_msc.h
index 9543002a7..647f47e56 100644
--- a/openbsc/include/openbsc/bsc_msc.h
+++ b/openbsc/include/openbsc/bsc_msc.h
@@ -42,6 +42,8 @@ struct bsc_msc_connection {
struct llist_head *dests;
+ const char *name;
+
void (*connection_loss) (struct bsc_msc_connection *);
void (*connected) (struct bsc_msc_connection *);
struct osmo_timer_list reconnect_timer;
diff --git a/openbsc/src/libbsc/bsc_msc.c b/openbsc/src/libbsc/bsc_msc.c
index 66288a316..ccb0f4b23 100644
--- a/openbsc/src/libbsc/bsc_msc.c
+++ b/openbsc/src/libbsc/bsc_msc.c
@@ -56,7 +56,8 @@ static void msc_con_timeout(void *_con)
{
struct bsc_msc_connection *con = _con;
- LOGP(DMSC, LOGL_ERROR, "MSC Connection timeout.\n");
+ LOGP(DMSC, LOGL_ERROR,
+ "MSC(%s) Connection timeout.\n", con->name);
bsc_msc_lost(con);
}
@@ -70,25 +71,29 @@ static int msc_connection_connect(struct osmo_fd *fd, unsigned int what)
socklen_t len = sizeof(val);
+ queue = container_of(fd, struct osmo_wqueue, bfd);
+ con = container_of(queue, struct bsc_msc_connection, write_queue);
+
if ((what & BSC_FD_WRITE) == 0) {
- LOGP(DMSC, LOGL_ERROR, "Callback but not writable.\n");
+ LOGP(DMSC, LOGL_ERROR,
+ "MSC(%s) Callback but not writable.\n", con->name);
return -1;
}
- queue = container_of(fd, struct osmo_wqueue, bfd);
- con = container_of(queue, struct bsc_msc_connection, write_queue);
-
/* From here on we will either be connected or reconnect */
osmo_timer_del(&con->timeout_timer);
/* check the socket state */
rc = getsockopt(fd->fd, SOL_SOCKET, SO_ERROR, &val, &len);
if (rc != 0) {
- LOGP(DMSC, LOGL_ERROR, "getsockopt for the MSC socket failed.\n");
+ LOGP(DMSC, LOGL_ERROR,
+ "getsockopt for the MSC(%s) socket failed.\n", con->name);
goto error;
}
if (val != 0) {
- LOGP(DMSC, LOGL_ERROR, "Not connected to the MSC: %d\n", val);
+ LOGP(DMSC, LOGL_ERROR,
+ "Not connected to the MSC(%s): %d\n",
+ con->name, val);
goto error;
}
@@ -98,7 +103,8 @@ static int msc_connection_connect(struct osmo_fd *fd, unsigned int what)
fd->when = BSC_FD_READ | BSC_FD_EXCEPT;
con->is_connected = 1;
- LOGP(DMSC, LOGL_NOTICE, "(Re)Connected to the MSC.\n");
+ LOGP(DMSC, LOGL_NOTICE,
+ "(Re)Connected to the MSC(%s).\n", con->name);
if (con->connected)
con->connected(con);
return 0;
@@ -138,7 +144,9 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
int on = 1, ret;
if (llist_empty(con->dests)) {
- LOGP(DMSC, LOGL_ERROR, "No MSC connections configured.\n");
+ LOGP(DMSC, LOGL_ERROR,
+ "No MSC(%s) connections configured.\n",
+ con->name);
connection_loss(con);
return -1;
}
@@ -148,8 +156,9 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
llist_del(&dest->list);
llist_add_tail(&dest->list, con->dests);
- LOGP(DMSC, LOGL_NOTICE, "Attempting to connect MSC at %s:%d\n",
- dest->ip, dest->port);
+ LOGP(DMSC, LOGL_NOTICE,
+ "Attempting to connect MSC(%s) at %s:%d\n",
+ con->name, dest->ip, dest->port);
con->is_connected = 0;
@@ -169,8 +178,9 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
ret = setsockopt(fd->fd, IPPROTO_IP, IP_TOS,
&dest->dscp, sizeof(dest->dscp));
if (ret != 0)
- LOGP(DMSC, LOGL_ERROR, "Failed to set DSCP to %d. %s\n",
- dest->dscp, strerror(errno));
+ LOGP(DMSC, LOGL_ERROR,
+ "Failed to set DSCP to %d on MSC(%s). %s\n",
+ dest->dscp, con->name, strerror(errno));
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
@@ -181,7 +191,8 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
ret = connect(fd->fd, (struct sockaddr *) &sin, sizeof(sin));
if (ret == -1 && errno == EINPROGRESS) {
- LOGP(DMSC, LOGL_ERROR, "MSC Connection in progress\n");
+ LOGP(DMSC, LOGL_ERROR,
+ "MSC(%s) Connection in progress\n", con->name);
fd->when = BSC_FD_WRITE;
fd->cb = msc_connection_connect;
con->timeout_timer.cb = msc_con_timeout;
@@ -215,12 +226,15 @@ struct bsc_msc_connection *bsc_msc_create(void *ctx, struct llist_head *dests)
con = talloc_zero(NULL, struct bsc_msc_connection);
if (!con) {
- LOGP(DMSC, LOGL_FATAL, "Failed to create the MSC connection.\n");
+ LOGP(DMSC, LOGL_FATAL,
+ "Failed to create the MSC(%s) connection.\n",
+ con->name);
return NULL;
}
con->dests = dests;
con->write_queue.bfd.fd = -1;
+ con->name = "";
osmo_wqueue_init(&con->write_queue, 100);
return con;
}
@@ -239,13 +253,15 @@ static void reconnect_msc(void *_msc)
{
struct bsc_msc_connection *con = _msc;
- LOGP(DMSC, LOGL_NOTICE, "Attempting to reconnect to the MSC.\n");
+ LOGP(DMSC, LOGL_NOTICE,
+ "Attempting to reconnect to the MSC(%s).\n", con->name);
bsc_msc_connect(con);
}
void bsc_msc_schedule_connect(struct bsc_msc_connection *con)
{
- LOGP(DMSC, LOGL_NOTICE, "Attempting to reconnect to the MSC.\n");
+ LOGP(DMSC, LOGL_NOTICE,
+ "Attempting to reconnect to the MSC(%s)\n", con->name);
con->reconnect_timer.cb = reconnect_msc;
con->reconnect_timer.data = con;
osmo_timer_schedule(&con->reconnect_timer, 5, 0);
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c
index 2254a8d86..bbbeb0311 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c
@@ -804,15 +804,21 @@ static int ipaccess_msc_read_cb(struct osmo_fd *bfd)
ret = ipa_msg_recv(bfd->fd, &msg);
if (ret <= 0) {
if (ret == 0)
- LOGP(DNAT, LOGL_FATAL, "The connection the MSC was lost, exiting\n");
+ LOGP(DNAT, LOGL_FATAL,
+ "The connection the MSC(%s) was lost, exiting\n",
+ msc_con->name);
else
- LOGP(DNAT, LOGL_ERROR, "Failed to parse ip access message: %d\n", ret);
+ LOGP(DNAT, LOGL_ERROR,
+ "Failed to parse ip access message on %s: %d\n",
+ msc_con->name, ret);
bsc_msc_lost(msc_con);
return -1;
}
- LOGP(DNAT, LOGL_DEBUG, "MSG from MSC: %s proto: %d\n", osmo_hexdump(msg->data, msg->len), msg->l2h[0]);
+ LOGP(DNAT, LOGL_DEBUG,
+ "MSG from MSC(%s): %s proto: %d\n", msc_con->name,
+ osmo_hexdump(msg->data, msg->len), msg->l2h[0]);
/* handle base message handling */
hh = (struct ipaccess_head *) msg->data;
@@ -1548,6 +1554,7 @@ int main(int argc, char **argv)
exit(1);
}
+ nat->msc_con->name = "main MSC";
nat->msc_con->connection_loss = msc_connection_was_lost;
nat->msc_con->connected = msc_connection_connected;
nat->msc_con->write_queue.read_cb = ipaccess_msc_read_cb;