diff --git a/sgsnemu/tun.c b/sgsnemu/tun.c
index 06397d1..a19fd5b 100644
--- a/sgsnemu/tun.c
+++ b/sgsnemu/tun.c
@@ -421,7 +421,17 @@
 
   close(fd);
   this->addrs++;
-  return tun_sifflags(this, IFF_UP | IFF_RUNNING);
+
+  /* On linux the route to the interface is set automatically
+     on FreeBSD we have to do this manually */
+
+#if defined(__FreeBSD__)
+  tun_sifflags(this, IFF_UP | IFF_RUNNING); /* TODO */
+  return tun_addroute(this, addr, addr, netmask);
+#else
+  return tun_sifflags(this, IFF_UP | IFF_RUNNING); 
+#endif
+
 }
 
 int tun_addroute(struct tun_t *this,
@@ -430,7 +440,8 @@
 		 struct in_addr *mask)
 {
 
-  /* TODO: Learn how to set routing table on sun and FreeBSD */
+
+  /* TODO: Learn how to set routing table on sun  */
 #ifdef __linux__
 
   struct rtentry r;
@@ -461,6 +472,55 @@
   }
   close(fd);
 
+#elif defined(__FreeBSD__)
+
+struct {
+  struct rt_msghdr rt;
+  struct sockaddr_in dst;
+  struct sockaddr_in gate;
+  struct sockaddr_in mask;
+} req;
+
+ int fd;
+ struct rt_msghdr *rtm;
+ 
+ if((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) {
+   sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+	   "socket() failed");
+   return -1;
+ }
+ 
+ memset(&req, 0x00, sizeof(req));
+ 
+ rtm  = &req.rt;
+ 
+ rtm->rtm_msglen = sizeof(req);
+ rtm->rtm_version = RTM_VERSION;
+ rtm->rtm_type = RTM_ADD;
+ rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC;  /* TODO */
+ rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
+ rtm->rtm_pid = getpid();      
+ rtm->rtm_seq = 0044;                                 /* TODO */
+ 
+ req.dst.sin_family       = AF_INET;
+ req.dst.sin_len          = sizeof(req.dst);
+ req.mask.sin_family      = AF_INET;
+ req.mask.sin_len         = sizeof(req.mask);
+ req.gate.sin_family      = AF_INET;
+ req.gate.sin_len         = sizeof(req.gate);
+
+ req.dst.sin_addr.s_addr  = dst->s_addr;
+ req.mask.sin_addr.s_addr = mask->s_addr;
+ req.gate.sin_addr.s_addr = gateway->s_addr;
+ 
+ if(write(fd, rtm, rtm->rtm_msglen) < 0) {
+   sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+	   "write() failed");
+   close(fd);
+   return -1;
+ }
+ close(fd);
+
 #endif
 
   return 0;
@@ -573,6 +633,7 @@
 
   snprintf((*tun)->devname, sizeof((*tun)->devname), "tun%d", devnum);
   (*tun)->devname[sizeof((*tun)->devname)] = 0;
+
 #endif
 
   return 0;
