Change in ...osmo-ggsn[master]: ggsn: More logging from PCO handling (e.g. in case of malconfiguration)

pespin gerrit-no-reply at lists.osmocom.org
Mon Jul 1 10:31:22 UTC 2019


pespin has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/13609 )

Change subject: ggsn: More logging from PCO handling (e.g. in case of malconfiguration)
......................................................................

ggsn: More logging from PCO handling (e.g. in case of malconfiguration)

Change-Id: I38c2c4178ff4fd795f54638adec63166b1c0838e
---
M ggsn/ggsn.c
1 file changed, 18 insertions(+), 3 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved
  pespin: Looks good to me, approved



diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index e95471a..968d4dd 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -595,15 +595,19 @@
 	ptrdiff_t consumed;
 	size_t remain;
 
-	if (!peer_v4)
+	if (!peer_v4) {
+		LOGPPDP(LOGL_ERROR, pdp, "IPCP but no IPv4 type ?!?\n");
 		return;
+	}
 
 	ipcp = pco_elem->data;
 	consumed = (ipcp - &pdp->pco_req.v[0]);
 	remain = sizeof(pdp->pco_req.v) - consumed;
 	ipcp_len = osmo_load16be(ipcp + 2); /* 1=code + 1=id */
-	if (remain < 0 || remain < ipcp_len)
+	if (remain < 0 || remain < ipcp_len) {
+		LOGPPDP(LOGL_ERROR, pdp, "Malformed IPCP, ignoring\n");
 		return;
+	}
 
 	/* Three byte T16L header */
 	msgb_put_u16(resp, 0x8021);	/* IPCP */
@@ -636,6 +640,7 @@
 					 const struct apn_ctx *apn, struct pdp_t *pdp)
 {
 	unsigned int i;
+	const uint8_t *tail = resp->tail;
 
 	for (i = 0; i < ARRAY_SIZE(apn->v6.cfg.dns); i++) {
 		const struct in46_addr *i46a = &apn->v6.cfg.dns[i];
@@ -643,12 +648,15 @@
 			continue;
 		msgb_t16lv_put(resp, PCO_P_DNS_IPv6_ADDR, i46a->len, i46a->v6.s6_addr);
 	}
+	if (resp->tail == tail)
+		LOGPPDP(LOGL_NOTICE, pdp, "MS requested IPv6 DNS, but APN has none configured\n");
 }
 
 static void process_pco_element_dns_ipv4(const struct pco_element *pco_elem, struct msgb *resp,
 					 const struct apn_ctx *apn, struct pdp_t *pdp)
 {
 	unsigned int i;
+	const uint8_t *tail = resp->tail;
 
 	for (i = 0; i < ARRAY_SIZE(apn->v4.cfg.dns); i++) {
 		const struct in46_addr *i46a = &apn->v4.cfg.dns[i];
@@ -656,12 +664,17 @@
 			continue;
 		msgb_t16lv_put(resp, PCO_P_DNS_IPv4_ADDR, i46a->len, (uint8_t *)&i46a->v4);
 	}
+	if (resp->tail == tail)
+		LOGPPDP(LOGL_NOTICE, pdp, "MS requested IPv4 DNS, but APN has none configured\n");
 }
 
 static void process_pco_element(const struct pco_element *pco_elem, struct msgb *resp,
 				const struct apn_ctx *apn, struct pdp_t *pdp)
 {
-	switch (ntohs(pco_elem->protocol_id)) {
+	uint16_t protocol_id = ntohs(pco_elem->protocol_id);
+
+	LOGPPDP(LOGL_DEBUG, pdp, "PCO Protocol 0x%04x\n", protocol_id);
+	switch (protocol_id) {
 	case PCO_P_PAP:
 		process_pco_element_pap(pco_elem, resp, apn, pdp);
 		break;
@@ -675,6 +688,8 @@
 		process_pco_element_dns_ipv4(pco_elem, resp, apn, pdp);
 		break;
 	default:
+		LOGPPDP(LOGL_INFO, pdp, "Unknown/Unimplemented PCO Protocol 0x%04x: %s\n",
+			protocol_id, osmo_hexdump_nospc(pco_elem->data, pco_elem->length));
 		break;
 	}
 }

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/13609
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ggsn
Gerrit-Branch: master
Gerrit-Change-Id: I38c2c4178ff4fd795f54638adec63166b1c0838e
Gerrit-Change-Number: 13609
Gerrit-PatchSet: 6
Gerrit-Owner: laforge <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at gnumonks.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-CC: msuraev <suraev at alumni.ntnu.no>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190701/730bd570/attachment.html>


More information about the gerrit-log mailing list