diff options
author | Max <msuraev@sysmocom.de> | 2016-10-14 13:38:05 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-11-02 09:32:31 +0000 |
commit | dbd7024919ca9aff470e295dcffb1769bf725ac2 (patch) | |
tree | 5e9d019d2f5392b13c205f77217f22051749b102 /ggsn | |
parent | f41f5866cebbf88b6ae09ec8bd00c308f4d9f315 (diff) |
Only send TRAP for defined PDP peer
Do not attempt to send TRAP message on PDP context deletion if peer is
unknown.
Change-Id: I5e02c1d42bb7aaf1ef81a9824aab7b12047cdd3e
Fixes: Coverity CID 150135
Diffstat (limited to 'ggsn')
-rw-r--r-- | ggsn/ggsn.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 9609d52..181ba2d 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -138,10 +138,15 @@ int delete_context(struct pdp_t *pdp) DEBUGP(DGGSN, "Deleting PDP context\n"); struct ippoolm_t *member = pdp->peer; char v[NAMESIZE]; - snprintf(v, sizeof(v), "%" PRIu64 ",%s", pdp->imsi, inet_ntoa(member->addr)); - if (pdp->peer) + + if (pdp->peer) { + snprintf(v, sizeof(v), "%" PRIu64 ",%s", pdp->imsi, + inet_ntoa(member->addr)); + if (ctrl_cmd_send_trap(gsn->ctrl, "imsi-rem-ip", v) < 0) + LOGP(DGGSN, LOGL_ERROR, "Failed to create and send TRAP" + " for IMSI %" PRIu64 " PDP deletion.\n", pdp->imsi); ippool_freeip(ippool, (struct ippoolm_t *)pdp->peer); - else + } else SYS_ERR(DGGSN, LOGL_ERROR, 0, "Peer not defined!"); if (gtp_kernel_tunnel_del(pdp)) { @@ -149,9 +154,6 @@ int delete_context(struct pdp_t *pdp) "Cannot delete tunnel from kernel: %s\n", strerror(errno)); } -/* FIXME: naming? */ - if (ctrl_cmd_send_trap(gsn->ctrl, "imsi-rem-ip", v) < 0) - LOGP(DGGSN, LOGL_ERROR, "Trap creation failed.\n"); return 0; } |