diff --git a/libosmocore/src/bitvec.c b/libosmocore/src/bitvec.c
index 322f499..235c3ce 100644
--- a/libosmocore/src/bitvec.c
+++ b/libosmocore/src/bitvec.c
@@ -22,7 +22,7 @@
 
 
 #include <errno.h>
-#include <sys/types.h>
+#include <stdint.h>
 
 #include <osmocore/bitvec.h>
 
@@ -36,7 +36,7 @@
 }
 
 /* convert ZERO/ONE/L/H to a bitmask at given pos in a byte */
-static u_int8_t bitval2mask(enum bit_value bit, u_int8_t bitnum)
+static uint8_t bitval2mask(enum bit_value bit, uint8_t bitnum)
 {
 	int bitval;
 
@@ -64,7 +64,7 @@
 {
 	unsigned int bytenum = bytenum_from_bitnum(bitnr);
 	unsigned int bitnum = 7 - (bitnr % 8);
-	u_int8_t bitval;
+	uint8_t bitval;
 
 	if (bytenum >= bv->data_len)
 		return -EINVAL;
@@ -99,7 +99,7 @@
 {
 	unsigned int bytenum = bytenum_from_bitnum(bitnr);
 	unsigned int bitnum = 7 - (bitnr % 8);
-	u_int8_t bitval;
+	uint8_t bitval;
 
 	if (bytenum >= bv->data_len)
 		return -EINVAL;
diff --git a/libosmocore/src/comp128.c b/libosmocore/src/comp128.c
index 9df5452..5d5680c 100644
--- a/libosmocore/src/comp128.c
+++ b/libosmocore/src/comp128.c
@@ -66,10 +66,10 @@
  */
 
 #include <string.h>
-#include <sys/types.h>
+#include <stdint.h>
 
 /* The compression tables (just copied ...) */
-static const u_int8_t table_0[512] = {
+static const uint8_t table_0[512] = {
  102, 177, 186, 162,   2, 156, 112,  75,  55,  25,   8,  12, 251, 193, 246, 188,
  109, 213, 151,  53,  42,  79, 191, 115, 233, 242, 164, 223, 209, 148, 108, 161,
  252,  37, 244,  47,  64, 211,   6, 237, 185, 160, 139, 113,  76, 138,  59,  70,
@@ -138,11 +138,11 @@
  10,   3,   4,   9,   6,   0,   3,   2,   5,   6,   8,   9,  11,  13,  15,  12,
 };
 
-static const u_int8_t *_comp128_table[5] = { table_0, table_1, table_2, table_3, table_4 };
+static const uint8_t *_comp128_table[5] = { table_0, table_1, table_2, table_3, table_4 };
 
 
 static inline void
-_comp128_compression_round(u_int8_t *x, int n, const u_int8_t *tbl)
+_comp128_compression_round(uint8_t *x, int n, const uint8_t *tbl)
 {
 	int i, j, m, a, b, y, z;
 	m = 4 - n;
@@ -158,7 +158,7 @@
 }
 
 static inline void
-_comp128_compression(u_int8_t *x)
+_comp128_compression(uint8_t *x)
 {
 	int n;
 	for (n=0; n<5; n++)
@@ -166,7 +166,7 @@
 }
 
 static inline void
-_comp128_bitsfrombytes(u_int8_t *x, u_int8_t *bits)
+_comp128_bitsfrombytes(uint8_t *x, uint8_t *bits)
 {
 	int i;
 	memset(bits, 0x00, 128);
@@ -176,7 +176,7 @@
 }
 
 static inline void
-_comp128_permutation(u_int8_t *x, u_int8_t *bits)
+_comp128_permutation(uint8_t *x, uint8_t *bits)
 {
 	int i;
 	memset(&x[16], 0x00, 16);
@@ -185,10 +185,10 @@
 }
 
 void
-comp128(u_int8_t *ki, u_int8_t *rand, u_int8_t *sres, u_int8_t *kc)
+comp128(uint8_t *ki, uint8_t *rand, uint8_t *sres, uint8_t *kc)
 {
 	int i;
-	u_int8_t x[32], bits[128];
+	uint8_t x[32], bits[128];
 
 	/* x[16-31] = RAND */
 	memcpy(&x[16], rand, 16);
diff --git a/libosmocore/src/gsm_utils.c b/libosmocore/src/gsm_utils.c
index aabd7b7..85f7839 100644
--- a/libosmocore/src/gsm_utils.c
+++ b/libosmocore/src/gsm_utils.c
@@ -26,12 +26,13 @@
 #include <osmocore/gsm_utils.h>
 
 #include <stdlib.h>
+#include <stdint.h>
 #include <string.h>
 #include <stdio.h>
 #include <errno.h>
 
 /* GSM 03.38 6.2.1 Charachter packing */
-int gsm_7bit_decode(char *text, const u_int8_t *user_data, u_int8_t length)
+int gsm_7bit_decode(char *text, const uint8_t *user_data, uint8_t length)
 {
 	int i = 0;
 	int l = 0;
@@ -51,7 +52,7 @@
 
 
 /* GSM 03.38 6.2.1 Charachter packing */
-int gsm_7bit_encode(u_int8_t *result, const char *data)
+int gsm_7bit_encode(uint8_t *result, const char *data)
 {
 	int i,j = 0;
 	unsigned char ch1, ch2;
@@ -129,7 +130,7 @@
 	return -EINVAL;
 }
 
-int ms_pwr_dbm(enum gsm_band band, u_int8_t lvl)
+int ms_pwr_dbm(enum gsm_band band, uint8_t lvl)
 {
 	lvl &= 0x1f;
 
@@ -168,7 +169,7 @@
 }
 
 /* According to TS 08.05 Chapter 8.1.4 */
-int rxlev2dbm(u_int8_t rxlev)
+int rxlev2dbm(uint8_t rxlev)
 {
 	if (rxlev > 63)
 		rxlev = 63;
@@ -177,7 +178,7 @@
 }
 
 /* According to TS 08.05 Chapter 8.1.4 */
-u_int8_t dbm2rxlev(int dbm)
+uint8_t dbm2rxlev(int dbm)
 {
 	int rxlev = dbm + 110;
 
diff --git a/libosmocore/src/msgb.c b/libosmocore/src/msgb.c
index ab9b413..2521ca8 100644
--- a/libosmocore/src/msgb.c
+++ b/libosmocore/src/msgb.c
@@ -30,7 +30,7 @@
 
 void *tall_msgb_ctx;
 
-struct msgb *msgb_alloc(u_int16_t size, const char *name)
+struct msgb *msgb_alloc(uint16_t size, const char *name)
 {
 	struct msgb *msg;
 
diff --git a/libosmocore/src/tlv_parser.c b/libosmocore/src/tlv_parser.c
index e9b1512..407e57a 100644
--- a/libosmocore/src/tlv_parser.c
+++ b/libosmocore/src/tlv_parser.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <stdint.h>
 #include <osmocore/utils.h>
 #include <osmocore/tlv.h>
 
@@ -25,11 +26,11 @@
  *
  * Also, returns the number of bytes consumed by the TLV entry
  */
-int tlv_parse_one(u_int8_t *o_tag, u_int16_t *o_len, const u_int8_t **o_val,
+int tlv_parse_one(uint8_t *o_tag, uint16_t *o_len, const uint8_t **o_val,
 		  const struct tlv_definition *def,
-		  const u_int8_t *buf, int buf_len)
+		  const uint8_t *buf, int buf_len)
 {
-	u_int8_t tag;
+	uint8_t tag;
 	int len;
 
 	tag = *buf;
@@ -100,11 +101,11 @@
  * lv_tag2: input: a second initial LV tag following lv_tag 
  */
 int tlv_parse(struct tlv_parsed *dec, const struct tlv_definition *def,
-	      const u_int8_t *buf, int buf_len, u_int8_t lv_tag,
-	      u_int8_t lv_tag2)
+	      const uint8_t *buf, int buf_len, uint8_t lv_tag,
+	      uint8_t lv_tag2)
 {
 	int ofs = 0, num_parsed = 0;
-	u_int16_t len;
+	uint16_t len;
 
 	memset(dec, 0, sizeof(*dec));
 
@@ -133,8 +134,8 @@
 
 	while (ofs < buf_len) {
 		int rv;
-		u_int8_t tag;
-		const u_int8_t *val;
+		uint8_t tag;
+		const uint8_t *val;
 
 		rv = tlv_parse_one(&tag, &len, &val, def,
 		                   &buf[ofs], buf_len-ofs);
