]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Caching loopback interface.
authorOndrej Filip <feela@network.cz>
Tue, 1 Jun 2004 10:55:10 +0000 (10:55 +0000)
committerOndrej Filip <feela@network.cz>
Tue, 1 Jun 2004 10:55:10 +0000 (10:55 +0000)
sysdep/bsd/krt-sock.c

index 3b8c50fbf2095005e51f74ef4b383b5493d3fe36..4a77bec98c62e9be177d5c21521eeeb03b7ad9f6 100644 (file)
@@ -107,6 +107,7 @@ krt_sock_send(int cmd, rte *e, char *name)
   struct ks_msg msg;
   char *body = (char *)msg.buf;
   sockaddr gate, mask, dst;
+  static struct iface *loop = NULL;
 
   DBG("krt-sock: send %I/%d via %I", net->n.prefix, net->n.pxlen, a->gw);
 
@@ -145,16 +146,20 @@ krt_sock_send(int cmd, rte *e, char *name)
    */
   if(!i)
   {
-    i = HEAD(iface_list);
-
-    WALK_LIST(j, iface_list)
+    if(!loop)
     {
-      if (j->flags & IF_LOOPBACK)
+      i = HEAD(iface_list);
+
+      WALK_LIST(j, iface_list)
       {
-        i = j;
-        break;
+        if (j->flags & IF_LOOPBACK)
+        {
+          i = j;
+          break;
+        }
       }
     }
+    i = loop;
   }
 
   switch (a->dest)