summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2008-08-17 17:01:44 +0100
committerPaul Jakma <paul@quagga.net>2008-08-22 19:56:25 +0100
commit4c699477d24e7104893130d072963df5cea17214 (patch)
tree9e4336586dd07868f905c87a4a7479e2b8b0795f
parent898987e976e8f7a50a4549475ab4970a85895f31 (diff)
[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>
-rw-r--r--zebra/rt_netlink.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index 904367e0..05254498 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -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;
}