I've hit a dilemma in a fix I have in review[1]. Currently, in_broadcast() iterates over the ifnet address list without holding any locks. I can pretty easily panic the kernel by constantly adding and removing addresses while passing traffic over the interface. The fix is to acquire the appropriate rlock, but the catch is that according to dtrace, in_broadcast() is called on almost every packet that passes through ip_output(). I'm concerned about adding additional locking operations to the transmit path.
Do we actually need to call in_broadcast() so often? It seems silly to check whether we are sending to a broadcast address on a per-packet basis. [1] https://reviews.freebsd.org/D7227 _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-transport To unsubscribe, send any mail to "[email protected]"
