]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
ipsec: Add function to compare two ipsec_sa_cfg_t instances
authorTobias Brunner <tobias@strongswan.org>
Wed, 8 Jun 2016 14:06:53 +0000 (16:06 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 8 Jun 2016 14:12:39 +0000 (16:12 +0200)
memeq() is currently used to compare these but if there is padding that
is not initialized the same for two instances the comparison fails.
Using this function ensures the objects are compared correctly.

src/libstrongswan/ipsec/ipsec_types.c
src/libstrongswan/ipsec/ipsec_types.h

index f2ee11ee8556fe0d3b13077e6ecd5e16b9bd6db0..a52a1eb5175428933c681860cec272ad8e4aae94 100644 (file)
@@ -37,6 +37,22 @@ ENUM(ipcomp_transform_names, IPCOMP_NONE, IPCOMP_LZJH,
        "IPCOMP_LZJH"
 );
 
+/*
+ * See header
+ */
+bool ipsec_sa_cfg_equals(ipsec_sa_cfg_t *a, ipsec_sa_cfg_t *b)
+{
+       return a->mode == b->mode &&
+               a->reqid == b->reqid &&
+               a->policy_count == b->policy_count &&
+               a->esp.use == b->esp.use &&
+               a->esp.spi == b->esp.spi &&
+               a->ah.use == b->ah.use &&
+               a->ah.spi == b->ah.spi &&
+               a->ipcomp.transform == b->ipcomp.transform &&
+               a->ipcomp.cpi == b->ipcomp.cpi;
+}
+
 /*
  * See header
  */
index cbc0d089b2471830a5759a282cd0e81afc23c706..c93d955622f8f8dbdea9bdfa6526d8091a6ea0a5 100644 (file)
@@ -142,6 +142,15 @@ struct ipsec_sa_cfg_t {
        } ipcomp;
 };
 
+/**
+ * Compare two ipsec_sa_cfg_t objects for equality.
+ *
+ * @param a                    first object
+ * @param b                    second object
+ * @return                     TRUE if both objects are equal
+ */
+bool ipsec_sa_cfg_equals(ipsec_sa_cfg_t *a, ipsec_sa_cfg_t *b);
+
 /**
  * A lifetime_cfg_t defines the lifetime limits of an SA.
  *