Portál AbcLinuxu, 20. května 2025 17:23
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:
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.