diff --git a/src/hnbap_common.c b/src/hnbap_common.c
index 1c92542..9a2a01b 100644
--- a/src/hnbap_common.c
+++ b/src/hnbap_common.c
@@ -126,7 +126,7 @@
 	rval = aper_encode_to_buffer(&asn_DEF_HNBAP_PDU, pdu,
 				       msg->data, msgb_tailroom(msg));
 	if (rval.encoded < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error encoding type: %s\n",
+		LOGP(DHNBAP, LOGL_ERROR, "Error encoding type: %s\n",
 				rval.failed_type->name);
 
 	}
@@ -152,7 +152,7 @@
 	pdu.choice.initiatingMessage.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -179,7 +179,7 @@
 	pdu.choice.successfulOutcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -206,7 +206,7 @@
 	pdu.choice.unsuccessfulOutcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -234,7 +234,7 @@
 
 	rc = ANY_fromType_aper(&buff->value, type, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		FREEMEM(buff);
 		return NULL;
 	}
diff --git a/src/hnbgw.c b/src/hnbgw.c
index 60baf78..0dbe37d 100644
--- a/src/hnbgw.c
+++ b/src/hnbgw.c
@@ -274,6 +274,16 @@
 		.color = "",
 		.description = "SCCP User Adaptation",
 	},
+	[DRUA] = {
+		.name = "DRUA", .loglevel = LOGL_DEBUG, .enabled = 1,
+		.color = "",
+		.description = "RANAP User Adaptation",
+	},
+	[DRANAP] = {
+		.name = "DRANAP", .loglevel = LOGL_DEBUG, .enabled = 1,
+		.color = "",
+		.description = "RAN Application Part",
+	},
 };
 
 static const struct log_info hnbgw_log_info = {
diff --git a/src/hnbgw.h b/src/hnbgw.h
index f854698..fede5ee 100644
--- a/src/hnbgw.h
+++ b/src/hnbgw.h
@@ -11,6 +11,8 @@
 	DMAIN,
 	DHNBAP,
 	DSUA,
+	DRUA,
+	DRANAP,
 };
 
 
diff --git a/src/hnbgw_ranap.c b/src/hnbgw_ranap.c
index 9cad6ae..c0b968f 100644
--- a/src/hnbgw_ranap.c
+++ b/src/hnbgw_ranap.c
@@ -49,7 +49,7 @@
 	memset(&out, 0, sizeof(out));
 	rc = ranap_encode_resetacknowledgeies(&out, &ies);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "error encoding reset ack IEs: %d\n", rc);
+		LOGP(DRANAP, LOGL_ERROR, "error encoding reset ack IEs: %d\n", rc);
 		return rc;
 	}
 
@@ -76,7 +76,7 @@
 	if (rc < 0)
 		return rc;
 
-	DEBUGP(DMAIN, "RESET.req\n");
+	DEBUGP(DRANAP, "RESET.req\n");
 
 	/* FIXME: Actually we have to wait for some guard time? */
 	/* FIXME: Reset all resources related to this HNB/RNC */
@@ -151,7 +151,7 @@
 		/* FIXME: Update RAC associated with UE */
 	}
 
-	DEBUGP(DMAIN, "DirectTransfer: %s\n",
+	DEBUGP(DRANAP, "DirectTransfer: %s\n",
 		osmo_hexdump(ies.nas_pdu.buf, ies.nas_pdu.size));
 	/* FIXME: hand NAS PDU into MSC */
 }
@@ -201,7 +201,7 @@
 	dec_ret = aper_decode(NULL,&asn_DEF_RANAP_RANAP_PDU, (void **) &pdu,
 			      data, len, 0, 0);
 	if (dec_ret.code != RC_OK) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in RANAP ASN.1 decode\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in RANAP ASN.1 decode\n");
 		return rc;
 	}
 
diff --git a/src/hnbgw_rua.c b/src/hnbgw_rua.c
index 3ac3751..c890b6a 100644
--- a/src/hnbgw_rua.c
+++ b/src/hnbgw_rua.c
@@ -266,7 +266,7 @@
 	dec_ret = aper_decode(NULL, &asn_DEF_RUA_RUA_PDU, (void **) &pdu,
 			      msg->data, msgb_length(msg), 0, 0);
 	if (dec_ret.code != RC_OK) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ASN.1 decode\n");
+		LOGP(DRUA, LOGL_ERROR, "Error in ASN.1 decode\n");
 		return rc;
 	}
 
diff --git a/src/ranap_common.c b/src/ranap_common.c
index 710af96..8879880 100644
--- a/src/ranap_common.c
+++ b/src/ranap_common.c
@@ -43,7 +43,7 @@
 	rval = aper_encode_to_buffer(&asn_DEF_RANAP_RANAP_PDU, pdu,
 				       msg->data, msgb_tailroom(msg));
 	if (rval.encoded < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error encoding type: %s\n",
+		LOGP(DRANAP, LOGL_ERROR, "Error encoding type: %s\n",
 				rval.failed_type->name);
 
 	}
@@ -68,7 +68,7 @@
 	pdu.choice.initiatingMessage.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -95,7 +95,7 @@
 	pdu.choice.successfulOutcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -122,7 +122,7 @@
 	pdu.choice.unsuccessfulOutcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -149,7 +149,7 @@
 	pdu.choice.outcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.outcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -177,7 +177,7 @@
 
 	rc = ANY_fromType_aper(&buff->value, type, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		FREEMEM(buff);
 		return NULL;
 	}
@@ -211,14 +211,14 @@
 
 	rc = ANY_fromType_aper(&buff->firstValue, type1, sptr1);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		FREEMEM(buff);
 		return NULL;
 	}
 
 	rc = ANY_fromType_aper(&buff->secondValue, type2, sptr2);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		ASN_STRUCT_FREE(asn_DEF_RANAP_ProtocolIE_FieldPair, buff);
 		return NULL;
 	}
diff --git a/src/rua_common.c b/src/rua_common.c
index 5809b7f..4499efe 100644
--- a/src/rua_common.c
+++ b/src/rua_common.c
@@ -111,7 +111,7 @@
 	rval = aper_encode_to_buffer(&asn_DEF_RUA_RUA_PDU, pdu,
 				       msg->data, msgb_tailroom(msg));
 	if (rval.encoded < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error encoding type: %s\n",
+		LOGP(DRUA, LOGL_ERROR, "Error encoding type: %s\n",
 				rval.failed_type->name);
 
 	}
@@ -137,7 +137,7 @@
 	pdu.choice.initiatingMessage.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -160,7 +160,7 @@
 	pdu.choice.successfulOutcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -183,7 +183,7 @@
 	pdu.choice.unsuccessfulOutcome.criticality = criticality;
 	rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		return NULL;
 	}
 
@@ -208,7 +208,7 @@
 
 	rc = ANY_fromType_aper(&buff->value, type, sptr);
 	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
 		FREEMEM(buff);
 		return NULL;
 	}
