NetBSD Problem Report #44032

From www@NetBSD.org  Wed Nov  3 10:59:34 2010
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id AC31763BA50
	for <gnats-bugs@gnats.NetBSD.org>; Wed,  3 Nov 2010 10:59:34 +0000 (UTC)
Message-Id: <20101103105934.48FC463B95F@www.NetBSD.org>
Date: Wed,  3 Nov 2010 10:59:34 +0000 (UTC)
From: gergely@egervary.hu
Reply-To: gergely@egervary.hu
To: gnats-bugs@NetBSD.org
Subject: pppd: proxyarp is not working
X-Send-Pr-Version: www-1.0

>Number:         44032
>Category:       bin
>Synopsis:       pppd: proxyarp is not working
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    bin-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Nov 03 11:00:00 +0000 2010
>Closed-Date:    Sat Jun 08 13:18:46 +0000 2013
>Last-Modified:  Thu Feb 25 03:25:01 +0000 2016
>Originator:     Gergely Egervary
>Release:        NetBSD-5
>Organization:
>Environment:
NetBSD galileo.poli.hu 5.1_RC2 NetBSD 5.1_RC2 (GALILEO) #0: Mon Aug 30 12:00:36 CEST 2010  root@galileo.poli.hu:/usr/src/sys/arch/i386/compile/GALILEO i386
>Description:
PPTP server internal network: 10.0.0.0/8 (bge0)
PPTP server internal if: 10.0.0.1
PPTP remote client if: 10.0.0.192

According to syslog, connection is set up properly:

Nov  3 11:46:39 galileo pptpd[17673]: CTRL: Starting call (launching pppd, opening GRE)
Nov  3 11:46:39 galileo pppd[16154]: pppd 2.4.4 started by root, uid 0
Nov  3 11:46:39 galileo pppd[16154]: Using interface ppp0
Nov  3 11:46:39 galileo pppd[16154]: Connect: ppp0 <--> /dev/ttyp0
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #1
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #2
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #3
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #4
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #5
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #6
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #7
Nov  3 11:46:41 galileo pppd[16154]: MPPE 128-bit stateless compression enabled
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #8
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #9
Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #10
Nov  3 11:46:41 galileo pppd[16154]: found interface bge0 for proxy arp
Nov  3 11:46:41 galileo pppd[16154]: local  IP address 10.0.0.1
Nov  3 11:46:41 galileo pppd[16154]: remote IP address 10.0.0.192

Routing on the client is okay. Client can reach 10.0.0.1, but not the full remote network. tcpdump on the server network shows there are no response to arp who-has requests. On the VPN box, `arp -na` shows no relevant entry.

This setup used to work on good old NetBSD-4 days...

>How-To-Repeat:

>Fix:

>Release-Note:

>Audit-Trail:
From: christos@zoulas.com (Christos Zoulas)
To: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Cc: 
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Wed, 3 Nov 2010 10:45:26 -0400

 On Nov 3, 11:00am, gergely@egervary.hu (gergely@egervary.hu) wrote:
 -- Subject: bin/44032: pppd: proxyarp is not working

 | Nov  3 11:46:39 galileo pptpd[17673]: CTRL: Starting call (launching pppd, opening GRE)
 | Nov  3 11:46:39 galileo pppd[16154]: pppd 2.4.4 started by root, uid 0
 | Nov  3 11:46:39 galileo pppd[16154]: Using interface ppp0
 | Nov  3 11:46:39 galileo pppd[16154]: Connect: ppp0 <--> /dev/ttyp0
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #1
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #2
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #3
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #4
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #5
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #6
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #7
 | Nov  3 11:46:41 galileo pppd[16154]: MPPE 128-bit stateless compression enabled
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #8
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #9
 | Nov  3 11:46:41 galileo pptpd[17673]: GRE: accepting packet #10
 | Nov  3 11:46:41 galileo pppd[16154]: found interface bge0 for proxy arp
 | Nov  3 11:46:41 galileo pppd[16154]: local  IP address 10.0.0.1
 | Nov  3 11:46:41 galileo pppd[16154]: remote IP address 10.0.0.192
 | 
 | Routing on the client is okay. Client can reach 10.0.0.1, but not the full remote network. tcpdump on the server network shows there are no response to arp who-has requests. On the VPN box, `arp -na` shows no relevant entry.

 Can you determine if this is a kernel issue or a pppd issue?

 christos

