diff --git a/package/gluon-radv-filterd/src/gluon-radv-filterd.c b/package/gluon-radv-filterd/src/gluon-radv-filterd.c
index f9f8fb877b016e0d18776fe494e20940e517df50..7a777752269f9a80ef331325882f04e67b3d485d 100644
--- a/package/gluon-radv-filterd/src/gluon-radv-filterd.c
+++ b/package/gluon-radv-filterd/src/gluon-radv-filterd.c
@@ -306,16 +306,13 @@ static struct router *router_find_orig(const struct ether_addr *orig) {
 static struct router *router_add(const struct ether_addr *mac) {
 	struct router *router;
 
-	router = malloc(sizeof(*router));
+	router = calloc(1, sizeof(*router));
 	if (!router)
 		return NULL;
 
 	router->src = *mac;
 	router->next = G.routers;
 	G.routers = router;
-	router->eol.tv_sec = 0;
-	router->eol.tv_nsec = 0;
-	memset(&router->originator, 0, sizeof(router->originator));
 
 	return router;
 }