]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
factor out redundancy in HDLC de-encapsulation
authorDaniel Lenski <dlenski@gmail.com>
Thu, 14 May 2020 22:15:46 +0000 (15:15 -0700)
committerDaniel Lenski <dlenski@gmail.com>
Thu, 14 May 2020 23:32:01 +0000 (16:32 -0700)
Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
ppp.c

diff --git a/ppp.c b/ppp.c
index 1f23b54e52c2ac515040c6b0c6a490a440323a27..a5be9e6b00c334a03d411b3945f7e7e91d845ab3 100644 (file)
--- a/ppp.c
+++ b/ppp.c
@@ -790,23 +790,14 @@ int ppp_mainloop(struct openconnect_info *vpninfo, int *timeout, int readable)
                        }
                        break;
 
-               case PPP_ENCAP_F5_HDLC:
-               case PPP_ENCAP_FORTINET_HDLC:
-                       payload_len = unhdlc_in_place(vpninfo, ph, len, &pp);
-                       if (payload_len < 0)
-                               continue; /* unhdlc_in_place already logged */
-                       if (pp != ph + len)
-                               vpn_progress(vpninfo, PRG_ERR,
-                                                        _("Packet contains %ld bytes after payload. Concatenated packets are not handled yet.\n"),
-                                                        len - (pp - ph));
-                       if (vpninfo->dump_http_traffic)
-                               dump_buf_hex(vpninfo, PRG_TRACE, '<', ph, payload_len);
-                       break;
-
                case PPP_ENCAP_NX_HDLC:
                        payload_len = load_be32(ph);
                        if (len < 4 + payload_len)
                                goto incomplete_pkt;
+                       /* fall through */
+
+               case PPP_ENCAP_F5_HDLC:
+               case PPP_ENCAP_FORTINET_HDLC:
                        payload_len = unhdlc_in_place(vpninfo, ph + ppp->encap_len, len - ppp->encap_len, &pp);
                        if (payload_len < 0)
                                continue; /* unhdlc_in_place already logged */