diff --git a/src/libosmo-legacy-mgcp/mgcp_protocol.c b/src/libosmo-legacy-mgcp/mgcp_protocol.c
index bc1ec0d..d2df5f7 100644
--- a/src/libosmo-legacy-mgcp/mgcp_protocol.c
+++ b/src/libosmo-legacy-mgcp/mgcp_protocol.c
@@ -372,8 +372,8 @@
 
 	display_mgcp_message(msg->l2h, msgb_l2len(msg), "Received message");
 
-        /* attempt to treat it as a response */
-        if (sscanf((const char *)&msg->l2h[0], "%3d %*s", &code) == 1) {
+	/* attempt to treat it as a response */
+	if (sscanf((const char *)&msg->l2h[0], "%3d %*s", &code) == 1) {
 		LOGP(DLMGCP, LOGL_DEBUG, "Response: Code: %d\n", code);
 		return NULL;
 	}
diff --git a/src/libosmo-mgcp-client/mgcp_client.c b/src/libosmo-mgcp-client/mgcp_client.c
index f8c55ac..2047637 100644
--- a/src/libosmo-mgcp-client/mgcp_client.c
+++ b/src/libosmo-mgcp-client/mgcp_client.c
@@ -133,7 +133,7 @@
 
 	r->body = (char *)msg->data;
 
-        if (sscanf(r->body, "%3d %u %n",
+	if (sscanf(r->body, "%3d %u %n",
 		   &r->head.response_code, &r->head.trans_id,
 		   &comment_pos) != 2)
 		goto response_parse_failure;
@@ -176,7 +176,7 @@
 /* Parse a line like "m=audio 16002 RTP/AVP 98" */
 static int mgcp_parse_audio_port(struct mgcp_response *r, const char *line)
 {
-        if (sscanf(line, "m=audio %hu",
+	if (sscanf(line, "m=audio %hu",
 		   &r->audio_port) != 1)
 		goto response_parse_failure;
 
@@ -325,7 +325,7 @@
 		LOGP(DLMGCP, LOGL_ERROR, "Too much data: %d\n", ret);
 		msgb_free(msg);
 		return -1;
-        }
+	}
 
 	msg->l2h = msgb_put(msg, ret);
 	ret = mgcp_client_rx(mgcp, msg);
diff --git a/src/osmo-bsc_mgcp/mgcp_main.c b/src/osmo-bsc_mgcp/mgcp_main.c
index 48241a6..91f9074 100644
--- a/src/osmo-bsc_mgcp/mgcp_main.c
+++ b/src/osmo-bsc_mgcp/mgcp_main.c
@@ -189,33 +189,33 @@
 
 int mgcp_vty_is_config_node(struct vty *vty, int node)
 {
-        switch (node) {
-        case CONFIG_NODE:
-                return 0;
+	switch (node) {
+	case CONFIG_NODE:
+		return 0;
 
-        default:
-                return 1;
-        }
+	default:
+		return 1;
+	}
 }
 
 int mgcp_vty_go_parent(struct vty *vty)
 {
-        switch (vty->node) {
-        case TRUNK_NODE:
-                vty->node = MGCP_NODE;
-                vty->index = NULL;
-                break;
-        case MGCP_NODE:
-        default:
-                if (mgcp_vty_is_config_node(vty, vty->node))
-                        vty->node = CONFIG_NODE;
-                else
-                        vty->node = ENABLE_NODE;
+	switch (vty->node) {
+	case TRUNK_NODE:
+		vty->node = MGCP_NODE;
+		vty->index = NULL;
+		break;
+	case MGCP_NODE:
+	default:
+		if (mgcp_vty_is_config_node(vty, vty->node))
+			vty->node = CONFIG_NODE;
+		else
+			vty->node = ENABLE_NODE;
 
-                vty->index = NULL;
-        }
+		vty->index = NULL;
+	}
 
-        return vty->node;
+	return vty->node;
 }
 
 
@@ -231,8 +231,8 @@
 };
 
 const struct log_info log_info = {
-        .cat = log_categories,
-        .num_cat = ARRAY_SIZE(log_categories),
+	.cat = log_categories,
+	.num_cat = ARRAY_SIZE(log_categories),
 };
 
 int main(int argc, char **argv)
@@ -282,8 +282,8 @@
 	/* set some callbacks */
 	cfg->reset_cb = mgcp_rsip_cb;
 
-        /* we need to bind a socket */
-        if (rc == 0) {
+	/* we need to bind a socket */
+	if (rc == 0) {
 		cfg->gw_fd.bfd.when = BSC_FD_READ;
 		cfg->gw_fd.bfd.cb = read_call_agent;
 		cfg->gw_fd.bfd.fd = socket(AF_INET, SOCK_DGRAM, 0);
diff --git a/src/osmo-mgw/mgw_main.c b/src/osmo-mgw/mgw_main.c
index ab54e62..2e1ac8b 100644
--- a/src/osmo-mgw/mgw_main.c
+++ b/src/osmo-mgw/mgw_main.c
@@ -195,33 +195,33 @@
 
 int mgcp_vty_is_config_node(struct vty *vty, int node)
 {
-        switch (node) {
-        case CONFIG_NODE:
-                return 0;
+	switch (node) {
+	case CONFIG_NODE:
+		return 0;
 
-        default:
-                return 1;
-        }
+	default:
+		return 1;
+	}
 }
 
 int mgcp_vty_go_parent(struct vty *vty)
 {
-        switch (vty->node) {
-        case TRUNK_NODE:
-                vty->node = MGCP_NODE;
-                vty->index = NULL;
-                break;
-        case MGCP_NODE:
-        default:
-                if (mgcp_vty_is_config_node(vty, vty->node))
-                        vty->node = CONFIG_NODE;
-                else
-                        vty->node = ENABLE_NODE;
+	switch (vty->node) {
+	case TRUNK_NODE:
+		vty->node = MGCP_NODE;
+		vty->index = NULL;
+		break;
+	case MGCP_NODE:
+	default:
+		if (mgcp_vty_is_config_node(vty, vty->node))
+			vty->node = CONFIG_NODE;
+		else
+			vty->node = ENABLE_NODE;
 
-                vty->index = NULL;
-        }
+		vty->index = NULL;
+	}
 
-        return vty->node;
+	return vty->node;
 }
 
 
@@ -243,8 +243,8 @@
 };
 
 const struct log_info log_info = {
-        .cat = log_categories,
-        .num_cat = ARRAY_SIZE(log_categories),
+	.cat = log_categories,
+	.num_cat = ARRAY_SIZE(log_categories),
 };
 
 int main(int argc, char **argv)
@@ -287,8 +287,8 @@
 	 * mgcp-command "RSIP" (Reset in Progress) is received */
 	cfg->reset_cb = mgcp_rsip_cb;
 
-        /* we need to bind a socket */
-        if (rc == 0) {
+	/* we need to bind a socket */
+	if (rc == 0) {
 		cfg->gw_fd.bfd.when = BSC_FD_READ;
 		cfg->gw_fd.bfd.cb = read_call_agent;
 		cfg->gw_fd.bfd.fd = socket(AF_INET, SOCK_DGRAM, 0);
