On Thu, Jan 10, 2019 at 3:25 PM David Herrmann <dh.herrm...@gmail.com> wrote: > > The udp-tunnel setup allows binding sockets to a network device. Prefer > the new SO_BINDTOIF to avoid temporarily resolving the device-name just > to look it up in the ioctl again. > > Signed-off-by: David Herrmann <dh.herrm...@gmail.com> Reviewed-by: Tom Gundersen <t...@jklm.no>
> --- > net/ipv4/udp_tunnel.c | 15 +++------------ > 1 file changed, 3 insertions(+), 12 deletions(-) > > diff --git a/net/ipv4/udp_tunnel.c b/net/ipv4/udp_tunnel.c > index be8b5b2157d8..5d26c501da3b 100644 > --- a/net/ipv4/udp_tunnel.c > +++ b/net/ipv4/udp_tunnel.c > @@ -21,18 +21,9 @@ int udp_sock_create4(struct net *net, struct udp_port_cfg > *cfg, > goto error; > > if (cfg->bind_ifindex) { > - struct net_device *dev; > - > - dev = dev_get_by_index(net, cfg->bind_ifindex); > - if (!dev) { > - err = -ENODEV; > - goto error; > - } > - > - err = kernel_setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, > - dev->name, strlen(dev->name) + 1); > - dev_put(dev); > - > + err = kernel_setsockopt(sock, SOL_SOCKET, SO_BINDTOIF, > + (void *)&cfg->bind_ifindex, > + sizeof(cfg->bind_ifindex)); > if (err < 0) > goto error; > } > -- > 2.20.1 >