ipsec-types: Add a proper hash function for ipsec_sa_cfg_t
While 3c12905103 ("ipsec: Add function to compare two ipsec_sa_cfg_t
instances") added a comparison function to avoid issues with non-zeroed
padding, hashes were still calculated using chunk_hash().
This commit is contained in:
@@ -470,7 +470,7 @@ static u_int ipsec_sa_hash(ipsec_sa_t *sa)
|
|||||||
chunk_hash_inc(chunk_from_thing(sa->mark),
|
chunk_hash_inc(chunk_from_thing(sa->mark),
|
||||||
chunk_hash_inc(chunk_from_thing(sa->if_id),
|
chunk_hash_inc(chunk_from_thing(sa->if_id),
|
||||||
chunk_hash_inc(chunk_from_thing(sa->hw_offload),
|
chunk_hash_inc(chunk_from_thing(sa->hw_offload),
|
||||||
chunk_hash(chunk_from_thing(sa->cfg)))))));
|
ipsec_sa_cfg_hash(&sa->cfg))))));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ static u_int ipsec_sa_hash(ipsec_sa_t *sa)
|
|||||||
{
|
{
|
||||||
return chunk_hash_inc(sa->src->get_address(sa->src),
|
return chunk_hash_inc(sa->src->get_address(sa->src),
|
||||||
chunk_hash_inc(sa->dst->get_address(sa->dst),
|
chunk_hash_inc(sa->dst->get_address(sa->dst),
|
||||||
chunk_hash(chunk_from_thing(sa->cfg))));
|
ipsec_sa_cfg_hash(&sa->cfg)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -53,6 +53,22 @@ ENUM(dscp_copy_names, DSCP_COPY_OUT_ONLY, DSCP_COPY_NO,
|
|||||||
"no",
|
"no",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* See header
|
||||||
|
*/
|
||||||
|
u_int ipsec_sa_cfg_hash(ipsec_sa_cfg_t *this)
|
||||||
|
{
|
||||||
|
return chunk_hash_inc(chunk_from_thing(this->mode),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->reqid),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->policy_count),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->esp.use),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->esp.spi),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->ah.use),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->ah.spi),
|
||||||
|
chunk_hash_inc(chunk_from_thing(this->ipcomp.transform),
|
||||||
|
chunk_hash(chunk_from_thing(this->ipcomp.cpi))))))))));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See header
|
* See header
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -179,6 +179,14 @@ struct ipsec_sa_cfg_t {
|
|||||||
} ipcomp;
|
} ipcomp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hash an ipsec_sa_cfg_t object.
|
||||||
|
*
|
||||||
|
* @param this object to hash
|
||||||
|
* @return hash value
|
||||||
|
*/
|
||||||
|
u_int ipsec_sa_cfg_hash(ipsec_sa_cfg_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare two ipsec_sa_cfg_t objects for equality.
|
* Compare two ipsec_sa_cfg_t objects for equality.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user