diff --git a/src/e1_input.c b/src/e1_input.c
index 3453ad0..1781f18 100644
--- a/src/e1_input.c
+++ b/src/e1_input.c
@@ -560,7 +560,8 @@
 	return NULL;
 }
 
-int e1inp_line_update(struct e1inp_line *line, enum e1inp_line_role role)
+int e1inp_line_update(struct e1inp_line *line,
+		      enum e1inp_line_role role, const char *addr)
 {
 	struct input_signal_data isd;
 	int rc;
@@ -570,7 +571,7 @@
 		return 0;
 
 	if (line->driver && line->driver->line_update)
-		rc = line->driver->line_update(line, role);
+		rc = line->driver->line_update(line, role, addr);
 	else
 		rc = 0;
 
diff --git a/src/input/dahdi.c b/src/input/dahdi.c
index 8e5e635..bf73f97 100644
--- a/src/input/dahdi.c
+++ b/src/input/dahdi.c
@@ -367,8 +367,8 @@
 	return rc;
 }
 
-static int
-dahdi_e1_line_update(struct e1inp_line *line, enum e1inp_line_role role);
+static int dahdi_e1_line_update(struct e1inp_line *line,
+				enum e1inp_line_role role, const char *addr);
 
 struct e1inp_driver dahdi_driver = {
 	.name = "dahdi",
@@ -477,8 +477,8 @@
 	return 0;
 }
 
-static int
-dahdi_e1_line_update(struct e1inp_line *line, enum e1inp_line_role role)
+static int dahdi_e1_line_update(struct e1inp_line *line,
+				enum e1inp_line_role role, void *data)
 {
 	if (line->driver != &dahdi_driver)
 		return -EINVAL;
diff --git a/src/input/hsl.c b/src/input/hsl.c
index f00338f..3854b06 100644
--- a/src/input/hsl.c
+++ b/src/input/hsl.c
@@ -242,7 +242,8 @@
 	return rc;
 }
 
-static int hsl_line_update(struct e1inp_line *line, enum e1inp_line_role role);
+static int hsl_line_update(struct e1inp_line *line,
+			   enum e1inp_line_role role, const char *addr);
 
 struct e1inp_driver hsl_driver = {
 	.name = "hsl",
@@ -300,8 +301,8 @@
         return ret;
 }
 
-static int
-hsl_line_update(struct e1inp_line *line, enum e1inp_line_role role)
+static int hsl_line_update(struct e1inp_line *line,
+			   enum e1inp_line_role role, const char *addr)
 {
 	int ret = -ENOENT;
 
diff --git a/src/input/ipa.c b/src/input/ipa.c
index 6f9639f..3f37d47 100644
--- a/src/input/ipa.c
+++ b/src/input/ipa.c
@@ -176,7 +176,7 @@
 
 static void ipa_link_timer_cb(void *data);
 
-struct ipa_link *ipa_client_link_create(void *ctx)
+struct ipa_link *ipa_client_link_create(void *ctx, const char *addr)
 {
 	struct ipa_link *ipa_link;
 
@@ -190,6 +190,7 @@
 	ipa_link->state = IPA_LINK_STATE_CONNECTING;
 	ipa_link->timer.cb = ipa_link_timer_cb;
 	ipa_link->timer.data = ipa_link;
+	ipa_link->addr = talloc_strdup(ipa_link, addr);
 
 	return ipa_link;
 }
@@ -204,7 +205,7 @@
 	int ret;
 
 	ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP,
-			     "127.0.0.1", IPA_TCP_PORT_OML,
+			     link->addr, IPA_TCP_PORT_OML,
 			     OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_NONBLOCK);
 	if (ret < 0) {
 		if (errno != EINPROGRESS)
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index 4a86300..18e30dc 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -378,8 +378,8 @@
 	return rc;
 }
 
-static int
-ipaccess_line_update(struct e1inp_line *line, enum e1inp_line_role role);
+static int ipaccess_line_update(struct e1inp_line *line,
+				enum e1inp_line_role role, const char *addr);
 
 struct e1inp_driver ipaccess_driver = {
 	.name = "ipa",
@@ -479,8 +479,8 @@
 	return 0;
 }
 
-static int
-ipaccess_line_update(struct e1inp_line *line, enum e1inp_line_role role)
+static int ipaccess_line_update(struct e1inp_line *line,
+				enum e1inp_line_role role, const char *addr)
 {
 	int ret = -ENOENT;
 
@@ -490,8 +490,7 @@
 
 		/* Listen for OML connections */
 		ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP,
-				     "0.0.0.0", IPA_TCP_PORT_OML,
-				     OSMO_SOCK_F_BIND);
+				     addr, IPA_TCP_PORT_OML, OSMO_SOCK_F_BIND);
 		if (ret < 0)
 			return ret;
 
@@ -506,8 +505,7 @@
 		}
 		/* Listen for RSL connections */
 		ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP,
-				     "0.0.0.0", IPA_TCP_PORT_RSL,
-				     OSMO_SOCK_F_BIND);
+				     addr, IPA_TCP_PORT_RSL, OSMO_SOCK_F_BIND);
 		if (ret < 0)
 			return ret;
 
@@ -526,7 +524,7 @@
 
 		LOGP(DINP, LOGL_NOTICE, "enabling ipaccess BTS mode\n");
 
-		link = ipa_client_link_create(tall_ipa_ctx);
+		link = ipa_client_link_create(tall_ipa_ctx, addr);
 		if (link == NULL) {
 			perror("ipa_client_link_create: ");
 			return -ENOMEM;
diff --git a/src/input/misdn.c b/src/input/misdn.c
index 4bc2e4b..3ccfc4d 100644
--- a/src/input/misdn.c
+++ b/src/input/misdn.c
@@ -384,8 +384,8 @@
 	return ret;
 }
 
-static int
-mi_e1_line_update(struct e1inp_line *line, enum e1inp_line_role role);
+static int mi_e1_line_update(struct e1inp_line *line,
+			     enum e1inp_line_role role, const char *addr);
 
 struct e1inp_driver misdn_driver = {
 	.name = "misdn",
@@ -483,8 +483,8 @@
 	return 0;
 }
 
-static int
-mi_e1_line_update(struct e1inp_line *line, enum e1inp_line_role role)
+static int mi_e1_line_update(struct e1inp_line *line,
+			     enum e1inp_line_role role, const char *addr)
 {
 	struct mISDN_devinfo devinfo;
 	int sk, ret, cnt;
