core: Add function to update osmo_io_ops field for osmo_io_fd

Added, because the field 'io_ops' of 'struct osmo_io_fd' is not a
reference, so subsequent changes to the osmo_io_ops structure that was
used to set it up aren't automatically reflected in the osmo_io_fd
structure that got its copy.

Change-Id: Ie45402ad8e86e3cecf75ad78a512c17e61e68b19
diff --git a/src/core/libosmocore.map b/src/core/libosmocore.map
index 7bca331..bce3399 100644
--- a/src/core/libosmocore.map
+++ b/src/core/libosmocore.map
@@ -267,6 +267,7 @@
 osmo_iofd_sendto_msgb;
 osmo_iofd_set_alloc_info;
 osmo_iofd_set_data;
+osmo_iofd_set_ioops;
 osmo_iofd_set_priv_nr;
 osmo_iofd_setup;
 osmo_iofd_txqueue_clear;
diff --git a/src/core/osmo_io.c b/src/core/osmo_io.c
index cfb6d68..b06e63c 100644
--- a/src/core/osmo_io.c
+++ b/src/core/osmo_io.c
@@ -599,4 +599,12 @@
 	return iofd->name;
 }
 
+/*! Set the osmo_io_ops for an iofd
+ *  \param[in] iofd Target iofd file descriptor
+ *  \param[in] ioops osmo_io_ops structure to be set */
+void osmo_iofd_set_ioops(struct osmo_io_fd *iofd, const struct osmo_io_ops *ioops)
+{
+	iofd->io_ops = *ioops;
+}
+
 #endif /* defined(__linux__) */