... without changing the address family at the same time

Easier to see with diff -b

OK?

diff --git if_pflow.c if_pflow.c
index 8e95aaf753f..80758b60bd5 100644
--- if_pflow.c
+++ if_pflow.c
@@ -335,32 +335,35 @@ pflow_set(struct pflow_softc *sc, struct pflowreq *pflowr)
                        }
                }
 
-               if (sc->sc_flowdst == NULL) {
-                       switch (pflowr->flowdst.ss_family) {
-                       case AF_INET:
+               switch (pflowr->flowdst.ss_family) {
+               case AF_INET:
+                       if (sc->sc_flowdst == NULL) {
                                if ((sc->sc_flowdst = malloc(
                                    sizeof(struct sockaddr_in),
                                    M_DEVBUF,  M_NOWAIT)) == NULL)
                                        return (ENOMEM);
-                               memcpy(sc->sc_flowdst, &pflowr->flowdst,
-                                   sizeof(struct sockaddr_in));
-                               sc->sc_flowdst->sa_len = sizeof(struct
-                                   sockaddr_in);
-                               break;
-                       case AF_INET6:
+                       }
+                       memcpy(sc->sc_flowdst, &pflowr->flowdst,
+                           sizeof(struct sockaddr_in));
+                       sc->sc_flowdst->sa_len = sizeof(struct
+                           sockaddr_in);
+                       break;
+               case AF_INET6:
+                       if (sc->sc_flowdst == NULL) {
                                if ((sc->sc_flowdst = malloc(
                                    sizeof(struct sockaddr_in6),
                                    M_DEVBUF, M_NOWAIT)) == NULL)
                                        return (ENOMEM);
-                               memcpy(sc->sc_flowdst, &pflowr->flowdst,
-                                   sizeof(struct sockaddr_in6));
-                               sc->sc_flowdst->sa_len = sizeof(struct
-                                   sockaddr_in6);
-                               break;
-                       default:
-                               break;
                        }
+                       memcpy(sc->sc_flowdst, &pflowr->flowdst,
+                           sizeof(struct sockaddr_in6));
+                       sc->sc_flowdst->sa_len = sizeof(struct
+                           sockaddr_in6);
+                       break;
+               default:
+                       break;
                }
+
                if (sc->sc_flowdst != NULL) {
                        sc->send_nam->m_len = sc->sc_flowdst->sa_len;
                        sa = mtod(sc->send_nam, struct sockaddr *);


-- 
I'm not entirely sure you are real.

Reply via email to