From: Arne Schwabe Date: Thu, 10 Feb 2022 16:26:25 +0000 (+0100) Subject: Replace TUN_MTU_SIZE with frame->tun_mtu X-Git-Tag: v2.6_beta1~287 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=364b7b4f04985600e0a0a46e79555379b5df9977;p=thirdparty%2Fopenvpn.git Replace TUN_MTU_SIZE with frame->tun_mtu This always uses the configured MTU size instead relying on the calculated MTU size. Patch v4: Fix a few overlooked TUN_MTU_SIZE. Signed-off-by: Arne Schwabe Acked-by: Gert Doering Message-Id: <20220210162632.3309974-1-arne@rfc2549.org> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg23752.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c index af0411795..dcc430d49 100644 --- a/src/openvpn/forward.c +++ b/src/openvpn/forward.c @@ -1381,7 +1381,7 @@ ipv6_send_icmp_unreachable(struct context *c, struct buffer *buf, bool client) * packet */ int max_payload_size = min_int(MAX_ICMPV6LEN, - TUN_MTU_SIZE(&c->c2.frame) - icmpheader_len); + c->c2.frame.tun_mtu - icmpheader_len); int payload_len = min_int(max_payload_size, BLEN(&inputipbuf)); pip6out.payload_len = htons(sizeof(struct openvpn_icmp6hdr) + payload_len); diff --git a/src/openvpn/init.c b/src/openvpn/init.c index 8e1e43cbb..4c799f19b 100644 --- a/src/openvpn/init.c +++ b/src/openvpn/init.c @@ -1735,7 +1735,7 @@ do_open_tun(struct context *c) c->options.dev_type, c->options.dev_node, &gc); - do_ifconfig(c->c1.tuntap, guess, TUN_MTU_SIZE(&c->c2.frame), c->c2.es, + do_ifconfig(c->c1.tuntap, guess, c->c2.frame.tun_mtu, c->c2.es, &c->net_ctx); } @@ -1766,7 +1766,7 @@ do_open_tun(struct context *c) && ifconfig_order() == IFCONFIG_AFTER_TUN_OPEN) { do_ifconfig(c->c1.tuntap, c->c1.tuntap->actual_name, - TUN_MTU_SIZE(&c->c2.frame), c->c2.es, &c->net_ctx); + c->c2.frame.tun_mtu, c->c2.es, &c->net_ctx); } /* run the up script */ @@ -1778,7 +1778,7 @@ do_open_tun(struct context *c) c->c1.tuntap->adapter_index, #endif dev_type_string(c->options.dev, c->options.dev_type), - TUN_MTU_SIZE(&c->c2.frame), + c->c2.frame.tun_mtu, print_in_addr_t(c->c1.tuntap->local, IA_EMPTY_IF_UNDEF, &gc), print_in_addr_t(c->c1.tuntap->remote_netmask, IA_EMPTY_IF_UNDEF, &gc), "init", @@ -1827,7 +1827,7 @@ else c->c1.tuntap->adapter_index, #endif dev_type_string(c->options.dev, c->options.dev_type), - TUN_MTU_SIZE(&c->c2.frame), + c->c2.frame.tun_mtu, print_in_addr_t(c->c1.tuntap->local, IA_EMPTY_IF_UNDEF, &gc), print_in_addr_t(c->c1.tuntap->remote_netmask, IA_EMPTY_IF_UNDEF, &gc), "restart", @@ -1906,7 +1906,7 @@ do_close_tun(struct context *c, bool force) adapter_index, #endif NULL, - TUN_MTU_SIZE(&c->c2.frame), + c->c2.frame.tun_mtu, print_in_addr_t(local, IA_EMPTY_IF_UNDEF, &gc), print_in_addr_t(remote_netmask, IA_EMPTY_IF_UNDEF, &gc), "init", @@ -1936,7 +1936,7 @@ do_close_tun(struct context *c, bool force) adapter_index, #endif NULL, - TUN_MTU_SIZE(&c->c2.frame), + c->c2.frame.tun_mtu, print_in_addr_t(local, IA_EMPTY_IF_UNDEF, &gc), print_in_addr_t(remote_netmask, IA_EMPTY_IF_UNDEF, &gc), "init", @@ -1974,7 +1974,7 @@ do_close_tun(struct context *c, bool force) adapter_index, #endif NULL, - TUN_MTU_SIZE(&c->c2.frame), + c->c2.frame.tun_mtu, print_in_addr_t(local, IA_EMPTY_IF_UNDEF, &gc), print_in_addr_t(remote_netmask, IA_EMPTY_IF_UNDEF, &gc), "restart", @@ -2154,7 +2154,7 @@ void adjust_mtu_peerid(struct context *c) { msg(M_WARN, "OPTIONS IMPORT: WARNING: peer-id set, but link-mtu" " fixed by config - reducing tun-mtu to %d, expect" - " MTU problems", TUN_MTU_SIZE(&c->c2.frame)); + " MTU problems", c->c2.frame.tun_mtu); } } @@ -3185,11 +3185,11 @@ do_init_frame(struct context *c) #ifdef ENABLE_FRAGMENT if ((c->options.ce.mssfix || c->options.ce.fragment) - && TUN_MTU_SIZE(&c->c2.frame_fragment) != ETHERNET_MTU) + && c->c2.frame.tun_mtu != ETHERNET_MTU) { msg(M_WARN, "WARNING: normally if you use --mssfix and/or --fragment, you should also set --tun-mtu %d (currently it is %d)", - ETHERNET_MTU, TUN_MTU_SIZE(&c->c2.frame_fragment)); + ETHERNET_MTU, c->c2.frame.tun_mtu); } #endif } diff --git a/src/openvpn/mtu.c b/src/openvpn/mtu.c index d014d2b8c..783fcc5f9 100644 --- a/src/openvpn/mtu.c +++ b/src/openvpn/mtu.c @@ -229,9 +229,9 @@ frame_finalize(struct frame *frame, frame->link_mtu = link_mtu; } - if (TUN_MTU_SIZE(frame) < TUN_MTU_MIN) + if (frame->tun_mtu < TUN_MTU_MIN) { - msg(M_WARN, "TUN MTU value (%d) must be at least %d", TUN_MTU_SIZE(frame), TUN_MTU_MIN); + msg(M_WARN, "TUN MTU value (%d) must be at least %d", frame->tun_mtu, TUN_MTU_MIN); frame_print(frame, M_FATAL, "MTU is too small"); } diff --git a/src/openvpn/mtu.h b/src/openvpn/mtu.h index ef8ac4abe..7a6cdcb49 100644 --- a/src/openvpn/mtu.h +++ b/src/openvpn/mtu.h @@ -184,11 +184,6 @@ struct options; */ #define TUN_LINK_DELTA(f) ((f)->extra_frame + (f)->extra_tun) -/* - * This is the size to "ifconfig" the tun or tap device. - */ -#define TUN_MTU_SIZE(f) ((f)->link_mtu - TUN_LINK_DELTA(f)) - /* * This is the maximum packet size that we need to be able to * read from or write to a tun or tap device. For example,