On Thu, Jul 02, 2015 at 03:07:37PM +0200, Martin Pieuchot wrote:
> On 02/07/15(Thu) 13:57, Sebastien Marie wrote:
> >
> > The message is printed for every packet sent from rdomain 52
> > $ route -T 52 exec ping 192.168.52.1
> > PING 192.168.52.1 (192.168.52.1): 56 data bytes
> > --- 192.168.52.1 ping statistics ---
> > 2 packets transmitted, 0 packets received, 100.0% packet loss
> >
> > $ dmesg | tail -2
> > bge0: trying to send packet on wrong domain. if 0 vs. mbuf 52
> > bge0: trying to send packet on wrong domain. if 0 vs. mbuf 52
> >
> > No other problem than a message in console for every packet.
> >
>
> Well I made a mistake, thanks for spotting it. Here's a revert diff:
diff tested. it resolves the problem.
OK semarie@
thanks for the quick answer
> Index: net/if.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if.c,v
> retrieving revision 1.348
> diff -u -p -r1.348 if.c
> --- net/if.c 2 Jul 2015 09:40:02 -0000 1.348
> +++ net/if.c 2 Jul 2015 13:02:13 -0000
> @@ -447,14 +447,6 @@ if_enqueue(struct ifnet *ifp, struct mbu
> int s, length, error = 0;
> unsigned short mflags;
>
> -#ifdef DIAGNOSTIC
> - if (ifp->if_rdomain != rtable_l2(m->m_pkthdr.ph_rtableid)) {
> - printf("%s: trying to send packet on wrong domain. "
> - "if %d vs. mbuf %d\n", ifp->if_xname, ifp->if_rdomain,
> - rtable_l2(m->m_pkthdr.ph_rtableid));
> - }
> -#endif
> -
> #if NBRIDGE > 0
> if (ifp->if_bridgeport && (m->m_flags & M_PROTO1) == 0)
> return (bridge_output(ifp, m, NULL, NULL));
> Index: net/if_ethersubr.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_ethersubr.c,v
> retrieving revision 1.214
> diff -u -p -r1.214 if_ethersubr.c
> --- net/if_ethersubr.c 2 Jul 2015 09:40:02 -0000 1.214
> +++ net/if_ethersubr.c 2 Jul 2015 13:05:06 -0000
> @@ -176,6 +176,14 @@ ether_output(struct ifnet *ifp, struct m
> struct arpcom *ac = (struct arpcom *)ifp;
> int error = 0;
>
> +#ifdef DIAGNOSTIC
> + if (ifp->if_rdomain != rtable_l2(m->m_pkthdr.ph_rtableid)) {
> + printf("%s: trying to send packet on wrong domain. "
> + "if %d vs. mbuf %d\n", ifp->if_xname,
> + ifp->if_rdomain, rtable_l2(m->m_pkthdr.ph_rtableid));
> + }
> +#endif
> +
> esrc = ac->ac_enaddr;
>
> if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING))
--
Sebastien Marie