summaryrefslogtreecommitdiffstats
path: root/tapset/ipmib.stp
diff options
context:
space:
mode:
Diffstat (limited to 'tapset/ipmib.stp')
-rw-r--r--tapset/ipmib.stp9
1 files changed, 9 insertions, 0 deletions
diff --git a/tapset/ipmib.stp b/tapset/ipmib.stp
index 775250e9..fb8cd019 100644
--- a/tapset/ipmib.stp
+++ b/tapset/ipmib.stp
@@ -29,7 +29,9 @@ global InUnknownProtos
// global InTruncatedPkts
global InDiscards // included counts of InHdrErrors InTruncatedPkts
// global InDelivers
+%( kernel_v >= "2.6.24" %?
global ForwDatagrams
+%)
global OutRequests
// global OutDiscards
// global OutNoRoutes
@@ -129,6 +131,10 @@ function _plunge_into_tcphdr:long (skb:long)
%{
struct sk_buff *skb = (struct sk_buff *)(long)THIS->skb;
/* as done by skb_network_header() */
+ #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,21)
+ THIS->__retvalue=(long)kread(&(skb->nh.raw)) +
+ (long)sizeof(struct tcphdr);
+ #else
#ifdef NET_SKBUFF_DATA_USES_OFFSET
THIS->__retvalue=(long)kread(&(skb->network_header)) +
(long)(kread(&(skb->head))) +
@@ -137,6 +143,7 @@ function _plunge_into_tcphdr:long (skb:long)
THIS->__retvalue=(long)kread(&(skb->network_header)) +
(long)sizeof(struct tcphdr);
#endif
+ #endif
CATCH_DEREF_FAULT();
%}
@@ -310,6 +317,7 @@ probe ipmib.InDiscards=kernel.function("ip_rcv").return
* MIB: IPSTATS_MIB_OUTFORWDATAGRAMS
*
*/
+%( kernel_v >= "2.6.24" %?
probe ipmib.ForwDatagrams=kernel.function("ip_forward_finish")
{
skb = $skb;
@@ -318,6 +326,7 @@ probe ipmib.ForwDatagrams=kernel.function("ip_forward_finish")
key = ipmib_filter_key(skb,op,SourceIsLocal);
if ( key ) ForwDatagrams[key] += op;
}
+%)
/**
* probe tcpmib.OutRequests - Count a request to send a packet.