tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bridge(4) - feedback local packets into ether_input()



(I'm reposting the below my reply because it was sent accidentally
with HTML and filtered at the server.)

On Sat, Apr 30, 2016 at 8:50 PM, Ryota Ozaki <ozaki.ryota%gmail.com@localhost> wrote:
>
> 2016/04/28 10:43 pm "Roy Marples" <roy%marples.name@localhost>:
>>
>> On 22/04/2016 02:14, Roy Marples wrote:
>> > Because DHCP is essentially a broadcast operation, I copied the logic
>> > from bridge_broadcast() into bridge_output() (used for originating local
>> > packets) where we send the packet to ether_input() if it's broadcast or
>> > multicast. Because bridge_output has coding for if src_if == dst_if I
>> > reversed the logic on sending it to ether_input (src_if != dst_if) so
>> > that the receiving interface doesn't double up.
>>
>> Nick suggested just to use bridge_broadcast() and came up with this
>> patch: http://www.netbsd.org/~skrll/bridge.diff
>>
>> (note doesn't compile, src_if needs replacing with ifp)
>>
>> However, this makes the kernel panic with locking against myself on
>> softnet_lock which we cannot figure out.
>>
>> Is this an easy fix or should we forget it and go back to the initial
>> patch?
>
> Not easy because softnet_lock may or may not be held on sending path as
> nick's back trace indicates.
> If the first patch works for you, we should use it for now.
> (softnet_lock should be fixed in the future though.)
>
>   ozaki-r
>


Home | Main Index | Thread Index | Old Index