Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Jan 2013 04:45:45 +0000 (UTC)
From:      Lawrence Stewart <lstewart@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r245490 - projects/diffused_head/sbin/ipfw/diffuse_collector
Message-ID:  <201301160445.r0G4jjfG081226@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lstewart
Date: Wed Jan 16 04:45:45 2013
New Revision: 245490
URL: http://svnweb.freebsd.org/changeset/base/245490

Log:
  Switch to storing classifier node network address information in
  sockaddr_storage structs to appease strict alignment architectures.
  
  Reported by:	clang

Modified:
  projects/diffused_head/sbin/ipfw/diffuse_collector/diffuse_collector.c

Modified: projects/diffused_head/sbin/ipfw/diffuse_collector/diffuse_collector.c
==============================================================================
--- projects/diffused_head/sbin/ipfw/diffuse_collector/diffuse_collector.c	Wed Jan 16 04:35:35 2013	(r245489)
+++ projects/diffused_head/sbin/ipfw/diffuse_collector/diffuse_collector.c	Wed Jan 16 04:45:45 2013	(r245490)
@@ -286,7 +286,7 @@ struct di_collector_config {
 	char	cli_get_rule_counters[1024];	/* Shell command to execute
 						 * to get the required rule
 						 * counters. */
-	struct sockaddr *classifiers;		/* Details for classifiers. */
+	struct sockaddr_storage *classifiers;	/* Details for classifiers. */
 	int	num_classifiers;		/* Size of classifiers array. */
 	int	min_rule_no;			/* Minimum rule number available
 						 * for use by colelctor. */
@@ -311,7 +311,7 @@ static int stop;
 static void
 print_collector_config(struct di_collector_config *conf)
 {
-	struct sockaddr *cdetails;
+	struct sockaddr_storage *cdetails;
 	int i;
 
 	printf("%-25s %s\n", "Config file path", conf->cfpath);
@@ -1421,7 +1421,7 @@ parse_classaction_config(int line_no, ch
 static void
 parse_general_config(int line_no, char *key, char *value)
 {
-	struct sockaddr *cdetails;
+	struct sockaddr_storage *cdetails;
 	char *errstr, *ip, *port;
 	int nclassifiers;
 
@@ -1446,7 +1446,7 @@ parse_general_config(int line_no, char *
 				errx(EX_CONFIG, "can't parse IP address: %s",
 				    ip);
 			}
-			cdetails->sa_family = AF_INET;
+			cdetails->ss_family = AF_INET;
 
 			if (port != NULL) {
 				((struct sockaddr_in *)cdetails)->sin_port =
@@ -1874,7 +1874,7 @@ request_classifier_state()
 	struct dip_header *hdr;
 	struct dip_set_header *shdr;
 	struct dip_templ_header *thdr;
-	struct sockaddr *cdetails;
+	struct sockaddr_storage *cdetails;
 	char reqstatepkt[64];
 	int i, offs, ret, tmpsock;
 
@@ -1928,7 +1928,8 @@ request_classifier_state()
 			continue;
 		}
 
-		ret = connect(tmpsock, cdetails, cdetails->sa_family == AF_INET ?
+		ret = connect(tmpsock, (struct sockaddr *)cdetails,
+		    cdetails->ss_family == AF_INET ?
 		    sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6));
 		if (ret != 0) {
 			printf("WARNING: Unable to connect to classifier "



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301160445.r0G4jjfG081226>