[master] 36ad06e Turn suckaddr into a miniobj

Poul-Henning Kamp phk at varnish-cache.org
Mon Oct 28 09:45:56 CET 2013


commit 36ad06ef25f2f0a6c0202e3e55253b67052c9d65
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Oct 28 08:45:45 2013 +0000

    Turn suckaddr into a miniobj

diff --git a/lib/libvarnish/vsa.c b/lib/libvarnish/vsa.c
index 4517549..c2838d6 100644
--- a/lib/libvarnish/vsa.c
+++ b/lib/libvarnish/vsa.c
@@ -42,6 +42,7 @@
 #include "vas.h"
 #include "vsa.h"
 #include "vrt.h"
+#include "miniobj.h"
 
 /*
  * Struct sockaddr{|_in|_in6|_storage} is absolutely the worst data
@@ -162,6 +163,8 @@
  */
 
 struct suckaddr {
+	unsigned			magic;
+#define SUCKADDR_MAGIC			0x4b1e9335
 	union {
 		struct sockaddr		sa;
 		struct sockaddr_in	sa4;
@@ -179,9 +182,11 @@ const int vsa_suckaddr_len = sizeof(struct suckaddr);
 int
 VRT_VSA_GetPtr(const struct suckaddr *sua, const unsigned char ** dst)
 {
+
 	AN(dst);
 	if (sua == NULL)
 		return (-1);
+	CHECK_OBJ_NOTNULL(sua, SUCKADDR_MAGIC);
 
 	switch(sua->sa.sa_family) {
 		case PF_INET:
@@ -223,7 +228,7 @@ VSA_Malloc(const void *s, unsigned  sal)
 			break;
 	}
 	if (l != 0) {
-		sua = calloc(1, sizeof *sua);
+		ALLOC_OBJ(sua, SUCKADDR_MAGIC);
 		if (sua != NULL)
 			memcpy(&sua->sa, s, l);
 	}
@@ -253,6 +258,8 @@ VSA_Build(void *d, const void *s, unsigned sal)
 			break;
 	}
 	if (l != 0) {
+		memset(sua, 0, sizeof *sua);
+		sua->magic = SUCKADDR_MAGIC;
 		memcpy(&sua->sa, s, l);
 		return (sua);
 	}
@@ -262,7 +269,8 @@ VSA_Build(void *d, const void *s, unsigned sal)
 const struct sockaddr *
 VSA_Get_Sockaddr(const struct suckaddr *sua, socklen_t *sl)
 {
-	AN(sua);
+
+	CHECK_OBJ_NOTNULL(sua, SUCKADDR_MAGIC);
 	AN(sl);
 	switch(sua->sa.sa_family) {
 		case PF_INET:
@@ -278,10 +286,11 @@ VSA_Get_Sockaddr(const struct suckaddr *sua, socklen_t *sl)
 }
 
 int
-VSA_Sane(const struct suckaddr *s)
+VSA_Sane(const struct suckaddr *sua)
 {
+	CHECK_OBJ_NOTNULL(sua, SUCKADDR_MAGIC);
 
-	switch(s->sa.sa_family) {
+	switch(sua->sa.sa_family) {
 		case PF_INET:
 		case PF_INET6:
 			return (1);
@@ -291,36 +300,39 @@ VSA_Sane(const struct suckaddr *s)
 }
 
 socklen_t
-VSA_Len(const struct suckaddr *s)
+VSA_Len(const struct suckaddr *sua)
 {
+	CHECK_OBJ_NOTNULL(sua, SUCKADDR_MAGIC);
 
-	switch(s->sa.sa_family) {
+	switch(sua->sa.sa_family) {
 		case PF_INET:
-			return (sizeof(s->sa4));
+			return (sizeof(sua->sa4));
 		case PF_INET6:
-			return (sizeof(s->sa6));
+			return (sizeof(sua->sa6));
 		default:
 			return (0);
 	}
 }
 
 int
-VSA_Compare(const struct suckaddr *s1, const struct suckaddr *s2)
+VSA_Compare(const struct suckaddr *sua1, const struct suckaddr *sua2)
 {
-	AN(s1);
-	AN(s2);
-	return (memcmp(s1, s2, vsa_suckaddr_len));
+
+	CHECK_OBJ_NOTNULL(sua1, SUCKADDR_MAGIC);
+	CHECK_OBJ_NOTNULL(sua2, SUCKADDR_MAGIC);
+	return (memcmp(sua1, sua2, vsa_suckaddr_len));
 }
 
 unsigned
-VSA_Port(const struct suckaddr *s)
+VSA_Port(const struct suckaddr *sua)
 {
 
-	switch(s->sa.sa_family) {
+	CHECK_OBJ_NOTNULL(sua, SUCKADDR_MAGIC);
+	switch(sua->sa.sa_family) {
 		case PF_INET:
-			return (ntohs(s->sa4.sin_port));
+			return (ntohs(sua->sa4.sin_port));
 		case PF_INET6:
-			return (ntohs(s->sa6.sin6_port));
+			return (ntohs(sua->sa6.sin6_port));
 		default:
 			return (0);
 	}



More information about the varnish-commit mailing list