diff --git a/sys/include/net/coap.h b/sys/include/net/coap.h
new file mode 100644
index 0000000000000000000000000000000000000000..403dddbabf86946bb11ad02853bfb40cedcf6c10
--- /dev/null
+++ b/sys/include/net/coap.h
@@ -0,0 +1,188 @@
+/*
+ * 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.
+ */
+
+/**
+ * @defgroup    net_coap CoAP defines
+ * @ingroup     net
+ * @brief       Generic CoAP values as defined by RFC7252
+ * @{
+ *
+ * @file
+ * @brief       Generic CoAP values as defined by RFC7252
+ *
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
+ *
+ */
+
+#ifndef NET_COAP_H
+#define NET_COAP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief   Default CoAP port
+ */
+#define COAP_PORT               (5683)
+
+/**
+ * @name    CoAP option numbers
+ * @{
+ */
+#define COAP_OPT_URI_HOST       (3)
+#define COAP_OPT_OBSERVE        (6)
+#define COAP_OPT_LOCATION_PATH  (8)
+#define COAP_OPT_URI_PATH       (11)
+#define COAP_OPT_CONTENT_FORMAT (12)
+#define COAP_OPT_URI_QUERY      (15)
+#define COAP_OPT_LOCATION_QUERY (20)
+#define COAP_OPT_BLOCK2         (23)
+#define COAP_OPT_BLOCK1         (27)
+/** @} */
+
+/**
+ * @name    Message types -- confirmable, non-confirmable, etc.
+ * @{
+ */
+#define COAP_TYPE_CON           (0)
+#define COAP_TYPE_NON           (1)
+#define COAP_TYPE_ACK           (2)
+#define COAP_TYPE_RST           (3)
+/** @} */
+
+/**
+ * @name    CoAP method codes used in header
+ * @{
+ */
+#define COAP_CLASS_REQ          (0)
+#define COAP_METHOD_GET         (1)
+#define COAP_METHOD_POST        (2)
+#define COAP_METHOD_PUT         (3)
+#define COAP_METHOD_DELETE      (4)
+/** @} */
+
+/**
+ * @name    Empty CoAP message code
+ * @{
+ */
+#define COAP_CODE_EMPTY         (0)
+/** @} */
+
+/**
+ * @name    Response message codes: success
+ * @{
+ */
+#define COAP_CLASS_SUCCESS      (2)
+#define COAP_CODE_CREATED      ((2 << 5) | 1)
+#define COAP_CODE_DELETED      ((2 << 5) | 2)
+#define COAP_CODE_VALID        ((2 << 5) | 3)
+#define COAP_CODE_CHANGED      ((2 << 5) | 4)
+#define COAP_CODE_204          ((2 << 5) | 4)
+#define COAP_CODE_CONTENT      ((2 << 5) | 5)
+#define COAP_CODE_205          ((2 << 5) | 5)
+#define COAP_CODE_231          ((2 << 5) | 31)
+/** @} */
+
+/**
+ * @name    Response message codes: client error
+ * @{
+ */
+#define COAP_CLASS_CLIENT_FAILURE             (4)
+#define COAP_CODE_BAD_REQUEST                ((4 << 5) | 0)
+#define COAP_CODE_UNAUTHORIZED               ((4 << 5) | 1)
+#define COAP_CODE_BAD_OPTION                 ((4 << 5) | 2)
+#define COAP_CODE_FORBIDDEN                  ((4 << 5) | 3)
+#define COAP_CODE_PATH_NOT_FOUND             ((4 << 5) | 4)
+#define COAP_CODE_404                        ((4 << 5) | 4)
+#define COAP_CODE_METHOD_NOT_ALLOWED         ((4 << 5) | 5)
+#define COAP_CODE_NOT_ACCEPTABLE             ((4 << 5) | 6)
+#define COAP_CODE_REQUEST_ENTITY_INCOMPLETE  ((4 << 5) | 8)
+#define COAP_CODE_PRECONDITION_FAILED        ((4 << 5) | 0xC)
+#define COAP_CODE_REQUEST_ENTITY_TOO_LARGE   ((4 << 5) | 0xD)
+#define COAP_CODE_UNSUPPORTED_CONTENT_FORMAT ((4 << 5) | 0xF)
+/** @} */
+
+/**
+ * @name    Response message codes: server error
+ * @{
+ */
+#define COAP_CLASS_SERVER_FAILURE             (5)
+#define COAP_CODE_INTERNAL_SERVER_ERROR      ((5 << 5) | 0)
+#define COAP_CODE_NOT_IMPLEMENTED            ((5 << 5) | 1)
+#define COAP_CODE_BAD_GATEWAY                ((5 << 5) | 2)
+#define COAP_CODE_SERVICE_UNAVAILABLE        ((5 << 5) | 3)
+#define COAP_CODE_GATEWAY_TIMEOUT            ((5 << 5) | 4)
+#define COAP_CODE_PROXYING_NOT_SUPPORTED     ((5 << 5) | 5)
+/** @} */
+
+/**
+ * @name    Content types
+ * @{
+ */
+#define COAP_CT_LINK_FORMAT     (40)
+#define COAP_CT_XML             (41)
+#define COAP_CT_OCTET_STREAM    (42)
+#define COAP_CT_EXI             (47)
+#define COAP_CT_JSON            (50)
+/** @} */
+
+/**
+ * @name    Content-Format option codes
+ * @{
+ */
+#define COAP_FORMAT_TEXT         (0)
+#define COAP_FORMAT_LINK        (40)
+#define COAP_FORMAT_OCTET       (42)
+#define COAP_FORMAT_JSON        (50)
+#define COAP_FORMAT_CBOR        (60)
+/** @} */
+
+/**
+ * @name    Observe (RFC 7641) constants
+ * @{
+ */
+#define COAP_OBS_REGISTER        (0)
+#define COAP_OBS_DEREGISTER      (1)
+/** @} */
+
+/**
+ * @name    Timing parameters
+ * @{
+ */
+#define COAP_ACK_TIMEOUT        (2U)
+#define COAP_RANDOM_FACTOR      (1.5)
+/**
+ * @brief   Maximum variation for confirmable timeout.
+ *
+ * Must be an integer, defined as:
+ *
+ *     (COAP_ACK_TIMEOUT * COAP_RANDOM_FACTOR) - COAP_ACK_TIMEOUT
+ */
+#define COAP_ACK_VARIANCE       (1U)
+#define COAP_MAX_RETRANSMIT     (4)
+#define COAP_NSTART             (1)
+#define COAP_DEFAULT_LEISURE    (5)
+/** @} */
+
+/**
+ * @name Blockwise transfer (RFC7959)
+ * @{
+ */
+#define COAP_BLOCKWISE_NUM_OFF  (4)
+#define COAP_BLOCKWISE_MORE_OFF (3)
+#define COAP_BLOCKWISE_SZX_MASK (0x07)
+#define COAP_BLOCKWISE_SZX_MAX  (7)
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NET_COAP_H */
+/** @} */
diff --git a/sys/include/net/nanocoap.h b/sys/include/net/nanocoap.h
index 2f83b38fb0af6403ecf3f7168494703eb2bf6307..5fadbaed9867aabe1f384b2a5baa8a09df7bc585 100644
--- a/sys/include/net/nanocoap.h
+++ b/sys/include/net/nanocoap.h
@@ -33,7 +33,9 @@
 
 #ifdef RIOT_VERSION
 #include "byteorder.h"
