lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 231/413] Bluetooth: 6lowpan: search for destination address in all peers
    Date
    [ Upstream commit b188b03270b7f8568fc714101ce82fbf5e811c5a ]

    Handle overlooked case where the target address is assigned to a peer
    and neither route nor gateway exist.

    For one peer, no checks are performed to see if it is meant to receive
    packets for a given address.

    As soon as there is a second peer however, checks are performed
    to deal with routes and gateways for handling complex setups with
    multiple hops to a target address.
    This logic assumed that no route and no gateway imply that the
    destination address can not be reached, which is false in case of a
    direct peer.

    Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
    Tested-by: Michael Scott <mike@foundries.io>
    Signed-off-by: Josua Mayer <josua.mayer@jm0.eu>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/bluetooth/6lowpan.c | 14 ++++++++++----
    1 file changed, 10 insertions(+), 4 deletions(-)

    diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
    index 1555b0c6f7ec..9001bf331d56 100644
    --- a/net/bluetooth/6lowpan.c
    +++ b/net/bluetooth/6lowpan.c
    @@ -180,10 +180,16 @@ static inline struct lowpan_peer *peer_lookup_dst(struct lowpan_btle_dev *dev,
    }

    if (!rt) {
    - nexthop = &lowpan_cb(skb)->gw;
    -
    - if (ipv6_addr_any(nexthop))
    - return NULL;
    + if (ipv6_addr_any(&lowpan_cb(skb)->gw)) {
    + /* There is neither route nor gateway,
    + * probably the destination is a direct peer.
    + */
    + nexthop = daddr;
    + } else {
    + /* There is a known gateway
    + */
    + nexthop = &lowpan_cb(skb)->gw;
    + }
    } else {
    nexthop = rt6_nexthop(rt, daddr);

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-24 21:40    [W:4.235 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site