#include "if.h"
#include "if_rmap.h"
+DEFINE_MTYPE_STATIC(LIB, IF_RMAP, "Interface route map")
+DEFINE_MTYPE_STATIC(LIB, IF_RMAP_NAME, "I.f. route map name")
+
struct hash *ifrmaphash;
/* Hook functions. */
struct if_rmap *if_rmap;
/* temporary copy */
- key.ifname = (char *)ifname;
+ key.ifname = (ifname) ? XSTRDUP (MTYPE_IF_RMAP_NAME, ifname) : NULL;
if_rmap = hash_lookup (ifrmaphash, &key);
+ if (key.ifname)
+ XFREE(MTYPE_IF_RMAP_NAME, key.ifname);
+
return if_rmap;
}
static void *
if_rmap_hash_alloc (void *arg)
{
- struct if_rmap *ifarg = arg;
+ struct if_rmap *ifarg = (struct if_rmap *)arg;
struct if_rmap *if_rmap;
if_rmap = if_rmap_new ();
if_rmap_get (const char *ifname)
{
struct if_rmap key;
+ struct if_rmap *ret;
/* temporary copy */
- key.ifname = (char *)ifname;
+ key.ifname = (ifname) ? XSTRDUP (MTYPE_IF_RMAP_NAME, ifname) : NULL;
+
+ ret = hash_get (ifrmaphash, &key, if_rmap_hash_alloc);
+
+ if (key.ifname)
+ XFREE(MTYPE_IF_RMAP_NAME, key.ifname);
- return (struct if_rmap *) hash_get (ifrmaphash, &key, if_rmap_hash_alloc);
+ return ret;
}
static unsigned int