Date: Fri, 5 Apr 2013 16:10:01 GMT From: Hirohisa Yamaguchi <umq@ueo.co.jp> To: freebsd-ports-bugs@FreeBSD.org Subject: Re: ports/177626: Update port net/nbd-server to 3.2 Message-ID: <201304051610.r35GA1xJ093079@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/177626; it has been noted by GNATS. From: Hirohisa Yamaguchi <umq@ueo.co.jp> To: gd@rambler-co.ru Cc: bug-followup@FreeBSD.ORG Subject: Re: ports/177626: Update port net/nbd-server to 3.2 Date: Sat, 06 Apr 2013 01:06:54 +0900 --Multipart_Sat_Apr__6_01:06:53_2013-1 Content-Type: text/plain; charset=US-ASCII I'm sorry, but my previous patch had an inverted condition. Here's an updated patch # I haven't succeed in running regression-test under redports.org, # it is run in IPv6 only environment. # There might be another problem. I've sent the same patch to upstream mailing list. Perhaps it will be applied. Regards, -- Hirohisa Yamaguchi umq@ueo.co.jp --Multipart_Sat_Apr__6_01:06:53_2013-1 Content-Type: application/octet-stream; type=patch Content-Disposition: attachment; filename="net_nbd-server-177626-1.patch" Content-Transfer-Encoding: 7bit M net/nbd-server/Makefile M net/nbd-server/distinfo D net/nbd-server/files/nbd.h A net/nbd-server/files/patch-cliserv.h M net/nbd-server/files/patch-nbd-server.c A net/nbd-server/files/patch-nbd-tester-client.c A net/nbd-server/files/patch-netdb-compat.h A net/nbd-server/files/patch-simple_test Index: net/nbd-server/Makefile =================================================================== --- net/nbd-server/Makefile (revision 315729) +++ net/nbd-server/Makefile (working copy) @@ -1,13 +1,12 @@ # Created by: Christian Laursen <xi@borderworlds.dk> # $FreeBSD$ -PORTNAME= nbd-server -PORTVERSION= 2.8.5 -PORTREVISION= 1 +PORTNAME= nbd +PORTVERSION= 3.2 PORTEPOCH= 1 CATEGORIES= net -MASTER_SITES= SF/nbd/nbd/${PORTVERSION} -DISTNAME= nbd-${PORTVERSION} +MASTER_SITES= SF +PKGNAMESUFFIX= -server MAINTAINER= ports@FreeBSD.org COMMENT= Server for the Linux network block device (nbd) @@ -16,12 +15,14 @@ USE_GNOME= glib20 USE_PKGCONFIG= build GNU_CONFIGURE= yes -CONFIGURE_ARGS= --prefix=${PREFIX} --enable-lfs --enable-syslog +CONFIGURE_ARGS= --enable-lfs --enable-syslog -PLIST_FILES= bin/nbd-server -MAN1= nbd-server.1 +PLIST_FILES= bin/nbd-server bin/nbd-trdump +MAN1= nbd-server.1 nbd-trdump.1 +MAN5= nbd-server.5 +MAN8= nbd-client.8 -post-extract: - @${CP} ${FILESDIR}/nbd.h ${WRKSRC} +regression-test: build + cd ${WRKSRC} && ${MAKE} check .include <bsd.port.mk> Index: net/nbd-server/distinfo =================================================================== --- net/nbd-server/distinfo (revision 315729) +++ net/nbd-server/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (nbd-2.8.5.tar.bz2) = dc77166f086712fa0d1ff63997d487d99eaac238819b1aebff9a8fddfcc0b835 -SIZE (nbd-2.8.5.tar.bz2) = 151053 +SHA256 (nbd-3.2.tar.bz2) = e297c1883133f04a55d8e9527a2e4344e577a54046cf81694ffabe13f73793db +SIZE (nbd-3.2.tar.bz2) = 508734 Index: net/nbd-server/files/nbd.h =================================================================== --- net/nbd-server/files/nbd.h (revision 315729) +++ net/nbd-server/files/nbd.h (working copy) @@ -1,91 +0,0 @@ -/* - * 1999 Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL. - * 1999/11/04 Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne) - * Made nbd_end_request() use the io_request_lock - * 2001 Copyright (C) Steven Whitehouse - * New nbd_end_request() for compatibility with new linux block - * layer code. - * 2003/06/24 Louis D. Langholtz <ldl@aros.net> - * Removed unneeded blksize_bits field from nbd_device struct. - * Cleanup PARANOIA usage & code. - * 2004/02/19 Paul Clements - * Removed PARANOIA, plus various cleanup and comments - */ - -#ifndef LINUX_NBD_H -#define LINUX_NBD_H - -#define NBD_SET_SOCK _IO( 0xab, 0 ) -#define NBD_SET_BLKSIZE _IO( 0xab, 1 ) -#define NBD_SET_SIZE _IO( 0xab, 2 ) -#define NBD_DO_IT _IO( 0xab, 3 ) -#define NBD_CLEAR_SOCK _IO( 0xab, 4 ) -#define NBD_CLEAR_QUE _IO( 0xab, 5 ) -#define NBD_PRINT_DEBUG _IO( 0xab, 6 ) -#define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 ) -#define NBD_DISCONNECT _IO( 0xab, 8 ) - -enum { - NBD_CMD_READ = 0, - NBD_CMD_WRITE = 1, - NBD_CMD_DISC = 2 -}; - -#define nbd_cmd(req) ((req)->cmd[0]) -#define MAX_NBD 128 - -/* userspace doesn't need the nbd_device structure */ -#ifdef __KERNEL__ - -/* values for flags field */ -#define NBD_READ_ONLY 0x0001 -#define NBD_WRITE_NOCHK 0x0002 - -struct nbd_device { - int flags; - int harderror; /* Code of hard error */ - struct socket * sock; - struct file * file; /* If == NULL, device is not ready, yet */ - int magic; - spinlock_t queue_lock; - struct list_head queue_head;/* Requests are added here... */ - struct semaphore tx_lock; - struct gendisk *disk; - int blksize; - u64 bytesize; -}; - -#endif - -/* These are sent over the network in the request/reply magic fields */ - -#define NBD_REQUEST_MAGIC 0x25609513 -#define NBD_REPLY_MAGIC 0x67446698 -/* Do *not* use magics: 0x12560953 0x96744668. */ - -/* - * This is the packet used for communication between client and - * server. All data are in network byte order. - */ -struct nbd_request { - u32 magic; - u32 type; /* == READ || == WRITE */ - char handle[8]; - u64 from; - u32 len; -} -#ifdef __GNUC__ - __attribute__ ((packed)) -#endif -; - -/* - * This is the reply packet that nbd-server sends back to the client after - * it has completed an I/O request (or an error occurs). - */ -struct nbd_reply { - u32 magic; - u32 error; /* 0 = ok, else error */ - char handle[8]; /* handle you got from request */ -}; -#endif Index: net/nbd-server/files/patch-cliserv.h =================================================================== --- net/nbd-server/files/patch-cliserv.h (revision 0) +++ net/nbd-server/files/patch-cliserv.h (working copy) @@ -0,0 +1,11 @@ +--- ./cliserv.h.orig 2012-05-25 17:09:16.000000000 +0900 ++++ ./cliserv.h 2013-04-04 19:36:34.000000000 +0900 +@@ -15,6 +15,8 @@ + #include <netinet/tcp.h> + #include <netinet/in.h> + #include <stdlib.h> ++#include <sys/types.h> ++#include <sys/socket.h> + + #if SIZEOF_UNSIGNED_SHORT_INT==4 + typedef unsigned short u32; Index: net/nbd-server/files/patch-nbd-server.c =================================================================== --- net/nbd-server/files/patch-nbd-server.c (revision 315729) +++ net/nbd-server/files/patch-nbd-server.c (working copy) @@ -1,18 +1,10 @@ -diff -urN nbd-2.8.3.orig/nbd-server.c nbd-2.8.3/nbd-server.c ---- nbd-2.8.3.orig/nbd-server.c Thu Dec 22 21:37:20 2005 -+++ nbd-server.c Sun Jan 8 16:45:30 2006 -@@ -363,12 +363,12 @@ - * is severely wrong) - **/ - void sigchld_handler(int s) { -- int* status=NULL; -+ int status; - int* i; - pid_t pid; - int done=0; - -- while(!done && (pid=wait(status)) > 0) { -+ while(!done && (pid=wait(&status)) > 0) { - if(WIFEXITED(status)) { - msg3(LOG_INFO, "Child exited with %d", WEXITSTATUS(status)); - msg3(LOG_INFO, "pid is %d", pid); +--- ./nbd-server.c.orig 2012-07-04 05:54:53.000000000 +0900 ++++ ./nbd-server.c 2013-04-04 19:36:34.000000000 +0900 +@@ -72,6 +72,7 @@ + #ifdef HAVE_SYS_MOUNT_H + #include <sys/mount.h> + #endif ++#include <sys/uio.h> + #include <signal.h> + #include <errno.h> + #include <netinet/tcp.h> Index: net/nbd-server/files/patch-nbd-tester-client.c =================================================================== --- net/nbd-server/files/patch-nbd-tester-client.c (revision 0) +++ net/nbd-server/files/patch-nbd-tester-client.c (working copy) @@ -0,0 +1,116 @@ +--- ./nbd-tester-client.c.orig 2012-05-25 17:09:16.000000000 +0900 ++++ ./nbd-tester-client.c 2013-04-05 12:52:06.000000000 +0900 +@@ -336,9 +336,11 @@ + #define WRITE_ALL_ERR_RT(f, buf, len, whereto, rval, errmsg...) if((write_all(f, buf, len))<=0) { snprintf(errstr, errstr_len, ##errmsg); retval = rval; goto whereto; } + + int setup_connection(gchar *hostname, int port, gchar* name, CONNECTION_TYPE ctype, int* serverflags) { +- int sock; ++ int sock, sock6; ++ bool v4ok, v6ok; + struct hostent *host; + struct sockaddr_in addr; ++ struct sockaddr_in6 addr6; + char buf[256]; + uint64_t mymagic = (name ? opts_magic : cliserv_magic); + u64 tmp64; +@@ -347,21 +349,58 @@ + sock=0; + if(ctype<CONNECTION_TYPE_CONNECT) + goto end; ++ /* try IPv4 first */ + if((sock=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))<0) { + strncpy(errstr, strerror(errno), errstr_len); +- goto err; +- } +- setmysockopt(sock); +- if(!(host=gethostbyname(hostname))) { +- strncpy(errstr, strerror(errno), errstr_len); +- goto err_open; ++ v4ok = false; ++ } else ++ v4ok = true; ++ /* then IPv6 */ ++ sock6=0; ++ if((sock6=socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP))<0) { ++ if (!v4ok) { ++ strncpy(errstr, strerror(errno), errstr_len); ++ goto err; ++ } else ++ v6ok = false; ++ } else ++ v6ok = true; ++ if (v4ok) { ++ setmysockopt(sock); ++ if(!(host=gethostbyname(hostname))) { ++ if (!v6ok) { ++ strncpy(errstr, strerror(errno), errstr_len); ++ goto err_open; ++ } else ++ v4ok = false; ++ } ++ addr.sin_family=AF_INET; ++ addr.sin_port=htons(port); ++ addr.sin_addr.s_addr=*((int *) host->h_addr); ++ if((connect(sock, (struct sockaddr *)&addr, sizeof(addr))<0)) { ++ if (!v6ok) { ++ strncpy(errstr, strerror(errno), errstr_len); ++ goto err_open; ++ } else ++ v4ok = false; ++ } + } +- addr.sin_family=AF_INET; +- addr.sin_port=htons(port); +- addr.sin_addr.s_addr=*((int *) host->h_addr); +- if((connect(sock, (struct sockaddr *)&addr, sizeof(addr))<0)) { +- strncpy(errstr, strerror(errno), errstr_len); +- goto err_open; ++ if (!v4ok && v6ok) { ++ sock = sock6; ++ setmysockopt(sock); ++ if (!(host=gethostbyname2(hostname, AF_INET6))){ ++ strncpy(errstr, strerror(errno), errstr_len); ++ goto err_open; ++ } ++ memset((char *)&addr6, 0, sizeof(addr6)); ++ addr6.sin6_len=sizeof(addr6); ++ memcpy((char *)&addr6.sin6_addr, host->h_addr, host->h_length); ++ addr6.sin6_family = host->h_addrtype; ++ addr6.sin6_port = htons(port); ++ if ((connect(sock,(struct sockaddr *)&addr6, sizeof(addr6))<0)) { ++ strncpy(errstr, strerror(errno), errstr_len); ++ goto err_open; ++ } + } + if(ctype<CONNECTION_TYPE_INIT_PASSWD) + goto end; +@@ -1267,22 +1306,25 @@ + exit(EXIT_FAILURE); + } + logging(); +- while((c=getopt(argc, argv, "-N:t:owfil"))>=0) { ++ while(optind<argc) { ++ c=getopt(argc, argv, "-N:t:owfil"); + switch(c) { +- case 1: ++ case -1: + switch(nonopt) { + case 0: +- hostname=g_strdup(optarg); ++ hostname=g_strdup(argv[optind]); + nonopt++; + break; + case 1: +- p=(strtol(argv[2], NULL, 0)); ++ p=(strtol(argv[optind], NULL, 0)); + if(p==LONG_MIN||p==LONG_MAX) { + g_critical("Could not parse port number: %s", strerror(errno)); + exit(EXIT_FAILURE); + } + break; + } ++ argc--; ++ argv++; + break; + case 'N': + name=g_strdup(optarg); Index: net/nbd-server/files/patch-netdb-compat.h =================================================================== --- net/nbd-server/files/patch-netdb-compat.h (revision 0) +++ net/nbd-server/files/patch-netdb-compat.h (working copy) @@ -0,0 +1,8 @@ +--- ./netdb-compat.h.orig 2012-05-25 17:22:38.000000000 +0900 ++++ ./netdb-compat.h 2013-04-04 19:38:04.000000000 +0900 +@@ -1,4 +1,4 @@ +-#ifndef NETDB COMPAT_H ++#ifndef NETDB_COMPAT_H + #define NETDB_COMPAT_H + + /* AI_NUMERICSERV as a value for the `ai_flags' member Index: net/nbd-server/files/patch-simple_test =================================================================== --- net/nbd-server/files/patch-simple_test (revision 0) +++ net/nbd-server/files/patch-simple_test (working copy) @@ -0,0 +1,11 @@ +--- ./simple_test.orig 2012-06-24 08:43:42.000000000 +0900 ++++ ./simple_test 2013-04-05 08:11:03.000000000 +0900 +@@ -1,7 +1,7 @@ + #!/bin/sh + # Yes, that's POSIX sh, not bash! + +-tmpdir=`mktemp -d` ++tmpdir=`mktemp -d /tmp/nbd-XXXX` + conffile=${tmpdir}/nbd.conf + pidfile=${tmpdir}/nbd.pid + tmpnam=${tmpdir}/nbd.dd --Multipart_Sat_Apr__6_01:06:53_2013-1--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304051610.r35GA1xJ093079>