]> git.puffer.fish Git - mirror/frr.git/commitdiff
2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
authorajs <ajs>
Sun, 30 Jan 2005 18:08:12 +0000 (18:08 +0000)
committerajs <ajs>
Sun, 30 Jan 2005 18:08:12 +0000 (18:08 +0000)
* ripng_interface.c: (ripng_multicast_join) Save errno before calling
  ripngd_privs.change.

ripngd/ChangeLog
ripngd/ripng_interface.c

index dcd8dedf42c4f909c100fa3bd7136f02f0905a26..f4b61132d5e46658c000b4244fc1967bf38b91af 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ripng_interface.c: (ripng_multicast_join) Save errno before calling
+         ripngd_privs.change.
+
 2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
        * ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of
index fa00aabf328c2f15e49b5f89f7351792a44464c4..bef7699ae43eaaaa34f4e9ff240a236b48763689 100644 (file)
@@ -62,6 +62,7 @@ ripng_multicast_join (struct interface *ifp)
 {
   int ret;
   struct ipv6_mreq mreq;
+  int save_errno;
 
   if (if_is_up (ifp) && if_is_multicast (ifp)) {
     memset (&mreq, 0, sizeof (mreq));
@@ -78,11 +79,12 @@ ripng_multicast_join (struct interface *ifp)
 
     ret = setsockopt (ripng->sock, IPPROTO_IPV6, IPV6_JOIN_GROUP,
                      (char *) &mreq, sizeof (mreq));
+    save_errno = errno;
 
     if (ripngd_privs.change (ZPRIVS_LOWER))
       zlog_err ("ripng_multicast_join: could not lower privs");
 
-    if (ret < 0 && errno == EADDRINUSE)
+    if (ret < 0 && save_errno == EADDRINUSE)
       {
        /*
         * Group is already joined.  This occurs due to sloppy group
@@ -94,7 +96,8 @@ ripng_multicast_join (struct interface *ifp)
       }
 
     if (ret < 0)
-      zlog_warn ("can't setsockopt IPV6_JOIN_GROUP: %s", safe_strerror (errno));
+      zlog_warn ("can't setsockopt IPV6_JOIN_GROUP: %s",
+                safe_strerror (save_errno));
 
     if (IS_RIPNG_DEBUG_EVENT)
       zlog_debug ("RIPng %s join to all-rip-routers multicast group", ifp->name);