added chunk_compare() which compares orders chunks
authorAndreas Steffen <andreas.steffen@strongswan.org>
Tue, 27 Mar 2007 04:37:15 +0000 (04:37 -0000)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Tue, 27 Mar 2007 04:37:15 +0000 (04:37 -0000)
src/libstrongswan/chunk.c
src/libstrongswan/chunk.h

index f2c8a3e..1967b35 100644 (file)
@@ -233,6 +233,21 @@ chunk_t chunk_skip(chunk_t chunk, size_t bytes)
 /**
  * Described in header.
  */
+int chunk_compare(chunk_t a, chunk_t b)
+{
+       int compare_len = a.len - b.len;
+       int len = (compare_len < 0)? a.len : b.len;
+
+       if (compare_len != 0 || len == 0)
+       {
+               return compare_len;
+       }
+       return memcmp(a.ptr, b.ptr, len);
+};
+
+/**
+ * Described in header.
+ */
 bool chunk_equals(chunk_t a, chunk_t b)
 {
        return a.ptr != NULL  && b.ptr != NULL &&
index 7fa257b..9880ae2 100644 (file)
@@ -124,6 +124,12 @@ void chunk_free(chunk_t *chunk);
 chunk_t chunk_skip(chunk_t chunk, size_t bytes);
 
 /**
+ *  Compare two chunks, returns zero if a equals b
+ *  or negative/positive if a is small/greater than b
+ */
+int chunk_compare(chunk_t a, chunk_t b);
+
+/**
  * Compare two chunks for equality,
  * NULL chunks are never equal.
  */