I actually played a bit with the code and found out
that exactly half of
the
times the write() call in the function
gsmtap_fd_cb() (gsmtap_util.c) fails because of EAGAIN or EWOULDBLOCK.
That's because of what Alex said.
If you do what he described, the port unreachable will not happen and all
write will succeed.
Cheers,
Sylvain