diff --git a/sys/net/gnrc/netreg/gnrc_netreg.c b/sys/net/gnrc/netreg/gnrc_netreg.c
index c531ff997148379554ad7ae9cca8148f20104f13..b77f76fbae179ee00a0b708a9f222cf73932f8e5 100644
--- a/sys/net/gnrc/netreg/gnrc_netreg.c
+++ b/sys/net/gnrc/netreg/gnrc_netreg.c
@@ -99,22 +99,11 @@ gnrc_netreg_entry_t *gnrc_netreg_lookup(gnrc_nettype_t type, uint32_t demux_ctx)
 int gnrc_netreg_num(gnrc_nettype_t type, uint32_t demux_ctx)
 {
     int num = 0;
-    gnrc_netreg_entry_t *entry;
+    gnrc_netreg_entry_t *entry = NULL;
 
-    if (_INVALID_TYPE(type)) {
-        return 0;
-    }
-
-    entry = netreg[type];
-
-    while (entry != NULL) {
-        if (entry->demux_ctx == demux_ctx) {
-            num++;
-        }
-
-        entry = entry->next;
+    while((entry = _netreg_lookup(entry, type, demux_ctx)) != NULL) {
+        num++;
     }
-
     return num;
 }