diff --git a/src/vnet/fib/fib_entry.h b/src/vnet/fib/fib_entry.h
index f0e6e8d..b97c80f 100644
--- a/src/vnet/fib/fib_entry.h
+++ b/src/vnet/fib/fib_entry.h
@@ -17,6 +17,7 @@
 #define __FIB_ENTRY_H__
 
 #include <vnet/fib/fib_node.h>
+#include <vnet/fib/fib_source.h>
 #include <vnet/adj/adj.h>
 #include <vnet/ip/ip.h>
 #include <vnet/dpo/dpo.h>
@@ -26,176 +27,6 @@
  * The sources are defined here with their relative priority order.
  * The lower the value the higher the priority
  */
-typedef enum fib_source_t_ {
-    /**
-     * An invalid source
-     * This is not a real source, so don't use it to source a prefix.
-     * It exists here to provide a value for inexistant/uninitialized source
-     */
-    FIB_SOURCE_INVALID = 0,
-    /**
-     * Marker. Add new values after this one.
-     */
-    FIB_SOURCE_FIRST,
-    /**
-     * Special sources. These are for entries that are added to all
-     * FIBs by default, and should never be over-ridden (hence they
-     * are the highest priority)
-     */
-    FIB_SOURCE_SPECIAL = FIB_SOURCE_FIRST,
-    /**
-     * Classify. A route that links directly to a classify adj
-     */
-    FIB_SOURCE_CLASSIFY,
-    /**
-     * A route the is being 'proxied' on behalf of another device
-     */
-    FIB_SOURCE_PROXY,
-    /**
-     * Route added as a result of interface configuration.
-     * this will also come from the API/CLI, but the distinction is
-     * that is from confiiguration on an interface, not a 'ip route' command
-     */
-    FIB_SOURCE_INTERFACE,
-    /**
-     * SRv6 and SR-MPLS
-     */
-    FIB_SOURCE_SR,
-    /**
-     * A high priority source a plugin can use
-     */
-    FIB_SOURCE_PLUGIN_HI,
-    /**
-     * From the BIER subsystem
-     */
-    FIB_SOURCE_BIER,
-    /**
-     * From 6RD.
-     */
-    FIB_SOURCE_6RD,
-    /**
-     * From the control plane API
-     */
-    FIB_SOURCE_API,
-    /**
-     * From the CLI.
-     */
-    FIB_SOURCE_CLI,
-    /**
-     * A low (below routing) priority source a plugin can use
-     */
-    FIB_SOURCE_PLUGIN_LOW,
-    /**
-     * LISP
-     */
-    FIB_SOURCE_LISP,
-    /**
-     * IPv[46] Mapping
-     */
-    FIB_SOURCE_MAP,
-    /**
-     * DHCP
-     */
-    FIB_SOURCE_DHCP,
-    /**
-     * IPv6 Proxy ND
-     */
-    FIB_SOURCE_IP6_ND_PROXY,
-    /**
-     * IPv6 ND (seen in the link-local tables)
-     */
-    FIB_SOURCE_IP6_ND,
-    /**
-     * Adjacency source.
-     * routes created as a result of ARP/ND entries. This is lower priority
-     * then the API/CLI. This is on purpose. trust me.
-     */
-    FIB_SOURCE_ADJ,
-    /**
-     * MPLS label. The prefix has been assigned a local label. This source
-     * never provides forwarding information, instead it acts as a place-holder
-     * so the association of label to prefix can be maintained
-     */
-    FIB_SOURCE_MPLS,
-    /**
-     * Attached Export source.
-     * routes created as a result of attahced export. routes thus sourced
-     * will be present in the export tables
-     */
-    FIB_SOURCE_AE,
-    /**
-     * Recursive resolution source.
-     * Used to install an entry that is the resolution traget of another.
-     */
-    FIB_SOURCE_RR,
-    /**
-     * uRPF bypass/exemption.
-     * Used to install an entry that is exempt from the loose uRPF check
-     */
-    FIB_SOURCE_URPF_EXEMPT,
-    /**
-     * The default route source.
-     * The default route is always added to the FIB table (like the
-     * special sources) but we need to be able to over-ride it with
-     * 'ip route' sources when provided
-     */
-    FIB_SOURCE_DEFAULT_ROUTE,
-    /**
-     * The interpose source.
-     * This is not a real source, so don't use it to source a prefix.
-     * It exists here to provide a value against which to register to the
-     * VFT for providing the interpose actions to a real source.
-     */
-    FIB_SOURCE_INTERPOSE,
-    /**
-     * Marker. add new entries before this one.
-     */
-    FIB_SOURCE_LAST = FIB_SOURCE_INTERPOSE,
-} __attribute__ ((packed)) fib_source_t;
-
-STATIC_ASSERT (sizeof(fib_source_t) == 1,
-	       "FIB too many sources");
-
-/**
- * The maximum number of sources
- */
-#define FIB_SOURCE_MAX (FIB_SOURCE_LAST+1)
-
-#define FIB_SOURCES {					\
-    [FIB_SOURCE_INVALID] = "invalid",			\
-    [FIB_SOURCE_SPECIAL] = "special",			\
-    [FIB_SOURCE_INTERFACE] = "interface",		\
-    [FIB_SOURCE_PROXY] = "proxy",                       \
-    [FIB_SOURCE_BIER] = "BIER",			        \
-    [FIB_SOURCE_6RD] = "6RD",			        \
-    [FIB_SOURCE_API] = "API",			        \
-    [FIB_SOURCE_CLI] = "CLI",			        \
-    [FIB_SOURCE_ADJ] = "adjacency",			\
-    [FIB_SOURCE_MAP] = "MAP",			        \
-    [FIB_SOURCE_SR] = "SR",			        \
-    [FIB_SOURCE_LISP] = "LISP", 			\
-    [FIB_SOURCE_CLASSIFY] = "classify",			\
-    [FIB_SOURCE_DHCP] = "DHCP",   			\
-    [FIB_SOURCE_IP6_ND_PROXY] = "IPv6-proxy-nd",        \
-    [FIB_SOURCE_IP6_ND] = "IPv6-nd",                    \
-    [FIB_SOURCE_RR] = "recursive-resolution",	        \
-    [FIB_SOURCE_AE] = "attached_export",	        \
-    [FIB_SOURCE_MPLS] = "mpls",           	        \
-    [FIB_SOURCE_URPF_EXEMPT] = "urpf-exempt",	        \
-    [FIB_SOURCE_DEFAULT_ROUTE] = "default-route",	\
-    [FIB_SOURCE_PLUGIN_HI] = "plugin-hi",               \
-    [FIB_SOURCE_PLUGIN_LOW] = "plugin-low",             \
-    [FIB_SOURCE_INTERPOSE] = "interpose",               \
-}
-
-#define FOR_EACH_FIB_SOURCE(_item) \
-    for (_item = FIB_SOURCE_FIRST; _item < FIB_SOURCE_MAX; _item++)
-
-/**
- * The different sources that can create a route.
- * The sources are defined here with their relative priority order.
- * The lower the value the higher the priority
- */
 typedef enum fib_entry_attribute_t_ {
     /**
      * Marker. Add new values after this one.
