summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1999-12-08 16:12:54 +0100
committerMartin Mares <mj@ucw.cz>1999-12-08 16:12:54 +0100
commit30bc402ebb324749f9468f8ff196545bb0a58442 (patch)
tree12b93e065f28d0e5f1d8d6ec5b292044cfca382d
parent0da472d7e867e31c49fccc4ee45df3ef47c29c9b (diff)
downloadbird-30bc402ebb324749f9468f8ff196545bb0a58442.tar
bird-30bc402ebb324749f9468f8ff196545bb0a58442.zip
Temporary work-arounds for multicast problems. Needs further investigation.
-rw-r--r--TODO2
-rw-r--r--sysdep/linux/netlink/netlink.c4
-rw-r--r--sysdep/unix/io.c4
3 files changed, 10 insertions, 0 deletions
diff --git a/TODO b/TODO
index 48e7e1a..4822ae4 100644
--- a/TODO
+++ b/TODO
@@ -21,6 +21,8 @@ Core
- iface: SIOCGIFINDEX exists on glibc systems, but it doesn't work on 2.0.x kernels!
+* glibc problems with struct mreqn
+
- socket: Use IP_RECVERR for BGP TCP sockets?
- OSPF: refuse running on non-multicast devices
diff --git a/sysdep/linux/netlink/netlink.c b/sysdep/linux/netlink/netlink.c
index bf61970..25d8fc0 100644
--- a/sysdep/linux/netlink/netlink.c
+++ b/sysdep/linux/netlink/netlink.c
@@ -302,7 +302,11 @@ nl_parse_link(struct nlmsghdr *h, int scan)
if (fl & IFF_UP)
f.flags |= IF_LINK_UP;
if (fl & IFF_POINTOPOINT)
+#if 0
f.flags |= IF_UNNUMBERED | IF_MULTICAST;
+#else /* FIXME: Are tunnels always unnumbered? */
+ f.flags |= IF_MULTICAST;
+#endif
if (fl & IFF_LOOPBACK)
f.flags |= IF_LOOPBACK | IF_IGNORE;
if (fl & IFF_BROADCAST)
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c
index 45db1a1..7e71d20 100644
--- a/sysdep/unix/io.c
+++ b/sysdep/unix/io.c
@@ -618,7 +618,11 @@ sk_open(sock *s)
strcpy(ifr.ifr_name, s->iface->name);
if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)) < 0)
ERR("SO_BINDTODEVICE");
+#if 0 /* FIXME */
mreq_add.imr_interface.s_addr = INADDR_ANY;
+#else
+ mreq_add.imr_interface = mreq;
+#endif
}
#else
#error Multicasts not supported on PtP devices /* FIXME: Solve it somehow? */