9
0
Fork 0

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
This commit is contained in:
Max 2016-10-14 13:38:05 +02:00 committed by Harald Welte
parent f41f5866ce
commit dbd7024919
1 changed files with 8 additions and 6 deletions

View File

@ -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;
}