[OpenWrt-Devel] 回复: [PATCH] interface-ip: fix find locally addressable target for p2p

Tan Xiaofan xfan1024 at live.com
Thu May 16 08:09:20 PDT 2019


Hi, I add some explanation to the patch

From 57007eef77f266e40640a2c76aabd56fd37553f7 Mon Sep 17 00:00:00 2001
From: xiaofan <xfan1024 at live.com>
Date: Thu, 16 May 2019 21:12:47 +0800
Subject: [PATCH] interface-ip: fix find locally addressable target for p2p

In case of tunnel over PPP(such as gretap over l2tp): tunnel interface
use PPP's peer address as remote address, netifd script will call
proto_add_host_dependency function, then netifd will search which device
can reach to the remote address. Before the patch, netifd don't consider
the PPP interface can reach to the remote address, so netifd will select
default route to remote address, it will lead to remote address unreachable.

Signed-off-by: xiaofan <xfan1024 at live.com>
---
 interface-ip.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/interface-ip.c b/interface-ip.c
index 6900cd7..8d5587c 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -196,6 +196,9 @@ __find_ip_addr_target(struct interface_ip_settings *ip, union if_addr *a, bool v
   if (v6 != ((addr->flags & DEVADDR_FAMILY) == DEVADDR_INET6))
    continue;

+  if (!v6 && addr->point_to_point && a->in.s_addr == addr->point_to_point)
+   return true;
+
   /* Handle offlink addresses correctly */
   unsigned int mask = addr->mask;
   if ((addr->flags & DEVADDR_FAMILY) == DEVADDR_INET6 &&
--
2.17.1




>
> Hi,
>
> On Thu, May 16, 2019 at 4:01 PM Tan Xiaofan <xfan1024 at live.com> wrote:
> >
> > From d0e1cb81b45ec825199d499cda9c8daef94e13a5 Mon Sep 17 00:00:00 2001
> > From: xiaofan <xfan1024 at live.com>
> > Date: Thu, 16 May 2019 21:12:47 +0800
> > Subject: [PATCH] interface-ip: fix find locally addressable target for p2p
> The patch fails to explain why this change is required and what
> usecase/problem it fixes.
>
> Hans
> >
> > Signed-off-by: xiaofan <xfan1024 at live.com>
> > ---
> >  interface-ip.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/interface-ip.c b/interface-ip.c
> > index 6900cd7..7ab8643 100644
> > --- a/interface-ip.c
> > +++ b/interface-ip.c
> > @@ -196,6 +196,10 @@ __find_ip_addr_target(struct interface_ip_settings *ip, union if_addr *a, bool v
> >    if (v6 != ((addr->flags & DEVADDR_FAMILY) == DEVADDR_INET6))
> >     continue;
> >
> > +  if (!v6 && addr->point_to_point && a->in.s_addr == addr->point_to_point) {
> > +   return true;
> > +  }
> > +
> >    /* Handle offlink addresses correctly */
> >    unsigned int mask = addr->mask;
> >    if ((addr->flags & DEVADDR_FAMILY) == DEVADDR_INET6 &&
> > --
> > 2.17.1
> >
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190516/af5617e8/attachment-0001.html>


More information about the openwrt-devel mailing list