Author: markj
Date: Fri Feb 12 21:06:48 2016
New Revision: 295580
URL: https://svnweb.freebsd.org/changeset/base/295580

Log:
  Simplify defrtrlist_update() slightly in preparation for future changes.
  
  No functional change intended.
  
  MFC after:    1 week

Modified:
  head/sys/netinet6/nd6_rtr.c

Modified: head/sys/netinet6/nd6_rtr.c
==============================================================================
--- head/sys/netinet6/nd6_rtr.c Fri Feb 12 21:01:53 2016        (r295579)
+++ head/sys/netinet6/nd6_rtr.c Fri Feb 12 21:06:48 2016        (r295580)
@@ -734,42 +734,37 @@ static struct nd_defrouter *
 defrtrlist_update(struct nd_defrouter *new)
 {
        struct nd_defrouter *dr, *n;
+       int oldpref;
 
        if ((dr = defrouter_lookup(&new->rtaddr, new->ifp)) != NULL) {
                /* entry exists */
                if (new->rtlifetime == 0) {
                        defrtrlist_del(dr);
-                       dr = NULL;
-               } else {
-                       int oldpref = rtpref(dr);
+                       return (NULL);
+               }
 
-                       /* override */
-                       dr->flags = new->flags; /* xxx flag check */
-                       dr->rtlifetime = new->rtlifetime;
-                       dr->expire = new->expire;
+               oldpref = rtpref(dr);
 
-                       /*
-                        * If the preference does not change, there's no need
-                        * to sort the entries. Also make sure the selected
-                        * router is still installed in the kernel.
-                        */
-                       if (dr->installed && rtpref(new) == oldpref)
-                               return (dr);
+               /* override */
+               dr->flags = new->flags; /* xxx flag check */
+               dr->rtlifetime = new->rtlifetime;
+               dr->expire = new->expire;
 
-                       /*
-                        * preferred router may be changed, so relocate
-                        * this router.
-                        * XXX: calling TAILQ_REMOVE directly is a bad manner.
-                        * However, since defrtrlist_del() has many side
-                        * effects, we intentionally do so here.
-                        * defrouter_select() below will handle routing
-                        * changes later.
-                        */
-                       TAILQ_REMOVE(&V_nd_defrouter, dr, dr_entry);
-                       n = dr;
-                       goto insert;
-               }
-               return (dr);
+               /*
+                * If the preference does not change, there's no need
+                * to sort the entries. Also make sure the selected
+                * router is still installed in the kernel.
+                */
+               if (dr->installed && rtpref(new) == oldpref)
+                       return (dr);
+
+               /*
+                * The preferred router may have changed, so relocate this
+                * router.
+                */
+               TAILQ_REMOVE(&V_nd_defrouter, dr, dr_entry);
+               n = dr;
+               goto insert;
        }
 
        /* entry does not exist */
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to