diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-30 11:14:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-30 11:14:42 -0400 |
commit | 152a6a9da1bd3ed5dcbbf6ff17c7ebde0eb9a754 (patch) | |
tree | cad354802870b7d4bc0402a6a6da44bd1f610bc6 /net/ipv4/ip_output.c | |
parent | cd9bb7e7367c03400d6e918fd3502820fc3b9084 (diff) | |
parent | 80787ebc2bbd8e675d8b9ff8cfa40f15134feebe (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (21 commits)
[IPV4] SNMP: Support OutMcastPkts and OutBcastPkts
[IPV4] SNMP: Support InMcastPkts and InBcastPkts
[IPV4] SNMP: Support InTruncatedPkts
[IPV4] SNMP: Support InNoRoutes
[SNMP]: Add definitions for {In,Out}BcastPkts
[TCP] FRTO: RFC4138 allows Nagle override when new data must be sent
[TCP] FRTO: Delay skb available check until it's mandatory
[XFRM]: Restrict upper layer information by bundle.
[TCP]: Catch skb with S+L bugs earlier
[PATCH] INET : IPV4 UDP lookups converted to a 2 pass algo
[L2TP]: Add the ability to autoload a pppox protocol module.
[SKB]: Introduce skb_queue_walk_safe()
[AF_IUCV/IUCV]: smp_call_function deadlock
[IPV6]: Fix slab corruption running ip6sic
[TCP]: Update references in two old comments
[XFRM]: Export SPD info
[IPV6]: Track device renames in snmp6.
[SCTP]: Fix sctp_getsockopt_local_addrs_old() to use local storage.
[NET]: Remove NETIF_F_INTERNAL_STATS, default to internal stats.
[NETPOLL]: Remove CONFIG_NETPOLL_RX
...
Diffstat (limited to 'net/ipv4/ip_output.c')
-rw-r--r-- | net/ipv4/ip_output.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 534650cad3a8..d6427d918512 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -160,9 +160,15 @@ EXPORT_SYMBOL_GPL(ip_build_and_send_pkt); | |||
160 | static inline int ip_finish_output2(struct sk_buff *skb) | 160 | static inline int ip_finish_output2(struct sk_buff *skb) |
161 | { | 161 | { |
162 | struct dst_entry *dst = skb->dst; | 162 | struct dst_entry *dst = skb->dst; |
163 | struct rtable *rt = (struct rtable *)dst; | ||
163 | struct net_device *dev = dst->dev; | 164 | struct net_device *dev = dst->dev; |
164 | int hh_len = LL_RESERVED_SPACE(dev); | 165 | int hh_len = LL_RESERVED_SPACE(dev); |
165 | 166 | ||
167 | if (rt->rt_type == RTN_MULTICAST) | ||
168 | IP_INC_STATS(IPSTATS_MIB_OUTMCASTPKTS); | ||
169 | else if (rt->rt_type == RTN_BROADCAST) | ||
170 | IP_INC_STATS(IPSTATS_MIB_OUTBCASTPKTS); | ||
171 | |||
166 | /* Be paranoid, rather than too clever. */ | 172 | /* Be paranoid, rather than too clever. */ |
167 | if (unlikely(skb_headroom(skb) < hh_len && dev->hard_header)) { | 173 | if (unlikely(skb_headroom(skb) < hh_len && dev->hard_header)) { |
168 | struct sk_buff *skb2; | 174 | struct sk_buff *skb2; |