mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 15:01:21 +00:00
[zebra:linux] netlink: no need to change privs for receive
2008-06-17 Stephen Hemminger <stephen.hemminger@vyatta.com> * rt_netlink.c: (netlink_parse_info) Linux doesn't check privledges on receive, so avoid the overhead of lowering and raising the priviledges on each received message Signed-off-by: Paul Jakma <paul@quagga.net>
This commit is contained in:
parent
898987e976
commit
4c699477d2
@ -285,25 +285,16 @@ netlink_parse_info (int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
|
||||
struct sockaddr_nl snl;
|
||||
struct msghdr msg = { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 };
|
||||
struct nlmsghdr *h;
|
||||
int save_errno;
|
||||
|
||||
if (zserv_privs.change (ZPRIVS_RAISE))
|
||||
zlog (NULL, LOG_ERR, "Can't raise privileges");
|
||||
|
||||
status = recvmsg (nl->sock, &msg, 0);
|
||||
save_errno = errno;
|
||||
|
||||
if (zserv_privs.change (ZPRIVS_LOWER))
|
||||
zlog (NULL, LOG_ERR, "Can't lower privileges");
|
||||
|
||||
if (status < 0)
|
||||
{
|
||||
if (save_errno == EINTR)
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
if (save_errno == EWOULDBLOCK || save_errno == EAGAIN)
|
||||
if (errno == EWOULDBLOCK || errno == EAGAIN)
|
||||
break;
|
||||
zlog (NULL, LOG_ERR, "%s recvmsg overrun: %s",
|
||||
nl->name, safe_strerror(save_errno));
|
||||
nl->name, safe_strerror(errno));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user