+#include "net/coap.h"
 #else
+#include "coap.h"
 #include <arpa/inet.h>
 #endif
 
@@ -42,69 +44,7 @@ extern "C" {
 #endif
 
 /**
- * @brief   CoAP port to use
- */
-#define COAP_PORT               (5683)
-
-/**
- * @name    Nanocoap specific maximum values
- * @{
- */
-#define NANOCOAP_NOPTS_MAX      (16)
-#define NANOCOAP_URI_MAX        (64)
-/** @} */
-
-#ifdef MODULE_GCOAP
-#define NANOCOAP_URL_MAX        NANOCOAP_URI_MAX
-#define NANOCOAP_QS_MAX         (64)
-#endif
-
-/**
- * @name    CoAP option numbers
- * @{
- */
-#define COAP_OPT_URI_HOST       (3)
-#define COAP_OPT_OBSERVE        (6)
-#define COAP_OPT_LOCATION_PATH  (8)
-#define COAP_OPT_URI_PATH       (11)
-#define COAP_OPT_CONTENT_FORMAT (12)
-#define COAP_OPT_URI_QUERY      (15)
-#define COAP_OPT_LOCATION_QUERY (20)
-#define COAP_OPT_BLOCK2         (23)
-#define COAP_OPT_BLOCK1         (27)
-/** @} */
-
-/**
- * @name    CoAP packet types
- * @{
- */
-#define COAP_REQ                (0)
-#define COAP_RESP               (2)
-#define COAP_RST                (3)
-
-/**
- * @name    Message types -- confirmable, non-confirmable, etc.
- * @{
- */
-#define COAP_TYPE_CON           (0)
-#define COAP_TYPE_NON           (1)
-#define COAP_TYPE_ACK           (2)
-#define COAP_TYPE_RST           (3)
-/** @} */
-
-/**
- * @name    CoAP method codes used in header
- * @{
- */
-#define COAP_CLASS_REQ          (0)
-#define COAP_METHOD_GET         (1)
-#define COAP_METHOD_POST        (2)
-#define COAP_METHOD_PUT         (3)
-#define COAP_METHOD_DELETE      (4)
-/** @} */
-
-/**
- * @name    CoAP method flags used in coap_handlers array
+ * @name    Nanocoap specific CoAP method flags used in coap_handlers array
  * @{
  */
 #define COAP_GET                (0x1)
@@ -114,120 +54,22 @@ extern "C" {
 /** @} */
 
 /**
- * @name    Empty CoAP message code
- * @{
- */
-#define COAP_CODE_EMPTY         (0)
-/** @} */
-
-/**
- * @name    Response message codes: success
- * @{
+ * @brief   Nanocoap-specific value to indicate no format specified
  */
-#define COAP_CLASS_SUCCESS      (2)
-#define COAP_CODE_CREATED      ((2 << 5) | 1)
-#define COAP_CODE_DELETED      ((2 << 5) | 2)
-#define COAP_CODE_VALID        ((2 << 5) | 3)
-#define COAP_CODE_CHANGED      ((2 << 5) | 4)
-#define COAP_CODE_204          ((2 << 5) | 4)
-#define COAP_CODE_CONTENT      ((2 << 5) | 5)
-#define COAP_CODE_205          ((2 << 5) | 5)
-#define COAP_CODE_231          ((2 << 5) | 31)
-/** @} */
+#define COAP_FORMAT_NONE        (65535)
 
 /**
- * @name    Response message codes: client error
- * @{
- */
-#define COAP_CLASS_CLIENT_FAILURE             (4)
-#define COAP_CODE_BAD_REQUEST                ((4 << 5) | 0)
-#define COAP_CODE_UNAUTHORIZED               ((4 << 5) | 1)
-#define COAP_CODE_BAD_OPTION                 ((4 << 5) | 2)
-#define COAP_CODE_FORBIDDEN                  ((4 << 5) | 3)
-#define COAP_CODE_PATH_NOT_FOUND             ((4 << 5) | 4)
-#define COAP_CODE_404                        ((4 << 5) | 4)
-#define COAP_CODE_METHOD_NOT_ALLOWED         ((4 << 5) | 5)
-#define COAP_CODE_NOT_ACCEPTABLE             ((4 << 5) | 6)
-#define COAP_CODE_REQUEST_ENTITY_INCOMPLETE  ((4 << 5) | 8)
-#define COAP_CODE_PRECONDITION_FAILED        ((4 << 5) | 0xC)
-#define COAP_CODE_REQUEST_ENTITY_TOO_LARGE   ((4 << 5) | 0xD)
-#define COAP_CODE_UNSUPPORTED_CONTENT_FORMAT ((4 << 5) | 0xF)
-/** @} */
-
-/**
- * @name    Response message codes: server error
- * @{
- */
-#define COAP_CLASS_SERVER_FAILURE             (5)
-#define COAP_CODE_INTERNAL_SERVER_ERROR      ((5 << 5) | 0)
-#define COAP_CODE_NOT_IMPLEMENTED            ((5 << 5) | 1)
-#define COAP_CODE_BAD_GATEWAY                ((5 << 5) | 2)
-#define COAP_CODE_SERVICE_UNAVAILABLE        ((5 << 5) | 3)
-#define COAP_CODE_GATEWAY_TIMEOUT            ((5 << 5) | 4)
-#define COAP_CODE_PROXYING_NOT_SUPPORTED     ((5 << 5) | 5)
-/** @} */
-
-/**
- * @name    Content types
- * @{
- */
-#define COAP_CT_LINK_FORMAT     (40)
-#define COAP_CT_XML             (41)
-#define COAP_CT_OCTET_STREAM    (42)
-#define COAP_CT_EXI             (47)
-#define COAP_CT_JSON            (50)
-/** @} */
-
-/**
- * @name    Content-Format option codes
- * @{
- */
-#define COAP_FORMAT_TEXT         (0)
-#define COAP_FORMAT_LINK        (40)
-#define COAP_FORMAT_OCTET       (42)
-#define COAP_FORMAT_JSON        (50)
-#define COAP_FORMAT_CBOR        (60)
-/** @brief   nanocoap-specific value to indicate no format specified. */
-#define COAP_FORMAT_NONE     (65535)
-/** @} */
-
-/**
- * @name    Observe (RFC 7641) constants
- * @{
- */
-#define COAP_OBS_REGISTER        (0)
-#define COAP_OBS_DEREGISTER      (1)
-/** @} */
-
-/**
- * @name    Timing parameters
+ * @name    Nanocoap specific maximum values
  * @{
  */
-#define COAP_ACK_TIMEOUT        (2U)
-#define COAP_RANDOM_FACTOR      (1.5)
-
-/**
- * @brief Maximum variation for confirmable timeout.
- *
- * Must be an integer, defined as:
- *
- *     (COAP_ACK_TIMEOUT * COAP_RANDOM_FACTOR) - COAP_ACK_TIMEOUT
- */
-#define COAP_ACK_VARIANCE       (1U)
-#define COAP_MAX_RETRANSMIT     (4)
-#define COAP_NSTART             (1)
-#define COAP_DEFAULT_LEISURE    (5)
+#define NANOCOAP_NOPTS_MAX      (16)
+#define NANOCOAP_URI_MAX        (64)
 /** @} */
 
-/**
- * @name Blockwise transfer (RFC7959)
- * @{
- */
-#define COAP_BLOCKWISE_NUM_OFF  (4)
-#define COAP_BLOCKWISE_MORE_OFF (3)
-#define COAP_BLOCKWISE_SZX_MASK (0x07)
-#define COAP_BLOCKWISE_SZX_MAX  (7)
-/** @} */
+#ifdef MODULE_GCOAP
+#define NANOCOAP_URL_MAX        NANOCOAP_URI_MAX
+#define NANOCOAP_QS_MAX         (64)
+#endif
 
 /**
  * @name coap_opt_finish() flag parameter values
diff --git a/sys/net/application_layer/nanocoap/nanocoap.c b/sys/net/application_layer/nanocoap/nanocoap.c
index 420d742c706dbded3e5664493e2ec4a6868d6bca..73e39ed15d085480446daa8cf5844c38985fe460 100644
--- a/sys/net/application_layer/nanocoap/nanocoap.c
+++ b/sys/net/application_layer/nanocoap/nanocoap.c
@@ -30,6 +30,15 @@
 #define ENABLE_DEBUG (0)
 #include "debug.h"
 
+/**
+ * @name    Internally used CoAP packet types
+ * @{
+ */
+#define COAP_REQ                (0)
+#define COAP_RESP               (2)
+#define COAP_RST                (3)
+/** @} */
+
 static int _decode_value(unsigned val, uint8_t **pkt_pos_ptr, uint8_t *pkt_end);
 int coap_get_option_uint(coap_pkt_t *pkt, unsigned opt_num, uint32_t *target);
 static uint32_t _decode_uint(uint8_t *pkt_pos, unsigned nbytes);