smpp: Make libsmpp34 use talloc for its allocations

We are just introducing smpp34_set_memory_functions() in libsmpp34
to allow applications like OsmoMSC to provide their own heap allocator
callback functions.  Let's used this to integrate with talloc and
hence allow talloc tracking/debugging for libsmpp34 internal
allocations.

Depends: libsmpp34 Change-Id I3656117115e89638c093bfbcbc4369ce302f7a94
Change-Id: Ie2725ffab6a225813e65768735f01678e2022128
Related: OS#3913
This commit is contained in:
Harald Welte 2019-04-10 00:33:46 +02:00
parent 4ac8009c29
commit e39f6cd752
1 changed files with 27 additions and 0 deletions

View File

@ -28,6 +28,7 @@
#include <smpp34.h>
#include <smpp34_structs.h>
#include <smpp34_params.h>
#include <smpp34_heap.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/msgb.h>
@ -52,6 +53,31 @@
#define VSUB_USE_SMPP "SMPP"
#define VSUB_USE_SMPP_CMD "SMPP-cmd"
/* talloc integration for libsmpp34 */
static struct smsc *g_smsc;
static void *smpp34_talloc_malloc(size_t sz)
{
return talloc_size(g_smsc, sz);
}
static void *smpp34_talloc_realloc(void *ptr, size_t sz)
{
return talloc_realloc_size(g_smsc, ptr, sz);
}
static void smpp34_talloc_free(void *ptr)
{
talloc_free(ptr);
}
static const struct smpp34_memory_functions smpp34_talloc = {
.malloc_fun = smpp34_talloc_malloc,
.realloc_fun = smpp34_talloc_realloc,
.free_fun = smpp34_talloc_free,
};
/*! \brief find vlr_subscr for a given SMPP NPI/TON/Address */
static struct vlr_subscr *subscr_by_dst(struct gsm_network *net,
uint8_t npi, uint8_t ton,
@ -790,6 +816,7 @@ int smpp_openbsc_alloc_init(void *ctx)
LOGP(DSMPP, LOGL_FATAL, "Cannot allocate smsc struct\n");
return -1;
}
smpp34_set_memory_functions(&smpp34_talloc);
return smpp_vty_init();
}