summaryrefslogtreecommitdiff
path: root/epan/in_cksum.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/in_cksum.c')
-rw-r--r--epan/in_cksum.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/epan/in_cksum.c b/epan/in_cksum.c
index feb1079f6f..4d65c0646b 100644
--- a/epan/in_cksum.c
+++ b/epan/in_cksum.c
@@ -37,6 +37,7 @@
#include <glib.h>
+#include <epan/tvbuff.h>
#include <epan/in_cksum.h>
/*
@@ -143,6 +144,24 @@ in_cksum(const vec_t *vec, int veclen)
return (~sum & 0xffff);
}
+guint16
+ip_checksum(const guint8 *ptr, int len)
+{
+ vec_t cksum_vec[1];
+
+ SET_CKSUM_VEC_PTR(cksum_vec[0], ptr, len);
+ return in_cksum(&cksum_vec[0], 1);
+}
+
+guint16
+ip_checksum_tvb(tvbuff_t *tvb, int offset, int len)
+{
+ vec_t cksum_vec[1];
+
+ SET_CKSUM_VEC_TVB(cksum_vec[0], tvb, offset, len);
+ return in_cksum(&cksum_vec[0], 1);
+}
+
/*
* Given the host-byte-order value of the checksum field in a packet
* header, and the network-byte-order computed checksum of the data