Portál AbcLinuxu, 16. listopadu 2025 08:16
Pokud máte na linuxovém stroji DLNA server a ten si nastavíte, aby posílal notifikace z rozhraní bridge, tak budete mít problém.
Tyto notifikace se totiž posílají pomocí multicastů, i když jde v podstatě o broadcast. Prostě se to má poslat na všechny stroje v místní síti. V jádře je ale bug, kdy multicasty posílané z "br0" uvidíte tsharkem na br0, ale už ne na rozhraních v bridgi. Prostě se nikam nepošle nic. Identické multicasty, co přijdou z jednoho vnějšího rozhraní v bridgi, ale jádro korektně pošle dál.
V příslušném jaderném mailing listu už to jeden člověk, co má stejný problém jako já, řešil a nikdo mu neodpověděl. Tak jsem udělal jednoduchý hack, co to "opraví".
--- linux/net/bridge/br_device.c.orig 2012-06-13 16:52:14.557429094 +0200
+++ linux/net/bridge/br_device.c 2012-06-05 15:26:17.340602795 +0200
@@ -52,7 +52,7 @@
if (is_broadcast_ether_addr(dest))
br_flood_deliver(br, skb);
else if (is_multicast_ether_addr(dest)) {
- if (unlikely(netpoll_tx_running(dev))) {
+ if (unlikely(netpoll_tx_running(dev)) || true) {
br_flood_deliver(br, skb);
goto out;
}
Jde ale o hack, takže tahle změna má závažné důsledky asi hlavně pro streamování přes multicast. Protože ale všechno doma streamuju jen unicastem, tak mi to nevadí.
Tiskni
Sdílej:
A doma ti to funguje normálně?
V příslušném jaderném mailing listu už to jeden člověk, co má stejný problém jako já, řešil a nikdo mu neodpověděl.
Nemůžu to najít, můžete sem napsat odkaz na archiv nebo aspoň subject toho mailu?
if (unlikely(true))
Hezký 
true naštěstí není uvnitř unlikely(), ale samozřejmě se tím celé to unlikely(...) stává zbytečným.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.