On Thu, May 14, 2015 at 12:27:37PM +0200, Martin Pieuchot wrote:
> ifp can never be NULL in carp_set_ifp(), so remove the check and gain
> one level of indentation.
> 
> ok?

OK claudio@ (once I checked with cvs diff -b to reduce the noise)
 
> 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);
>  }
>  
> 

-- 
:wq Claudio

Reply via email to