ports/177626: Update port net/nbd-server to 3.2
Hirohisa Yamaguchi
umq at ueo.co.jp
Fri Apr 5 16:10:02 UTC 2013
The following reply was made to PR ports/177626; it has been noted by GNATS.
From: Hirohisa Yamaguchi <umq at ueo.co.jp>
To: gd at rambler-co.ru
Cc: bug-followup at 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 at 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 at 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 at 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 at 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 at 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--
More information about the freebsd-ports-bugs
mailing list