bpf_stmt(ins, &i, BPF_RET|BPF_K, 0xffffffff);
if (i+1 >= ELEMENTSOF(ins))
- return -1;
+ return -E2BIG;
}
/* nothing matched, drop packet */
filter.len = i;
filter.filter = ins;
err = setsockopt(udev_monitor->sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter));
- return err;
+ return err < 0 ? -errno : 0;
}
int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct udev_monitor *sender)
udev_monitor->snl.nl.nl_pid = snl.nl.nl_pid;
} else {
udev_err(udev_monitor->udev, "bind failed: %m\n");
- return err;
+ return -errno;
}
/* enable receiving of sender credentials */
_public_ int udev_monitor_set_receive_buffer_size(struct udev_monitor *udev_monitor, int size)
{
if (udev_monitor == NULL)
- return -1;
+ return -EINVAL;
return setsockopt(udev_monitor->sock, SOL_SOCKET, SO_RCVBUFFORCE, &size, sizeof(size));
}
err = close(udev_monitor->sock);
udev_monitor->sock = -1;
- return err;
+ return err < 0 ? -errno : 0;
}
/**
* the bound socket will be closed, and the resources of the monitor
* will be released.
*
- * Returns: the passed udev monitor if it has still an active reference, or #NULL otherwise.
+ * Returns: #NULL
**/
_public_ struct udev_monitor *udev_monitor_unref(struct udev_monitor *udev_monitor)
{
return NULL;
udev_monitor->refcount--;
if (udev_monitor->refcount > 0)
- return udev_monitor;
+ return NULL;
if (udev_monitor->sock >= 0)
close(udev_monitor->sock);
udev_list_cleanup(&udev_monitor->filter_subsystem_list);
_public_ int udev_monitor_get_fd(struct udev_monitor *udev_monitor)
{
if (udev_monitor == NULL)
- return -1;
+ return -EINVAL;
return udev_monitor->sock;
}