On 2015 Jul 02 (Thu) at 15:07:37 +0200 (+0200), Martin Pieuchot wrote:
:On 02/07/15(Thu) 13:57, Sebastien Marie wrote:
:> Hi,
:> 
:> On amd64, after a system update via snapshot, I start to see warning
:> messages in console (and to be complete, the running kernel is GENERIC.MP
:> with a patch on acpitz, so shoudn't be related).
:> 
:> The message is (complete dmesg below):
:> bge0: trying to send packet on wrong domain. if 0 vs. mbuf 52
:> 
:> The network configuration is the following:
:> 
:> # cat /etc/hostname.bge0                                                     
                                                        
:> dhcp
:> inet6 autoconf
:> up
:> !/usr/sbin/arp -F -s 192.168.92.2 c8:be:19:e2:2c:ed permanent
:> 
:> # cat /etc/hostname.vlan52                                                   
                                                        
:> vlandev bge0 rdomain 52
:> description "Test"
:> inet 192.168.52.45
:> 
:> The vlan52 interface is only used for test purpose, and I use rdomain to
:> ensure separation from the rest of the system.
:> 
:> /etc/pf.conf contains nothing related to rtable or rdomain.
:> # cat /etc/pf.conf
:> # See pf.conf(5) and /etc/examples/pf.conf
:> 
:> set skip on lo
:> 
:> # enable statistic collection on egress
:> set loginterface egress
:> 
:> block return    # block stateless traffic
:> pass            # establish keep-state
:> 
:> # By default, do not permit remote connections to X11
:> block return in on ! lo0 proto tcp to port 6000:6010
:> 
:> 
:> The rtable 52 has nothing special (no manual adding).
:> 
:> # route -T 52 -n show                
:> Routing tables
:> 
:> Internet:
:> Destination        Gateway            Flags   Refs      Use   Mtu  Prio
:> Iface
:> 192.168.52/24      192.168.52.45      UC         1        0     -     8 
vlan52
:> 192.168.52.1       link#8             UHLc       0        1     -     8 
vlan52
:> 192.168.52.45      00:1b:38:33:97:b0  UHLl       0        0     -     1 lo0  
:> 192.168.52.255     192.168.52.45      UHb        0        0     -     1 
vlan52
:> 
:> 
:> 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.
:> 
:> This message have been introduced in sys/net/if.c (line 452) at version
:> 1.344.
:> 
:> >    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));
:> >    }
:> 
:> I am also able to reproduce it on other host with true GENERIC.MP (from
:> same snapshot version), with more conventional network configuration (no
:> mix between tagged/untagged vlan):
:>   - one physical re0 (just up)
:>   - several vlan interface on it
:>   - one rdomain on vlan interface
:
:Well I made a mistake, thanks for spotting it.  Here's a revert diff:
:

OK for the revert

: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))
:

-- 
"I cannot and will not cut my conscience to fit this year's fashions."
                -- Lillian Hellman

Reply via email to