ifp can never be NULL in carp_set_ifp(), so remove the check and gain
one level of indentation.

ok?

Index: netinet/ip_carp.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_carp.c,v
retrieving revision 1.254
diff -u -p -r1.254 ip_carp.c
--- netinet/ip_carp.c   28 Apr 2015 14:51:50 -0000      1.254
+++ netinet/ip_carp.c   14 May 2015 10:18:52 -0000
@@ -1665,71 +1665,67 @@ carp_set_ifp(struct carp_softc *sc, stru
        if (ifp == sc->sc_carpdev)
                return (0);
 
-       if (ifp != NULL) {
-               if ((ifp->if_flags & IFF_MULTICAST) == 0)
-                       return (EADDRNOTAVAIL);
+       if ((ifp->if_flags & IFF_MULTICAST) == 0)
+               return (EADDRNOTAVAIL);
 
-               if (ifp->if_type == IFT_CARP)
-                       return (EINVAL);
-
-               if (ifp->if_carp == NULL) {
-                       ncif = malloc(sizeof(*cif), M_IFADDR, M_NOWAIT|M_ZERO);
-                       if (ncif == NULL)
-                               return (ENOBUFS);
-                       if ((error = ifpromisc(ifp, 1))) {
-                               free(ncif, M_IFADDR, sizeof(*ncif));
-                               return (error);
-                       }
+       if (ifp->if_type == IFT_CARP)
+               return (EINVAL);
 
-                       ncif->vhif_ifp = ifp;
-                       TAILQ_INIT(&ncif->vhif_vrs);
-               } else {
-                       cif = (struct carp_if *)ifp->if_carp;
-                       if (carp_check_dup_vhids(sc, cif, NULL))
-                               return (EINVAL);
+       if (ifp->if_carp == NULL) {
+               ncif = malloc(sizeof(*cif), M_IFADDR, M_NOWAIT|M_ZERO);
+               if (ncif == NULL)
+                       return (ENOBUFS);
+               if ((error = ifpromisc(ifp, 1))) {
+                       free(ncif, M_IFADDR, sizeof(*ncif));
+                       return (error);
                }
 
-               /* detach from old interface */
-               if (sc->sc_carpdev != NULL)
-                       carpdetach(sc);
-
-               /* attach carp interface to physical interface */
-               if (ncif != NULL)
-                       ifp->if_carp = (caddr_t)ncif;
-               sc->sc_carpdev = ifp;
-               sc->sc_if.if_capabilities = ifp->if_capabilities &
-                   IFCAP_CSUM_MASK;
+               ncif->vhif_ifp = ifp;
+               TAILQ_INIT(&ncif->vhif_vrs);
+       } else {
                cif = (struct carp_if *)ifp->if_carp;
-               TAILQ_FOREACH(vr, &cif->vhif_vrs, sc_list) {
-                       if (vr == sc)
-                               myself = 1;
-                       if (LIST_FIRST(&vr->carp_vhosts)->vhid <
-                           LIST_FIRST(&sc->carp_vhosts)->vhid)
-                               after = vr;
-               }
+               if (carp_check_dup_vhids(sc, cif, NULL))
+                       return (EINVAL);
+       }
 
-               if (!myself) {
-                       /* We're trying to keep things in order */
-                       if (after == NULL) {
-                               TAILQ_INSERT_TAIL(&cif->vhif_vrs, sc, sc_list);
-                       } else {
-                               TAILQ_INSERT_AFTER(&cif->vhif_vrs, after,
-                                   sc, sc_list);
-                       }
-                       cif->vhif_nvrs++;
-               }
-               if (sc->sc_naddrs || sc->sc_naddrs6)
-                       sc->sc_if.if_flags |= IFF_UP;
-               carp_set_enaddr(sc);
-               s = splnet();
-               sc->lh_cookie = hook_establish(ifp->if_linkstatehooks, 1,
-                   carp_carpdev_state, ifp);
-               carp_carpdev_state(ifp);
-               splx(s);
-       } else {
+       /* detach from old interface */
+       if (sc->sc_carpdev != NULL)
                carpdetach(sc);
-               sc->sc_if.if_flags &= ~(IFF_UP|IFF_RUNNING);
+
+       /* attach carp interface to physical interface */
+       if (ncif != NULL)
+               ifp->if_carp = (caddr_t)ncif;
+       sc->sc_carpdev = ifp;
+       sc->sc_if.if_capabilities = ifp->if_capabilities &
+           IFCAP_CSUM_MASK;
+       cif = (struct carp_if *)ifp->if_carp;
+       TAILQ_FOREACH(vr, &cif->vhif_vrs, sc_list) {
+               if (vr == sc)
+                       myself = 1;
+               if (LIST_FIRST(&vr->carp_vhosts)->vhid <
+                   LIST_FIRST(&sc->carp_vhosts)->vhid)
+                       after = vr;
        }
+
+       if (!myself) {
+               /* We're trying to keep things in order */
+               if (after == NULL) {
+                       TAILQ_INSERT_TAIL(&cif->vhif_vrs, sc, sc_list);
+               } else {
+                       TAILQ_INSERT_AFTER(&cif->vhif_vrs, after,
+                           sc, sc_list);
+               }
+               cif->vhif_nvrs++;
+       }
+       if (sc->sc_naddrs || sc->sc_naddrs6)
+               sc->sc_if.if_flags |= IFF_UP;
+       carp_set_enaddr(sc);
+       s = splnet();
+       sc->lh_cookie = hook_establish(ifp->if_linkstatehooks, 1,
+           carp_carpdev_state, ifp);
+       carp_carpdev_state(ifp);
+       splx(s);
+
        return (0);
 }
 

Reply via email to