From: Egervary Gergely <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org
Cc: 
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Sat, 22 Oct 2011 00:25:07 +0200

 A year has passed, and it seems we still do not have proxyarp working 
 properly.

 I'm now running on todays 5.1_STABLE.

 [10.0.0.192]---ppp---[10.0.0.1]---ethernet---[10.0.0.2]

 - pppd on 10.0.0.1 says:
    pppd[1291]: found interface vlan10 for proxy arp
    (looks okay)

 - 10.0.0.192 can ping 10.0.0.1, but not 10.0.0.2 and vice versa

 - on 10.0.0.1:
    # arp 10.0.0.192
    arp: 10.0.0.192 (10.0.0.192) -- no entry

    # arp -s 10.0.0.192 00:11:22:33:44:55 pub
    arp: set: proxy entry exists for non 802 device

 - on 10.0.0.2:
    # arp 10.0.0.192
    arp: 10.0.0.192 (10.0.0.192) -- no entry

    # tcpdump -i vlan10
    00:17:47.028819 ARP, Request who-has 10.0.0.192 tell 10.0.0.2,
    length 28
    00:17:48.036521 ARP, Request who-has 10.0.0.192 tell 10.0.0.2,
    length 28
    ...

 Any ideas?
 -- 
 Gergely EGERVARY

From: christos@zoulas.com (Christos Zoulas)
To: Egervary Gergely <gergely@egervary.hu>, gnats-bugs@NetBSD.org, 
	gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Cc: 
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Fri, 21 Oct 2011 20:09:18 -0400

 On Oct 22, 12:25am, gergely@egervary.hu (Egervary Gergely) wrote:
 -- Subject: Re: bin/44032: pppd: proxyarp is not working

 | A year has passed, and it seems we still do not have proxyarp working 
 | properly.
 | 
 | I'm now running on todays 5.1_STABLE.
 | 
 | [10.0.0.192]---ppp---[10.0.0.1]---ethernet---[10.0.0.2]
 | 
 | - pppd on 10.0.0.1 says:
 |    pppd[1291]: found interface vlan10 for proxy arp
 |    (looks okay)
 | 	
 | - 10.0.0.192 can ping 10.0.0.1, but not 10.0.0.2 and vice versa
 | 
 | - on 10.0.0.1:
 |    # arp 10.0.0.192
 |    arp: 10.0.0.192 (10.0.0.192) -- no entry
 | 
 |    # arp -s 10.0.0.192 00:11:22:33:44:55 pub
 |    arp: set: proxy entry exists for non 802 device
 | 
 | - on 10.0.0.2:
 |    # arp 10.0.0.192
 |    arp: 10.0.0.192 (10.0.0.192) -- no entry
 | 
 |    # tcpdump -i vlan10
 |    00:17:47.028819 ARP, Request who-has 10.0.0.192 tell 10.0.0.2,
 |    length 28
 |    00:17:48.036521 ARP, Request who-has 10.0.0.192 tell 10.0.0.2,
 |    length 28
 |    ...
 | 
 | Any ideas?

 Can you put some debugging in sifproxyarp and see what's going on?

 christos

