diff --git a/system-linux.c b/system-linux.c
index 8a1173c..3fef196 100644
--- a/system-linux.c
+++ b/system-linux.c
@@ -48,6 +48,10 @@
 #define IFA_F_NOPREFIXROUTE 0x200
 #endif
 
+#ifndef RTA_EXPIRES
+#define RTA_EXPIRES (RTA_ENCAP + 1)
+#endif
+
 #ifndef IFA_FLAGS
 #define IFA_FLAGS (IFA_MULTICAST + 1)
 #endif
@@ -1776,6 +1780,11 @@ static int system_rt(struct device *dev, struct device_route *route, int cmd)
 	unsigned int table = (route->flags & (DEVROUTE_TABLE | DEVROUTE_SRCTABLE))
 			? route->table : RT_TABLE_MAIN;
 
+	int expires = 60000; // (route->valid_until);
+	if(route->valid_until < 30)
+  		netifd_log_message(L_WARNING, "%d route expiring...", route->valid_until);
+
+
 	struct rtmsg rtm = {
 		.rtm_family = (alen == 4) ? AF_INET : AF_INET6,
 		.rtm_dst_len = route->mask,
@@ -1847,6 +1856,9 @@ static int system_rt(struct device *dev, struct device_route *route, int cmd)
 	if (table >= 256)
 		nla_put_u32(msg, RTA_TABLE, table);
 
+	if (expires >= 0)
+        	nla_put_u32(msg, RTA_EXPIRES, expires);
+
 	if (route->flags & DEVROUTE_MTU) {
 		struct nlattr *metrics;
 
@@ -1858,6 +1870,8 @@ static int system_rt(struct device *dev, struct device_route *route, int cmd)
 		nla_nest_end(msg, metrics);
 	}
 
+// Really need some error checking here
+
 	return system_rtnl_call(msg);
 
 nla_put_failure:
