| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Point-to-Point Tunneling Protocol for Linux |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Authors: Dmitry Kozlov <xeb@mail.ru> |
|---|
| 5 | | - * |
|---|
| 6 | | - * This program is free software; you can redistribute it and/or |
|---|
| 7 | | - * modify it under the terms of the GNU General Public License |
|---|
| 8 | | - * as published by the Free Software Foundation; either version |
|---|
| 9 | | - * 2 of the License, or (at your option) any later version. |
|---|
| 10 | | - * |
|---|
| 11 | 6 | */ |
|---|
| 12 | 7 | |
|---|
| 13 | 8 | #include <linux/string.h> |
|---|
| .. | .. |
|---|
| 160 | 155 | opt->dst_addr.sin_addr.s_addr, |
|---|
| 161 | 156 | opt->src_addr.sin_addr.s_addr, |
|---|
| 162 | 157 | 0, 0, IPPROTO_GRE, |
|---|
| 163 | | - RT_TOS(0), 0); |
|---|
| 158 | + RT_TOS(0), sk->sk_bound_dev_if); |
|---|
| 164 | 159 | if (IS_ERR(rt)) |
|---|
| 165 | 160 | goto tx_error; |
|---|
| 166 | 161 | |
|---|
| .. | .. |
|---|
| 243 | 238 | skb_dst_drop(skb); |
|---|
| 244 | 239 | skb_dst_set(skb, &rt->dst); |
|---|
| 245 | 240 | |
|---|
| 246 | | - nf_reset(skb); |
|---|
| 241 | + nf_reset_ct(skb); |
|---|
| 247 | 242 | |
|---|
| 248 | 243 | skb->ip_summed = CHECKSUM_NONE; |
|---|
| 249 | 244 | ip_select_ident(net, skb, NULL); |
|---|
| .. | .. |
|---|
| 363 | 358 | po = lookup_chan(htons(header->call_id), iph->saddr); |
|---|
| 364 | 359 | if (po) { |
|---|
| 365 | 360 | skb_dst_drop(skb); |
|---|
| 366 | | - nf_reset(skb); |
|---|
| 361 | + nf_reset_ct(skb); |
|---|
| 367 | 362 | return sk_receive_skb(sk_pppox(po), skb, 0); |
|---|
| 368 | 363 | } |
|---|
| 369 | 364 | drop: |
|---|
| .. | .. |
|---|
| 449 | 444 | opt->dst_addr.sin_addr.s_addr, |
|---|
| 450 | 445 | opt->src_addr.sin_addr.s_addr, |
|---|
| 451 | 446 | 0, 0, |
|---|
| 452 | | - IPPROTO_GRE, RT_CONN_FLAGS(sk), 0); |
|---|
| 447 | + IPPROTO_GRE, RT_CONN_FLAGS(sk), |
|---|
| 448 | + sk->sk_bound_dev_if); |
|---|
| 453 | 449 | if (IS_ERR(rt)) { |
|---|
| 454 | 450 | error = -EHOSTUNREACH; |
|---|
| 455 | 451 | goto end; |
|---|
| .. | .. |
|---|
| 622 | 618 | .getname = pptp_getname, |
|---|
| 623 | 619 | .listen = sock_no_listen, |
|---|
| 624 | 620 | .shutdown = sock_no_shutdown, |
|---|
| 625 | | - .setsockopt = sock_no_setsockopt, |
|---|
| 626 | | - .getsockopt = sock_no_getsockopt, |
|---|
| 627 | 621 | .sendmsg = sock_no_sendmsg, |
|---|
| 628 | 622 | .recvmsg = sock_no_recvmsg, |
|---|
| 629 | 623 | .mmap = sock_no_mmap, |
|---|