-    bind(sockfd.as_raw_fd(), &sa_nl).map_err(|_| Error::Internal)?; // TODO: proper errors
-    let (pipe_rd, pipe_wr) = pipe().map_err(|_| Error::Internal)?;
+    bind(sockfd.as_raw_fd(), &sa_nl).map_err(|e| Error::Bind(e))?;
+    let (pipe_rd, pipe_wr) = pipe().map_err(|e| Error::CreatePipe(e))?;