[PATCH] replace buf_hexdump(), from oncp.c and gpst.c, with dump_buf_hex(), in http.c

Daniel Lenski dlenski at gmail.com
Wed Apr 19 14:45:33 PDT 2017


Also adds loglevel and prefix character parameters

Signed-off-by: Daniel Lenski <dlenski at gmail.com>
---
 http.c                 | 16 ++++++++++++++++
 oncp.c                 | 36 +++++++++++-------------------------
 openconnect-internal.h |  1 +
 3 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/http.c b/http.c
index 6166bb3..59f93e5 100644
--- a/http.c
+++ b/http.c
@@ -781,6 +781,22 @@ void dump_buf(struct openconnect_info *vpninfo, char prefix, char *buf)
 	}
 }
 
+void dump_buf_hex(struct openconnect_info *vpninfo, int loglevel, char prefix, unsigned char *buf, int len)
+{
+	char linebuf[80];
+	int i;
+
+	for (i = 0; i < len; i++) {
+		if (i % 16 == 0) {
+			if (i)
+				vpn_progress(vpninfo, loglevel, "%c %s\n", prefix, linebuf);
+			sprintf(linebuf, "%04x:", i);
+		}
+		sprintf(linebuf + strlen(linebuf), " %02x", buf[i]);
+	}
+	vpn_progress(vpninfo, loglevel, "%c %s\n", prefix, linebuf);
+}
+
 /* Inputs:
  *  method:             GET or POST
  *  vpninfo->hostname:  Host DNS name
diff --git a/oncp.c b/oncp.c
index 3c7cfa1..f27d96a 100644
--- a/oncp.c
+++ b/oncp.c
@@ -110,22 +110,6 @@ static void buf_append_tlv_be32(struct oc_text_buf *buf, uint16_t val, uint32_t
 	buf_append_tlv(buf, val, 4, d);
 }
 
-static void buf_hexdump(struct openconnect_info *vpninfo, unsigned char *d, int len)
-{
-	char linebuf[80];
-	int i;
-
-	for (i = 0; i < len; i++) {
-		if (i % 16 == 0) {
-			if (i)
-				vpn_progress(vpninfo, PRG_DEBUG, "%s\n", linebuf);
-			sprintf(linebuf, "%04x:", i);
-		}
-		sprintf(linebuf + strlen(linebuf), " %02x", d[i]);
-	}
-	vpn_progress(vpninfo, PRG_DEBUG, "%s\n", linebuf);
-}
-
 static const char authpkt_head[] = { 0x00, 0x04, 0x00, 0x00, 0x00 };
 static const char authpkt_tail[] = { 0xbb, 0x01, 0x00, 0x00, 0x00, 0x00 };
 
@@ -497,7 +481,7 @@ static int parse_conf_pkt(struct openconnect_info *vpninfo, unsigned char *bytes
 	eparse:
 		vpn_progress(vpninfo, PRG_ERR,
 			     _("Failed to parse KMP message\n"));
-		buf_hexdump(vpninfo, bytes, pktlen);
+		dump_buf_hex(vpninfo, PRG_ERR, '<', bytes, pktlen);
 		return -EINVAL;
 	}
 
@@ -648,7 +632,7 @@ int oncp_connect(struct openconnect_info *vpninfo)
 		ret = buf_error(reqbuf);
 		goto out;
 	}
-	buf_hexdump(vpninfo, (void *)reqbuf->data, reqbuf->pos);
+	dump_buf_hex(vpninfo, PRG_DEBUG, '>', (void *)reqbuf->data, reqbuf->pos);
 	ret = vpninfo->ssl_write(vpninfo, reqbuf->data, reqbuf->pos);
 	if (ret != reqbuf->pos) {
 		if (ret >= 0) {
@@ -666,7 +650,7 @@ int oncp_connect(struct openconnect_info *vpninfo)
 		goto out;
 	vpn_progress(vpninfo, PRG_TRACE,
 		     _("Read %d bytes of SSL record\n"), ret);
-	
+
 	if (ret != 3 || bytes[0] != 1 || bytes[1] != 0) {
 		vpn_progress(vpninfo, PRG_ERR,
 			     _("Unexpected response of size %d after hostname packet\n"),
@@ -694,7 +678,7 @@ int oncp_connect(struct openconnect_info *vpninfo)
 	if (len < 0x16 || load_le16(bytes) + 2 != len) {
 		vpn_progress(vpninfo, PRG_ERR,
 			     _("Invalid packet waiting for KMP 301\n"));
-		buf_hexdump(vpninfo, bytes, len);
+		dump_buf_hex(vpninfo, PRG_ERR, '<', bytes, len);
 		ret = -EINVAL;
 		goto out;
 	}
@@ -798,7 +782,8 @@ int oncp_connect(struct openconnect_info *vpninfo)
 	/* Length at the start of the packet is little-endian */
 	store_le16(reqbuf->data, reqbuf->pos - 2);
 
