Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Aug 2010 19:57:41 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r211637 - projects/sv/usr.sbin/netdumpsrv
Message-ID:  <201008221957.o7MJvfgO013148@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Sun Aug 22 19:57:41 2010
New Revision: 211637
URL: http://svn.freebsd.org/changeset/base/211637

Log:
  Fix style fot the alloc_client() function.

Modified:
  projects/sv/usr.sbin/netdumpsrv/netdump_server.c

Modified: projects/sv/usr.sbin/netdumpsrv/netdump_server.c
==============================================================================
--- projects/sv/usr.sbin/netdumpsrv/netdump_server.c	Sun Aug 22 19:09:18 2010	(r211636)
+++ projects/sv/usr.sbin/netdumpsrv/netdump_server.c	Sun Aug 22 19:57:41 2010	(r211637)
@@ -133,162 +133,148 @@ usage(const char *cmd)
 	    cmd);
 }
 
-static struct netdump_client *alloc_client(struct sockaddr_in *sip)
+static struct netdump_client *
+alloc_client(struct sockaddr_in *sip)
 {
-    struct sockaddr_in saddr;
-    struct netdump_client *client;
-    struct in_addr *ip;
-    char *firstdot;
-    int i, ecode, fd, bufsz;
+	struct sockaddr_in saddr;
+	struct netdump_client *client;
+	struct in_addr *ip;
+	char *firstdot;
+	int i, ecode, fd, bufsz;
+
+	assert(sip != NULL);
+
+	client = calloc(1, sizeof(*client));
+	if (client == NULL) {
+		LOGERR_PERROR("calloc()");
+		return (NULL);
+	}
+	ip = &sip->sin_addr;
+	bcopy(ip, &client->ip, sizeof(*ip));
+	client->corefd = -1;
+	client->sock = -1;
+	client->last_msg = now;
 
-    assert(sip != NULL);
-
-    client = calloc(1, sizeof(*client));
-    if (!client)
-    {
-	LOGERR_PERROR("calloc()");
-	return NULL;
-    }
-    ip = &sip->sin_addr;
-    bcopy(ip, &client->ip, sizeof(*ip));
-    client->corefd = -1;
-    client->sock = -1;
-    client->last_msg = now;
-
-    ecode = getnameinfo((struct sockaddr *)sip, sip->sin_len, client->hostname,
-	sizeof(client->hostname), NULL, 0, NI_NAMEREQD);
-    if (ecode != 0) {
-
-	/* Can't resolve, try with a numeric IP. */
 	ecode = getnameinfo((struct sockaddr *)sip, sip->sin_len,
-	    client->hostname, sizeof(client->hostname), NULL, 0, 0);
+	    client->hostname, sizeof(client->hostname), NULL, 0, NI_NAMEREQD);
 	if (ecode != 0) {
-		LOGERR("getnameinfo(): %s\n", gai_strerror(ecode));
-		free(client);
-		return NULL;
+
+		/* Can't resolve, try with a numeric IP. */
+		ecode = getnameinfo((struct sockaddr *)sip, sip->sin_len,
+		    client->hostname, sizeof(client->hostname), NULL, 0, 0);
+		if (ecode != 0) {
+			LOGERR("getnameinfo(): %s\n", gai_strerror(ecode));
+			free(client);
+			return (NULL);
+		}
+	} else {
+
+		/* Strip off the domain name */
+		firstdot = strchr(client->hostname, '.');
+		if (firstdot)
+			*firstdot = '\0';
 	}
-    } else {
 
-	/* Strip off the domain name */
-	firstdot = strchr(client->hostname, '.');
-	if (firstdot)
-	{
-	    *firstdot='\0';
+	client->sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+	if (client->sock == -1) {
+		LOGERR_PERROR("socket()");
+		free(client);
+		return (NULL);
+	}
+	if (fcntl(client->sock, F_SETFL, O_NONBLOCK) == -1) {
+		LOGERR_PERROR("fcntl()");
+		close(client->sock);
+		free(client);
+		return (NULL);
+	}
+	bzero(&saddr, sizeof(saddr));
+	saddr.sin_len = sizeof(saddr);
+	saddr.sin_family = AF_INET;
+	saddr.sin_addr.s_addr = bindip.s_addr;
+	saddr.sin_port = htons(0);
+	if (bind(client->sock, (struct sockaddr *)&saddr, sizeof(saddr))) {
+		LOGERR_PERROR("bind()");
+		close(client->sock);
+		free(client);
+		return (NULL);
+	}
+	bzero(&saddr, sizeof(saddr));
+	saddr.sin_len = sizeof(saddr);
+	saddr.sin_family = AF_INET;
+	saddr.sin_addr.s_addr = ip->s_addr;
+	saddr.sin_port = htons(NETDUMP_ACKPORT);
+	if (connect(client->sock, (struct sockaddr *)&saddr, sizeof(saddr))) {
+		LOGERR_PERROR("connect()");
+		close(client->sock);
+		free(client);
+		return (NULL);
 	}
-    }
 
-    /* Set up the client socket */
-    if ((client->sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1)
-    {
-	LOGERR_PERROR("socket()");
-	free(client);
-	return NULL;
-    }
-    if (fcntl(client->sock, F_SETFL, O_NONBLOCK) == -1) {
-	LOGERR_PERROR("fcntl()");
-	close(client->sock);
-	free(client);
-	return NULL;
-    }
-    bzero(&saddr, sizeof(saddr));
-    saddr.sin_len = sizeof(saddr);
-    saddr.sin_family = AF_INET;
-    saddr.sin_addr.s_addr = bindip.s_addr;
-    saddr.sin_port = htons(0);
-    if (bind(client->sock, (struct sockaddr *)&saddr, sizeof(saddr))) {
-	LOGERR_PERROR("bind()");
-	close(client->sock);
-	free(client);
-	return NULL;
-    }
-    bzero(&saddr, sizeof(saddr));
-    saddr.sin_len = sizeof(saddr);
-    saddr.sin_family = AF_INET;
-    saddr.sin_addr.s_addr = ip->s_addr;
-    saddr.sin_port = htons(NETDUMP_ACKPORT);
-    if (connect(client->sock, (struct sockaddr *)&saddr, sizeof(saddr))) {
-	LOGERR_PERROR("connect()");
-	close(client->sock);
-	free(client);
-	return NULL;
-    }
-    bufsz=131072; /* XXX: Enough to hold approx twice the chunk size. Should be
-		   * plenty for any 1 client. */
-    if (setsockopt(client->sock, SOL_SOCKET, SO_RCVBUF, &bufsz, sizeof(bufsz)))
-    {
-	LOGERR_PERROR("setsockopt()");
+	/* It should be enough to hold approximatively twize the chunk size. */
+	bufsz = 131072;
+	if (setsockopt(client->sock, SOL_SOCKET, SO_RCVBUF, &bufsz,
+	    sizeof(bufsz))) {
+		LOGERR_PERROR("setsockopt()");
 	LOGWARN("May drop packets from %s due to small receive buffer\n",
-	    client->hostname);
-    }
-
-    /* Try info.host.0 through info.host.255 in sequence */
-    for (i=0; i < MAX_DUMPS; i++)
-    {
-	snprintf(client->infofilename, sizeof(client->infofilename),
-			"%s/info.%s.%d", dumpdir, client->hostname, i);
-	snprintf(client->corefilename, sizeof(client->corefilename),
-			"%s/vmcore.%s.%d", dumpdir, client->hostname, i);
-
-	/* Try the info file first */
-	if ((fd = open(client->infofilename, O_WRONLY|O_CREAT|O_EXCL,
-		DEFFILEMODE)) == -1)
-	{
-	    if (errno == EEXIST)
-	    {
-		continue;
-	    }
-	    LOGERR("open(\"%s\"): %s\n", client->infofilename, strerror(errno));
-	    continue;
-	}
-	if (!(client->infofile = fdopen(fd, "w")))
-	{
-	    LOGERR_PERROR("fdopen()");
-	    close(fd);
-	    unlink(client->infofilename);
-	    continue;
+		    client->hostname);
 	}
 
-	/* Next make the core file */
-	if ((fd = open(client->corefilename, O_RDWR|O_CREAT|O_EXCL,
-		DEFFILEMODE)) == -1)
-	{
-	    /* Failed. Keep the numbers in sync. */
-	    fclose(client->infofile);
-	    unlink(client->infofilename);
-	    client->infofile = NULL;
+	/* Try info.host.0 through info.host.255 in sequence. */
+	for (i = 0; i < MAX_DUMPS; i++) {
+		snprintf(client->infofilename, sizeof(client->infofilename),
+		    "%s/info.%s.%d", dumpdir, client->hostname, i);
+		snprintf(client->corefilename, sizeof(client->corefilename),
+		    "%s/vmcore.%s.%d", dumpdir, client->hostname, i);
+
+		/* Try the info file first. */
+		fd = open(client->infofilename, O_WRONLY|O_CREAT|O_EXCL,
+		    DEFFILEMODE);
+		if (fd == -1) {
+			if (errno != EEXIST)
+				LOGERR("open(\"%s\"): %s\n",
+				    client->infofilename, strerror(errno));
+			continue;
+		}
+		client->infofile = fdopen(fd, "w");
+		if (client->infofile == NULL) {
+			LOGERR_PERROR("fdopen()");
+			close(fd);
+			unlink(client->infofilename);
+			continue;
+		}
 
-	    if (errno == EEXIST)
-	    {
-		continue;
-	    }
-	    LOGERR("open(\"%s\"): %s\n", client->corefilename, strerror(errno));
-	    continue;
+		/* Next make the core file. */
+		fd = open(client->corefilename, O_RDWR|O_CREAT|O_EXCL,
+		    DEFFILEMODE);
+		if (fd == -1) {
+
+			/* Failed. Keep the numbers in sync. */
+			fclose(client->infofile);
+			unlink(client->infofilename);
+			client->infofile = NULL;
+			if (errno != EEXIST)
+				LOGERR("open(\"%s\"): %s\n",
+				    client->corefilename, strerror(errno));
+			continue;
+		}
+		client->corefd = fd;
+		break;
 	}
-	client->corefd = fd;
-	break;
-    }
 
-    if (!client->infofile || client->corefd == -1)
-    {
-	LOGERR("Can't create output files for new client %s [%s]\n",
-	    client->hostname, client_ntoa(client));
-	if (client->infofile)
-	{
-	    fclose(client->infofile);
-	}
-	if (client->corefd != -1)
-	{
-	    close(client->corefd);
-	}
-	if (client->sock != -1)
-	{
-	    close(client->sock);
+	if (client->infofile == NULL || client->corefd == -1) {
+		LOGERR("Can't create output files for new client %s [%s]\n",
+		    client->hostname, client_ntoa(client));
+		if (client->infofile)
+			fclose(client->infofile);
+		if (client->corefd != -1)
+			close(client->corefd);
+		if (client->sock != -1)
+			close(client->sock);
+		free(client);
+		return (NULL);
 	}
-	free(client);
-	return NULL;
-    }
-    SLIST_INSERT_HEAD(&clients, client, iter);
-    return client;
+	SLIST_INSERT_HEAD(&clients, client, iter);
+	return (client);
 }
 
 static void free_client(struct netdump_client *client)



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