diff --git a/include/ndnboost/config/posix_features.hpp b/include/ndnboost/config/posix_features.hpp
index d129547..72cc724 100644
--- a/include/ndnboost/config/posix_features.hpp
+++ b/include/ndnboost/config/posix_features.hpp
@@ -14,27 +14,27 @@
 // to the user to do this *before* including any header, although
 // in most cases the compiler will do this for you).
 
-#  if defined(BOOST_HAS_UNISTD_H)
+#  if defined(NDNBOOST_HAS_UNISTD_H)
 #     include <unistd.h>
 
       // XOpen has <nl_types.h>, but is this the correct version check?
 #     if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
-#        define BOOST_HAS_NL_TYPES_H
+#        define NDNBOOST_HAS_NL_TYPES_H
 #     endif
 
       // POSIX version 6 requires <stdint.h>
 #     if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
-#        define BOOST_HAS_STDINT_H
+#        define NDNBOOST_HAS_STDINT_H
 #     endif
 
       // POSIX version 2 requires <dirent.h>
 #     if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199009L)
-#        define BOOST_HAS_DIRENT_H
+#        define NDNBOOST_HAS_DIRENT_H
 #     endif
 
       // POSIX version 3 requires <signal.h> to have sigaction:
 #     if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199506L)
-#        define BOOST_HAS_SIGACTION
+#        define NDNBOOST_HAS_SIGACTION
 #     endif
       // POSIX defines _POSIX_THREADS > 0 for pthread support,
       // however some platforms define _POSIX_THREADS without
@@ -42,49 +42,49 @@
       // Strictly speaking this may catch platforms with a
       // non-functioning stub <pthreads.h>, but such occurrences should
       // occur very rarely if at all.
-#     if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS)
-#        define BOOST_HAS_PTHREADS
+#     if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(NDNBOOST_HAS_WINTHREADS) && !defined(NDNBOOST_HAS_MPTASKS)
+#        define NDNBOOST_HAS_PTHREADS
 #     endif
 
-      // BOOST_HAS_NANOSLEEP:
+      // NDNBOOST_HAS_NANOSLEEP:
       // This is predicated on _POSIX_TIMERS or _XOPEN_REALTIME:
 #     if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) \
              || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
-#        define BOOST_HAS_NANOSLEEP
+#        define NDNBOOST_HAS_NANOSLEEP
 #     endif
 
-      // BOOST_HAS_CLOCK_GETTIME:
+      // NDNBOOST_HAS_CLOCK_GETTIME:
       // This is predicated on _POSIX_TIMERS (also on _XOPEN_REALTIME
       // but at least one platform - linux - defines that flag without
       // defining clock_gettime):
 #     if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0))
-#        define BOOST_HAS_CLOCK_GETTIME
+#        define NDNBOOST_HAS_CLOCK_GETTIME
 #     endif
 
-      // BOOST_HAS_SCHED_YIELD:
+      // NDNBOOST_HAS_SCHED_YIELD:
       // This is predicated on _POSIX_PRIORITY_SCHEDULING or
       // on _POSIX_THREAD_PRIORITY_SCHEDULING or on _XOPEN_REALTIME.
 #     if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)\
             || (defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0))\
             || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
-#        define BOOST_HAS_SCHED_YIELD
+#        define NDNBOOST_HAS_SCHED_YIELD
 #     endif
 
-      // BOOST_HAS_GETTIMEOFDAY:
-      // BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
+      // NDNBOOST_HAS_GETTIMEOFDAY:
+      // NDNBOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
       // These are predicated on _XOPEN_VERSION, and appears to be first released
       // in issue 4, version 2 (_XOPEN_VERSION > 500).
       // Likewise for the functions log1p and expm1.
 #     if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 >= 500)
-#        define BOOST_HAS_GETTIMEOFDAY
+#        define NDNBOOST_HAS_GETTIMEOFDAY
 #        if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE+0 >= 500)
-#           define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#           define NDNBOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 #        endif
-#        ifndef BOOST_HAS_LOG1P
-#           define BOOST_HAS_LOG1P
+#        ifndef NDNBOOST_HAS_LOG1P
+#           define NDNBOOST_HAS_LOG1P
 #        endif
-#        ifndef BOOST_HAS_EXPM1
-#           define BOOST_HAS_EXPM1
+#        ifndef NDNBOOST_HAS_EXPM1
+#           define NDNBOOST_HAS_EXPM1
 #        endif
 #     endif
 
