|
@@ -160,9 +160,15 @@ EXPORT_SYMBOL_GPL(ip_build_and_send_pkt);
|
|
|
static inline int ip_finish_output2(struct sk_buff *skb)
|
|
|
{
|
|
|
struct dst_entry *dst = skb->dst;
|
|
|
+ struct rtable *rt = (struct rtable *)dst;
|
|
|
struct net_device *dev = dst->dev;
|
|
|
int hh_len = LL_RESERVED_SPACE(dev);
|
|
|
|
|
|
+ if (rt->rt_type == RTN_MULTICAST)
|
|
|
+ IP_INC_STATS(IPSTATS_MIB_OUTMCASTPKTS);
|
|
|
+ else if (rt->rt_type == RTN_BROADCAST)
|
|
|
+ IP_INC_STATS(IPSTATS_MIB_OUTBCASTPKTS);
|
|
|
+
|
|
|
/* Be paranoid, rather than too clever. */
|
|
|
if (unlikely(skb_headroom(skb) < hh_len && dev->hard_header)) {
|
|
|
struct sk_buff *skb2;
|