Re: Small bridge(4) fix

2015-05-15 Thread mxb
No regression on my side.

//mxb

> On 15 maj 2015, at 12:54, Martin Pieuchot  wrote:
> 
> If we change the "rcvif" pointer of a packet we need to run if_input()
> again otherwise we might skip the handlers on the new interface.
> 
> Ultimately it would be nice to only assign "rcvif" in  if_input(), but
> that's for another diff.
> 
> This fix one case I left out in my previous conversion, ok?
> 
> Index: net/if_bridge.c
> ===
> RCS file: /cvs/src/sys/net/if_bridge.c,v
> retrieving revision 1.238
> diff -u -p -r1.238 if_bridge.c
> --- net/if_bridge.c   15 May 2015 10:15:13 -  1.238
> +++ net/if_bridge.c   15 May 2015 10:50:32 -
> @@ -1478,12 +1478,9 @@ bridge_dispatch(struct bridge_iflist *if
> 
>   m->m_pkthdr.rcvif = ifl->ifp;
>   m->m_pkthdr.ph_rtableid = ifl->ifp->if_rdomain;
> - if (ifp->if_type == IFT_GIF) {
> - m->m_flags |= M_PROTO1;
> - ether_input_mbuf(ifl->ifp, m);
> - m = NULL;
> - }
> - return (m);
> + m->m_flags |= M_PROTO1;
> + ether_input_mbuf(ifl->ifp, m);
> + return (NULL);
>   }
>   if (bcmp(ac->ac_enaddr, eh->ether_shost, ETHER_ADDR_LEN) == 0
> #if NCARP > 0
> 



Small bridge(4) fix

2015-05-15 Thread Martin Pieuchot
If we change the "rcvif" pointer of a packet we need to run if_input()
again otherwise we might skip the handlers on the new interface.

Ultimately it would be nice to only assign "rcvif" in  if_input(), but
that's for another diff.

This fix one case I left out in my previous conversion, ok?

Index: net/if_bridge.c
===
RCS file: /cvs/src/sys/net/if_bridge.c,v
retrieving revision 1.238
diff -u -p -r1.238 if_bridge.c
--- net/if_bridge.c 15 May 2015 10:15:13 -  1.238
+++ net/if_bridge.c 15 May 2015 10:50:32 -
@@ -1478,12 +1478,9 @@ bridge_dispatch(struct bridge_iflist *if
 
m->m_pkthdr.rcvif = ifl->ifp;
m->m_pkthdr.ph_rtableid = ifl->ifp->if_rdomain;
-   if (ifp->if_type == IFT_GIF) {
-   m->m_flags |= M_PROTO1;
-   ether_input_mbuf(ifl->ifp, m);
-   m = NULL;
-   }
-   return (m);
+   m->m_flags |= M_PROTO1;
+   ether_input_mbuf(ifl->ifp, m);
+   return (NULL);
}
if (bcmp(ac->ac_enaddr, eh->ether_shost, ETHER_ADDR_LEN) == 0
 #if NCARP > 0