Hello community, here is the log from the commit of package qperf for openSUSE:Factory checked in at 2020-10-05 19:42:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qperf (Old) and /work/SRC/openSUSE:Factory/.qperf.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qperf" Mon Oct 5 19:42:31 2020 rev:4 rq:839584 version:0.4.11 Changes: -------- --- /work/SRC/openSUSE:Factory/qperf/qperf.changes 2019-06-04 12:14:12.211785165 +0200 +++ /work/SRC/openSUSE:Factory/.qperf.new.4249/qperf.changes 2020-10-05 19:43:20.857799398 +0200 @@ -1,0 +2,6 @@ +Mon Oct 5 09:05:43 UTC 2020 - Nicolas Morey-Chaisemartin <[email protected]> + +- Update to v0.4.11 + - No changelog available + +------------------------------------------------------------------- Old: ---- qperf-0.4.10.0.aa644b22fff9.tar.bz2 New: ---- qperf-0.4.11.0.c706363815a3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qperf.spec ++++++ --- /var/tmp/diff_new_pack.ZvCwYA/_old 2020-10-05 19:43:21.337799867 +0200 +++ /var/tmp/diff_new_pack.ZvCwYA/_new 2020-10-05 19:43:21.337799867 +0200 @@ -1,7 +1,7 @@ # # spec file for package qperf # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,16 +16,16 @@ # -%define git_ver .0.aa644b22fff9 +%define git_ver .0.c706363815a3 Name: qperf Summary: Tool to measure socket and RDMA performance License: BSD-2-Clause OR GPL-2.0-only Group: Productivity/Networking/Diagnostic -Version: 0.4.10 +Version: 0.4.11 Release: 0 Source: %{name}-%{version}%{git_ver}.tar.bz2 -Url: http://github.com/linux-rdma/qperf +URL: http://github.com/linux-rdma/qperf BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf BuildRequires: automake ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ZvCwYA/_old 2020-10-05 19:43:21.373799902 +0200 +++ /var/tmp/diff_new_pack.ZvCwYA/_new 2020-10-05 19:43:21.377799906 +0200 @@ -8,7 +8,7 @@ <param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> - <param name="revision">aa644b22fff9e939e549a9759629be58b3c5cac2</param> + <param name="revision">c706363815a38ff2c5cbc07b73e2cfaaa59bae0f</param> </service> <service name="recompress" mode="disabled"> <param name="file">qperf*.tar</param> ++++++ qperf-0.4.10.0.aa644b22fff9.tar.bz2 -> qperf-0.4.11.0.c706363815a3.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qperf-0.4.10.0.aa644b22fff9/cleanup new/qperf-0.4.11.0.c706363815a3/cleanup --- old/qperf-0.4.10.0.aa644b22fff9/cleanup 2017-07-19 18:34:25.000000000 +0200 +++ new/qperf-0.4.11.0.c706363815a3/cleanup 2018-04-03 19:29:49.000000000 +0200 @@ -22,6 +22,7 @@ src/help.c src/qperf.1 src/qperf + compile EOF` # We need to keep qperf.spec around for the OFED scripts but delete it if we do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qperf-0.4.10.0.aa644b22fff9/configure.ac new/qperf-0.4.11.0.c706363815a3/configure.ac --- old/qperf-0.4.10.0.aa644b22fff9/configure.ac 1970-01-01 01:00:00.000000000 +0100 +++ new/qperf-0.4.11.0.c706363815a3/configure.ac 2018-04-03 19:29:49.000000000 +0200 @@ -0,0 +1,10 @@ +AC_INIT(qperf, 0.4.10, [email protected]) +AM_INIT_AUTOMAKE +AC_PROG_CC +AC_CHECK_LIB(ibverbs, ibv_open_device, RDMA=1) +AC_CHECK_LIB(ibverbs, ibv_open_xrc_domain, HAS_XRC=1) +AC_CHECK_LIB(rdmacm, rdma_create_id) +AM_CONDITIONAL(RDMA, test -n "$RDMA") +AM_CONDITIONAL(HAS_XRC, test -n "$HAS_XRC") +AC_CONFIG_FILES([qperf.spec]) +AC_OUTPUT(Makefile src/Makefile) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qperf-0.4.10.0.aa644b22fff9/configure.in new/qperf-0.4.11.0.c706363815a3/configure.in --- old/qperf-0.4.10.0.aa644b22fff9/configure.in 2017-07-19 18:34:25.000000000 +0200 +++ new/qperf-0.4.11.0.c706363815a3/configure.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -AC_INIT(qperf, 0.4.10, [email protected]) -AM_INIT_AUTOMAKE(qperf, 0.4.10) -AC_PROG_CC -AC_CHECK_LIB(ibverbs, ibv_open_device, RDMA=1) -AC_CHECK_LIB(ibverbs, ibv_open_xrc_domain, HAS_XRC=1) -AC_CHECK_LIB(rdmacm, rdma_create_id) -AM_CONDITIONAL(RDMA, test -n "$RDMA") -AM_CONDITIONAL(HAS_XRC, test -n "$HAS_XRC") -AC_CONFIG_FILES([qperf.spec]) -AC_OUTPUT(Makefile src/Makefile) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qperf-0.4.10.0.aa644b22fff9/src/qperf.c new/qperf-0.4.11.0.c706363815a3/src/qperf.c --- old/qperf-0.4.10.0.aa644b22fff9/src/qperf.c 2017-07-19 18:34:25.000000000 +0200 +++ new/qperf-0.4.11.0.c706363815a3/src/qperf.c 2018-04-03 19:29:49.000000000 +0200 @@ -62,7 +62,7 @@ */ #define VER_MAJ 0 /* Major version */ #define VER_MIN 4 /* Minor version */ -#define VER_INC 10 /* Incremental version */ +#define VER_INC 11 /* Incremental version */ #define LISTENQ 5 /* Size of listen queue */ #define BUFSIZE 1024 /* Size of buffers */ @@ -1418,7 +1418,7 @@ AI *ai; AI hints ={ .ai_flags = AI_PASSIVE | AI_NUMERICSERV, - .ai_family = AF_UNSPEC, + .ai_family = AF_INET6, .ai_socktype = SOCK_STREAM }; AI *ailist = getaddrinfo_port(0, ListenPort, &hints); @@ -1450,7 +1450,7 @@ server_recv_request(void) { socklen_t clientLen; - struct sockaddr_in clientAddr; + SS clientAddr; clientLen = sizeof(clientAddr); RemoteFD = accept(ListenFD, (struct sockaddr *)&clientAddr, &clientLen); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qperf-0.4.10.0.aa644b22fff9/src/rds.c new/qperf-0.4.11.0.c706363815a3/src/rds.c --- old/qperf-0.4.10.0.aa644b22fff9/src/rds.c 2017-07-19 18:34:25.000000000 +0200 +++ new/qperf-0.4.11.0.c706363815a3/src/rds.c 2018-04-03 19:29:49.000000000 +0200 @@ -43,9 +43,9 @@ #include <unistd.h> #include <arpa/inet.h> #include <netinet/in.h> +#include <stdbool.h> #include "qperf.h" - /* * Parameters. */ @@ -107,7 +107,7 @@ static void set_parameters(long msgSize); static void server_get_hosts(char *lhost, char *rhost); static void set_socket_buffer_size(int fd); - +static inline bool ipv6_addr_v4mapped(const struct in6_addr *a); /* * Static variables. @@ -315,6 +315,15 @@ /* + * Check if it is IPv4-mapped IPv6 address + */ +static inline bool ipv6_addr_v4mapped(const struct in6_addr *a) +{ + return (a->s6_addr32[0] | a->s6_addr32[1] | + (a->s6_addr32[2] ^ htonl(0x0000ffff))) == 0; +} + +/* * Have an exchange with the client over TCP/IP and get the IP of our local * host. */ @@ -323,34 +332,42 @@ { int fd, lfd; uint32_t port; - struct sockaddr_in laddr, raddr; socklen_t rlen; + struct sockaddr_in6 v6addr; + struct sockaddr_in v4addr; + SA *raddr; - lfd = socket(AF_INET, SOCK_STREAM, 0); + lfd = socket(AF_INET6, SOCK_STREAM, 0); if (lfd < 0) error(SYS, "socket failed"); setsockopt_one(lfd, SO_REUSEADDR); - - memset(&laddr, 0, sizeof(laddr)); - laddr.sin_family = AF_INET; - laddr.sin_addr.s_addr = INADDR_ANY; - laddr.sin_port = htons(0); - if (bind(lfd, (SA *)&laddr, sizeof(laddr)) < 0) - error(SYS, "bind INET failed"); + memset(&v6addr, 0, sizeof(v6addr)); + v6addr.sin6_family = AF_INET6; + if (bind(lfd, (SA *)&v6addr, sizeof(v6addr)) < 0) + error(SYS, "bind INET6 failed"); port = get_socket_port(lfd); encode_uint32(&port, port); - send_mesg(&port, sizeof(port), "TCP IPv4 server port"); - + send_mesg(&port, sizeof(port), "TCP server port"); if (listen(lfd, 1) < 0) error(SYS, "listen failed"); - rlen = sizeof(raddr); - fd = accept(lfd, (SA *)&raddr, &rlen); + rlen = sizeof(v6addr); + fd = accept(lfd, (SA *)&v6addr, &rlen); if (fd < 0) error(SYS, "accept failed"); close(lfd); - get_socket_ip((SA *)&raddr, rlen, rhost, NI_MAXHOST); + + if (ipv6_addr_v4mapped(&v6addr.sin6_addr)) { + v4addr.sin_family = AF_INET; + v4addr.sin_addr.s_addr = v6addr.sin6_addr.s6_addr32[3]; + v4addr.sin_port = v6addr.sin6_port; + raddr = (SA *)&v4addr; + rlen = sizeof(v4addr); + } else { + raddr = (SA *)&v6addr; + } + get_socket_ip(raddr, rlen, rhost, NI_MAXHOST); send_mesg(rhost, NI_MAXHOST, "client IP"); recv_mesg(lhost, NI_MAXHOST, "server IP"); close(fd); @@ -410,13 +427,30 @@ static void rds_makeaddr(SS *addr, socklen_t *len, char *host, int port) { + int stat; + struct addrinfo *ailist; struct sockaddr_in *sap = (struct sockaddr_in *)addr; + struct sockaddr_in6 *sap6 = (struct sockaddr_in6 *)addr; + stat = getaddrinfo(host, NULL, NULL, &ailist); + if (stat != 0) + error(0, "getaddrinfo failed: %s", gai_strerror(stat)); + switch (ailist->ai_family) { + case AF_INET: memset(sap, 0, sizeof(*sap)); - sap->sin_family = AF_INET; - inet_pton(AF_INET, host, &sap->sin_addr.s_addr); + memcpy(addr, ailist->ai_addr, ailist->ai_addrlen); sap->sin_port = htons(port); *len = sizeof(struct sockaddr_in); + break; + case AF_INET6: + memset(sap6, 0, sizeof(*sap6)); + memcpy(sap6, ailist->ai_addr, ailist->ai_addrlen); + sap6->sin6_port = htons(port); + *len = sizeof(struct sockaddr_in6); + break; + default: + error(0, "Unsupported Address family"); + } } @@ -431,7 +465,7 @@ struct addrinfo *aip, *ailist; struct addrinfo hints ={ .ai_flags = AI_NUMERICSERV, - .ai_family = AF_INET, + .ai_family = AF_UNSPEC, .ai_socktype = SOCK_STREAM }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qperf-0.4.10.0.aa644b22fff9/src/socket.c new/qperf-0.4.11.0.c706363815a3/src/socket.c --- old/qperf-0.4.10.0.aa644b22fff9/src/socket.c 2017-07-19 18:34:25.000000000 +0200 +++ new/qperf-0.4.11.0.c706363815a3/src/socket.c 2018-04-03 19:29:49.000000000 +0200 @@ -699,8 +699,10 @@ .ai_socktype = SOCK_STREAM }; - if (serverflag) + if (serverflag){ hints.ai_flags |= AI_PASSIVE; + hints.ai_family = AF_INET6; + } if (kind == K_UDP) hints.ai_socktype = SOCK_DGRAM;
