diff --git a/src/input/dahdi.c b/src/input/dahdi.c
index ce9dfc1..a29a233 100644
--- a/src/input/dahdi.c
+++ b/src/input/dahdi.c
@@ -643,10 +643,6 @@
 		 * board will be 32 */
 		dev_nr = scfg->chan_base + idx;
 
-		bfd->data = line;
-		bfd->priv_nr = ts;
-		bfd->cb = dahdi_fd_cb;
-
 		switch (e1i_ts->type) {
 		case E1INP_TS_TYPE_NONE:
 			/* close/release LAPD instance, if any */
@@ -712,6 +708,7 @@
 		if (bfd->fd < 0)
 			return bfd->fd;
 
+		osmo_fd_setup(bfd, bfd->fd, bfd->when, dahdi_fd_cb, line, ts);
 		ret = osmo_fd_register(bfd);
 		if (ret < 0) {
 			LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "could not register FD: %s\n", strerror(ret));
diff --git a/src/input/e1d.c b/src/input/e1d.c
index 3b1a45f..e3a3b82 100644
--- a/src/input/e1d.c
+++ b/src/input/e1d.c
@@ -364,10 +364,6 @@
 		if (bfd->list.next && bfd->list.next != LLIST_POISON1)
 			osmo_fd_unregister(bfd);
 
-		bfd->data = line;
-		bfd->priv_nr = ts;
-		bfd->cb = e1d_fd_cb;
-
 		if (e1i_ts->type != E1INP_TS_TYPE_NONE && ts >= num_ts_info) {
 			LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "Timeslot configured, but not existent "
 				"on E1D side; skipping\n");
@@ -457,6 +453,7 @@
 			break;
 		};
 
+		osmo_fd_setup(bfd, bfd->fd, bfd->when, e1d_fd_cb, line, ts);
 		ret = osmo_fd_register(bfd);
 		if (ret < 0) {
 			LOGPITS(e1i_ts, DLINP, LOGL_ERROR, "could not register FD: %s\n", strerror(ret));
diff --git a/src/input/ipa.c b/src/input/ipa.c
index c3e4ad3..8281b4f 100644
--- a/src/input/ipa.c
+++ b/src/input/ipa.c
@@ -189,11 +189,7 @@
 		}
 	}
 
-	ipa_link->ofd->when |= OSMO_FD_READ | OSMO_FD_WRITE;
-	ipa_link->ofd->priv_nr = priv_nr;
-	ipa_link->ofd->cb = ipa_client_fd_cb;
-	ipa_link->ofd->data = ipa_link;
-	ipa_link->ofd->fd = -1;
+	osmo_fd_setup(ipa_link->ofd, -1, OSMO_FD_READ|OSMO_FD_WRITE, ipa_client_fd_cb, ipa_link, priv_nr);
 	ipa_link->state = IPA_CLIENT_LINK_STATE_CONNECTING;
 	ipa_link->local_addr = talloc_strdup(ipa_link, loc_addr);
 	ipa_link->local_port = loc_port;
@@ -312,10 +308,7 @@
 	if (!ipa_link)
 		return NULL;
 
-	ipa_link->ofd.when |= OSMO_FD_READ | OSMO_FD_WRITE;
-	ipa_link->ofd.cb = ipa_server_fd_cb;
-	ipa_link->ofd.fd = -1;
-	ipa_link->ofd.data = ipa_link;
+	osmo_fd_setup(&ipa_link->ofd, -1, OSMO_FD_READ|OSMO_FD_WRITE, ipa_server_fd_cb, ipa_link, 0);
 	if (addr)
 		ipa_link->addr = talloc_strdup(ipa_link, addr);
 	ipa_link->port = port;
@@ -435,10 +428,7 @@
 		return NULL;
 	}
 	conn->server = link;
-	conn->ofd.fd = fd;
-	conn->ofd.data = conn;
-	conn->ofd.cb = ipa_server_conn_cb;
-	conn->ofd.when = OSMO_FD_READ;
+	osmo_fd_setup(&conn->ofd, fd, OSMO_FD_READ, ipa_server_conn_cb, conn, 0);
 	conn->cb = cb;
 	conn->closed_cb = closed_cb;
 	conn->data = data;
