diff --git a/openbsc/include/openbsc/gtphub.h b/openbsc/include/openbsc/gtphub.h
index 68cf90e..c43a328 100644
--- a/openbsc/include/openbsc/gtphub.h
+++ b/openbsc/include/openbsc/gtphub.h
@@ -249,7 +249,7 @@
  * NULL, no deallocation will be done (allowing statically allocated entries).
  */
 
-typedef int nr_t;
+typedef unsigned int nr_t;
 
 /* Generator for unused numbers. So far this counts upwards from zero, but the
  * implementation may change in the future. Treat this like an opaque struct.
diff --git a/openbsc/src/gprs/gtphub.c b/openbsc/src/gprs/gtphub.c
index f21eb98..ef622a6 100644
--- a/openbsc/src/gprs/gtphub.c
+++ b/openbsc/src/gprs/gtphub.c
@@ -914,10 +914,10 @@
 	/* Just for log */
 	struct gtphub_peer_port *from = nrm->origin;
 	OSMO_ASSERT(from);
-	LOG(LOGL_DEBUG, "expired: %d: nr mapping from %s: %d->%d\n",
+	LOG(LOGL_DEBUG, "expired: %d: nr mapping from %s: %u->%u\n",
 	    (int)nrm->expiry_entry.expiry,
 	    gtphub_port_str(from),
-	    (int)nrm->orig, (int)nrm->repl);
+	    (unsigned int)nrm->orig, (unsigned int)nrm->repl);
 
 	gtphub_port_ref_count_dec(from);
 
@@ -960,10 +960,10 @@
 {
 	struct nr_mapping *nrm = gtphub_mapping_have(&hub->tei_map[plane_idx],
 						     from, orig_tei, now);
-	LOG(LOGL_DEBUG, "New %s TEI: (from %s, TEI %d) <-- TEI %d\n",
+	LOG(LOGL_DEBUG, "New %s TEI: (from %s, TEI %u) <-- TEI %u\n",
 	    gtphub_plane_idx_names[plane_idx],
 	    gtphub_port_str(from),
-	    (int)orig_tei, (int)nrm->repl);
+	    (unsigned int)orig_tei, (unsigned int)nrm->repl);
 
 	return (uint32_t)nrm->repl;
 }
@@ -1046,8 +1046,9 @@
 	uint32_t unmapped_tei = nrm->orig;
 	set_tei(p, unmapped_tei);
 
-	LOG(LOGL_DEBUG, "Unmapped TEI coming from %s: %d -> %d (to %s)\n",
-	    gtphub_port_str(from_port), tei, unmapped_tei,
+	LOG(LOGL_DEBUG, "Unmapped TEI coming from %s: %u -> %u (to %s)\n",
+	    gtphub_port_str(from_port),
+	    (unsigned int)tei, (unsigned int)unmapped_tei,
 	    gtphub_port_str2(to_port));
 
 	*to_port_p = to_port;
@@ -1240,7 +1241,7 @@
 		    gtphub_peer_str(from_peer),
 		    (int)p->seq,
 		    gtphub_port_str(from_seq),
-		    (int)p->header_tei,
+		    (unsigned int)p->header_tei,
 		    gtphub_port_str2(from_tei)
 		   );
 	}
diff --git a/openbsc/tests/gtphub/gtphub_test.c b/openbsc/tests/gtphub/gtphub_test.c
index 12c9d78..2fa28c2 100644
--- a/openbsc/tests/gtphub/gtphub_test.c
+++ b/openbsc/tests/gtphub/gtphub_test.c
@@ -233,9 +233,9 @@
 	size_t len = sizeof(buf);
 	struct nr_mapping *m;
 	llist_for_each_entry(m, &map->mappings, entry) {
-		size_t wrote = snprintf(pos, len, "(%d->%d@%d), ",
-					(int)m->orig,
-					(int)m->repl,
+		size_t wrote = snprintf(pos, len, "(%u->%u@%d), ",
+					m->orig,
+					m->repl,
 					(int)m->expiry_entry.expiry);
 		OSMO_ASSERT(wrote < len);
 		pos += wrote;
