neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-upf/+/28239 )
Change subject: implement OSMO_LOG_PFCP_MSG_SRC as va function ......................................................................
implement OSMO_LOG_PFCP_MSG_SRC as va function
This was requested by code review.
Change-Id: I1713868ebb9583c67f0a4ecc9558263f6888a24d --- M include/osmocom/pfcp/pfcp_msg.h M src/libosmo-pfcp/pfcp_msg.c 2 files changed, 45 insertions(+), 20 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-upf refs/changes/39/28239/1
diff --git a/include/osmocom/pfcp/pfcp_msg.h b/include/osmocom/pfcp/pfcp_msg.h index 949800e..7db6f3f 100644 --- a/include/osmocom/pfcp/pfcp_msg.h +++ b/include/osmocom/pfcp/pfcp_msg.h @@ -42,26 +42,8 @@
#define OSMO_PFCP_MSGB_ALLOC_SIZE 2048
-#define OSMO_LOG_PFCP_MSG_SRC(M, LEVEL, file, line, FMT, ARGS...) do { \ - struct osmo_fsm_inst *_fi = (M) ? ((M)->ctx.session_fi ?: (M)->ctx.peer_fi) : NULL; \ - enum osmo_pfcp_cause *cause = osmo_pfcp_msg_cause(M); \ - if ((M)->h.seid_present) { \ - LOGPFSMSLSRC(_fi, DLPFCP, LEVEL, file, line, \ - "%s%s PFCP seq-%u SEID-0x%"PRIx64" %s%s%s: " FMT, \ - _fi ? "" : osmo_sockaddr_to_str_c(OTC_SELECT, &(M)->remote_addr), \ - (M)->rx ? "-rx->" : "<-tx-", (M)->h.sequence_nr, \ - (M)->h.seid, \ - osmo_pfcp_message_type_str((M)->h.message_type), cause ? ": " : "", \ - cause ? osmo_pfcp_cause_str(*cause) : "", ##ARGS); \ - } else { \ - LOGPFSMSLSRC(_fi, DLPFCP, LEVEL, file, line, \ - "%s%s PFCP seq-%u %s%s%s: " FMT, \ - _fi ? "" : osmo_sockaddr_to_str_c(OTC_SELECT, &(M)->remote_addr), \ - (M)->rx ? "-rx->" : "<-tx-", (M)->h.sequence_nr, \ - osmo_pfcp_message_type_str((M)->h.message_type), cause ? ": " : "", \ - cause ? osmo_pfcp_cause_str(*cause) : "", ##ARGS); \ - } \ - } while (0) +#define OSMO_LOG_PFCP_MSG_SRC(M, LEVEL, file, line, FMT, ARGS...) \ + osmo_log_pfcp_msg_src(M, LEVEL, file, line, FMT, ##ARGS)
#define OSMO_LOG_PFCP_MSG(M, LEVEL, FMT, ARGS...) \ OSMO_LOG_PFCP_MSG_SRC(M, LEVEL, __FILE__, __LINE__, FMT, ##ARGS) @@ -195,3 +177,6 @@
int osmo_pfcp_msg_to_str_buf(char *buf, size_t buflen, const struct osmo_pfcp_msg *m); char *osmo_pfcp_msg_to_str_c(void *ctx, const struct osmo_pfcp_msg *m); + +void osmo_log_pfcp_msg_src(const struct osmo_pfcp_msg *m, unsigned int level, const char *file, int line, + const char *fmt, ...); diff --git a/src/libosmo-pfcp/pfcp_msg.c b/src/libosmo-pfcp/pfcp_msg.c index 9d65efc..60038f7 100644 --- a/src/libosmo-pfcp/pfcp_msg.c +++ b/src/libosmo-pfcp/pfcp_msg.c @@ -538,3 +538,43 @@ { OSMO_NAME_C_IMPL(ctx, 256, "ERROR", osmo_pfcp_msg_to_str_buf, m) } + +void osmo_log_pfcp_msg_src(const struct osmo_pfcp_msg *m, unsigned int level, const char *file, int line, + const char *fmt, ...) +{ + va_list ap; + struct osmo_fsm_inst *fi; + enum osmo_pfcp_cause *cause; + char *msg; + + if (!log_check_level(DLPFCP, level)) + return; + + fi = m ? (m->ctx.session_fi ?: m->ctx.peer_fi) : NULL; + cause = osmo_pfcp_msg_cause(m); + + va_start(ap, fmt); + msg = talloc_vasprintf(m, fmt, ap); + va_end(ap); + + if (m->h.seid_present) { + LOGPFSMSLSRC(fi, DLPFCP, level, file, line, + "%s%s PFCP seq-%u SEID-0x%"PRIx64" %s%s%s: %s", + fi ? "" : osmo_sockaddr_to_str_c(OTC_SELECT, &m->remote_addr), + m->rx ? "-rx->" : "<-tx-", m->h.sequence_nr, + m->h.seid, + osmo_pfcp_message_type_str(m->h.message_type), cause ? ": " : "", + cause ? osmo_pfcp_cause_str(*cause) : "", + msg); + } else { + LOGPFSMSLSRC(fi, DLPFCP, level, file, line, + "%s%s PFCP seq-%u %s%s%s: %s", + fi ? "" : osmo_sockaddr_to_str_c(OTC_SELECT, &m->remote_addr), + m->rx ? "-rx->" : "<-tx-", m->h.sequence_nr, + osmo_pfcp_message_type_str(m->h.message_type), cause ? ": " : "", + cause ? osmo_pfcp_cause_str(*cause) : "", + msg); + } + + talloc_free(msg); +}