All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Ahern <dsahern@kernel.org>
To: Tariq Toukan <tariqt@nvidia.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Eric Dumazet <edumazet@google.com>
Cc: netdev@vger.kernel.org, Aya Levin <ayal@nvidia.com>,
	Gal Pressman <gal@nvidia.com>, Saeed Mahameed <saeedm@nvidia.com>
Subject: Re: [PATCH net V2] net: ping6: Fix ping -6 with interface name
Date: Mon, 30 May 2022 09:00:05 -0600	[thread overview]
Message-ID: <779a783e-41ec-d0b0-d6a1-0c5668d0c844@kernel.org> (raw)
In-Reply-To: <20220529115033.13454-1-tariqt@nvidia.com>

On 5/29/22 5:50 AM, Tariq Toukan wrote:
> From: Aya Levin <ayal@nvidia.com>
> 
> When passing interface parameter to ping -6:
> $ ping -6 ::11:141:84:9 -I eth2
> Results in:
> PING ::11:141:84:10(::11:141:84:10) from ::11:141:84:9 eth2: 56 data bytes
> ping: sendmsg: Invalid argument
> ping: sendmsg: Invalid argument
> 
> Initialize the fl6's outgoing interface (OIF) before triggering
> ip6_datagram_send_ctl. Don't wipe fl6 after ip6_datagram_send_ctl() as
> changes in fl6 that may happen in the function are overwritten explicitly.
> Update comment accordingly.
> 
> Fixes: 13651224c00b ("net: ping6: support setting basic SOL_IPV6 options via cmsg")
> Signed-off-by: Aya Levin <ayal@nvidia.com>
> Reviewed-by: Gal Pressman <gal@nvidia.com>
> Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
> Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
> ---
>  net/ipv6/ping.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> V2:
> Per David Ahern's comment, moved memset before if (msg->msg_controllen),
> and updated the code comment accordingly.
> 
> diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
> index ff033d16549e..2a5f3337d488 100644
> --- a/net/ipv6/ping.c
> +++ b/net/ipv6/ping.c
> @@ -101,24 +101,25 @@ static int ping_v6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
>  	ipc6.sockc.tsflags = sk->sk_tsflags;
>  	ipc6.sockc.mark = sk->sk_mark;
>  
> +	memset(&fl6, 0, sizeof(fl6));
> +
>  	if (msg->msg_controllen) {
>  		struct ipv6_txoptions opt = {};
>  
>  		opt.tot_len = sizeof(opt);
>  		ipc6.opt = &opt;
> +		fl6.flowi6_oif = oif;

This should be moved up to after the memset since it is currently done
after "fl6.daddr = *daddr;" below (remove that one). That's how it is
done in rawv6_sendmsg and udpv6_sendmsg.



>  
>  		err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, &ipc6);
>  		if (err < 0)
>  			return err;
>  
>  		/* Changes to txoptions and flow info are not implemented, yet.
> -		 * Drop the options, fl6 is wiped below.
> +		 * Drop the options.
>  		 */
>  		ipc6.opt = NULL;
>  	}
>  
> -	memset(&fl6, 0, sizeof(fl6));
> -
>  	fl6.flowi6_proto = IPPROTO_ICMPV6;
>  	fl6.saddr = np->saddr;
>  	fl6.daddr = *daddr;


      reply	other threads:[~2022-05-30 15:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-29 11:50 [PATCH net V2] net: ping6: Fix ping -6 with interface name Tariq Toukan
2022-05-30 15:00 ` David Ahern [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=779a783e-41ec-d0b0-d6a1-0c5668d0c844@kernel.org \
    --to=dsahern@kernel.org \
    --cc=ayal@nvidia.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gal@nvidia.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=saeedm@nvidia.com \
    --cc=tariqt@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.