diff --git a/lib/misc_utils/udp_socket.cc b/lib/misc_utils/udp_socket.cc
index 73393a0..c43f183 100644
--- a/lib/misc_utils/udp_socket.cc
+++ b/lib/misc_utils/udp_socket.cc
@@ -38,8 +38,9 @@
   namespace gsm {
 
     udp_socket::udp_socket(
-      const std::string &remote_addr,
+      const std::string &bind_addr,
       const std::string &src_port,
+      const std::string &remote_addr,
       const std::string &dst_port,
       size_t mtu)
     {
@@ -50,7 +51,7 @@
       udp::resolver resolver(d_io_service);
 
       udp::resolver::query rx_query(
-        udp::v4(), remote_addr, src_port,
+        udp::v4(), bind_addr, src_port,
         boost::asio::ip::resolver_query_base::passive);
       udp::resolver::query tx_query(
         udp::v4(), remote_addr, dst_port,
diff --git a/lib/trx/trx_burst_if_impl.cc b/lib/trx/trx_burst_if_impl.cc
index e3fcc89..f72eecd 100644
--- a/lib/trx/trx_burst_if_impl.cc
+++ b/lib/trx/trx_burst_if_impl.cc
@@ -48,19 +48,22 @@
 
     trx_burst_if::sptr
     trx_burst_if::make(
+      const std::string &bind_addr,
       const std::string &remote_addr,
       const std::string &base_port)
     {
       int base_port_int = boost::lexical_cast<int> (base_port);
 
       return gnuradio::get_initial_sptr
-        (new trx_burst_if_impl(remote_addr, base_port_int));
+        (new trx_burst_if_impl(bind_addr, remote_addr,
+          base_port_int));
     }
 
     /*
      * The private constructor
      */
     trx_burst_if_impl::trx_burst_if_impl(
+      const std::string &bind_addr,
       const std::string &remote_addr,
       int base_port
     ) : gr::block("trx_burst_if",
@@ -79,8 +82,8 @@
         std::string data_dst_port = boost::lexical_cast<std::string> (base_port + 102);
 
         // Init DATA interface
-        d_data_sock = new udp_socket(remote_addr,
-          data_src_port, data_dst_port, DATA_IF_MTU);
+        d_data_sock = new udp_socket(bind_addr, data_src_port,
+          remote_addr, data_dst_port, DATA_IF_MTU);
 
         // Bind DATA interface handler
         d_data_sock->udp_rx_handler = boost::bind(
diff --git a/lib/trx/trx_burst_if_impl.h b/lib/trx/trx_burst_if_impl.h
index 27ec259..fdb49f2 100644
--- a/lib/trx/trx_burst_if_impl.h
+++ b/lib/trx/trx_burst_if_impl.h
@@ -40,7 +40,8 @@
       void burst_pack(pmt::pmt_t msg, uint8_t *buf);
 
      public:
-      trx_burst_if_impl(const std::string &remote_addr, int base_port);
+      trx_burst_if_impl(const std::string &bind_addr,
+        const std::string &remote_addr, int base_port);
       ~trx_burst_if_impl();
 
       void handle_dl_burst(pmt::pmt_t msg);
