diff --git a/Makefile.dep b/Makefile.dep
index 9b9dcd53abeae1c24864dcbbbd5ca46273b5310c..356746da10fcabbb62ba8a465e3b633cb7448e21 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -143,6 +143,10 @@ ifneq (,$(filter trickle,$(USEMODULE)))
   USEMODULE += xtimer
 endif
 
+ifneq (,$(filter gnrc_netif,$(USEMODULE)))
+  USEMODULE += netif
+endif
+
 ifneq (,$(filter ieee802154 nrfmin,$(USEMODULE)))
   ifneq (,$(filter gnrc_ipv6, $(USEMODULE)))
     USEMODULE += gnrc_sixlowpan
diff --git a/sys/Makefile.include b/sys/Makefile.include
index dfbb94067b1c29ce4758d2ae2b52e070b34fe6f6..baa5e0b298a94926d9835b6b62e3ba9183f21810 100644
--- a/sys/Makefile.include
+++ b/sys/Makefile.include
@@ -13,6 +13,9 @@ endif
 ifneq (,$(filter fib,$(USEMODULE)))
   USEMODULE_INCLUDES += $(RIOTBASE)/sys/posix/include
 endif
+ifneq (,$(filter gnrc_netif,$(USEMODULE)))
+  USEMODULE_INCLUDES += $(RIOTBASE)/sys/net/gnrc/netif/include
+endif
 ifneq (,$(filter gnrc_sock,$(USEMODULE)))
   USEMODULE_INCLUDES += $(RIOTBASE)/sys/net/gnrc/sock/include
   ifneq (,$(filter gnrc_ipv6,$(USEMODULE)))
diff --git a/sys/net/gnrc/netif/_netif.c b/sys/net/gnrc/netif/_netif.c
new file mode 100644
index 0000000000000000000000000000000000000000..4c534b797c7d0742881c81fc60415b4efd1f0663
--- /dev/null
+++ b/sys/net/gnrc/netif/_netif.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2018 Freie Universität Berlin
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @{
+ *
+ * Implements @ref net_netif for @ref net_gnrc
+ *
+ * @file
+ * @author  Martine Lenders <m.lenders@fu-berlin.de>
+ */
+
+#include <string.h>
+
+#include "fmt.h"
+#include "net/gnrc/netapi.h"
+#include "net/gnrc/netif/internal.h"
+
+#include "net/netif.h"
+
+netif_t netif_iter(netif_t last)
+{
+    gnrc_netif_t *netif;
+
+    if (last == NETIF_INVALID) {
+        netif = gnrc_netif_iter(NULL);
+    }
+    else if ((netif = gnrc_netif_get_by_pid((kernel_pid_t)last)) != NULL) {
+        netif = gnrc_netif_iter(netif);
+    }
+    if (netif != NULL) {
+        return netif->pid;
+    }
+    else {
+        return NETIF_INVALID;
+    }
+}
+
+int netif_get_name(netif_t iface, char *name)
+{
+    gnrc_netif_t *netif = gnrc_netif_get_by_pid((kernel_pid_t)iface);
+    int res = 0;
+
+    if (netif != NULL) {
+        res += fmt_str(name, "if");
+        res += fmt_u16_dec(&name[res], netif->pid);
+        name[res] = '\0';
+    }
+    return res;
+}
+
+netif_t netif_get_by_name(const char *name)
+{
+    if ((strncmp(name, "if", 2) == 0)) {
+        kernel_pid_t _name_pid = (kernel_pid_t)scn_u32_dec(&name[2], 2);
+        if (_name_pid > 0) {
+            gnrc_netif_t *netif = NULL;
+
+            while ((netif = gnrc_netif_iter(netif)) != NULL) {
+                if (netif->pid == _name_pid) {
+                    return netif->pid;
+                }
+            }
+        }
+    }
+    return NETIF_INVALID;
+}
+
+int netif_get_opt(netif_t netif, netopt_t opt, uint16_t context,
+                  void *value, size_t max_len)
+{
+    return gnrc_netapi_get(netif, opt, context, value, max_len);
+}
+
+int netif_set_opt(netif_t netif, netopt_t opt, uint16_t context,
+                  void *value, size_t value_len)
+{
+    return gnrc_netapi_set(netif, opt, context, value, value_len);
+}
+
+/** @} */
diff --git a/sys/net/gnrc/netif/include/netif_types.h b/sys/net/gnrc/netif/include/netif_types.h
new file mode 100644
index 0000000000000000000000000000000000000000..96101e1d1061a7ff1e90e1d8705c2de38609e989
--- /dev/null
+++ b/sys/net/gnrc/netif/include/netif_types.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2018 Freie Universität Berlin
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup net_netif
+ * @{
+ *
+ * @file
+ * @brief   GNRC-specfic type definitions for @ref net_netif
+ *
+ * @author  Martine Lenders <m.lenders@fu-berlin.de>
+ */
+#ifndef NETIF_TYPES_H
+#define NETIF_TYPES_H
+
+#include "kernel_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NETIF_INVALID   (KERNEL_PID_UNDEF)  /**< Invalid interface */
+
+typedef kernel_pid_t netif_t;   /**< GNRC-representation of a network interface */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NETIF_TYPES_H */
+/** @} */