diff --git a/src/input/misdn.c b/src/input/misdn.c
index 9d33932..52cd311 100644
--- a/src/input/misdn.c
+++ b/src/input/misdn.c
@@ -592,10 +592,6 @@
 		struct osmo_fd *bfd = &e1i_ts->driver.misdn.fd;
 		struct sockaddr_mISDN addr;
 
-		bfd->data = line;
-		bfd->priv_nr = ts;
-		bfd->cb = misdn_fd_cb;
-
 		switch (e1i_ts->type) {
 		case E1INP_TS_TYPE_NONE:
 			continue;
@@ -682,6 +678,8 @@
 		if (e1i_ts->type == E1INP_TS_TYPE_TRAU)
 			activate_bchan(line, ts, 1);
 
+		osmo_fd_setup(bfd, bfd->fd, bfd->when, misdn_fd_cb, line, ts);
+
 		ret = osmo_fd_register(bfd);
 		if (ret < 0) {
 			fprintf(stderr, "could not register FD: %s\n",
diff --git a/src/input/rs232.c b/src/input/rs232.c
index 390d7fe..522cf0e 100644
--- a/src/input/rs232.c
+++ b/src/input/rs232.c
@@ -256,9 +256,7 @@
 	ser_handle->line = line;
 	ser_handle->delay_ms = delay_ms;
 
-	bfd->when = OSMO_FD_READ;
-	bfd->cb = serial_fd_cb;
-	bfd->data = ser_handle;
+	osmo_fd_setup(bfd, bfd->fd, OSMO_FD_READ, serial_fd_cb, ser_handle, 0);
 
 	rc = osmo_fd_register(bfd);
 	if (rc < 0) {
diff --git a/src/input/unixsocket.c b/src/input/unixsocket.c
index 252da03..9a6ff9b 100644
--- a/src/input/unixsocket.c
+++ b/src/input/unixsocket.c
@@ -242,9 +242,6 @@
 	}
 
 	config = line->driver_data;
-	config->fd.data = line;
-	config->fd.when = OSMO_FD_READ;
-	config->fd.cb = unixsocket_cb;
 
 	/* Open unix domain socket */
 	if (line->sock_path == NULL) {
@@ -274,7 +271,7 @@
 	}
 	LOGPIL(line, DLINP, LOGL_DEBUG, "successfully opend (new) socket: %s (line=%p, fd=%d, ret=%d)\n",
 		sock_path, line, config->fd.fd, ret);
-	config->fd.fd = ret;
+	osmo_fd_setup(&config->fd, ret, OSMO_FD_READ, unixsocket_cb, line, 0);
 
 	/* Register socket in select loop */
 	if (osmo_fd_register(&config->fd) < 0) {
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index fab6471..0cd4e9d 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -247,12 +247,8 @@
 {
 	int rc;
 
-	rs->rtp_bfd.fd = rtp_session_get_rtp_socket(rs->sess);
-	rs->rtcp_bfd.fd = rtp_session_get_rtcp_socket(rs->sess);
-	rs->rtp_bfd.when = rs->rtcp_bfd.when = OSMO_FD_READ;
-	rs->rtp_bfd.data = rs->rtcp_bfd.data = rs;
-	rs->rtp_bfd.cb = osmo_rtp_fd_cb;
-	rs->rtcp_bfd.cb = osmo_rtcp_fd_cb;
+	osmo_fd_setup(&rs->rtp_bfd, rtp_session_get_rtp_socket(rs->sess), OSMO_FD_READ, osmo_rtp_fd_cb, rs, 0);
+	osmo_fd_setup(&rs->rtcp_bfd, rtp_session_get_rtcp_socket(rs->sess), OSMO_FD_READ, osmo_rtcp_fd_cb, rs, 0);
 
 	rc = osmo_fd_register(&rs->rtp_bfd);
 	if (rc < 0)
