>@@ -964,7 +957,7 @@ sendorfree:
>               /* clean ipsec history once it goes out of the node */
>               ipsec_delaux(m);
> #endif
>-              if (error == 0) {
>+              if (error == 0 && ia) {
>                       /* Record statistics for this interface address. */
>                       ia->ia_ifa.if_opackets++;
>                       ia->ia_ifa.if_obytes += m->m_pkthdr.len;

Sorry I missed this the first time we went through this.  Putting the &&
ia here causes fragmented packets sent on interfaces without addresses to
not be sent -- which is not really the right plan.  I think the if (ia)
belongs around the stats updates, but not around the ifp_output() call.

Testing should include something like "% ping -I 0.0.0.1 -s 2000
224.0.0.1" (where the "1" is the ifindex of an up multicast-capable
interface with no source address and "2000" is larger than its MTU),
and running tcpdump to make sure those packets make it out.

  Bill

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to