From: christos@zoulas.com (Christos Zoulas)
To: Egervary Gergely <gergely@egervary.hu>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Tue, 4 Dec 2012 17:01:51 -0500

 On Dec 4,  9:50pm, gergely@egervary.hu (Egervary Gergely) wrote:
 -- Subject: Re: bin/44032: pppd: proxyarp is not working

 | Finally, I have done some debugging.
 | 
 | - In sifproxyarp(), arpmsg.hwa contains the correct MAC address.
 | - Socket write() succeeds with 112 bytes written, that looks good.
 | - If I comment out the socket write(), and manually enter the
 | arp entry (arp -s 10.0.0.192 <mac> pub proxy) then the kernel still
 | does not respond to arp who-has requests.
 | 
 | Now, some questions:
 | 
 | - The proxy arp entries are not visible in `arp -a'. Should not they
 | be visible? For example, on Linux they are visible.

 should be visible I think. do you have a configuration for me to test?

 | - Once I add an arp entry with `arp -s 10.0.0.192 <mac> pub proxy'
 | I cannot remove it later. (arp: delete: can't locate 10.0.0.192)
 | Is this normal?

 Works for me:

 [DING!] 2502#arp -s 192.168.2.200 00:01:02:03:04:05 pub proxy
 [5:00pm] 2503#arp -a
 stinky.astron.com (192.168.2.9) at 02:60:8c:f2:17:b8 on sk0
 ? (192.168.2.200) at 00:01:02:03:04:05 on sk0 permanent published (proxy only)
 [5:00pm] 2504#arp -d 192.168.2.200
 [5:00pm] 2505#arp -a
 stinky.astron.com (192.168.2.9) at 02:60:8c:f2:17:b8 on sk0

 | - Is proxy arp working good for somebody out there? Could you please
 | test it?

 Yes, just send me an example setup and I will test.

 christos

From: Egervary Gergely <gergely@egervary.hu>
To: Christos Zoulas <christos@zoulas.com>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Tue, 04 Dec 2012 21:50:25 +0100

 > | A year has passed, and it seems we still do not have proxyarp working
 > | properly.
 > |
 > | I'm now running on todays 5.1_STABLE.
 > |
 > | [10.0.0.192]---ppp---[10.0.0.1]---ethernet---[10.0.0.2]
 > |
 > | - pppd on 10.0.0.1 says:
 > |    pppd[1291]: found interface vlan10 for proxy arp
 > |    (looks okay)
 > | 	
 > | - 10.0.0.192 can ping 10.0.0.1, but not 10.0.0.2 and vice versa
 > |
 > | - on 10.0.0.1:
 > |    # arp 10.0.0.192
 > |    arp: 10.0.0.192 (10.0.0.192) -- no entry
 > |
 > |    # arp -s 10.0.0.192 00:11:22:33:44:55 pub
 > |    arp: set: proxy entry exists for non 802 device
 > |
 > | - on 10.0.0.2:
 > |    # arp 10.0.0.192
 > |    arp: 10.0.0.192 (10.0.0.192) -- no entry
 > |
 > |    # tcpdump -i vlan10
 > |    00:17:47.028819 ARP, Request who-has 10.0.0.192 tell 10.0.0.2,
 > |    length 28
 > |    00:17:48.036521 ARP, Request who-has 10.0.0.192 tell 10.0.0.2,
 > |    length 28
 > |    ...
 > |
 > | Any ideas?
 >
 > Can you put some debugging in sifproxyarp and see what's going on?

 Finally, I have done some debugging.

 - In sifproxyarp(), arpmsg.hwa contains the correct MAC address.
 - Socket write() succeeds with 112 bytes written, that looks good.
 - If I comment out the socket write(), and manually enter the
 arp entry (arp -s 10.0.0.192 <mac> pub proxy) then the kernel still
 does not respond to arp who-has requests.

 Now, some questions:

 - The proxy arp entries are not visible in `arp -a'. Should not they
 be visible? For example, on Linux they are visible.

 - Once I add an arp entry with `arp -s 10.0.0.192 <mac> pub proxy'
 I cannot remove it later. (arp: delete: can't locate 10.0.0.192)
 Is this normal?

 - Is proxy arp working good for somebody out there? Could you please
 test it?

 Thank you.
 -- 
 Gergely EGERVARY

From: Egervary Gergely <gergely@egervary.hu>
To: Christos Zoulas <christos@zoulas.com>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Tue, 04 Dec 2012 23:21:01 +0100

  > | - The proxy arp entries are not visible in `arp -a'. Should not they
  > | be visible? For example, on Linux they are visible.
  >
  > should be visible I think. do you have a configuration for me to test?
  >
  > | - Once I add an arp entry with `arp -s 10.0.0.192 <mac> pub proxy'
  > | I cannot remove it later. (arp: delete: can't locate 10.0.0.192)
  > | Is this normal?
  >
  > Works for me:

 It has something to do with the ppp interface. Try setting an arp entry
 on a ppp interface.

 Test #1: non existent IP address

 # arp -s 10.11.12.13 2c:27:d7:14:54:17 pub proxy
 # arp 10.11.12.13
 ? (10.11.12.13) at 2c:27:d7:14:54:17 on vlan10 permanent published 
 (proxy only)
 # arp -d 10.11.12.13

 All is good.

 Test #2: IP address of a ppp link (local endpoint)

 # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 # arp 10.0.0.192
 arp: 10.0.0.192 (10.0.0.192) -- no entry
 # arp -d 10.0.0.192
 arp: delete: can't locate 10.0.0.192

 It fails, but "something" is in the arp table. If I try to re-add the
 entry:

 # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 arp: set: proxy entry exists for non 802 device

 Maybe the entry is set up on the wrong interface?

 -- 
 Gergely EGERVARY

From: christos@zoulas.com (Christos Zoulas)
To: Egervary Gergely <gergely@egervary.hu>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Tue, 4 Dec 2012 17:24:18 -0500

 On Dec 4, 11:21pm, gergely@egervary.hu (Egervary Gergely) wrote:
 -- Subject: Re: bin/44032: pppd: proxyarp is not working

 | Maybe the entry is set up on the wrong interface?

 And "arp -a" says? Now that you've showed me how to reproduce it I will try
 it tonight.

 christos

From: Egervary Gergely <gergely@egervary.hu>
To: Christos Zoulas <christos@zoulas.com>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Tue, 04 Dec 2012 23:29:48 +0100

 > | Maybe the entry is set up on the wrong interface?
 >
 > And "arp -a" says? Now that you've showed me how to reproduce it I will try
 > it tonight.

 "arp -a" says:
 arp: 10.0.0.192 (10.0.0.192) -- no entry

 Replace "local endpoint" to "remote endpoint" in my previous
 email. Of course, I want to setup a proxy entry for the remote
 site over the PPP link. Local endpoint is in the ARP table
 with the physical address of the ethernet interface.

 -- 
 Gergely EGERVARY

From: =?UTF-8?B?RWdlcnbDoXJ5IEdlcmdlbHk=?= <gergely@egervary.hu>
To: Christos Zoulas <christos@zoulas.com>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Wed, 05 Jun 2013 17:27:20 +0200

 > Test #1: non existent IP address
 > 
 > # arp -s 10.11.12.13 2c:27:d7:14:54:17 pub proxy
 > # arp 10.11.12.13
 > ? (10.11.12.13) at 2c:27:d7:14:54:17 on vlan10 permanent published
 > (proxy only)
 > # arp -d 10.11.12.13
 > 
 > All is good.
 > 
 > Test #2: IP address of a ppp link (local endpoint)
 > 
 > # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 > # arp 10.0.0.192
 > arp: 10.0.0.192 (10.0.0.192) -- no entry
 > # arp -d 10.0.0.192
 > arp: delete: can't locate 10.0.0.192
 > 
 > It fails, but "something" is in the arp table. If I try to re-add the
 > entry:
 > 
 > # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 > arp: set: proxy entry exists for non 802 device

 Now running on NetBSD 6.1, and still no good :(

 For testing purposes, now I call pppd with "noproxyarp" option, and try
 to set up ARP entries manually.

 1.) If I add the ARP entry manually _before_ connecting the ppp
 connection, the ARP entry looks good, and it pings as expected:

 # arp 10.0.0.192
 arp: 10.0.0.192 (10.0.0.192) -- no entry
 # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 # arp 10.0.0.192
 ? (10.0.0.192) at 2c:27:d7:14:54:17 on vlan10 permanent published (proxy
 only)

 2.) When I add the ARP entry manually _after_ connecting the ppp
 connection, a "zombie" ARP entry is created:

 # arp 10.0.0.192
 arp: 10.0.0.192 (10.0.0.192) -- no entry
 # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 # arp 10.0.0.192
 arp: 10.0.0.192 (10.0.0.192) -- no entry
 # arp -s 10.0.0.192 2c:27:d7:14:54:17 pub proxy
 arp: set: proxy entry exists for non 802 device
 # arp -d 10.0.0.192
 arp: delete: can't locate 10.0.0.192

 Please, help me fix this one. I'm a network administrator not a
 developer, my C knowledge is less than required :(

 Thank you.
 -- 
 Egerváry Gergely
 <gergely@egervary.hu>

From: christos@zoulas.com (Christos Zoulas)
To: =?UTF-8?B?RWdlcnbDoXJ5IEdlcmdlbHk=?= <gergely@egervary.hu>
Cc: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: bin/44032: pppd: proxyarp is not working
Date: Wed, 5 Jun 2013 13:32:01 -0400

 On Jun 5,  5:27pm, gergely@egervary.hu (=?UTF-8?B?RWdlcnbDoXJ5IEdlcmdlbHk=?=) wrote:
 -- Subject: Re: bin/44032: pppd: proxyarp is not working

 | Please, help me fix this one. I'm a network administrator not a
 | developer, my C knowledge is less than required :(

 Sorry, I forgot about it. I will try to look again at it over the weekend.

 christos

State-Changed-From-To: open->feedback
State-Changed-By: christos@NetBSD.org
State-Changed-When: Thu, 06 Jun 2013 20:11:36 -0400
State-Changed-Why:
Although this is supposed to work, why don't you just add a route to the
host/net that you want to access on your default gateway that points to
the machine which has the ppp link?


From: =?ISO-8859-1?Q?Egerv=E1ry_Gergely?= <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org, christos@NetBSD.org
Cc: 
Subject: Re: bin/44032 (pppd: proxyarp is not working)
Date: Fri, 07 Jun 2013 09:33:26 +0200

 > Although this is supposed to work, why don't you just add a route to the
 > host/net that you want to access on your default gateway that points to
 > the machine which has the ppp link?

 Routing only works if you have a remote PPP peer in a different IP
 subnet. Then, you do not need proxyarp, but you need routing.

 In this scenario, I have a LAN subnet, called 10.0.0.0/8, with the PPP
 server address 10.0.0.1. The remote PPP peer dials in via VPN, and picks
 up an IP address (10.0.0.192) from the LAN subnet. This one requires
 working proxyarp. Without proxyarp, LAN hosts cannot reach the remote
 PPP peer, as they have a network route for this subnet on their LAN
 interface, and won't go to their default gateway.

 In a perfect world all WAN connections should use Layer 3 routing.
 Actually, the world is not perfect - I cannot change the topology -
 and it used to work this way for more than 15 years.

 -- 
 Egerváry Gergely


From: "Christos Zoulas" <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44032 CVS commit: src/sys/net
Date: Fri, 7 Jun 2013 22:42:56 -0400

 Module Name:	src
 Committed By:	christos
 Date:		Sat Jun  8 02:42:56 UTC 2013

 Modified Files:
 	src/sys/net: route.c

 Log Message:
 PR/44032: Proxy entries stopped working with pppd. The issue here is that
 the route entry was added, but the RTF_LLINFO bit was not set, making arp -a
 not showing the entry, but netstat -rn -f inet showing it with the missing
 L bit. The order of resolution in ifa_ifwithroute() is that if a destination
 address is found, then the interface chosen for the route is that of the
 destination. This does not work for link-level addresses since the ppp
 interface does not arp (uses link_rtrequest, not arp_rtrequest), so the
 bit is never set. The easy solution here is to check that the gateway is
 a link address, and use the interface which we chose for the link address
 as opposed to the interface that routes to the destination. This restores
 the previous behavior, but is it correct?


 To generate a diff of this commit:
 cvs rdiff -u -r1.126 -r1.127 src/sys/net/route.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: =?ISO-8859-1?Q?Egerv=E1ry_Gergely?= <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org
Cc: 
Subject: Re: PR/44032 CVS commit: src/sys/net
Date: Sat, 08 Jun 2013 11:28:33 +0200

 >  Log Message:
 >  PR/44032: Proxy entries stopped working with pppd. The issue here is that
 >  the route entry was added, but the RTF_LLINFO bit was not set, making arp -a
 >  not showing the entry, but netstat -rn -f inet showing it with the missing
 >  L bit. The order of resolution in ifa_ifwithroute() is that if a destination
 >  address is found, then the interface chosen for the route is that of the
 >  destination. This does not work for link-level addresses since the ppp
 >  interface does not arp (uses link_rtrequest, not arp_rtrequest), so the
 >  bit is never set. The easy solution here is to check that the gateway is
 >  a link address, and use the interface which we chose for the link address
 >  as opposed to the interface that routes to the destination. This restores
 >  the previous behavior, but is it correct?

 Thank you very much for your work.

 I have pulled the following files:

 usr.sbin/arp/arp.c,v 1.51
 usr.sbin/pppd/pppd/sys-bsd.c,v 1.66
 sys/net/route.c,v 1.127

 Results:
 | pppd[799]: found interface wm0 for proxy arp

 The correct interface is called vlan10 (with parent: wm0)
 - previously pppd found vlan10. Is this intentional?

 # arp 10.0.0.192
 arp: 10.0.0.192 (10.0.0.192) -- no entry

 # netstat -rn -f inet | grep 10.0.0.192
 10.0.0.192         10.0.0.1           UH          0       52      -  ppp0
 10.0.0.192         11:22:33:44:55:66  UHSp        0        0      -  wm0

 Still no good response to ARP who-has requests.

 -- 
 Egerváry Gergely
 Datacast Rendszerház Kft

From: =?ISO-8859-1?Q?Egerv=E1ry_Gergely?= <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, 
 netbsd-bugs@netbsd.org, gergely@egervary.hu
Cc: 
Subject: Re: PR/44032 CVS commit: src/sys/net
Date: Sat, 08 Jun 2013 11:43:02 +0200

 >  Results:
 >  | pppd[799]: found interface wm0 for proxy arp
 >  
 >  The correct interface is called vlan10 (with parent: wm0)
 >  - previously pppd found vlan10. Is this intentional?
 >  
 >  # arp 10.0.0.192
 >  arp: 10.0.0.192 (10.0.0.192) -- no entry
 >  
 >  # netstat -rn -f inet | grep 10.0.0.192
 >  10.0.0.192         10.0.0.1           UH          0       52      -  ppp0
 >  10.0.0.192         11:22:33:44:55:66  UHSp        0        0      -  wm0
 >  
 >  Still no good response to ARP who-has requests.

 Reverting back sys-bsd.c,v 1.66 all is good:

 # arp 10.0.0.192
 vpn01.intranet (10.0.0.192) at 11:22:33:44:55:66 on vlan10 permanent
 published (proxy only)

 # netstat -rn -f inet | grep 10.0.0.192
 10.0.0.192         10.0.0.1           UH          0       76      -  ppp0
 10.0.0.192         11:22:33:44:55:66  UHLSp       0        0      -  vlan10

 Hallelujah!

 Please revise the changes in sys-bsd.c
 Thank you again!

 -- 
 Egerváry Gergely
 Datacast Rendszerház Kft

From: christos@zoulas.com (Christos Zoulas)
To: =?ISO-8859-1?Q?Egerv=E1ry_Gergely?= <gergely@egervary.hu>, 
	gnats-bugs@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Cc: 
Subject: Re: PR/44032 CVS commit: src/sys/net
Date: Sat, 8 Jun 2013 09:11:10 -0400

 On Jun 8, 11:43am, gergely@egervary.hu (=?ISO-8859-1?Q?Egerv=E1ry_Gergely?=) wrote:
 -- Subject: Re: PR/44032 CVS commit: src/sys/net

 | >  Results:
 | >  | pppd[799]: found interface wm0 for proxy arp
 | >  
 | >  The correct interface is called vlan10 (with parent: wm0)
 | >  - previously pppd found vlan10. Is this intentional?
 | >  
 | >  # arp 10.0.0.192
 | >  arp: 10.0.0.192 (10.0.0.192) -- no entry
 | >  
 | >  # netstat -rn -f inet | grep 10.0.0.192
 | >  10.0.0.192         10.0.0.1           UH          0       52      -  ppp0
 | >  10.0.0.192         11:22:33:44:55:66  UHSp        0        0      -  wm0
 | >  
 | >  Still no good response to ARP who-has requests.
 | 
 | Reverting back sys-bsd.c,v 1.66 all is good:
 | 
 | # arp 10.0.0.192
 | vpn01.intranet (10.0.0.192) at 11:22:33:44:55:66 on vlan10 permanent
 | published (proxy only)
 | 
 | # netstat -rn -f inet | grep 10.0.0.192
 | 10.0.0.192         10.0.0.1           UH          0       76      -  ppp0
 | 10.0.0.192         11:22:33:44:55:66  UHLSp       0        0      -  vlan10
 | 
 | Hallelujah!
 | 
 | Please revise the changes in sys-bsd.c
 | Thank you again!

 Right. Thanks!

 christos

State-Changed-From-To: feedback->closed
State-Changed-By: christos@NetBSD.org
State-Changed-When: Sat, 08 Jun 2013 09:18:46 -0400
State-Changed-Why:
reported verified it is fixed


From: "SAITOH Masanobu" <msaitoh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44032 CVS commit: [netbsd-6] src/sys/net
Date: Mon, 29 Jul 2013 05:43:13 +0000

 Module Name:	src
 Committed By:	msaitoh
 Date:		Mon Jul 29 05:43:13 UTC 2013

 Modified Files:
 	src/sys/net [netbsd-6]: route.c

 Log Message:
 Pull up following revision(s) (requested by christos in ticket #909):
 	sys/net/route.c: revision 1.127
 PR/44032: Proxy entries stopped working with pppd. The issue here is that
 the route entry was added, but the RTF_LLINFO bit was not set, making arp -a
 not showing the entry, but netstat -rn -f inet showing it with the missing
 L bit. The order of resolution in ifa_ifwithroute() is that if a destination
 address is found, then the interface chosen for the route is that of the
 destination. This does not work for link-level addresses since the ppp
 interface does not arp (uses link_rtrequest, not arp_rtrequest), so the
 bit is never set. The easy solution here is to check that the gateway is
 a link address, and use the interface which we chose for the link address
 as opposed to the interface that routes to the destination. This restores
 the previous behavior, but is it correct?


 To generate a diff of this commit:
 cvs rdiff -u -r1.126 -r1.126.2.1 src/sys/net/route.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Ryota Ozaki" <ozaki-r@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44032 CVS commit: src/tests/net/arp
Date: Thu, 25 Feb 2016 03:23:15 +0000

 Module Name:	src
 Committed By:	ozaki-r
 Date:		Thu Feb 25 03:23:15 UTC 2016

 Modified Files:
 	src/tests/net/arp: t_arp.sh

 Log Message:
 Add basic tests for Proxy ARP

 The tests don't much enough and need more realitic tests, for example
 tests for a setup using ppp found in PR 44032.


 To generate a diff of this commit:
 cvs rdiff -u -r1.10 -r1.11 src/tests/net/arp/t_arp.sh

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.