laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/36037?usp=email )
Change subject: input/ipaccess: Always log with context, if we have any ...................................................................... input/ipaccess: Always log with context, if we have any Calling global LOGP/DEBUGP without giving any context (e.g. by using LOGPIL, LOGPITS, ...) will leave the user wonder *which* line or timeslot generated a certain log line. We should know better than that. Change-Id: I5cd84c2d69c0db3be296cb5d9a62720f7b2c827e --- M src/input/ipaccess.c 1 file changed, 71 insertions(+), 95 deletions(-) Approvals: pespin: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c index 7c91e70..9010f89 100644 --- a/src/input/ipaccess.c +++ b/src/input/ipaccess.c @@ -242,46 +242,40 @@ /* this is not an IPA control message, continue */ break; default: - LOGP(DLINP, LOGL_ERROR, "Unexpected return from " - "ipa_ccm_rcvmsg_base " - "(ret=%d)\n", ret); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Unexpected return from ipa_ccm_rcvmsg_base (ret=%d)\n", ret); goto err; } switch (msg_type) { case IPAC_MSGT_ID_RESP: - DEBUGP(DLMI, "ID_RESP "); + LOGPITS(e1i_ts, DLMI, LOGL_DEBUG, "ID_RESP "); /* parse tags, search for Unit ID */ ret = ipa_ccm_id_resp_parse(&tlvp, (const uint8_t *)msg->l2h+1, msgb_l2len(msg)-1); DEBUGPC(DLMI, "\n"); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, "IPA response message " - "with malformed TLVs\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "IPA response message with malformed TLVs\n"); goto err; } if (!TLVP_PRESENT(&tlvp, IPAC_IDTAG_UNIT)) { - LOGP(DLINP, LOGL_ERROR, "IPA response message " - "without unit ID\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "IPA response message without unit ID\n"); goto err; } len = TLVP_LEN(&tlvp, IPAC_IDTAG_UNIT); if (len < 1) { - LOGP(DLINP, LOGL_ERROR, "IPA response message " - "with too small unit ID\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "IPA response message with too small unit ID\n"); goto err; } unitid = (char *) TLVP_VAL(&tlvp, IPAC_IDTAG_UNIT); unitid[len - 1] = '\0'; ret = ipa_parse_unitid(unitid, &unit_data); if (ret) { - LOGP(DLINP, LOGL_ERROR, "Failed to parse unit ID '%s'\n", unitid); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Failed to parse unit ID '%s'\n", unitid); goto err; } if (!line->ops->sign_link_up) { - LOGP(DLINP, LOGL_ERROR, - "Unable to set signal link, closing socket.\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Unable to set signal link, closing socket.\n"); goto err; } /* the BSC creates the new sign links at this stage. */ @@ -290,9 +284,7 @@ line->ops->sign_link_up(&unit_data, line, E1INP_SIGN_OML); if (sign_link == NULL) { - LOGP(DLINP, LOGL_ERROR, - "Unable to set signal link, " - "closing socket.\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Unable to set signal link, closing socket.\n"); goto err; } @@ -308,9 +300,7 @@ line->ops->sign_link_up(&unit_data, line, E1INP_SIGN_RSL); if (sign_link == NULL) { - LOGP(DLINP, LOGL_ERROR, - "Unable to set signal link, " - "closing socket.\n"); + LOGPIL(line, DLINP, LOGL_ERROR, "Unable to set signal link, closing socket.\n"); goto err; } /* Finally, we know which OML link is associated with @@ -319,10 +309,8 @@ /* this is a bugtrap, the BSC should be using the * virtual E1 line used by OML for this RSL link. */ if (new_line == line) { - LOGP(DLINP, LOGL_ERROR, - "Fix your BSC, you should use the " - "E1 line used by the OML link for " - "your RSL link.\n"); + LOGPIL(line, DLINP, LOGL_ERROR, "Fix your BSC, you should use the " + "E1 line used by the OML link for your RSL link.\n"); return 0; } e1inp_line_get2(new_line, "ipa_bfd"); @@ -345,8 +333,7 @@ ret = osmo_fd_register(newbfd); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, - "could not register FD\n"); + LOGPITS(ts, DLINP, LOGL_ERROR, "could not register FD\n"); goto err; } snprintf(tcp_stat_name, sizeof(tcp_stat_name), "site.%u.bts.%u.ipa-rsl.%u", @@ -359,7 +346,7 @@ } break; default: - LOGP(DLINP, LOGL_ERROR, "Unknown IPA message type\n"); + LOGPIL(line, DLINP, LOGL_ERROR, "Unknown IPA message type\n"); goto err; } return 0; @@ -392,14 +379,14 @@ if (ret < 0) { if (ret == -EAGAIN) return 0; - LOGP(DLINP, LOGL_NOTICE, "Sign link problems, " - "closing socket. Reason: %s\n", strerror(-ret)); + LOGPITS(e1i_ts, DLINP, LOGL_NOTICE, "Sign link problems, closing socket. Reason: %s\n", + strerror(-ret)); goto err; } else if (ret == 0) { - LOGP(DLINP, LOGL_NOTICE, "Sign link vanished, dead socket\n"); + LOGPITS(e1i_ts, DLINP, LOGL_NOTICE, "Sign link vanished, dead socket\n"); goto err; } - DEBUGP(DLMI, "RX %u: %s\n", ts_nr, osmo_hexdump(msgb_l2(msg), msgb_l2len(msg))); + LOGPITS(e1i_ts, DLMI, LOGL_DEBUG, "RX %u: %s\n", ts_nr, osmo_hexdump(msgb_l2(msg), msgb_l2len(msg))); hh = (struct ipaccess_head *) msg->data; if (hh->proto == IPAC_PROTO_IPACCESS) { @@ -410,22 +397,20 @@ return ret != 0 ? -EBADF : 0; } else if (e1i_ts->type == E1INP_TS_TYPE_NONE) { /* this sign link is not know yet.. complain. */ - LOGP(DLINP, LOGL_ERROR, "Timeslot is not configured.\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Timeslot is not configured.\n"); goto err_msg; } link = e1inp_lookup_sign_link(e1i_ts, hh->proto, 0); if (!link) { - LOGP(DLINP, LOGL_ERROR, "no matching signalling link for " - "hh->proto=0x%02x\n", hh->proto); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "no matching signalling link for hh->proto=0x%02x\n", hh->proto); goto err_msg; } msg->dst = link; /* XXX better use e1inp_ts_rx? */ if (!e1i_ts->line->ops->sign_link) { - LOGP(DLINP, LOGL_ERROR, "Fix your application, " - "no action set for signalling messages.\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Fix your application, no action set for signalling messages.\n"); goto err_msg; } rc = e1i_ts->line->ops->sign_link(msg); @@ -434,8 +419,8 @@ * an error, that's too strict. BTW, the signalling layer is * resposible for releasing the message. */ - LOGP(DLINP, LOGL_ERROR, "Bad signalling message," - " sign_link returned error: %s.\n", strerror(-rc)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Bad signalling message, sign_link returned error: %s.\n", + strerror(-rc)); } return rc; @@ -610,10 +595,9 @@ val = 1; ret = setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)); if (ret < 0) - LOGP(DLINP, LOGL_ERROR, "Failed to set keepalive: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "Failed to set keepalive: %s\n", strerror(errno)); else - LOGP(DLINP, LOGL_NOTICE, "Keepalive is set: %i\n", ret); + LOGPIL(line, DLINP, LOGL_NOTICE, "Keepalive is set: %d\n", ret); /* The following options are not portable! */ val = line->keepalive_idle_timeout > 0 ? @@ -622,42 +606,34 @@ ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val)); if (ret < 0) - LOGP(DLINP, LOGL_ERROR, - "Failed to set keepalive idle time: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "Failed to set keepalive idle time: %s\n", strerror(errno)); val = line->keepalive_probe_interval > -1 ? line->keepalive_probe_interval : DEFAULT_TCP_KEEPALIVE_INTERVAL; ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &val, sizeof(val)); if (ret < 0) - LOGP(DLINP, LOGL_ERROR, - "Failed to set keepalive interval: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "Failed to set keepalive interval: %s\n", strerror(errno)); val = line->keepalive_num_probes > 0 ? line->keepalive_num_probes : DEFAULT_TCP_KEEPALIVE_RETRY_COUNT; ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &val, sizeof(val)); if (ret < 0) - LOGP(DLINP, LOGL_ERROR, - "Failed to set keepalive count: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "Failed to set keepalive count: %s\n", strerror(errno)); val = 1000 * line->keepalive_num_probes * line->keepalive_probe_interval + line->keepalive_idle_timeout; ret = setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &val, sizeof(val)); if (ret < 0) - LOGP(DLINP, LOGL_ERROR, - "Failed to set user timoeut: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "Failed to set user timoeut: %s\n", strerror(errno)); } val = 1; ret = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); if (ret < 0) - LOGP(DLINP, LOGL_ERROR, "Failed to set TCP_NODELAY: %s\n", strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "Failed to set TCP_NODELAY: %s\n", strerror(errno)); } /* callback of the OML listening filedescriptor */ @@ -689,7 +665,7 @@ osmo_fd_setup(bfd, fd, OSMO_FD_READ, ipaccess_fd_cb, line, E1INP_SIGN_OML); ret = osmo_fd_register(bfd); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, "could not register FD\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "could not register FD\n"); goto err_line; } osmo_stats_tcp_osmo_fd_register(bfd, "ipa-oml"); @@ -699,8 +675,7 @@ /* Request ID. FIXME: request LOCATION, HW/SW VErsion, Unit Name, Serno */ ret = ipa_ccm_send_id_req(bfd->fd); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, "could not send ID REQ. Reason: %s\n", - strerror(errno)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "could not send ID REQ. Reason: %s\n", strerror(errno)); goto err_socket; } return ret; @@ -743,7 +718,7 @@ osmo_fd_setup(bfd, fd, OSMO_FD_READ, ipaccess_fd_cb, line, E1INP_SIGN_RSL); ret = osmo_fd_register(bfd); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, "could not register FD\n"); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "could not register FD\n"); goto err_line; } osmo_stats_tcp_osmo_fd_register(bfd, "ipa-rsl"); @@ -751,8 +726,7 @@ /* Request ID. FIXME: request LOCATION, HW/SW VErsion, Unit Name, Serno */ ret = ipa_ccm_send_id_req(bfd->fd); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, "could not send ID REQ. Reason: %s\n", - strerror(errno)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "could not send ID REQ. Reason: %s\n", strerror(errno)); goto err_socket; } update_fd_settings(line, bfd->fd); @@ -920,13 +894,13 @@ if (link->ofd->priv_nr >= E1INP_SIGN_RSL) trx_nr = link->ofd->priv_nr - E1INP_SIGN_RSL; - LOGP(DLINP, LOGL_NOTICE, "received ID_GET for unit ID %u/%u/%u\n", - dev->site_id, dev->bts_id, trx_nr); + LOGPIL(line, DLINP, LOGL_NOTICE, "received ID_GET for unit ID %u/%u/%u\n", + dev->site_id, dev->bts_id, trx_nr); rmsg = ipa_bts_id_resp(dev, data + 1, len - 1, trx_nr); ret = ipa_send(link->ofd->fd, rmsg->data, rmsg->len); if (ret != rmsg->len) { - LOGP(DLINP, LOGL_ERROR, "cannot send ID_RESP " - "message. Reason: %s\n", strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot send ID_RESP message. Reason: %s\n", + strerror(errno)); goto err_rmsg; } msgb_free(rmsg); @@ -935,8 +909,8 @@ rmsg = ipa_bts_id_ack(); ret = ipa_send(link->ofd->fd, rmsg->data, rmsg->len); if (ret != rmsg->len) { - LOGP(DLINP, LOGL_ERROR, "cannot send ID_ACK " - "message. Reason: %s\n", strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot send ID_ACK message. Reason: %s\n", + strerror(errno)); goto err_rmsg; } msgb_free(rmsg); @@ -1001,15 +975,15 @@ OSMO_ASSERT(e1i_ts != NULL); if (e1i_ts->type == E1INP_TS_TYPE_NONE) { - LOGP(DLINP, LOGL_ERROR, "Signalling link not initialized. Discarding." - " port=%u msg_type=%u\n", link->port, msg_type); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Signalling link not initialized. Discarding." + " port=%u msg_type=%u\n", link->port, msg_type); goto err; } /* look up for some existing signaling link. */ sign_link = e1inp_lookup_sign_link(e1i_ts, hh->proto, 0); if (sign_link == NULL) { - LOGP(DLINP, LOGL_ERROR, "no matching signalling link for " + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "no matching signalling link for " "hh->proto=0x%02x\n", hh->proto); goto err; } @@ -1017,7 +991,7 @@ /* XXX better use e1inp_ts_rx? */ if (!link->line->ops->sign_link) { - LOGP(DLINP, LOGL_ERROR, "Fix your application, " + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Fix your application, " "no action set for signalling messages.\n"); goto err; } @@ -1043,7 +1017,7 @@ line->driver_data = talloc_zero(line, struct ipaccess_line); if (!line->driver_data) { - LOGP(DLINP, LOGL_ERROR, "ipaccess: OOM in line update\n"); + LOGPIL(line, DLINP, LOGL_ERROR, "ipaccess: OOM in line update\n"); return -ENOMEM; } il = line->driver_data; @@ -1056,23 +1030,20 @@ struct ipa_server_link *oml_link, *rsl_link; const char *ipa = e1inp_ipa_get_bind_addr(); - LOGP(DLINP, LOGL_NOTICE, "enabling ipaccess BSC mode on %s " - "with OML %u and RSL %u TCP ports\n", ipa, - IPA_TCP_PORT_OML, IPA_TCP_PORT_RSL); + LOGPIL(line, DLINP, LOGL_NOTICE, "enabling ipaccess BSC mode on %s " + "with OML %u and RSL %u TCP ports\n", ipa, IPA_TCP_PORT_OML, IPA_TCP_PORT_RSL); oml_link = ipa_server_link_create(tall_ipa_ctx, line, ipa, IPA_TCP_PORT_OML, ipaccess_bsc_oml_cb, NULL); if (oml_link == NULL) { - LOGP(DLINP, LOGL_ERROR, "cannot create OML " - "BSC link: %s\n", strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot create OML BSC link: %s\n", strerror(errno)); return -ENOMEM; } oml_link->dscp = g_e1inp_ipaccess_pars.oml.dscp; oml_link->priority = g_e1inp_ipaccess_pars.oml.priority; if (ipa_server_link_open(oml_link) < 0) { - LOGP(DLINP, LOGL_ERROR, "cannot open OML BSC link: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot open OML BSC link: %s\n", strerror(errno)); ipa_server_link_destroy(oml_link); return -EIO; } @@ -1080,15 +1051,13 @@ IPA_TCP_PORT_RSL, ipaccess_bsc_rsl_cb, NULL); if (rsl_link == NULL) { - LOGP(DLINP, LOGL_ERROR, "cannot create RSL " - "BSC link: %s\n", strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot create RSL BSC link: %s\n", strerror(errno)); return -ENOMEM; } rsl_link->dscp = g_e1inp_ipaccess_pars.rsl.dscp; rsl_link->priority = g_e1inp_ipaccess_pars.rsl.priority; if (ipa_server_link_open(rsl_link) < 0) { - LOGP(DLINP, LOGL_ERROR, "cannot open RSL BSC link: %s\n", - strerror(errno)); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot open RSL BSC link: %s\n", strerror(errno)); ipa_server_link_destroy(rsl_link); return -EIO; } @@ -1099,9 +1068,8 @@ struct ipa_client_conn *link; struct e1inp_ts *e1i_ts = e1inp_line_ipa_oml_ts(line); - LOGP(DLINP, LOGL_NOTICE, "enabling ipaccess BTS mode, " - "OML connecting to %s:%u\n", line->ops->cfg.ipa.addr, - IPA_TCP_PORT_OML); + LOGPITS(e1i_ts, DLINP, LOGL_NOTICE, "enabling ipaccess BTS mode, " + "OML connecting to %s:%u\n", line->ops->cfg.ipa.addr, IPA_TCP_PORT_OML); /* Drop previous line */ if (il->ipa_cli[0]) { @@ -1122,15 +1090,13 @@ ipaccess_bts_write_cb, line); if (link == NULL) { - LOGP(DLINP, LOGL_ERROR, "cannot create OML " - "BTS link: %s\n", strerror(errno)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "cannot create OML BTS link: %s\n", strerror(errno)); return -ENOMEM; } link->dscp = g_e1inp_ipaccess_pars.oml.dscp; link->priority = g_e1inp_ipaccess_pars.oml.priority; if (ipa_client_conn_open2(link, line->connect_timeout) < 0) { - LOGP(DLINP, LOGL_ERROR, "cannot open OML BTS link: %s\n", - strerror(errno)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "cannot open OML BTS link: %s\n", strerror(errno)); ipa_client_conn_close(link); ipa_client_conn_destroy(link); return -EIO; @@ -1166,7 +1132,7 @@ int rc; if (E1INP_SIGN_RSL+trx_nr-1 >= NUM_E1_TS) { - LOGP(DLINP, LOGL_ERROR, "cannot create RSL BTS link: " + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "cannot create RSL BTS link: " "trx_nr (%d) out of range\n", trx_nr); return -EINVAL; } @@ -1189,15 +1155,13 @@ ipaccess_bts_write_cb, line); if (rsl_link == NULL) { - LOGP(DLINP, LOGL_ERROR, "cannot create RSL " - "BTS link: %s\n", strerror(errno)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "cannot create RSL BTS link: %s\n", strerror(errno)); return -ENOMEM; } rsl_link->dscp = g_e1inp_ipaccess_pars.rsl.dscp; rsl_link->priority = g_e1inp_ipaccess_pars.rsl.priority; if (ipa_client_conn_open2(rsl_link, line->connect_timeout) < 0) { - LOGP(DLINP, LOGL_ERROR, "cannot open RSL BTS link: %s\n", - strerror(errno)); + LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "cannot open RSL BTS link: %s\n", strerror(errno)); ipa_client_conn_close(rsl_link); ipa_client_conn_destroy(rsl_link); return -EIO; @@ -1215,8 +1179,7 @@ struct e1inp_ts *e1i_ts; if (E1INP_SIGN_RSL+trx_nr-1 >= NUM_E1_TS) { - LOGP(DLINP, LOGL_ERROR, - "cannot close RSL BTS link: trx_nr (%d) out of range\n", trx_nr); + LOGPIL(line, DLINP, LOGL_ERROR, "cannot close RSL BTS link: trx_nr (%d) out of range\n", trx_nr); return -EINVAL; } -- To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/36037?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Change-Id: I5cd84c2d69c0db3be296cb5d9a62720f7b2c827e Gerrit-Change-Number: 36037 Gerrit-PatchSet: 2 Gerrit-Owner: laforge <lafo...@osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-Reviewer: osmith <osm...@sysmocom.de> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged