diff --git a/src/input/dahdi.c b/src/input/dahdi.c
index e59518a..cdaa8eb 100644
--- a/src/input/dahdi.c
+++ b/src/input/dahdi.c
@@ -205,7 +205,7 @@
 		return 0;
 	}
 
-	e1i_ts->driver.dahdi.fd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&e1i_ts->driver.dahdi.fd);
 
 	return 0;
 }
@@ -251,7 +251,7 @@
 	struct e1inp_sign_link *sign_link;
 	struct msgb *msg;
 
-	bfd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(bfd);
 
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
diff --git a/src/input/e1d.c b/src/input/e1d.c
index 3ae1d89..cab219d 100644
--- a/src/input/e1d.c
+++ b/src/input/e1d.c
@@ -100,7 +100,7 @@
 	struct e1inp_sign_link *sign_link;
 	struct msgb *msg;
 
-	bfd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(bfd);
 
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
@@ -316,7 +316,7 @@
 		return 0;
 	}
 
-	e1i_ts->driver.e1d.fd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&e1i_ts->driver.e1d.fd);
 
 	return 0;
 }
diff --git a/src/input/ipa.c b/src/input/ipa.c
index 8281b4f..f01ecd9 100644
--- a/src/input/ipa.c
+++ b/src/input/ipa.c
@@ -89,7 +89,7 @@
 	LOGIPA(link, LOGL_DEBUG, "sending data\n");
 
 	if (llist_empty(&link->tx_queue)) {
-		ofd->when &= ~OSMO_FD_WRITE;
+		osmo_fd_write_disable(ofd);
 		return 0;
 	}
 	lh = link->tx_queue.next;
@@ -124,7 +124,7 @@
 				link->updown_cb(link, 0);
 			return 0;
 		}
-		ofd->when &= ~OSMO_FD_WRITE;
+		osmo_fd_write_disable(ofd);
 		LOGIPA(link, LOGL_NOTICE, "connection done\n");
 		link->state = IPA_CLIENT_LINK_STATE_CONNECTED;
 		if (link->updown_cb)
@@ -228,7 +228,7 @@
 	if (ret < 0)
 		return ret;
 	link->ofd->fd = ret;
-	link->ofd->when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(link->ofd);
 	if (osmo_fd_register(link->ofd) < 0) {
 		close(ret);
 		link->ofd->fd = -1;
@@ -241,7 +241,7 @@
 void ipa_client_conn_send(struct ipa_client_conn *link, struct msgb *msg)
 {
 	msgb_enqueue(&link->tx_queue, msg);
-	link->ofd->when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(link->ofd);
 }
 
 size_t ipa_client_conn_clear_queue(struct ipa_client_conn *link)
@@ -254,7 +254,7 @@
 		deleted += 1;
 	}
 
-	link->ofd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(link->ofd);
 	return deleted;
 }
 
@@ -387,7 +387,7 @@
 	msg = msgb_dequeue(&conn->tx_queue);
 
 	if (!msg) {
-		conn->ofd.when &= ~OSMO_FD_WRITE;
+		osmo_fd_write_disable(&conn->ofd);
 		return;
 	}
 
@@ -532,5 +532,5 @@
 void ipa_server_conn_send(struct ipa_server_conn *conn, struct msgb *msg)
 {
 	msgb_enqueue(&conn->tx_queue, msg);
-	conn->ofd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&conn->ofd);
 }
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index 8843191..be882a9 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -434,7 +434,7 @@
 
 static int ts_want_write(struct e1inp_ts *e1i_ts)
 {
-	e1i_ts->driver.ipaccess.fd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&e1i_ts->driver.ipaccess.fd);
 
 	return 0;
 }
@@ -486,7 +486,7 @@
 	int ret;
 
 	e1i_ts = ipaccess_line_ts(bfd, line);
-	bfd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(bfd);
 
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
@@ -501,7 +501,7 @@
 	case E1INP_SIGN_OSMO:
 		break;
 	default:
-		bfd->when |= OSMO_FD_WRITE; /* come back for more msg */
+		osmo_fd_write_enable(bfd); /* come back for more msg */
 		ret = -EINVAL;
 		goto out;
 	}
diff --git a/src/input/misdn.c b/src/input/misdn.c
index 0237cb9..874b627 100644
--- a/src/input/misdn.c
+++ b/src/input/misdn.c
@@ -217,7 +217,7 @@
 	    e1i_ts->type == E1INP_TS_TYPE_I460)
 		return 0;
 
-	e1i_ts->driver.misdn.fd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&e1i_ts->driver.misdn.fd);
 
 	return 0;
 }
@@ -243,7 +243,7 @@
 	uint8_t *l2_data;
 	int ret;
 
-	bfd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(bfd);
 
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
diff --git a/src/input/rs232.c b/src/input/rs232.c
index 522cf0e..b594db2 100644
--- a/src/input/rs232.c
+++ b/src/input/rs232.c
@@ -86,7 +86,7 @@
 	struct msgb *msg;
 	int written;
 
-	bfd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(bfd);
 
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
@@ -207,7 +207,7 @@
 
 static int rs232_want_write(struct e1inp_ts *e1i_ts)
 {
-	e1i_ts->driver.rs232.fd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&e1i_ts->driver.rs232.fd);
 
 	return 0;
 }
diff --git a/src/input/unixsocket.c b/src/input/unixsocket.c
index 9a6ff9b..595dc7d 100644
--- a/src/input/unixsocket.c
+++ b/src/input/unixsocket.c
@@ -147,7 +147,7 @@
 	struct msgb *msg;
 	struct e1inp_sign_link *sign_link;
 
-	bfd->when &= ~OSMO_FD_WRITE;
+	osmo_fd_write_disable(bfd);
 
 	/* get the next msg for this timeslot */
 	msg = e1inp_tx_ts(e1i_ts, &sign_link);
@@ -185,7 +185,7 @@
 {
 	struct unixsocket_line *line = e1i_ts->line->driver_data;
 
-	line->fd.when |= OSMO_FD_WRITE;
+	osmo_fd_write_enable(&line->fd);
 
 	return 0;
 }
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index 6e91f8d..d105ca8 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -218,7 +218,7 @@
 	if (what & OSMO_FD_READ) {
 		/* in polling mode, we don't want to be called here */
 		if (rs->flags & OSMO_RTP_F_POLL) {
-			fd->when &= ~OSMO_FD_READ;
+			osmo_fd_read_disable(fd);
 			return 0;
 		}
 		if (!recv_with_cb(rs))
