diff --git a/openbsc/src/bsc/osmo_bsc_main.c b/openbsc/src/bsc/osmo_bsc_main.c
index a6097db..bcc077a 100644
--- a/openbsc/src/bsc/osmo_bsc_main.c
+++ b/openbsc/src/bsc/osmo_bsc_main.c
@@ -74,7 +74,7 @@
 	printf("  -t --testmode. A special mode to provoke failures at the MSC.\n");
 }
 
-static void handle_options(int argc, char** argv)
+static void handle_options(int argc, char **argv)
 {
 	while (1) {
 		int option_index = 0, c;
diff --git a/openbsc/src/bsc_api.c b/openbsc/src/bsc_api.c
index ba6dd88..c478142 100644
--- a/openbsc/src/bsc_api.c
+++ b/openbsc/src/bsc_api.c
@@ -187,7 +187,7 @@
 /*
  * Release all occupied RF Channels but stay around for more.
  */
-int gsm0808_clear(struct gsm_subscriber_connection* conn)
+int gsm0808_clear(struct gsm_subscriber_connection *conn)
 {
 	if (conn->ho_lchan)
 		bsc_clear_handover(conn);
diff --git a/openbsc/src/bsc_hack.c b/openbsc/src/bsc_hack.c
index 61b7947..4efc782 100644
--- a/openbsc/src/bsc_hack.c
+++ b/openbsc/src/bsc_hack.c
@@ -93,7 +93,7 @@
 	printf("  -e --log-level number. Set a global loglevel.\n");
 }
 
-static void handle_options(int argc, char** argv)
+static void handle_options(int argc, char **argv)
 {
 	while (1) {
 		int option_index = 0, c;
diff --git a/openbsc/src/db.c b/openbsc/src/db.c
index 6984b30..05687d7 100644
--- a/openbsc/src/db.c
+++ b/openbsc/src/db.c
@@ -736,7 +736,7 @@
 {
 	dbi_result result = NULL;
 	char tmsi[14];
-	char* tmsi_quoted;
+	char *tmsi_quoted;
 
 	for (;;) {
 		subscriber->tmsi = rand();
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index b451be7..dcbf168 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -303,7 +303,7 @@
 	return 0;
 }
 
-void gsm0408_clear_request(struct gsm_subscriber_connection* conn, uint32_t cause)
+void gsm0408_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause)
 {
 	struct gsm_trans *trans, *temp;
 
diff --git a/openbsc/src/mgcp/mgcp_main.c b/openbsc/src/mgcp/mgcp_main.c
index d1e22ea..e331159 100644
--- a/openbsc/src/mgcp/mgcp_main.c
+++ b/openbsc/src/mgcp/mgcp_main.c
@@ -80,7 +80,7 @@
 	printf(" -c --config-file filename The config file to use.\n");
 }
 
-static void handle_options(int argc, char** argv)
+static void handle_options(int argc, char **argv)
 {
 	while (1) {
 		int option_index = 0, c;
@@ -189,7 +189,7 @@
 	.is_config_node	= bsc_vty_is_config_node,
 };
 
-int main(int argc, char** argv)
+int main(int argc, char **argv)
 {
 	struct gsm_network dummy_network;
 	struct sockaddr_in addr;
diff --git a/openbsc/src/mgcp/mgcp_protocol.c b/openbsc/src/mgcp/mgcp_protocol.c
index 33d6c63..1ec9201 100644
--- a/openbsc/src/mgcp/mgcp_protocol.c
+++ b/openbsc/src/mgcp/mgcp_protocol.c
@@ -353,7 +353,7 @@
 	return create_response(response, "AUEP", trans_id);
 }
 
-static int parse_conn_mode(const char* msg, int *conn_mode)
+static int parse_conn_mode(const char *msg, int *conn_mode)
 {
 	int ret = 0;
 	if (strcmp(msg, "recvonly") == 0)
diff --git a/openbsc/src/nat/bsc_filter.c b/openbsc/src/nat/bsc_filter.c
index 233f515..e968fa2 100644
--- a/openbsc/src/nat/bsc_filter.c
+++ b/openbsc/src/nat/bsc_filter.c
@@ -73,7 +73,7 @@
 	{ NAT_IPAC_PROTO_MGCP, ALLOW_ANY, ALLOW_ANY, ALLOW_ANY, FILTER_TO_BOTH },
 };
 
-struct bsc_nat_parsed* bsc_nat_parse(struct msgb *msg)
+struct bsc_nat_parsed *bsc_nat_parse(struct msgb *msg)
 {
 	struct sccp_parse_result result;
 	struct bsc_nat_parsed *parsed;
diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c
index 23b8111..2c08518 100644
--- a/openbsc/src/nat/bsc_nat.c
+++ b/openbsc/src/nat/bsc_nat.c
@@ -709,7 +709,7 @@
 static void ipaccess_auth_bsc(struct tlv_parsed *tvp, struct bsc_connection *bsc)
 {
 	struct bsc_config *conf;
-	const char* token = (const char *) TLVP_VAL(tvp, IPAC_IDTAG_UNITNAME);
+	const char *token = (const char *) TLVP_VAL(tvp, IPAC_IDTAG_UNITNAME);
 
 	if (bsc->cfg) {
 		LOGP(DNAT, LOGL_ERROR, "Reauth on fd %d bsc nr %d\n",
@@ -1075,7 +1075,7 @@
 	printf("  -l --local=IP. The local address of this BSC.\n");
 }
 
-static void handle_options(int argc, char** argv)
+static void handle_options(int argc, char **argv)
 {
 	while (1) {
 		int option_index = 0, c;
@@ -1180,7 +1180,7 @@
 	.is_config_node	= bsc_vty_is_config_node,
 };
 
-int main(int argc, char** argv)
+int main(int argc, char **argv)
 {
 	int rc;
 
diff --git a/openbsc/src/osmo_msc.c b/openbsc/src/osmo_msc.c
index 97f36f5..d129e53 100644
--- a/openbsc/src/osmo_msc.c
+++ b/openbsc/src/osmo_msc.c
@@ -28,7 +28,7 @@
 
 #include <openbsc/gsm_04_11.h>
 
-static void msc_sapi_n_reject(struct gsm_subscriber_connection* conn, int dlci)
+static void msc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
 {
 	int sapi = dlci & 0x7;
 
@@ -36,7 +36,7 @@
 		gsm411_sapi_n_reject(conn);
 }
 
-static void msc_clear_request(struct gsm_subscriber_connection* conn, uint32_t cause)
+static void msc_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause)
 {
 	gsm0408_clear_request(conn, cause);
 }
diff --git a/openbsc/tests/channel/channel_test.c b/openbsc/tests/channel/channel_test.c
index 32c7168..61c0f95 100644
--- a/openbsc/tests/channel/channel_test.c
+++ b/openbsc/tests/channel/channel_test.c
@@ -46,7 +46,7 @@
 }
 
 
-int main(int argc, char** argv)
+int main(int argc, char **argv)
 {
 	struct gsm_network *network;
 	struct gsm_bts *bts;
diff --git a/openbsc/tests/debug/debug_test.c b/openbsc/tests/debug/debug_test.c
index f3e4837..5767edd 100644
--- a/openbsc/tests/debug/debug_test.c
+++ b/openbsc/tests/debug/debug_test.c
@@ -22,7 +22,7 @@
 #include <openbsc/debug.h>
 
 
-int main(int argc, char** argv)
+int main(int argc, char **argv)
 {
 	struct log_target *stderr_target;
 
diff --git a/openbsc/tests/gsm0408/gsm0408_test.c b/openbsc/tests/gsm0408/gsm0408_test.c
index 287d4ee..58377e6 100644
--- a/openbsc/tests/gsm0408/gsm0408_test.c
+++ b/openbsc/tests/gsm0408/gsm0408_test.c
@@ -95,7 +95,7 @@
 	COMPARE_STR(mi_parsed, imsi_even);
 }
 
-int main(int argc, char** argv)
+int main(int argc, char **argv)
 {
 	test_location_area_identifier();
 	test_mi_functionality();
