if (host == NULL)
host = "localhost";
- return osmo_sock_init(AF_UNSPEC, SOCK_DGRAM, IPPROTO_UDP, host, port, 0);
+ return osmo_sock_init(AF_UNSPEC, SOCK_DGRAM, IPPROTO_UDP, host, port,
+ OSMO_SOCK_F_CONNECT);
}
int gsmtap_source_add_sink_fd(int gsmtap_fd)
return rc;
if (osmo_sockaddr_is_local((struct sockaddr *)&ss, ss_len) == 1) {
- rc = osmo_sock_init_sa((struct sockaddr *)&ss, SOCK_DGRAM, IPPROTO_UDP, 1);
+ rc = osmo_sock_init_sa((struct sockaddr *)&ss, SOCK_DGRAM,
+ IPPROTO_UDP, OSMO_SOCK_F_BIND);
if (rc >= 0)
return rc;
}
int gsmtap_sendmsg(struct gsmtap_inst *gti, struct msgb *msg)
{
+ if (!gti)
+ return -ENODEV;
+
if (gti->ofd_wq_mode)
return osmo_wqueue_enqueue(>i->wq, msg);
else {
{
struct msgb *msg;
+ if (!gti)
+ return -ENODEV;
+
msg = gsmtap_makemsg(arfcn, ts, chan_type, ss, fn, signal_dbm,
snr, data, len);
if (!msg)
rc = write(ofd->fd, msg->data, msg->len);
if (rc < 0) {
perror("writing msgb to gsmtap fd");
- msgb_free(msg);
return rc;
}
if (rc != msg->len) {
perror("short write to gsmtap fd");
- msgb_free(msg);
return -EIO;
}
- msgb_free(msg);
return 0;
}