From f147098d0f05e1bc37d036d3dc66c67412445efc Mon Sep 17 00:00:00 2001 From: Daniel Lenski Date: Thu, 14 May 2020 15:15:46 -0700 Subject: [PATCH] factor out redundancy in HDLC de-encapsulation Tested with F5 HDLC and non-HDLC Signed-off-by: Daniel Lenski --- ppp.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/ppp.c b/ppp.c index 1f23b54e..a5be9e6b 100644 --- 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 */ -- 2.49.0