[master] b8c2aa5 Add a function to extract a sockaddr and a socklen_t from a suckaddr.

Poul-Henning Kamp phk at varnish-cache.org
Sun Oct 27 23:23:44 CET 2013


commit b8c2aa5c5b98c7fe43dc378e9f0964845456b278
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Sun Oct 27 22:23:24 2013 +0000

    Add a function to extract a sockaddr and a socklen_t from a suckaddr.

diff --git a/include/vsa.h b/include/vsa.h
index 9bad737..d21f3c0 100644
--- a/include/vsa.h
+++ b/include/vsa.h
@@ -38,6 +38,8 @@ socklen_t VSA_Len(const void *);
 unsigned VSA_Port(const void *);
 int VSA_Compare(const struct suckaddr *, const struct suckaddr *);
 
+const struct sockaddr *VSA_Get_Sockaddr(const struct suckaddr *, socklen_t *sl);
+
 /*
  * 's' is a sockaddr of some kind, 'sal' is its length
  */
diff --git a/lib/libvarnish/vsa.c b/lib/libvarnish/vsa.c
index 4dd32b6..97ff0fa 100644
--- a/lib/libvarnish/vsa.c
+++ b/lib/libvarnish/vsa.c
@@ -257,6 +257,24 @@ VSA_Build(void *d, const void *s, unsigned sal)
 	return (sua);
 }
 
+const struct sockaddr *
+VSA_Get_Sockaddr(const struct suckaddr *sua, socklen_t *sl)
+{
+	AN(sua);
+	AN(sl);
+	switch(sua->sa.sa_family) {
+		case PF_INET:
+			*sl = sizeof sua->sa4;
+			break;
+		case PF_INET6:
+			*sl = sizeof sua->sa6;
+			break;
+		default:
+			return (NULL);
+	}
+	return (&sua->sa);
+}
+
 int
 VSA_Sane(const void *s)
 {



More information about the varnish-commit mailing list