-	buf_hexdump(vpninfo, (void *)reqbuf->data, reqbuf->pos);
+	vpn_progress(vpninfo, PRG_DEBUG, _("oNCP negotiation request outgoing:\n"));
+	dump_buf_hex(vpninfo, PRG_DEBUG, '>', (void *)reqbuf->data, reqbuf->pos);
 	ret = vpninfo->ssl_write(vpninfo, reqbuf->data, reqbuf->pos);
 	if (ret == reqbuf->pos)
 		ret = 0;
@@ -1070,8 +1055,8 @@ int oncp_mainloop(struct openconnect_info *vpninfo, int *timeout)
 		unknown_pkt:
 			vpn_progress(vpninfo, PRG_ERR,
 				     _("Unknown KMP message %d of size %d:\n"), kmp, kmplen);
-			buf_hexdump(vpninfo, vpninfo->cstp_pkt->oncp.kmp,
-				    vpninfo->cstp_pkt->len);
+			dump_buf_hex(vpninfo, PRG_ERR, '<', vpninfo->cstp_pkt->oncp.kmp,
+				     vpninfo->cstp_pkt->len);
 			if (kmplen + 20 != vpninfo->cstp_pkt->len)
 				vpn_progress(vpninfo, PRG_DEBUG,
 					     _(".... + %d more bytes unreceived\n"),
@@ -1090,8 +1075,9 @@ int oncp_mainloop(struct openconnect_info *vpninfo, int *timeout)
 		unmonitor_write_fd(vpninfo, ssl);
 
 		vpn_progress(vpninfo, PRG_TRACE, _("Packet outgoing:\n"));
-		buf_hexdump(vpninfo, vpninfo->current_ssl_pkt->oncp.rec,
-			    vpninfo->current_ssl_pkt->len + 22);
+		dump_buf_hex(vpninfo, PRG_TRACE, '>',
+			     vpninfo->current_ssl_pkt->oncp.rec,
+			     vpninfo->current_ssl_pkt->len + 22);
 
 		ret = ssl_nonblock_write(vpninfo,
 					 vpninfo->current_ssl_pkt->oncp.rec,
diff --git a/openconnect-internal.h b/openconnect-internal.h
index a24a9e4..2bf0015 100644
--- a/openconnect-internal.h
+++ b/openconnect-internal.h
@@ -987,6 +987,7 @@ int can_gen_tokencode(struct openconnect_info *vpninfo,
 /* http.c */
 struct oc_text_buf *buf_alloc(void);
 void dump_buf(struct openconnect_info *vpninfo, char prefix, char *buf);
+void dump_buf_hex(struct openconnect_info *vpninfo, int loglevel, char prefix, unsigned char *buf, int len);
 int buf_ensure_space(struct oc_text_buf *buf, int len);
 void  __attribute__ ((format (printf, 2, 3)))
 	buf_append(struct oc_text_buf *buf, const char *fmt, ...);
-- 
2.7.4




More information about the openconnect-devel mailing list