Module Name: src Committed By: ozaki-r Date: Mon Jun 26 03:13:40 UTC 2017
Modified Files: src/sys/net: rtsock.c src/tests/net/arp: t_arp.sh src/tests/net/ndp: t_ndp.sh src/usr.sbin/arp: arp.c src/usr.sbin/ndp: ndp.c Log Message: Fix usage of routing messages on arp -d and ndp -d It didn't work as we expected; we should set RTA_GATEWAY not RTA_IFP on RTM_GET to return an if_index and the kernel should use it on RTM_DELETE. To generate a diff of this commit: cvs rdiff -u -r1.219 -r1.220 src/sys/net/rtsock.c cvs rdiff -u -r1.27 -r1.28 src/tests/net/arp/t_arp.sh cvs rdiff -u -r1.24 -r1.25 src/tests/net/ndp/t_ndp.sh cvs rdiff -u -r1.56 -r1.57 src/usr.sbin/arp/arp.c cvs rdiff -u -r1.48 -r1.49 src/usr.sbin/ndp/ndp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/rtsock.c diff -u src/sys/net/rtsock.c:1.219 src/sys/net/rtsock.c:1.220 --- src/sys/net/rtsock.c:1.219 Fri Jun 23 05:46:10 2017 +++ src/sys/net/rtsock.c Mon Jun 26 03:13:40 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock.c,v 1.219 2017/06/23 05:46:10 ozaki-r Exp $ */ +/* $NetBSD: rtsock.c,v 1.220 2017/06/26 03:13:40 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.219 2017/06/23 05:46:10 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.220 2017/06/26 03:13:40 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -856,8 +856,10 @@ COMPATNAME(route_output)(struct mbuf *m, if (info.rti_info[RTAX_GATEWAY] && (info.rti_info[RTAX_GATEWAY]->sa_family == AF_LINK) && (rtm->rtm_flags & RTF_LLDATA) != 0) { + const struct sockaddr_dl *sdlp = + satocsdl(info.rti_info[RTAX_GATEWAY]); error = lla_rt_output(rtm->rtm_type, rtm->rtm_flags, - rtm->rtm_rmx.rmx_expire, &info, 0); + rtm->rtm_rmx.rmx_expire, &info, sdlp->sdl_index); break; } #endif /* INET */ Index: src/tests/net/arp/t_arp.sh diff -u src/tests/net/arp/t_arp.sh:1.27 src/tests/net/arp/t_arp.sh:1.28 --- src/tests/net/arp/t_arp.sh:1.27 Thu Jun 22 10:06:33 2017 +++ src/tests/net/arp/t_arp.sh Mon Jun 26 03:13:40 2017 @@ -1,4 +1,4 @@ -# $NetBSD: t_arp.sh,v 1.27 2017/06/22 10:06:33 ozaki-r Exp $ +# $NetBSD: t_arp.sh,v 1.28 2017/06/26 03:13:40 ozaki-r Exp $ # # Copyright (c) 2015 The NetBSD Foundation, Inc. # All rights reserved. @@ -647,15 +647,15 @@ arp_rtm_body() str="RTM_GET.+<UP,DONE,LLINFO>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_GET $file - str="<DST,GATEWAY,IFP,IFA>" + str="<DST,GATEWAY>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_GET $file - str="$IP4DST $macaddr_dst $macaddr_src $IP4SRC" + str="$IP4DST $macaddr_dst" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_GET $file str="RTM_DELETE.+<UP,DONE,LLINFO>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_DELETE $file - str="<DST,GATEWAY,IFP,IFA>" + str="<DST,GATEWAY>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_DELETE $file - str="$IP4DST $macaddr_dst $macaddr_src $IP4SRC" + str="$IP4DST $macaddr_dst" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_DELETE $file rump_server_destroy_ifaces Index: src/tests/net/ndp/t_ndp.sh diff -u src/tests/net/ndp/t_ndp.sh:1.24 src/tests/net/ndp/t_ndp.sh:1.25 --- src/tests/net/ndp/t_ndp.sh:1.24 Thu Jun 22 10:06:34 2017 +++ src/tests/net/ndp/t_ndp.sh Mon Jun 26 03:13:40 2017 @@ -1,4 +1,4 @@ -# $NetBSD: t_ndp.sh,v 1.24 2017/06/22 10:06:34 ozaki-r Exp $ +# $NetBSD: t_ndp.sh,v 1.25 2017/06/26 03:13:40 ozaki-r Exp $ # # Copyright (c) 2015 The NetBSD Foundation, Inc. # All rights reserved. @@ -446,15 +446,15 @@ ndp_rtm_body() str="RTM_GET.+<UP,DONE,LLINFO>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_GET $file - str="<DST,GATEWAY,IFP,IFA>" + str="<DST,GATEWAY>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_GET $file - str="$IP6DST $macaddr_dst $macaddr_src $IP6SRC" + str="$IP6DST $macaddr_dst" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_GET $file str="RTM_DELETE.+<UP,DONE,LLINFO>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_DELETE $file - str="<DST,GATEWAY,IFP,IFA>" + str="<DST,GATEWAY>" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_DELETE $file - str="$IP6DST $macaddr_dst $macaddr_src $IP6SRC" + str="$IP6DST $macaddr_dst" atf_check -s exit:0 -o match:"$str" grep -A 3 RTM_DELETE $file rump_server_destroy_ifaces Index: src/usr.sbin/arp/arp.c diff -u src/usr.sbin/arp/arp.c:1.56 src/usr.sbin/arp/arp.c:1.57 --- src/usr.sbin/arp/arp.c:1.56 Tue Jun 6 19:59:10 2017 +++ src/usr.sbin/arp/arp.c Mon Jun 26 03:13:40 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: arp.c,v 1.56 2017/06/06 19:59:10 ryo Exp $ */ +/* $NetBSD: arp.c,v 1.57 2017/06/26 03:13:40 ozaki-r Exp $ */ /* * Copyright (c) 1984, 1993 @@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1984, 19 #if 0 static char sccsid[] = "@(#)arp.c 8.3 (Berkeley) 4/28/95"; #else -__RCSID("$NetBSD: arp.c,v 1.56 2017/06/06 19:59:10 ryo Exp $"); +__RCSID("$NetBSD: arp.c,v 1.57 2017/06/26 03:13:40 ozaki-r Exp $"); #endif #endif /* not lint */ @@ -660,7 +660,7 @@ rtmsg(const int s, const int cmd, const break; case RTM_GET: rtm->rtm_flags |= RTF_LLDATA; - rtm->rtm_addrs |= RTA_DST | RTA_IFP; + rtm->rtm_addrs |= RTA_DST | RTA_GATEWAY; } #define NEXTADDR(w, s) \ Index: src/usr.sbin/ndp/ndp.c diff -u src/usr.sbin/ndp/ndp.c:1.48 src/usr.sbin/ndp/ndp.c:1.49 --- src/usr.sbin/ndp/ndp.c:1.48 Mon Sep 19 19:13:14 2016 +++ src/usr.sbin/ndp/ndp.c Mon Jun 26 03:13:40 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ndp.c,v 1.48 2016/09/19 19:13:14 christos Exp $ */ +/* $NetBSD: ndp.c,v 1.49 2017/06/26 03:13:40 ozaki-r Exp $ */ /* $KAME: ndp.c,v 1.121 2005/07/13 11:30:13 keiichi Exp $ */ /* @@ -813,7 +813,7 @@ rtmsg(int cmd) break; case RTM_GET: rtm->rtm_flags |= RTF_LLDATA; - rtm->rtm_addrs |= RTA_DST | RTA_IFP; + rtm->rtm_addrs |= RTA_DST | RTA_GATEWAY; } #define NEXTADDR(w, s) \ if (rtm->rtm_addrs & (w)) { \