Commit 22600aac authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Add an official VSA_Clone() function.

parent 356144b7
......@@ -154,21 +154,6 @@ VBE_DropRefConn(struct backend *b, const struct acct_bereq *acct_bereq)
VBE_DropRefLocked(b, acct_bereq);
}
/*--------------------------------------------------------------------
* See lib/libvcc/vcc_backend.c::emit_sockaddr()
*/
static void
copy_sockaddr(struct suckaddr **sa, const struct suckaddr *src)
{
assert(VSA_Sane(src));
*sa = calloc(1, vsa_suckaddr_len);
XXXAN(*sa);
memcpy(*sa, src, vsa_suckaddr_len);
assert(VSA_Sane(*sa));
}
/*--------------------------------------------------------------------
* Add a backend/director instance when loading a VCL.
* If an existing backend is matched, grab a refcount and return.
......@@ -232,9 +217,9 @@ VBE_AddBackend(struct cli *cli, const struct vrt_backend *vb)
* Copy over the sockaddrs
*/
if (vb->ipv4_suckaddr != NULL)
copy_sockaddr(&b->ipv4, vb->ipv4_suckaddr);
b->ipv4 = VSA_Clone(vb->ipv4_suckaddr);
if (vb->ipv6_suckaddr != NULL)
copy_sockaddr(&b->ipv6, vb->ipv6_suckaddr);
b->ipv6 = VSA_Clone(vb->ipv6_suckaddr);
assert(b->ipv4 != NULL || b->ipv6 != NULL);
......
......@@ -37,6 +37,7 @@ int VSA_Sane(const struct suckaddr *);
socklen_t VSA_Len(const struct suckaddr *);
unsigned VSA_Port(const struct suckaddr *);
int VSA_Compare(const struct suckaddr *, const struct suckaddr *);
struct suckaddr *VSA_Clone(const struct suckaddr *sua);
const struct sockaddr *VSA_Get_Sockaddr(const struct suckaddr *, socklen_t *sl);
......
......@@ -323,6 +323,18 @@ VSA_Compare(const struct suckaddr *sua1, const struct suckaddr *sua2)
return (memcmp(sua1, sua2, vsa_suckaddr_len));
}
struct suckaddr *
VSA_Clone(const struct suckaddr *sua)
{
struct suckaddr *sua2;
assert(VSA_Sane(sua));
sua2 = calloc(1, vsa_suckaddr_len);
XXXAN(sua2);
memcpy(sua2, sua, vsa_suckaddr_len);
return (sua2);
}
unsigned
VSA_Port(const struct suckaddr *sua)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment