summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sysdep/bsd/krt-sock.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 3b8c50f..4a77bec 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -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)