]> git.puffer.fish Git - matthieu/frr.git/commitdiff
[zebra:linux] netlink: quiet harmless errors
authorStephen Hemminger <stephen.hemminger@vyatta.com>
Sun, 17 Aug 2008 15:56:15 +0000 (16:56 +0100)
committerPaul Jakma <paul@quagga.net>
Fri, 22 Aug 2008 18:56:25 +0000 (19:56 +0100)
2008-06-17 Stephen Hemminger <stephen.hemminger@vyatta.com>

* rt_netlink.c: (netlink_parse_info) There can be harmless races
  such as adding an existing route, or deleting an already deleted
  route. Don't bother logging these unless debugging is turned on.

Signed-off-by: Paul Jakma <paul@quagga.net>
zebra/rt_netlink.c

index a0dad99701b51271e5cefba9336977e19c590f53..904367e0d5b311b3d0411eb0ccc31fd036b77b0c 100644 (file)
@@ -331,6 +331,8 @@ netlink_parse_info (int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
           if (h->nlmsg_type == NLMSG_ERROR)
             {
               struct nlmsgerr *err = (struct nlmsgerr *) NLMSG_DATA (h);
+             int errnum = err->error;
+             int msg_type = err->msg.nlmsg_type;
 
               /* If the error field is zero, then this is an ACK */
               if (err->error == 0)
@@ -359,27 +361,24 @@ netlink_parse_info (int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
                   return -1;
                 }
 
-              /* Deal with Error Noise  - MAG */
-              {
-                int loglvl = LOG_ERR;
-                int errnum = err->error;
-                int msg_type = err->msg.nlmsg_type;
-
-                if (nl == &netlink_cmd
-                    && (-errnum == ENODEV || -errnum == ESRCH)
-                    && (msg_type == RTM_NEWROUTE || msg_type == RTM_DELROUTE))
-                  loglvl = LOG_DEBUG;
-
-                zlog (NULL, loglvl, "%s error: %s, type=%s(%u), "
-                      "seq=%u, pid=%u",
-                      nl->name, safe_strerror (-errnum),
-                      lookup (nlmsg_str, msg_type),
-                      msg_type, err->msg.nlmsg_seq, err->msg.nlmsg_pid);
-              }
-              /*
-                 ret = -1;
-                 continue;
-               */
+              /* Deal with errors that occur because of races in link handling */
+             if (nl == &netlink_cmd
+                 && ((msg_type == RTM_DELROUTE &&
+                      (-errnum == ENODEV || -errnum == ESRCH))
+                     || (msg_type == RTM_NEWROUTE && -errnum == EEXIST)))
+               {
+                 if (IS_ZEBRA_DEBUG_KERNEL)
+                   zlog_debug ("%s: error: %s type=%s(%u), seq=%u, pid=%u",
+                               nl->name, safe_strerror (-errnum),
+                               lookup (nlmsg_str, msg_type),
+                               msg_type, err->msg.nlmsg_seq, err->msg.nlmsg_pid);
+                 return 0;
+               }
+
+             zlog_err ("%s error: %s, type=%s(%u), seq=%u, pid=%u",
+                       nl->name, safe_strerror (-errnum),
+                       lookup (nlmsg_str, msg_type),
+                       msg_type, err->msg.nlmsg_seq, err->msg.nlmsg_pid);
               return -1;
             }