From owner-svn-src-stable@freebsd.org  Sun Dec  2 07:45:23 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id B557E1313EEF;
 Sun,  2 Dec 2018 07:45:23 +0000 (UTC)
 (envelope-from mmel@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 582B588C32;
 Sun,  2 Dec 2018 07:45:23 +0000 (UTC)
 (envelope-from mmel@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 35E2323B60;
 Sun,  2 Dec 2018 07:45:23 +0000 (UTC)
 (envelope-from mmel@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB27jNc7029647;
 Sun, 2 Dec 2018 07:45:23 GMT (envelope-from mmel@FreeBSD.org)
Received: (from mmel@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB27jNUS029646;
 Sun, 2 Dec 2018 07:45:23 GMT (envelope-from mmel@FreeBSD.org)
Message-Id: <201812020745.wB27jNUS029646@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: mmel set sender to
 mmel@FreeBSD.org using -f
From: Michal Meloun <mmel@FreeBSD.org>
Date: Sun, 2 Dec 2018 07:45:23 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341394 - stable/11/libexec/rtld-elf/arm
X-SVN-Group: stable-11
X-SVN-Commit-Author: mmel
X-SVN-Commit-Paths: stable/11/libexec/rtld-elf/arm
X-SVN-Commit-Revision: 341394
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 582B588C32
X-Spamd-Result: default: False [0.36 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.47)[0.468,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Dec 2018 07:45:23 -0000

Author: mmel
Date: Sun Dec  2 07:45:22 2018
New Revision: 341394
URL: https://svnweb.freebsd.org/changeset/base/341394

Log:
  MFC r338317:
  
    Fix wrong offset calculation for R_ARM_TLS_TPOFF32 relocations.  TLS_TCB_SIZE
    is already accounted in defobj-> tlsoffset so all these symbols were
    incorrectly relocated by +8.

Modified:
  stable/11/libexec/rtld-elf/arm/reloc.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/libexec/rtld-elf/arm/reloc.c
==============================================================================
--- stable/11/libexec/rtld-elf/arm/reloc.c	Sun Dec  2 07:39:16 2018	(r341393)
+++ stable/11/libexec/rtld-elf/arm/reloc.c	Sun Dec  2 07:45:22 2018	(r341394)
@@ -327,9 +327,7 @@ reloc_nonplt_object(Obj_Entry *obj, const Elf_Rel *rel
 			if (!defobj->tls_done && allocate_tls_offset(obj))
 				return -1;
 
-			/* XXX: FIXME */
-			tmp = (Elf_Addr)def->st_value + defobj->tlsoffset +
-			    TLS_TCB_SIZE;
+			tmp = (Elf_Addr)def->st_value + defobj->tlsoffset;
 			if (__predict_true(RELOC_ALIGNED_P(where)))
 				*where = tmp;
 			else

From owner-svn-src-stable@freebsd.org  Sun Dec  2 12:35:50 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E3818131BB9E;
 Sun,  2 Dec 2018 12:35:49 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 8A34A6ABA9;
 Sun,  2 Dec 2018 12:35:49 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 64B0626B51;
 Sun,  2 Dec 2018 12:35:49 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB2CZnge084679;
 Sun, 2 Dec 2018 12:35:49 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB2CZnAT084678;
 Sun, 2 Dec 2018 12:35:49 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812021235.wB2CZnAT084678@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sun, 2 Dec 2018 12:35:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341395 - stable/12/sys/vm
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/vm
X-SVN-Commit-Revision: 341395
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 8A34A6ABA9
X-Spamd-Result: default: False [0.15 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_SHORT(0.26)[0.261,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Dec 2018 12:35:50 -0000

Author: kib
Date: Sun Dec  2 12:35:48 2018
New Revision: 341395
URL: https://svnweb.freebsd.org/changeset/base/341395

Log:
  MFC r340922:
  Avoid unneeded check in vmspace_alloc().

Modified:
  stable/12/sys/vm/vm_map.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/vm/vm_map.c
==============================================================================
--- stable/12/sys/vm/vm_map.c	Sun Dec  2 07:45:22 2018	(r341394)
+++ stable/12/sys/vm/vm_map.c	Sun Dec  2 12:35:48 2018	(r341395)
@@ -283,12 +283,7 @@ vmspace_alloc(vm_offset_t min, vm_offset_t max, pmap_p
 	struct vmspace *vm;
 
 	vm = uma_zalloc(vmspace_zone, M_WAITOK);
-
 	KASSERT(vm->vm_map.pmap == NULL, ("vm_map.pmap must be NULL"));
-
-	if (pinit == NULL)
-		pinit = &pmap_pinit;
-
 	if (!pinit(vmspace_pmap(vm))) {
 		uma_zfree(vmspace_zone, vm);
 		return (NULL);
@@ -3424,7 +3419,8 @@ vmspace_fork(struct vmspace *vm1, vm_ooffset_t *fork_c
 
 	old_map = &vm1->vm_map;
 	/* Copy immutable fields of vm1 to vm2. */
-	vm2 = vmspace_alloc(vm_map_min(old_map), vm_map_max(old_map), NULL);
+	vm2 = vmspace_alloc(vm_map_min(old_map), vm_map_max(old_map),
+	    pmap_pinit);
 	if (vm2 == NULL)
 		return (NULL);
 	vm2->vm_taddr = vm1->vm_taddr;
@@ -3975,7 +3971,7 @@ vmspace_exec(struct proc *p, vm_offset_t minuser, vm_o
 
 	KASSERT((curthread->td_pflags & TDP_EXECVMSPC) == 0,
 	    ("vmspace_exec recursed"));
-	newvmspace = vmspace_alloc(minuser, maxuser, NULL);
+	newvmspace = vmspace_alloc(minuser, maxuser, pmap_pinit);
 	if (newvmspace == NULL)
 		return (ENOMEM);
 	newvmspace->vm_swrss = oldvmspace->vm_swrss;

From owner-svn-src-stable@freebsd.org  Sun Dec  2 12:51:50 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 635EA1321896;
 Sun,  2 Dec 2018 12:51:50 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id F41506B809;
 Sun,  2 Dec 2018 12:51:49 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D680A26E86;
 Sun,  2 Dec 2018 12:51:49 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB2CpnWr092822;
 Sun, 2 Dec 2018 12:51:49 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB2CpnBV092821;
 Sun, 2 Dec 2018 12:51:49 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812021251.wB2CpnBV092821@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sun, 2 Dec 2018 12:51:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341396 - stable/11/sys/vm
X-SVN-Group: stable-11
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/11/sys/vm
X-SVN-Commit-Revision: 341396
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: F41506B809
X-Spamd-Result: default: False [-0.23 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.12)[-0.116,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Dec 2018 12:51:50 -0000

Author: kib
Date: Sun Dec  2 12:51:49 2018
New Revision: 341396
URL: https://svnweb.freebsd.org/changeset/base/341396

Log:
  MFC r340922:
  Avoid unneeded check in vmspace_alloc().

Modified:
  stable/11/sys/vm/vm_map.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/vm/vm_map.c
==============================================================================
--- stable/11/sys/vm/vm_map.c	Sun Dec  2 12:35:48 2018	(r341395)
+++ stable/11/sys/vm/vm_map.c	Sun Dec  2 12:51:49 2018	(r341396)
@@ -278,12 +278,7 @@ vmspace_alloc(vm_offset_t min, vm_offset_t max, pmap_p
 	struct vmspace *vm;
 
 	vm = uma_zalloc(vmspace_zone, M_WAITOK);
-
 	KASSERT(vm->vm_map.pmap == NULL, ("vm_map.pmap must be NULL"));
-
-	if (pinit == NULL)
-		pinit = &pmap_pinit;
-
 	if (!pinit(vmspace_pmap(vm))) {
 		uma_zfree(vmspace_zone, vm);
 		return (NULL);
@@ -3367,7 +3362,8 @@ vmspace_fork(struct vmspace *vm1, vm_ooffset_t *fork_c
 
 	old_map = &vm1->vm_map;
 	/* Copy immutable fields of vm1 to vm2. */
-	vm2 = vmspace_alloc(vm_map_min(old_map), vm_map_max(old_map), NULL);
+	vm2 = vmspace_alloc(vm_map_min(old_map), vm_map_max(old_map),
+	    pmap_pinit);
 	if (vm2 == NULL)
 		return (NULL);
 	vm2->vm_taddr = vm1->vm_taddr;
@@ -3918,7 +3914,7 @@ vmspace_exec(struct proc *p, vm_offset_t minuser, vm_o
 
 	KASSERT((curthread->td_pflags & TDP_EXECVMSPC) == 0,
 	    ("vmspace_exec recursed"));
-	newvmspace = vmspace_alloc(minuser, maxuser, NULL);
+	newvmspace = vmspace_alloc(minuser, maxuser, pmap_pinit);
 	if (newvmspace == NULL)
 		return (ENOMEM);
 	newvmspace->vm_swrss = oldvmspace->vm_swrss;

From owner-svn-src-stable@freebsd.org  Sun Dec  2 18:08:28 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 489EF1329867;
 Sun,  2 Dec 2018 18:08:28 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E4D7B77420;
 Sun,  2 Dec 2018 18:08:27 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C4EC022A4;
 Sun,  2 Dec 2018 18:08:27 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB2I8R77077375;
 Sun, 2 Dec 2018 18:08:27 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB2I8RGv077374;
 Sun, 2 Dec 2018 18:08:27 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201812021808.wB2I8RGv077374@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Sun, 2 Dec 2018 18:08:27 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341401 - stable/11/sys/vm
X-SVN-Group: stable-11
X-SVN-Commit-Author: markj
X-SVN-Commit-Paths: stable/11/sys/vm
X-SVN-Commit-Revision: 341401
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E4D7B77420
X-Spamd-Result: default: False [0.16 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.28)[0.276,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Dec 2018 18:08:28 -0000

Author: markj
Date: Sun Dec  2 18:08:27 2018
New Revision: 341401
URL: https://svnweb.freebsd.org/changeset/base/341401

Log:
  MFC r341247:
  Update the free page count when blacklisting pages.
  
  PR:	231296

Modified:
  stable/11/sys/vm/vm_page.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/vm/vm_page.c
==============================================================================
--- stable/11/sys/vm/vm_page.c	Sun Dec  2 13:29:13 2018	(r341400)
+++ stable/11/sys/vm/vm_page.c	Sun Dec  2 18:08:27 2018	(r341401)
@@ -304,8 +304,10 @@ vm_page_blacklist_add(vm_paddr_t pa, bool verbose)
 
 	mtx_lock(&vm_page_queue_free_mtx);
 	ret = vm_phys_unfree_page(m);
+	if (ret != 0)
+		vm_phys_freecnt_adj(m, -1);
 	mtx_unlock(&vm_page_queue_free_mtx);
-	if (ret) {
+	if (ret != 0) {
 		TAILQ_INSERT_TAIL(&blacklist_head, m, listq);
 		if (verbose)
 			printf("Skipping page with pa 0x%jx\n", (uintmax_t)pa);

From owner-svn-src-stable@freebsd.org  Sun Dec  2 19:08:52 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A4FAF132AF74;
 Sun,  2 Dec 2018 19:08:52 +0000 (UTC) (envelope-from ygy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4BA02794FB;
 Sun,  2 Dec 2018 19:08:52 +0000 (UTC) (envelope-from ygy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2B1FC2C99;
 Sun,  2 Dec 2018 19:08:52 +0000 (UTC) (envelope-from ygy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB2J8qJM008335;
 Sun, 2 Dec 2018 19:08:52 GMT (envelope-from ygy@FreeBSD.org)
Received: (from ygy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB2J8qOZ008334;
 Sun, 2 Dec 2018 19:08:52 GMT (envelope-from ygy@FreeBSD.org)
Message-Id: <201812021908.wB2J8qOZ008334@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ygy set sender to ygy@FreeBSD.org
 using -f
From: Guangyuan Yang <ygy@FreeBSD.org>
Date: Sun, 2 Dec 2018 19:08:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341403 - stable/12/stand/i386/pxeldr
X-SVN-Group: stable-12
X-SVN-Commit-Author: ygy
X-SVN-Commit-Paths: stable/12/stand/i386/pxeldr
X-SVN-Commit-Revision: 341403
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4BA02794FB
X-Spamd-Result: default: False [0.24 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.35)[0.348,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Dec 2018 19:08:52 -0000

Author: ygy (doc committer)
Date: Sun Dec  2 19:08:51 2018
New Revision: 341403
URL: https://svnweb.freebsd.org/changeset/base/341403

Log:
  MFC r340917, r341007
  
  r340917:
  Update pxeboot(8) manual page to reflect the next-server change in the ISC DHCP v3 server.
  
  r341007:
  Bump the date of pxeboot(8) manual page for r340917.
  
  PR:		123484
  Submitted by:	edwin@mavetju.org
  Reviewed by:	AllanJude

Modified:
  stable/12/stand/i386/pxeldr/pxeboot.8
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/stand/i386/pxeldr/pxeboot.8
==============================================================================
--- stable/12/stand/i386/pxeldr/pxeboot.8	Sun Dec  2 18:30:58 2018	(r341402)
+++ stable/12/stand/i386/pxeldr/pxeboot.8	Sun Dec  2 19:08:51 2018	(r341403)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 27, 2017
+.Dd November 25, 2018
 .Dt PXEBOOT 8
 .Os
 .Sh NAME
@@ -58,7 +58,7 @@ The
 .Nm
 binary is loaded just like any other boot file,
 by specifying it in the DHCP server's configuration file.
-Below is a sample configuration for the ISC DHCP v2 server:
+Below is a sample configuration for the ISC DHCP v3 server:
 .Bd -literal -offset indent
 option domain-name "example.com";
 option routers 10.0.0.1;
@@ -67,6 +67,7 @@ option broadcast-address 10.0.0.255;
 option domain-name-servers 10.0.0.1;
 server-name "DHCPserver";
 server-identifier 10.0.0.1;
+next-server 10.0.0.1;
 
 default-lease-time 120;
 max-lease-time 120;
@@ -80,10 +81,11 @@ subnet 10.0.0.0 netmask 255.255.255.0 {
 }
 
 .Ed
+.Va next-server
+is the IP address of the next server in the bootstrap process, i.e.
+your TFTP server or NFS server.
 .Nm
 recognizes
-.Va next-server
-and
 .Va option root-path
 directives as the server and path to NFS mount for file requests,
 respectively, or the server to make TFTP requests to.

From owner-svn-src-stable@freebsd.org  Mon Dec  3 02:32:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id D47F313124F1;
 Mon,  3 Dec 2018 02:32:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 7A8676C565;
 Mon,  3 Dec 2018 02:32:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5BE397B84;
 Mon,  3 Dec 2018 02:32:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB32Wefe040023;
 Mon, 3 Dec 2018 02:32:40 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB32WeGA040022;
 Mon, 3 Dec 2018 02:32:40 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812030232.wB32WeGA040022@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Mon, 3 Dec 2018 02:32:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341417 - stable/12/tools/test/sort/bigtest
X-SVN-Group: stable-12
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/12/tools/test/sort/bigtest
X-SVN-Commit-Revision: 341417
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 7A8676C565
X-Spamd-Result: default: False [0.40 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.51)[0.508,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 02:32:41 -0000

Author: emaste
Date: Mon Dec  3 02:32:39 2018
New Revision: 341417
URL: https://svnweb.freebsd.org/changeset/base/341417

Log:
  MFC r340095: Remove apparently unused 0-byte files that cause grief on Windows
  
  r235274 added a sort regression test (it operates by comparing output
  against GNU sort).  The commit included a number of 0-byte files, one
  of which ends in a trailing . which reportedly breaks svn/git checkouts
  on Windows.
  
  It appears these were added accidentally, so just remove them.
  
  PR:		232479

Deleted:
  stable/12/tools/test/sort/bigtest/q-1.022.tgz
  stable/12/tools/test/sort/bigtest/q-1.024.003.
  stable/12/tools/test/sort/bigtest/q-1.024.003.tgz
  stable/12/tools/test/sort/bigtest/q-1.024.009.tgz
  stable/12/tools/test/sort/bigtest/q-1.024.07.tgz
  stable/12/tools/test/sort/bigtest/q-1.024.tgz
  stable/12/tools/test/sort/bigtest/q-1.23.1.tgz
  stable/12/tools/test/sort/bigtest/q-1.23.tgz
Modified:
Directory Properties:
  stable/12/   (props changed)

From owner-svn-src-stable@freebsd.org  Mon Dec  3 02:33:54 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5497C13125BF;
 Mon,  3 Dec 2018 02:33:54 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E8E466C6F2;
 Mon,  3 Dec 2018 02:33:53 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C9E8D7B88;
 Mon,  3 Dec 2018 02:33:53 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB32Xr3l040155;
 Mon, 3 Dec 2018 02:33:53 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB32XrHf040154;
 Mon, 3 Dec 2018 02:33:53 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812030233.wB32XrHf040154@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Mon, 3 Dec 2018 02:33:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341418 - stable/11/tools/test/sort/bigtest
X-SVN-Group: stable-11
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/11/tools/test/sort/bigtest
X-SVN-Commit-Revision: 341418
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E8E466C6F2
X-Spamd-Result: default: False [0.40 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.51)[0.508,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 02:33:54 -0000

Author: emaste
Date: Mon Dec  3 02:33:53 2018
New Revision: 341418
URL: https://svnweb.freebsd.org/changeset/base/341418

Log:
  MFC r340095: Remove apparently unused 0-byte files that cause grief on Windows
  
  r235274 added a sort regression test (it operates by comparing output
  against GNU sort).  The commit included a number of 0-byte files, one
  of which ends in a trailing . which reportedly breaks svn/git checkouts
  on Windows.
  
  It appears these were added accidentally, so just remove them.
  
  PR:		232479

Deleted:
  stable/11/tools/test/sort/bigtest/q-1.022.tgz
  stable/11/tools/test/sort/bigtest/q-1.024.003.
  stable/11/tools/test/sort/bigtest/q-1.024.003.tgz
  stable/11/tools/test/sort/bigtest/q-1.024.009.tgz
  stable/11/tools/test/sort/bigtest/q-1.024.07.tgz
  stable/11/tools/test/sort/bigtest/q-1.024.tgz
  stable/11/tools/test/sort/bigtest/q-1.23.1.tgz
  stable/11/tools/test/sort/bigtest/q-1.23.tgz
Modified:
Directory Properties:
  stable/11/   (props changed)

From owner-svn-src-stable@freebsd.org  Mon Dec  3 02:38:16 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 575C71312776;
 Mon,  3 Dec 2018 02:38:16 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id F23416C9E4;
 Mon,  3 Dec 2018 02:38:15 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D333D7B90;
 Mon,  3 Dec 2018 02:38:15 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB32cFud040400;
 Mon, 3 Dec 2018 02:38:15 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB32cFoa040399;
 Mon, 3 Dec 2018 02:38:15 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812030238.wB32cFoa040399@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Mon, 3 Dec 2018 02:38:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341419 - stable/10/tools/test/sort/bigtest
X-SVN-Group: stable-10
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/10/tools/test/sort/bigtest
X-SVN-Commit-Revision: 341419
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: F23416C9E4
X-Spamd-Result: default: False [0.40 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.12)[-0.124,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.51)[0.508,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 02:38:16 -0000

Author: emaste
Date: Mon Dec  3 02:38:15 2018
New Revision: 341419
URL: https://svnweb.freebsd.org/changeset/base/341419

Log:
  MFC r340095: Remove apparently unused 0-byte files that cause grief on Windows
  
  r235274 added a sort regression test (it operates by comparing output
  against GNU sort).  The commit included a number of 0-byte files, one
  of which ends in a trailing . which reportedly breaks svn/git checkouts
  on Windows.
  
  It appears these were added accidentally, so just remove them.
  
  PR:		232479

Deleted:
  stable/10/tools/test/sort/bigtest/q-1.022.tgz
  stable/10/tools/test/sort/bigtest/q-1.024.003.
  stable/10/tools/test/sort/bigtest/q-1.024.003.tgz
  stable/10/tools/test/sort/bigtest/q-1.024.009.tgz
  stable/10/tools/test/sort/bigtest/q-1.024.07.tgz
  stable/10/tools/test/sort/bigtest/q-1.024.tgz
  stable/10/tools/test/sort/bigtest/q-1.23.1.tgz
  stable/10/tools/test/sort/bigtest/q-1.23.tgz
Modified:
Directory Properties:
  stable/10/   (props changed)

From owner-svn-src-stable@freebsd.org  Mon Dec  3 04:07:20 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 79FAC1314A62;
 Mon,  3 Dec 2018 04:07:20 +0000 (UTC) (envelope-from ian@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 1E3DE6FAF5;
 Mon,  3 Dec 2018 04:07:20 +0000 (UTC) (envelope-from ian@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id ECF4F10B29;
 Mon,  3 Dec 2018 04:07:19 +0000 (UTC) (envelope-from ian@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB347JIb086698;
 Mon, 3 Dec 2018 04:07:19 GMT (envelope-from ian@FreeBSD.org)
Received: (from ian@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB347J9g086694;
 Mon, 3 Dec 2018 04:07:19 GMT (envelope-from ian@FreeBSD.org)
Message-Id: <201812030407.wB347J9g086694@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ian set sender to ian@FreeBSD.org
 using -f
From: Ian Lepore <ian@FreeBSD.org>
Date: Mon, 3 Dec 2018 04:07:19 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341421 - in stable/12/stand/i386: common gptboot zfsboot
X-SVN-Group: stable-12
X-SVN-Commit-Author: ian
X-SVN-Commit-Paths: in stable/12/stand/i386: common gptboot zfsboot
X-SVN-Commit-Revision: 341421
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 1E3DE6FAF5
X-Spamd-Result: default: False [0.41 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.06)[-0.058,0];
 NEURAL_SPAM_SHORT(0.41)[0.407,0];
 NEURAL_SPAM_LONG(0.06)[0.057,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 04:07:20 -0000

Author: ian
Date: Mon Dec  3 04:07:18 2018
New Revision: 341421
URL: https://svnweb.freebsd.org/changeset/base/341421

Log:
  MFC r341071, r341160
  
  r341071:
  Restore the ability to override the disk unit/partition at the boot: prompt
  in gptboot.
  
  When arch-independent geli support was added, a new static 'gdsk' struct
  was added, but there was still a static 'dsk' struct, and when you typed
  in an alternate disk/partition, the string was parsed into that struct,
  which was then never used for anything.  Now the string gets parsed into
  gdsk.dsk, the struct that's actually used.
  
  r341160:
  Add comments describing the bootargs handoff between loader(8) and gptboot
  or zfsboot, when loader(8) is the BTX loader.  No functional changes.

Modified:
  stable/12/stand/i386/common/bootargs.h
  stable/12/stand/i386/gptboot/gptboot.c
  stable/12/stand/i386/zfsboot/zfsboot.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/stand/i386/common/bootargs.h
==============================================================================
--- stable/12/stand/i386/common/bootargs.h	Mon Dec  3 03:58:30 2018	(r341420)
+++ stable/12/stand/i386/common/bootargs.h	Mon Dec  3 04:07:18 2018	(r341421)
@@ -43,6 +43,24 @@
 
 #ifndef __ASSEMBLER__
 
+/*
+ * This struct describes the contents of the stack on entry to btxldr.S.  This
+ * is the data that follows the return address, so it begins at 4(%esp).  On
+ * the sending side, this data is passed as individual args to __exec().  On the
+ * receiving side, code in btxldr.S copies the data from the entry stack to a
+ * known fixed location in the new address space.  Then, btxcsu.S sets the
+ * global variable __args to point to that known fixed location before calling
+ * main(), which casts __args to a struct bootargs pointer to access the data.
+ * The btxldr.S code is aware of KARGS_FLAGS_EXTARG, and if it's set, the extra
+ * args data is copied along with the other bootargs from the entry stack to the
+ * fixed location in the new address space.
+ *
+ * The bootinfo field is actually a pointer to a bootinfo struct that has been
+ * converted to uint32_t using VTOP().  On the receiving side it must be
+ * converted back to a pointer using PTOV().  Code in btxldr.S is aware of this
+ * field and if it's non-NULL it copies the data it points to into another known
+ * fixed location, and adjusts the bootinfo field to point to that new location.
+ */
 struct bootargs
 {
 	uint32_t			howto;

Modified: stable/12/stand/i386/gptboot/gptboot.c
==============================================================================
--- stable/12/stand/i386/gptboot/gptboot.c	Mon Dec  3 03:58:30 2018	(r341420)
+++ stable/12/stand/i386/gptboot/gptboot.c	Mon Dec  3 04:07:18 2018	(r341421)
@@ -81,7 +81,6 @@ uint32_t opts;
 static const char *const dev_nm[NDEV] = {"ad", "da", "fd"};
 static const unsigned char dev_maj[NDEV] = {30, 4, 2};
 
-static struct dsk dsk;
 static char kname[1024];
 static int comspeed = SIOSPD;
 static struct bootinfo bootinfo;
@@ -488,6 +487,12 @@ load(void)
 	geliargs.keybuf_sentinel = KEYBUF_SENTINEL;
 	geliargs.keybuf = gelibuf;
 #endif
+	/*
+	 * Note that the geliargs struct is passed by value, not by pointer.
+	 * Code in btxldr.S copies the values from the entry stack to a fixed
+	 * location within loader(8) at startup due to the presence of the
+	 * KARGS_FLAGS_EXTARG flag.
+	 */
 	__exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK),
 	    MAKEBOOTDEV(dev_maj[gdsk.dsk.type], gdsk.dsk.part + 1, gdsk.dsk.unit, 0xff),
 #ifdef LOADER_GELI_SUPPORT
@@ -569,22 +574,22 @@ parse_cmds(char *cmdstr, int *dskupdated)
 				    arg[1] != dev_nm[i][1]; i++)
 					if (i == NDEV - 1)
 						return (-1);
-				dsk.type = i;
+				gdsk.dsk.type = i;
 				arg += 3;
-				dsk.unit = *arg - '0';
-				if (arg[1] != 'p' || dsk.unit > 9)
+				gdsk.dsk.unit = *arg - '0';
+				if (arg[1] != 'p' || gdsk.dsk.unit > 9)
 					return (-1);
 				arg += 2;
-				dsk.part = *arg - '0';
-				if (dsk.part < 1 || dsk.part > 9)
+				gdsk.dsk.part = *arg - '0';
+				if (gdsk.dsk.part < 1 || gdsk.dsk.part > 9)
 					return (-1);
 				arg++;
 				if (arg[0] != ')')
 					return (-1);
 				arg++;
 				if (drv == -1)
-					drv = dsk.unit;
-				dsk.drive = (dsk.type <= TYPE_MAXHARD
+					drv = gdsk.dsk.unit;
+				gdsk.dsk.drive = (gdsk.dsk.type <= TYPE_MAXHARD
 				    ? DRV_HARD : 0) + drv;
 				*dskupdated = 1;
 			}

Modified: stable/12/stand/i386/zfsboot/zfsboot.c
==============================================================================
--- stable/12/stand/i386/zfsboot/zfsboot.c	Mon Dec  3 03:58:30 2018	(r341420)
+++ stable/12/stand/i386/zfsboot/zfsboot.c	Mon Dec  3 04:07:18 2018	(r341421)
@@ -1005,6 +1005,11 @@ load(void)
 	zfsargs.primary_vdev = primary_vdev->v_guid;
     else
 	printf("failed to detect primary vdev\n");
+    /*
+     * Note that the zfsargs struct is passed by value, not by pointer.  Code in
+     * btxldr.S copies the values from the entry stack to a fixed location
+     * within loader(8) at startup due to the presence of KARGS_FLAGS_EXTARG.
+     */
     __exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK),
 	   bootdev,
 	   KARGS_FLAGS_ZFS | KARGS_FLAGS_EXTARG,

From owner-svn-src-stable@freebsd.org  Mon Dec  3 15:14:42 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E82BE132A072;
 Mon,  3 Dec 2018 15:14:41 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 8444A85E74;
 Mon,  3 Dec 2018 15:14:41 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 66A7917AA7;
 Mon,  3 Dec 2018 15:14:41 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3FEf5t030583;
 Mon, 3 Dec 2018 15:14:41 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3FEfmb030582;
 Mon, 3 Dec 2018 15:14:41 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201812031514.wB3FEfmb030582@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Mon, 3 Dec 2018 15:14:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341426 - stable/12/sys/dev/cxgbe/cxgbei
X-SVN-Group: stable-12
X-SVN-Commit-Author: markj
X-SVN-Commit-Paths: stable/12/sys/dev/cxgbe/cxgbei
X-SVN-Commit-Revision: 341426
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 8444A85E74
X-Spamd-Result: default: False [-0.28 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.41)[-0.406,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.11)[0.113,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 15:14:42 -0000

Author: markj
Date: Mon Dec  3 15:14:40 2018
New Revision: 341426
URL: https://svnweb.freebsd.org/changeset/base/341426

Log:
  MFC r341001:
  Check for an allocation failure before dereferencing the pointer.

Modified:
  stable/12/sys/dev/cxgbe/cxgbei/cxgbei.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/cxgbe/cxgbei/cxgbei.c
==============================================================================
--- stable/12/sys/dev/cxgbe/cxgbei/cxgbei.c	Mon Dec  3 13:15:54 2018	(r341425)
+++ stable/12/sys/dev/cxgbe/cxgbei/cxgbei.c	Mon Dec  3 15:14:40 2018	(r341426)
@@ -449,9 +449,9 @@ do_rx_iscsi_ddp(struct sge_iq *iq, const struct rss_he
 			struct icl_pdu *ip0;
 
 			ip0 = icl_cxgbei_new_pdu(M_NOWAIT);
-			icl_cxgbei_new_pdu_set_conn(ip0, ic);
 			if (ip0 == NULL)
 				CXGBE_UNIMPLEMENTED("PDU allocation failure");
+			icl_cxgbei_new_pdu_set_conn(ip0, ic);
 			icp0 = ip_to_icp(ip0);
 			icp0->icp_seq = 0; /* XXX */
 			icp0->icp_flags = ICPF_RX_HDR | ICPF_RX_STATUS;

From owner-svn-src-stable@freebsd.org  Mon Dec  3 15:18:36 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6F744132A20D;
 Mon,  3 Dec 2018 15:18:36 +0000 (UTC)
 (envelope-from shurd@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id DF55A8613A;
 Mon,  3 Dec 2018 15:18:35 +0000 (UTC)
 (envelope-from shurd@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BC2AA17AA8;
 Mon,  3 Dec 2018 15:18:35 +0000 (UTC)
 (envelope-from shurd@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3FIZFi030808;
 Mon, 3 Dec 2018 15:18:35 GMT (envelope-from shurd@FreeBSD.org)
Received: (from shurd@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3FIZXh030806;
 Mon, 3 Dec 2018 15:18:35 GMT (envelope-from shurd@FreeBSD.org)
Message-Id: <201812031518.wB3FIZXh030806@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: shurd set sender to
 shurd@FreeBSD.org using -f
From: Stephen Hurd <shurd@FreeBSD.org>
Date: Mon, 3 Dec 2018 15:18:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341427 - in stable/12/sys/dev: ixgbe ixl
X-SVN-Group: stable-12
X-SVN-Commit-Author: shurd
X-SVN-Commit-Paths: in stable/12/sys/dev: ixgbe ixl
X-SVN-Commit-Revision: 341427
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: DF55A8613A
X-Spamd-Result: default: False [-0.28 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.41)[-0.406,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.11)[0.113,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 15:18:36 -0000

Author: shurd
Date: Mon Dec  3 15:18:35 2018
New Revision: 341427
URL: https://svnweb.freebsd.org/changeset/base/341427

Log:
  MFC r341156:
  
  Fix first-packet completion
  
  The first packet after the ring is initialized was never
  completed as isc_txd_credits_update() would not include it in the
  count of completed packets. This caused netmap to never complete
  a batch. See PR 233022 for more details.
  
  This is the same fix as the r340310 for e1000
  
  PR:		233607
  Reported by:	lev
  Reviewed by:	lev
  Sponsored by:	Limelight Networks
  Differential Revision:	https://reviews.freebsd.org/D18368

Modified:
  stable/12/sys/dev/ixgbe/ix_txrx.c
  stable/12/sys/dev/ixl/ixl_txrx.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/ixgbe/ix_txrx.c
==============================================================================
--- stable/12/sys/dev/ixgbe/ix_txrx.c	Mon Dec  3 15:14:40 2018	(r341426)
+++ stable/12/sys/dev/ixgbe/ix_txrx.c	Mon Dec  3 15:18:35 2018	(r341427)
@@ -297,6 +297,8 @@ ixgbe_isc_txd_credits_update(void *arg, uint16_t txqid
 	ntxd = scctx->isc_ntxd[0];
 	do {
 		delta = (int32_t)cur - (int32_t)prev;
+		if (prev == 0 && cur == 0)
+			delta += 1;
 		if (delta < 0)
 			delta += ntxd;
 

Modified: stable/12/sys/dev/ixl/ixl_txrx.c
==============================================================================
--- stable/12/sys/dev/ixl/ixl_txrx.c	Mon Dec  3 15:14:40 2018	(r341426)
+++ stable/12/sys/dev/ixl/ixl_txrx.c	Mon Dec  3 15:18:35 2018	(r341427)
@@ -516,7 +516,13 @@ ixl_isc_txd_credits_update_dwb(void *arg, uint16_t txq
 	ntxd = scctx->isc_ntxd[0];
 	do {
 		delta = (int32_t)cur - (int32_t)prev;
+		/*
+		 * XXX This appears to be a hack for first-packet.
+		 * A correct fix would prevent prev == cur in the first place.
+		 */
 		MPASS(prev == 0 || delta != 0);
+		if (prev == 0 && cur == 0)
+			delta += 1;
 		if (delta < 0)
 			delta += ntxd;
 #if 0

From owner-svn-src-stable@freebsd.org  Mon Dec  3 17:40:56 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 463DA132DB7B;
 Mon,  3 Dec 2018 17:40:56 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E19E48C03C;
 Mon,  3 Dec 2018 17:40:55 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C361519292;
 Mon,  3 Dec 2018 17:40:55 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3HetDr003391;
 Mon, 3 Dec 2018 17:40:55 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3Het71003388;
 Mon, 3 Dec 2018 17:40:55 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812031740.wB3Het71003388@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Mon, 3 Dec 2018 17:40:55 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341431 - in stable/11: share/man/man4 tools/tools/netmap
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: in stable/11: share/man/man4 tools/tools/netmap
X-SVN-Commit-Revision: 341431
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E19E48C03C
X-Spamd-Result: default: False [-0.29 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.33)[-0.331,0];
 NEURAL_SPAM_LONG(0.10)[0.102,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.06)[-0.060,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 17:40:56 -0000

Author: vmaffione
Date: Mon Dec  3 17:40:54 2018
New Revision: 341431
URL: https://svnweb.freebsd.org/changeset/base/341431

Log:
  MFC r339659
  
  netmap: add man page for the bridge program
  
  Added bridge(8).
  Also, minor fixes to the netmap "bridge" application:
   - indentation fixes and code cleanup
   - better usage description
   - better processing of netmap flags
  
  Reviewed by:    0mp
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17664

Added:
  stable/11/tools/tools/netmap/bridge.8
     - copied unchanged from r339659, head/tools/tools/netmap/bridge.8
Modified:
  stable/11/share/man/man4/netmap.4
  stable/11/tools/tools/netmap/bridge.c
  stable/11/tools/tools/netmap/pkt-gen.8
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man4/netmap.4
==============================================================================
--- stable/11/share/man/man4/netmap.4	Mon Dec  3 17:17:59 2018	(r341430)
+++ stable/11/share/man/man4/netmap.4	Mon Dec  3 17:40:54 2018	(r341431)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd December 14, 2015
+.Dd October 23, 2018
 .Dt NETMAP 4
 .Os
 .Sh NAME
@@ -1026,6 +1026,9 @@ Other
 clients attached to the same switch can now communicate
 with the network card or the host.
 .Sh SEE ALSO
+.Xr pkt-gen 8 ,
+.Xr bridge 8
+.Pp
 .Pa http://info.iet.unipi.it/~luigi/netmap/
 .Pp
 Luigi Rizzo, Revisiting network I/O APIs: the netmap framework,

Copied: stable/11/tools/tools/netmap/bridge.8 (from r339659, head/tools/tools/netmap/bridge.8)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/tools/tools/netmap/bridge.8	Mon Dec  3 17:40:54 2018	(r341431, copy of r339659, head/tools/tools/netmap/bridge.8)
@@ -0,0 +1,82 @@
+.\" Copyright (c) 2016 Luigi Rizzo, Universita` di Pisa
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 23, 2018
+.Dt BRIDGE 8
+.Os
+.Sh NAME
+.Nm bridge
+.Nd netmap client to bridge two netmap ports
+.Sh SYNOPSIS
+.Bk -words
+.Bl -tag -width "bridge"
+.It Nm
+.Op Fl i Ar port
+.Op Fl b Ar batch size
+.Op Fl w Ar wait-link
+.Op Fl v
+.Op Fl c
+.El
+.Ek
+.Sh DESCRIPTION
+.Nm
+is a simple netmap application that bridges packets between two netmap ports.
+If the two netmap ports use the same netmap memory region
+.Nm
+forwards packets without copying the packets payload (zero-copy mode), unless
+explicitly prevented by the
+.Fl c
+flag.
+.Bl -tag -width Ds
+.It Fl i Ar port
+Name of the netmap port.
+It can be supplied up to two times to identify the ports that must be bridged.
+Any netmap port type (physical interface, VALE switch, pipe, monitor port...)
+can be used.
+If the option is supplied only once, then it must be for a physical interface and, in that case,
+.Nm
+will bridge the port and the host stack.
+.It Fl b Ar batch-size
+Maximum number of packets to send in one operation.
+.It Fl w Ar wait-link
+indicates the number of seconds to wait before transmitting.
+It defaults to 2, and may be useful when talking to physical
+ports to let link negotiation complete before starting transmission.
+.It Fl v
+Enable verbose mode
+.It Fl c
+Disable zero-copy mode.
+.El
+.Sh SEE ALSO
+.Xr netmap 4 ,
+.Xr pkt-gen 8
+.Sh AUTHORS
+.An -nosplit
+.Nm
+has been written by
+.An Luigi Rizzo
+and
+.An Matteo Landi
+at the Universita` di Pisa, Italy.

Modified: stable/11/tools/tools/netmap/bridge.c
==============================================================================
--- stable/11/tools/tools/netmap/bridge.c	Mon Dec  3 17:17:59 2018	(r341430)
+++ stable/11/tools/tools/netmap/bridge.c	Mon Dec  3 17:40:54 2018	(r341431)
@@ -34,18 +34,18 @@ sigint_h(int sig)
 int
 pkt_queued(struct nm_desc *d, int tx)
 {
-        u_int i, tot = 0;
+	u_int i, tot = 0;
 
-        if (tx) {
-                for (i = d->first_tx_ring; i <= d->last_tx_ring; i++) {
-                        tot += nm_ring_space(NETMAP_TXRING(d->nifp, i));
-                }
-        } else {
-                for (i = d->first_rx_ring; i <= d->last_rx_ring; i++) {
-                        tot += nm_ring_space(NETMAP_RXRING(d->nifp, i));
-                }
-        }
-        return tot;
+	if (tx) {
+		for (i = d->first_tx_ring; i <= d->last_tx_ring; i++) {
+			tot += nm_ring_space(NETMAP_TXRING(d->nifp, i));
+		}
+	} else {
+		for (i = d->first_rx_ring; i <= d->last_rx_ring; i++) {
+			tot += nm_ring_space(NETMAP_RXRING(d->nifp, i));
+		}
+	}
+	return tot;
 }
 
 /*
@@ -76,13 +76,13 @@ process_rings(struct netmap_ring *rxring, struct netma
 
 		/* swap packets */
 		if (ts->buf_idx < 2 || rs->buf_idx < 2) {
-			D("wrong index rx[%d] = %d  -> tx[%d] = %d",
+			RD(5, "wrong index rx[%d] = %d  -> tx[%d] = %d",
 				j, rs->buf_idx, k, ts->buf_idx);
 			sleep(2);
 		}
 		/* copy the packet length. */
-		if (rs->len > 2048) {
-			D("wrong len %d rx[%d] -> tx[%d]", rs->len, j, k);
+		if (rs->len > rxring->nr_buf_size) {
+			RD(5, "wrong len %d rx[%d] -> tx[%d]", rs->len, j, k);
 			rs->len = 0;
 		} else if (verbose > 1) {
 			D("%s send len %d rx[%d] -> tx[%d]", msg, rs->len, j, k);
@@ -95,6 +95,8 @@ process_rings(struct netmap_ring *rxring, struct netma
 			/* report the buffer change. */
 			ts->flags |= NS_BUF_CHANGED;
 			rs->flags |= NS_BUF_CHANGED;
+			/* copy the NS_MOREFRAG */
+			rs->flags = (rs->flags & ~NS_MOREFRAG) | (ts->flags & NS_MOREFRAG);
 		} else {
 			char *rxbuf = NETMAP_BUF(rxring, rs->buf_idx);
 			char *txbuf = NETMAP_BUF(txring, ts->buf_idx);
@@ -117,7 +119,7 @@ move(struct nm_desc *src, struct nm_desc *dst, u_int l
 {
 	struct netmap_ring *txring, *rxring;
 	u_int m = 0, si = src->first_rx_ring, di = dst->first_tx_ring;
-	const char *msg = (src->req.nr_ringid & NETMAP_SW_RING) ?
+	const char *msg = (src->req.nr_flags == NR_REG_SW) ?
 		"host->net" : "net->host";
 
 	while (si <= src->last_rx_ring && di <= dst->last_tx_ring) {
@@ -143,7 +145,20 @@ static void
 usage(void)
 {
 	fprintf(stderr,
-	    "usage: bridge [-v] [-i ifa] [-i ifb] [-b burst] [-w wait_time] [iface]\n");
+		"netmap bridge program: forward packets between two "
+			"network interfaces\n"
+		"    usage(1): bridge [-v] [-i ifa] [-i ifb] [-b burst] "
+			"[-w wait_time] [-L]\n"
+		"    usage(2): bridge [-v] [-w wait_time] [-L] "
+			"[ifa [ifb [burst]]]\n"
+		"\n"
+		"    ifa and ifb are specified using the nm_open() syntax.\n"
+		"    When ifb is missing (or is equal to ifa), bridge will\n"
+		"    forward between between ifa and the host stack if -L\n"
+		"    is not specified, otherwise loopback traffic on ifa.\n"
+		"\n"
+		"    example: bridge -w 10 -i netmap:eth3 -i netmap:eth1\n"
+		);
 	exit(1);
 }
 
@@ -163,14 +178,16 @@ main(int argc, char **argv)
 	struct nm_desc *pa = NULL, *pb = NULL;
 	char *ifa = NULL, *ifb = NULL;
 	char ifabuf[64] = { 0 };
+	int loopback = 0;
 
-	fprintf(stderr, "%s built %s %s\n",
-		argv[0], __DATE__, __TIME__);
+	fprintf(stderr, "%s built %s %s\n\n", argv[0], __DATE__, __TIME__);
 
-	while ( (ch = getopt(argc, argv, "b:ci:vw:")) != -1) {
+	while ((ch = getopt(argc, argv, "hb:ci:vw:L")) != -1) {
 		switch (ch) {
 		default:
 			D("bad option %c %s", ch, optarg);
+			/* fallthrough */
+		case 'h':
 			usage();
 			break;
 		case 'b':	/* burst */
@@ -194,6 +211,9 @@ main(int argc, char **argv)
 		case 'w':
 			wait_link = atoi(optarg);
 			break;
+		case 'L':
+			loopback = 1;
+			break;
 		}
 
 	}
@@ -201,12 +221,12 @@ main(int argc, char **argv)
 	argc -= optind;
 	argv += optind;
 
+	if (argc > 0)
+		ifa = argv[0];
 	if (argc > 1)
-		ifa = argv[1];
+		ifb = argv[1];
 	if (argc > 2)
-		ifb = argv[2];
-	if (argc > 3)
-		burst = atoi(argv[3]);
+		burst = atoi(argv[2]);
 	if (!ifb)
 		ifb = ifa;
 	if (!ifa) {
@@ -222,9 +242,13 @@ main(int argc, char **argv)
 		wait_link = 4;
 	}
 	if (!strcmp(ifa, ifb)) {
-		D("same interface, endpoint 0 goes to host");
-		snprintf(ifabuf, sizeof(ifabuf) - 1, "%s^", ifa);
-		ifa = ifabuf;
+		if (!loopback) {
+			D("same interface, endpoint 0 goes to host");
+			snprintf(ifabuf, sizeof(ifabuf) - 1, "%s^", ifa);
+			ifa = ifabuf;
+		} else {
+			D("same interface, loopbacking traffic");
+		}
 	} else {
 		/* two different interfaces. Take all rings on if1 */
 	}
@@ -233,7 +257,7 @@ main(int argc, char **argv)
 		D("cannot open %s", ifa);
 		return (1);
 	}
-	// XXX use a single mmap ?
+	/* try to reuse the mmap() of the first interface, if possible */
 	pb = nm_open(ifb, NULL, NM_OPEN_NO_MMAP, pa);
 	if (pb == NULL) {
 		D("cannot open %s", ifb);
@@ -243,7 +267,7 @@ main(int argc, char **argv)
 	zerocopy = zerocopy && (pa->mem == pb->mem);
 	D("------- zerocopy %ssupported", zerocopy ? "" : "NOT ");
 
-	/* setup poll(2) variables. */
+	/* setup poll(2) array */
 	memset(pollfd, 0, sizeof(pollfd));
 	pollfd[0].fd = pa->fd;
 	pollfd[1].fd = pb->fd;
@@ -262,6 +286,21 @@ main(int argc, char **argv)
 		pollfd[0].revents = pollfd[1].revents = 0;
 		n0 = pkt_queued(pa, 0);
 		n1 = pkt_queued(pb, 0);
+#if defined(_WIN32) || defined(BUSYWAIT)
+		if (n0) {
+			ioctl(pollfd[1].fd, NIOCTXSYNC, NULL);
+			pollfd[1].revents = POLLOUT;
+		} else {
+			ioctl(pollfd[0].fd, NIOCRXSYNC, NULL);
+		}
+		if (n1) {
+			ioctl(pollfd[0].fd, NIOCTXSYNC, NULL);
+			pollfd[0].revents = POLLOUT;
+		} else {
+			ioctl(pollfd[1].fd, NIOCRXSYNC, NULL);
+		}
+		ret = 1;
+#else
 		if (n0)
 			pollfd[1].events |= POLLOUT;
 		else
@@ -270,7 +309,10 @@ main(int argc, char **argv)
 			pollfd[0].events |= POLLOUT;
 		else
 			pollfd[1].events |= POLLIN;
+
+		/* poll() also cause kernel to txsync/rxsync the NICs */
 		ret = poll(pollfd, 2, 2500);
+#endif /* defined(_WIN32) || defined(BUSYWAIT) */
 		if (ret <= 0 || verbose)
 		    D("poll %s [0] ev %x %x rx %d@%d tx %d,"
 			     " [1] ev %x %x rx %d@%d tx %d",
@@ -298,18 +340,15 @@ main(int argc, char **argv)
 			D("error on fd1, rx [%d,%d,%d)",
 				rx->head, rx->cur, rx->tail);
 		}
-		if (pollfd[0].revents & POLLOUT) {
+		if (pollfd[0].revents & POLLOUT)
 			move(pb, pa, burst);
-			// XXX we don't need the ioctl */
-			// ioctl(me[0].fd, NIOCTXSYNC, NULL);
-		}
-		if (pollfd[1].revents & POLLOUT) {
+
+		if (pollfd[1].revents & POLLOUT)
 			move(pa, pb, burst);
-			// XXX we don't need the ioctl */
-			// ioctl(me[1].fd, NIOCTXSYNC, NULL);
-		}
+
+		/* We don't need ioctl(NIOCTXSYNC) on the two file descriptors here,
+		 * kernel will txsync on next poll(). */
 	}
-	D("exiting");
 	nm_close(pb);
 	nm_close(pa);
 

Modified: stable/11/tools/tools/netmap/pkt-gen.8
==============================================================================
--- stable/11/tools/tools/netmap/pkt-gen.8	Mon Dec  3 17:17:59 2018	(r341430)
+++ stable/11/tools/tools/netmap/pkt-gen.8	Mon Dec  3 17:40:54 2018	(r341431)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 1, 2016
+.Dd October 23, 2018
 .Dt PKT-GEN 8
 .Os
 .Sh NAME
@@ -170,10 +170,9 @@ packets to be received by the target host.
 .Dl
 .Nm
 -i netmap:ncxl0 -f tx -s 172.16.0.1:53 -d 172.16.1.3:53 -D 00:07:43:29:2a:e0 
-.Sh FILES
-.Xr netmap 4
 .Sh SEE ALSO
-.Xr netmap 4
+.Xr netmap 4 ,
+.Xr bridge 8
 .Sh AUTHORS
 This manual page was written by
 .An George V. Neville-Neil Aq gnn@FreeBSD.org .

From owner-svn-src-stable@freebsd.org  Mon Dec  3 17:46:54 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 92A35132DD3C;
 Mon,  3 Dec 2018 17:46:54 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 3A4F78C444;
 Mon,  3 Dec 2018 17:46:54 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1C68C19434;
 Mon,  3 Dec 2018 17:46:54 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3Hkrir008262;
 Mon, 3 Dec 2018 17:46:53 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3HkrBA008261;
 Mon, 3 Dec 2018 17:46:53 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812031746.wB3HkrBA008261@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Mon, 3 Dec 2018 17:46:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341432 - stable/11/tools/tools/netmap
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/tools/tools/netmap
X-SVN-Commit-Revision: 341432
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 3A4F78C444
X-Spamd-Result: default: False [-0.29 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.33)[-0.331,0];
 NEURAL_HAM_SHORT(-0.06)[-0.060,0];
 NEURAL_SPAM_LONG(0.10)[0.102,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 17:46:54 -0000

Author: vmaffione
Date: Mon Dec  3 17:46:53 2018
New Revision: 341432
URL: https://svnweb.freebsd.org/changeset/base/341432

Log:
  MFC r339685
  
  netmap: add man page for the vale-ctl program
  
  Added man page for vale-ctl program.
  Small fixes to vale-ctl, including the support for -m option
  (to specify the netmap memory allocator id).
  
  Reviewed by:    0mp
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17683

Added:
  stable/11/tools/tools/netmap/vale-ctl.4
     - copied unchanged from r339685, head/tools/tools/netmap/vale-ctl.4
Modified:
  stable/11/tools/tools/netmap/vale-ctl.c
Directory Properties:
  stable/11/   (props changed)

Copied: stable/11/tools/tools/netmap/vale-ctl.4 (from r339685, head/tools/tools/netmap/vale-ctl.4)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/tools/tools/netmap/vale-ctl.4	Mon Dec  3 17:46:53 2018	(r341432, copy of r339685, head/tools/tools/netmap/vale-ctl.4)
@@ -0,0 +1,163 @@
+.\" Copyright (c) 2016 Michio Honda.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 24, 2018
+.Dt VALE-CTL 4
+.Os
+.Sh NAME
+.Nm vale-ctl
+.Nd manage VALE switches provided by netmap
+.Sh SYNOPSIS
+.Bk -words
+.Bl -tag -width "vale-ctl"
+.It Nm
+.Op Fl g Ar valeSSS:PPP
+.Op Fl a Ar valeSSS:interface
+.Op Fl h Ar valeSSS:interface
+.Op Fl d Ar valeSSS:interface
+.Op Fl n Ar interface
+.Op Fl r Ar interface
+.Op Fl l Ar valeSSS:PPP
+.Op Fl l
+.Op Fl p Ar valeSSS:PPP
+.Op Fl P Ar valeSSS:PPP
+.Op Fl C Ar spec
+.Op Fl m Ar memid
+.El
+.Ek
+.Sh DESCRIPTION
+.Nm
+manages and inspects
+.Xr vale 4
+switches, for instance attaching and detaching interfaces, creating
+and deleting persistent VALE ports, or listing the existing switches
+and their ports.
+In the following,
+.Ar valeSSS
+is the name of a VALE switch, while
+.Ar valeSSS:PPP
+is the name of a VALE port of
+.Ar valeSSS .
+.Pp
+When issued without options it lists all the existing switch ports together
+with their internal bridge number and port number.
+.Bl -tag -width Ds
+.It Fl g Ar valeSSS:PPP
+Print the number of receive rings of
+.Ar valeSSS:PPP .
+.It Fl a Ar valeSSS:interface
+Attach
+.Ar interface
+(which must be an existing network interface) to
+.Ar valeSSS
+and detach it from the host stack.
+.It Fl h Ar valeSSS:interface
+Attach
+.Ar interface
+(which must be an existing network interface) to
+.Ar valeSSS
+while keeping it attached to the host stack.
+More precisely, packets coming from
+the host stack and directed to the interface will go through the switch, where
+they can still reach the interface if the switch rules allow it.
+Conversely, packets coming from the interface will go through the switch and,
+if appropriate, will reach the host stack.
+.It Fl d Ar valeSSS:interface
+Detach
+.Ar interface
+from
+.Ar valeSSS .
+.It Fl n Ar interface
+Create a new persistent VALE port with name
+.Ar interface .
+The name must be different from any other network interface
+already present in the system.
+.It Fl d Ar interface
+Destroy the persistent VALE port with name
+.Ar inteface .
+.It Fl l Ar valeSSS:PPP
+Show the internal bridge number and port number of the given switch port.
+.It Fl p Ar valeSSS:PPP
+Enable polling mode for
+.Ar valeSSS:PPP .
+In polling mode, a dedicated kernel thread is spawned to handle packets
+received from
+.Ar valeSSS:PPP
+and push them into the switch.
+The kernel thread busy waits on the switch port rather than relying on
+interrupts or notifications.
+Polling mode can only be used on physical NICs attached to a VALE switch.
+.It Fl P Ar valeSSS:PPP
+Disable polling mode for
+.Ar valeSSS:PPP .
+.It Fl C Ar x | Ar x,y | Ar x,y,z | Ar x,y,z,w
+When used in conjunction with
+.Fl n
+it supplies the number of tx and rx rings and slots.
+The full format with four numbers gives, in order, number of tx slots, number
+of rx slots, number of tx rings and number of rx rings.
+The form with three numbers uses
+.Ar z
+for both the number of tx and the number of rx rings.
+The forms with less than two numbers use the default values for the number
+of rings.
+The form with two numbers supplies the numbers of tx and rx slots.
+The form with only one number uses
+.Ar x
+for both the number of tx and the number of rx slots.
+.Pp
+When used in conjunction with
+.Fl p
+only the first three forms are used.
+The first number may be either 0 or 1.
+If 0, then all interface rings will be polled by a single thread, running
+on the core id given by the second number (the third number, if present,
+must be 1).
+If the first number is 1, then the ring identified by the second number will
+be polled by the core with the same id.
+If a third number is given, then this is repeated for as many consecutive
+rings and cores.
+.It Fl m Ar memid
+Used in conjunction with
+.Fl n
+supplies the netmap memory region identifier to use together with the newly
+created persistent VALE port.
+These ports use a private memory region by default.
+Using this option you can let them share memory with other ports.
+Pass 1 as
+.Ar memid
+to use the global memory region already shared by all
+harware netmap ports.
+.El
+.Sh SEE ALSO
+.Xr netmap 4 ,
+.Xr vale 4
+.Sh AUTHORS
+.An -nosplit
+.Nm
+has been written by
+.An Michio Honda
+at NetApp.

Modified: stable/11/tools/tools/netmap/vale-ctl.c
==============================================================================
--- stable/11/tools/tools/netmap/vale-ctl.c	Mon Dec  3 17:40:54 2018	(r341431)
+++ stable/11/tools/tools/netmap/vale-ctl.c	Mon Dec  3 17:46:53 2018	(r341432)
@@ -25,6 +25,10 @@
 
 /* $FreeBSD$ */
 
+#define NETMAP_WITH_LIBS
+#include <net/netmap_user.h>
+#include <net/netmap.h>
+
 #include <errno.h>
 #include <stdio.h>
 #include <inttypes.h>	/* PRI* macros */
@@ -35,17 +39,9 @@
 #include <sys/param.h>
 #include <sys/socket.h>	/* apple needs sockaddr */
 #include <net/if.h>	/* ifreq */
-#include <net/netmap.h>
-#include <net/netmap_user.h>
 #include <libgen.h>	/* basename */
 #include <stdlib.h>	/* atoi, free */
 
-/* debug support */
-#define ND(format, ...)	do {} while(0)
-#define D(format, ...)					\
-	fprintf(stderr, "%s [%d] " format "\n",		\
-	__FUNCTION__, __LINE__, ##__VA_ARGS__)
-
 /* XXX cut and paste from pkt-gen.c because I'm not sure whether this
  * program may include nm_util.h
  */
@@ -86,7 +82,7 @@ void parse_nmr_config(const char* conf, struct nmreq *
 }
 
 static int
-bdg_ctl(const char *name, int nr_cmd, int nr_arg, char *nmr_config)
+bdg_ctl(const char *name, int nr_cmd, int nr_arg, char *nmr_config, int nr_arg2)
 {
 	struct nmreq nmr;
 	int error = 0;
@@ -100,9 +96,10 @@ bdg_ctl(const char *name, int nr_cmd, int nr_arg, char
 	bzero(&nmr, sizeof(nmr));
 	nmr.nr_version = NETMAP_API;
 	if (name != NULL) /* might be NULL */
-		strncpy(nmr.nr_name, name, sizeof(nmr.nr_name));
+		strncpy(nmr.nr_name, name, sizeof(nmr.nr_name)-1);
 	nmr.nr_cmd = nr_cmd;
 	parse_nmr_config(nmr_config, &nmr);
+	nmr.nr_arg2 = nr_arg2;
 
 	switch (nr_cmd) {
 	case NETMAP_BDG_DELIF:
@@ -117,8 +114,11 @@ bdg_ctl(const char *name, int nr_cmd, int nr_arg, char
 		break;
 	case NETMAP_BDG_ATTACH:
 	case NETMAP_BDG_DETACH:
-		if (nr_arg && nr_arg != NETMAP_BDG_HOST)
+		nmr.nr_flags = NR_REG_ALL_NIC;
+		if (nr_arg && nr_arg != NETMAP_BDG_HOST) {
+			nmr.nr_flags = NR_REG_NIC_SW;
 			nr_arg = 0;
+		}
 		nmr.nr_arg1 = nr_arg;
 		error = ioctl(fd, NIOCREGIF, &nmr);
 		if (error == -1) {
@@ -152,6 +152,36 @@ bdg_ctl(const char *name, int nr_cmd, int nr_arg, char
 
 		break;
 
+	case NETMAP_BDG_POLLING_ON:
+	case NETMAP_BDG_POLLING_OFF:
+		/* We reuse nmreq fields as follows:
+		 *   nr_tx_slots: 0 and non-zero indicate REG_ALL_NIC
+		 *                REG_ONE_NIC, respectively.
+		 *   nr_rx_slots: CPU core index. This also indicates the
+		 *                first queue in the case of REG_ONE_NIC
+		 *   nr_tx_rings: (REG_ONE_NIC only) indicates the
+		 *                number of CPU cores or the last queue
+		 */
+		nmr.nr_flags |= nmr.nr_tx_slots ?
+			NR_REG_ONE_NIC : NR_REG_ALL_NIC;
+		nmr.nr_ringid = nmr.nr_rx_slots;
+		/* number of cores/rings */
+		if (nmr.nr_flags == NR_REG_ALL_NIC)
+			nmr.nr_arg1 = 1;
+		else
+			nmr.nr_arg1 = nmr.nr_tx_rings;
+
+		error = ioctl(fd, NIOCREGIF, &nmr);
+		if (!error)
+			D("polling on %s %s", nmr.nr_name,
+				nr_cmd == NETMAP_BDG_POLLING_ON ?
+				"started" : "stopped");
+		else
+			D("polling on %s %s (err %d)", nmr.nr_name,
+				nr_cmd == NETMAP_BDG_POLLING_ON ?
+				"couldn't start" : "couldn't stop", error);
+		break;
+
 	default: /* GINFO */
 		nmr.nr_cmd = nmr.nr_arg1 = nmr.nr_arg2 = 0;
 		error = ioctl(fd, NIOCGINFO, &nmr);
@@ -166,36 +196,44 @@ bdg_ctl(const char *name, int nr_cmd, int nr_arg, char
 	return error;
 }
 
+static void
+usage(int errcode)
+{
+	fprintf(stderr,
+	    "Usage:\n"
+	    "vale-ctl arguments\n"
+	    "\t-g interface	interface name to get info\n"
+	    "\t-d interface	interface name to be detached\n"
+	    "\t-a interface	interface name to be attached\n"
+	    "\t-h interface	interface name to be attached with the host stack\n"
+	    "\t-n interface	interface name to be created\n"
+	    "\t-r interface	interface name to be deleted\n"
+	    "\t-l list all or specified bridge's interfaces (default)\n"
+	    "\t-C string ring/slot setting of an interface creating by -n\n"
+	    "\t-p interface start polling. Additional -C x,y,z configures\n"
+	    "\t\t x: 0 (REG_ALL_NIC) or 1 (REG_ONE_NIC),\n"
+	    "\t\t y: CPU core id for ALL_NIC and core/ring for ONE_NIC\n"
+	    "\t\t z: (ONE_NIC only) num of total cores/rings\n"
+	    "\t-P interface stop polling\n"
+	    "\t-m memid to use when creating a new interface\n");
+	exit(errcode);
+}
+
 int
 main(int argc, char *argv[])
 {
 	int ch, nr_cmd = 0, nr_arg = 0;
-	const char *command = basename(argv[0]);
 	char *name = NULL, *nmr_config = NULL;
+	int nr_arg2 = 0;
 
-	if (argc > 3) {
-usage:
-		fprintf(stderr,
-			"Usage:\n"
-			"%s arguments\n"
-			"\t-g interface	interface name to get info\n"
-			"\t-d interface	interface name to be detached\n"
-			"\t-a interface	interface name to be attached\n"
-			"\t-h interface	interface name to be attached with the host stack\n"
-			"\t-n interface	interface name to be created\n"
-			"\t-r interface	interface name to be deleted\n"
-			"\t-l list all or specified bridge's interfaces (default)\n"
-			"\t-C string ring/slot setting of an interface creating by -n\n"
-			"", command);
-		return 0;
-	}
-
-	while ((ch = getopt(argc, argv, "d:a:h:g:l:n:r:C:")) != -1) {
-		name = optarg; /* default */
+	while ((ch = getopt(argc, argv, "d:a:h:g:l:n:r:C:p:P:m:")) != -1) {
+		if (ch != 'C' && ch != 'm')
+			name = optarg; /* default */
 		switch (ch) {
 		default:
 			fprintf(stderr, "bad option %c %s", ch, optarg);
-			goto usage;
+			usage(-1);
+			break;
 		case 'd':
 			nr_cmd = NETMAP_BDG_DETACH;
 			break;
@@ -217,19 +255,28 @@ usage:
 			break;
 		case 'l':
 			nr_cmd = NETMAP_BDG_LIST;
-			if (optind < argc && argv[optind][0] == '-')
-				name = NULL;
 			break;
 		case 'C':
 			nmr_config = strdup(optarg);
 			break;
+		case 'p':
+			nr_cmd = NETMAP_BDG_POLLING_ON;
+			break;
+		case 'P':
+			nr_cmd = NETMAP_BDG_POLLING_OFF;
+			break;
+		case 'm':
+			nr_arg2 = atoi(optarg);
+			break;
 		}
-		if (optind != argc) {
-			// fprintf(stderr, "optind %d argc %d\n", optind, argc);
-			goto usage;
-		}
 	}
-	if (argc == 1)
+	if (optind != argc) {
+		// fprintf(stderr, "optind %d argc %d\n", optind, argc);
+		usage(-1);
+	}
+	if (argc == 1) {
 		nr_cmd = NETMAP_BDG_LIST;
-	return bdg_ctl(name, nr_cmd, nr_arg, nmr_config) ? 1 : 0;
+		name = NULL;
+	}
+	return bdg_ctl(name, nr_cmd, nr_arg, nmr_config, nr_arg2) ? 1 : 0;
 }

From owner-svn-src-stable@freebsd.org  Mon Dec  3 17:51:25 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4D726132DE1C;
 Mon,  3 Dec 2018 17:51:25 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id D53438C771;
 Mon,  3 Dec 2018 17:51:24 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 99D1719480;
 Mon,  3 Dec 2018 17:51:24 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3HpOOI008617;
 Mon, 3 Dec 2018 17:51:24 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3HpNoo008608;
 Mon, 3 Dec 2018 17:51:23 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812031751.wB3HpNoo008608@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Mon, 3 Dec 2018 17:51:23 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341434 - in stable/11: share/man/man4 tools/tools/netmap
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: in stable/11: share/man/man4 tools/tools/netmap
X-SVN-Commit-Revision: 341434
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: D53438C771
X-Spamd-Result: default: False [-0.06 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.25)[-0.248,0];
 NEURAL_SPAM_LONG(0.19)[0.192,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.01)[-0.009,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 17:51:25 -0000

Author: vmaffione
Date: Mon Dec  3 17:51:22 2018
New Revision: 341434
URL: https://svnweb.freebsd.org/changeset/base/341434

Log:
  MFC r340279
  
  netmap: add load balancer program
  
  Add the lb program, which is able to load-balance input traffic
  received from a netmap port over M groups, with N netmap pipes in
  each group. Each received packet is forwarded to one of the pipes
  chosen from each group (using an L3/L4 connection-consistent hash function).
  This also adds a man page for lb and some cross-references in related
  man pages.
  
  Reviewed by:    bcr, 0mp
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17735

Added:
  stable/11/tools/tools/netmap/ctrs.h   (contents, props changed)
  stable/11/tools/tools/netmap/lb.8
     - copied unchanged from r340279, head/tools/tools/netmap/lb.8
  stable/11/tools/tools/netmap/lb.c
     - copied unchanged from r340279, head/tools/tools/netmap/lb.c
  stable/11/tools/tools/netmap/pkt_hash.c
     - copied unchanged from r340279, head/tools/tools/netmap/pkt_hash.c
  stable/11/tools/tools/netmap/pkt_hash.h
     - copied unchanged from r340279, head/tools/tools/netmap/pkt_hash.h
Modified:
  stable/11/share/man/man4/netmap.4
  stable/11/tools/tools/netmap/Makefile
  stable/11/tools/tools/netmap/README
  stable/11/tools/tools/netmap/bridge.8
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man4/netmap.4
==============================================================================
--- stable/11/share/man/man4/netmap.4	Mon Dec  3 17:51:10 2018	(r341433)
+++ stable/11/share/man/man4/netmap.4	Mon Dec  3 17:51:22 2018	(r341434)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 23, 2018
+.Dd October 28, 2018
 .Dt NETMAP 4
 .Os
 .Sh NAME
@@ -1026,8 +1026,11 @@ Other
 clients attached to the same switch can now communicate
 with the network card or the host.
 .Sh SEE ALSO
-.Xr pkt-gen 8 ,
-.Xr bridge 8
+.Xr vale 4 ,
+.Xr vale-ctl 4 ,
+.Xr bridge 8 ,
+.Xr lb 8 ,
+.Xr pkt-gen 8
 .Pp
 .Pa http://info.iet.unipi.it/~luigi/netmap/
 .Pp

Modified: stable/11/tools/tools/netmap/Makefile
==============================================================================
--- stable/11/tools/tools/netmap/Makefile	Mon Dec  3 17:51:10 2018	(r341433)
+++ stable/11/tools/tools/netmap/Makefile	Mon Dec  3 17:51:22 2018	(r341434)
@@ -3,7 +3,7 @@
 #
 # For multiple programs using a single source file each,
 # we can just define 'progs' and create custom targets.
-PROGS	=	pkt-gen bridge vale-ctl
+PROGS	=	pkt-gen bridge vale-ctl lb
 
 CLEANFILES = $(PROGS) *.o
 MAN=
@@ -30,3 +30,6 @@ bridge: bridge.o
 
 vale-ctl: vale-ctl.o
 	$(CC) $(CFLAGS) -o vale-ctl vale-ctl.o
+
+lb: lb.o pkt_hash.o
+	$(CC) $(CFLAGS) -o lb lb.o pkt_hash.o $(LDFLAGS)

Modified: stable/11/tools/tools/netmap/README
==============================================================================
--- stable/11/tools/tools/netmap/README	Mon Dec  3 17:51:10 2018	(r341433)
+++ stable/11/tools/tools/netmap/README	Mon Dec  3 17:51:22 2018	(r341434)
@@ -1,9 +1,13 @@
 $FreeBSD$
 
-This directory contains examples that use netmap
+This directory contains applications that use the netmap API
 
-	pkt-gen		a packet sink/source using the netmap API
+	pkt-gen		a multi-function packet generator and traffic sink
 
-	bridge		a two-port jumper wire, also using the native API
+	bridge		a two-port jumper wire, also using the netmap API
 
-	vale-ctl	the program to control VALE bridges
+	vale-ctl	the program to control and inspect VALE switches
+
+	lb		an L3/L4 load balancer
+
+	nmreplay	a tool to playback a pcap file to a netmap port

Modified: stable/11/tools/tools/netmap/bridge.8
==============================================================================
--- stable/11/tools/tools/netmap/bridge.8	Mon Dec  3 17:51:10 2018	(r341433)
+++ stable/11/tools/tools/netmap/bridge.8	Mon Dec  3 17:51:22 2018	(r341434)
@@ -23,7 +23,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 23, 2018
+.Dd October 28, 2018
 .Dt BRIDGE 8
 .Os
 .Sh NAME
@@ -71,7 +71,8 @@ Disable zero-copy mode.
 .El
 .Sh SEE ALSO
 .Xr netmap 4 ,
-.Xr pkt-gen 8
+.Xr pkt-gen 8 ,
+.Xr lb 8
 .Sh AUTHORS
 .An -nosplit
 .Nm

Added: stable/11/tools/tools/netmap/ctrs.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/tools/tools/netmap/ctrs.h	Mon Dec  3 17:51:22 2018	(r341434)
@@ -0,0 +1,116 @@
+#ifndef CTRS_H_
+#define CTRS_H_
+
+/* $FreeBSD$ */
+
+#include <sys/time.h>
+
+/* counters to accumulate statistics */
+struct my_ctrs {
+	uint64_t pkts, bytes, events;
+	uint64_t drop, drop_bytes;
+	uint64_t min_space;
+	struct timeval t;
+	uint32_t oq_n; /* number of elements in overflow queue (used in lb) */
+};
+
+/* very crude code to print a number in normalized form.
+ * Caller has to make sure that the buffer is large enough.
+ */
+static const char *
+norm2(char *buf, double val, char *fmt, int normalize)
+{
+	char *units[] = { "", "K", "M", "G", "T" };
+	u_int i;
+	if (normalize)
+		for (i = 0; val >=1000 && i < sizeof(units)/sizeof(char *) - 1; i++)
+			val /= 1000;
+	else
+		i=0;
+	sprintf(buf, fmt, val, units[i]);
+	return buf;
+}
+
+static __inline const char *
+norm(char *buf, double val, int normalize)
+{
+	if (normalize)
+		return norm2(buf, val, "%.3f %s", normalize);
+	else
+		return norm2(buf, val, "%.0f %s", normalize);
+}
+
+static __inline int
+timespec_ge(const struct timespec *a, const struct timespec *b)
+{
+
+	if (a->tv_sec > b->tv_sec)
+		return (1);
+	if (a->tv_sec < b->tv_sec)
+		return (0);
+	if (a->tv_nsec >= b->tv_nsec)
+		return (1);
+	return (0);
+}
+
+static __inline struct timespec
+timeval2spec(const struct timeval *a)
+{
+	struct timespec ts = {
+		.tv_sec = a->tv_sec,
+		.tv_nsec = a->tv_usec * 1000
+	};
+	return ts;
+}
+
+static __inline struct timeval
+timespec2val(const struct timespec *a)
+{
+	struct timeval tv = {
+		.tv_sec = a->tv_sec,
+		.tv_usec = a->tv_nsec / 1000
+	};
+	return tv;
+}
+
+
+static __inline struct timespec
+timespec_add(struct timespec a, struct timespec b)
+{
+	struct timespec ret = { a.tv_sec + b.tv_sec, a.tv_nsec + b.tv_nsec };
+	if (ret.tv_nsec >= 1000000000) {
+		ret.tv_sec++;
+		ret.tv_nsec -= 1000000000;
+	}
+	return ret;
+}
+
+static __inline struct timespec
+timespec_sub(struct timespec a, struct timespec b)
+{
+	struct timespec ret = { a.tv_sec - b.tv_sec, a.tv_nsec - b.tv_nsec };
+	if (ret.tv_nsec < 0) {
+		ret.tv_sec--;
+		ret.tv_nsec += 1000000000;
+	}
+	return ret;
+}
+
+static __inline uint64_t
+wait_for_next_report(struct timeval *prev, struct timeval *cur,
+		int report_interval)
+{
+	struct timeval delta;
+
+	delta.tv_sec = report_interval/1000;
+	delta.tv_usec = (report_interval%1000)*1000;
+	if (select(0, NULL, NULL, NULL, &delta) < 0 && errno != EINTR) {
+		perror("select");
+		abort();
+	}
+	gettimeofday(cur, NULL);
+	timersub(cur, prev, &delta);
+	return delta.tv_sec* 1000000 + delta.tv_usec;
+}
+#endif /* CTRS_H_ */
+

Copied: stable/11/tools/tools/netmap/lb.8 (from r340279, head/tools/tools/netmap/lb.8)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/tools/tools/netmap/lb.8	Mon Dec  3 17:51:22 2018	(r341434, copy of r340279, head/tools/tools/netmap/lb.8)
@@ -0,0 +1,130 @@
+.\" Copyright (c) 2017 Corelight, Inc. and Universita` di Pisa
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 28, 2018
+.Dt LB 8
+.Os
+.Sh NAME
+.Nm lb
+.Nd netmap-based load balancer
+.Sh SYNOPSIS
+.Bk -words
+.Bl -tag -width "lb"
+.It Nm
+.Op Fl i Ar port
+.Op Fl p Ar pipe-group
+.Op Fl B Ar extra-buffers
+.Op Fl b Ar batch-size
+.Op Fl w Ar wait-link
+.El
+.Ek
+.Sh DESCRIPTION
+.Nm
+reads packets from an input netmap port and sends them to a number of netmap pipes,
+trying to balance the packets received by each pipe.
+Packets belonging to the
+same connection will always be sent to the same pipe.
+.Pp
+Command line options are listed below.
+.Bl -tag -width Ds
+.It Fl i Ar port
+Name of a netmap port.
+It must be supplied exactly once to identify
+the input port.
+Any netmap port type (e.g., physical interface, VALE switch, pipe,
+monitor port) can be used.
+.It Fl p Ar name Ns Cm \&: Ns Ar number | number
+Add a new pipe group of the given number of pipes.
+The pipe group will receive all the packets read from the input port, balanced
+among the available pipes.
+The receiving ends of the pipes
+will be called
+.Dq Ar name Ns Em }0
+to
+.Dq Ar name No Ns Em } Ns Aq Ar number No - 1 .
+The name is optional and defaults to
+the name of the input port (stripped down of any netmap operator).
+If the name is omitted, also the colon can be omitted.
+.Pp
+This option can be supplied multiple times to define a sequence of pipe groups,
+each group receiving all the packets in turn.
+.Pp
+If no
+.Fl p
+option is given, a single group of two pipes with default name is assumed.
+.Pp
+It is allowed to use the same name for several groups.
+The pipe numbering in each
+group will start from were the previous identically-named group had left.
+.It Fl B Ar extra-buffers
+Try to reserve the given number of extra buffers.
+Extra buffers are shared among
+all pipes in all groups and work as an extension of the pipe rings.
+If a pipe ring is full for whatever reason,
+.Nm
+tries to use extra buffers before dropping any packets directed to that pipe.
+.Pp
+If all extra buffers are busy, some are stolen from the pipe with the longest
+backlog.
+This gives preference to newer packets over old ones, and prevents a
+stalled pipe to deplete the pool of extra buffers.
+.It Fl b Ar batch-size
+Maximum number of packets processed between two read operations from the input port.
+Higher values of batch-size improve performance by amortizing read operations,
+but increase the risk of filling up the port internal queues.
+.It Fl w Ar wait-link
+indicates the number of seconds to wait before transmitting.
+It defaults to 2, and may be useful when talking to physical
+ports to let link negotiation complete before starting transmission.
+.El
+.Sh LIMITATIONS
+The group chaining assumes that the applications on the receiving end of the
+pipes are read-only: they must not modify the buffers or the pipe ring slots
+in any way.
+.Pp
+The group naming is currently implemented by creating a persistent VALE port
+with the given name.
+If
+.Nm
+does not exit cleanly the ports will not be removed.
+Please use
+.Xr vale-ctl 4
+to remove any stale persistent VALE port.
+.Sh SEE ALSO
+.Xr netmap 4 ,
+.Xr bridge 8 ,
+.Xr pkt-gen 8
+.Pp
+.Pa http://info.iet.unipi.it/~luigi/netmap/
+.Sh AUTHORS
+.An -nosplit
+.Nm
+has been written by
+.An Seth Hall
+at Corelight, USA.
+The facilities related to extra buffers and pipe groups have been added by
+.An Giuseppe Lettieri
+at University of Pisa, Italy, under contract by Corelight, USA.

Copied: stable/11/tools/tools/netmap/lb.c (from r340279, head/tools/tools/netmap/lb.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/tools/tools/netmap/lb.c	Mon Dec  3 17:51:22 2018	(r341434, copy of r340279, head/tools/tools/netmap/lb.c)
@@ -0,0 +1,1027 @@
+/*
+ * Copyright (C) 2017 Corelight, Inc. and Universita` di Pisa. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *   1. Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/* $FreeBSD$ */
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdbool.h>
+#include <inttypes.h>
+#include <syslog.h>
+
+#define NETMAP_WITH_LIBS
+#include <net/netmap_user.h>
+#include <sys/poll.h>
+
+#include <netinet/in.h>		/* htonl */
+
+#include <pthread.h>
+
+#include "pkt_hash.h"
+#include "ctrs.h"
+
+
+/*
+ * use our version of header structs, rather than bringing in a ton
+ * of platform specific ones
+ */
+#ifndef ETH_ALEN
+#define ETH_ALEN 6
+#endif
+
+struct compact_eth_hdr {
+	unsigned char h_dest[ETH_ALEN];
+	unsigned char h_source[ETH_ALEN];
+	u_int16_t h_proto;
+};
+
+struct compact_ip_hdr {
+	u_int8_t ihl:4, version:4;
+	u_int8_t tos;
+	u_int16_t tot_len;
+	u_int16_t id;
+	u_int16_t frag_off;
+	u_int8_t ttl;
+	u_int8_t protocol;
+	u_int16_t check;
+	u_int32_t saddr;
+	u_int32_t daddr;
+};
+
+struct compact_ipv6_hdr {
+	u_int8_t priority:4, version:4;
+	u_int8_t flow_lbl[3];
+	u_int16_t payload_len;
+	u_int8_t nexthdr;
+	u_int8_t hop_limit;
+	struct in6_addr saddr;
+	struct in6_addr daddr;
+};
+
+#define MAX_IFNAMELEN 	64
+#define MAX_PORTNAMELEN	(MAX_IFNAMELEN + 40)
+#define DEF_OUT_PIPES 	2
+#define DEF_EXTRA_BUFS 	0
+#define DEF_BATCH	2048
+#define DEF_WAIT_LINK	2
+#define DEF_STATS_INT	600
+#define BUF_REVOKE	100
+#define STAT_MSG_MAXSIZE 1024
+
+struct {
+	char ifname[MAX_IFNAMELEN];
+	char base_name[MAX_IFNAMELEN];
+	int netmap_fd;
+	uint16_t output_rings;
+	uint16_t num_groups;
+	uint32_t extra_bufs;
+	uint16_t batch;
+	int stdout_interval;
+	int syslog_interval;
+	int wait_link;
+	bool busy_wait;
+} glob_arg;
+
+/*
+ * the overflow queue is a circular queue of buffers
+ */
+struct overflow_queue {
+	char name[MAX_IFNAMELEN + 16];
+	struct netmap_slot *slots;
+	uint32_t head;
+	uint32_t tail;
+	uint32_t n;
+	uint32_t size;
+};
+
+struct overflow_queue *freeq;
+
+static inline int
+oq_full(struct overflow_queue *q)
+{
+	return q->n >= q->size;
+}
+
+static inline int
+oq_empty(struct overflow_queue *q)
+{
+	return q->n <= 0;
+}
+
+static inline void
+oq_enq(struct overflow_queue *q, const struct netmap_slot *s)
+{
+	if (unlikely(oq_full(q))) {
+		D("%s: queue full!", q->name);
+		abort();
+	}
+	q->slots[q->tail] = *s;
+	q->n++;
+	q->tail++;
+	if (q->tail >= q->size)
+		q->tail = 0;
+}
+
+static inline struct netmap_slot
+oq_deq(struct overflow_queue *q)
+{
+	struct netmap_slot s = q->slots[q->head];
+	if (unlikely(oq_empty(q))) {
+		D("%s: queue empty!", q->name);
+		abort();
+	}
+	q->n--;
+	q->head++;
+	if (q->head >= q->size)
+		q->head = 0;
+	return s;
+}
+
+static volatile int do_abort = 0;
+
+uint64_t dropped = 0;
+uint64_t forwarded = 0;
+uint64_t received_bytes = 0;
+uint64_t received_pkts = 0;
+uint64_t non_ip = 0;
+uint32_t freeq_n = 0;
+
+struct port_des {
+	char interface[MAX_PORTNAMELEN];
+	struct my_ctrs ctr;
+	unsigned int last_sync;
+	uint32_t last_tail;
+	struct overflow_queue *oq;
+	struct nm_desc *nmd;
+	struct netmap_ring *ring;
+	struct group_des *group;
+};
+
+struct port_des *ports;
+
+/* each group of pipes receives all the packets */
+struct group_des {
+	char pipename[MAX_IFNAMELEN];
+	struct port_des *ports;
+	int first_id;
+	int nports;
+	int last;
+	int custom_port;
+};
+
+struct group_des *groups;
+
+/* statistcs */
+struct counters {
+	struct timeval ts;
+	struct my_ctrs *ctrs;
+	uint64_t received_pkts;
+	uint64_t received_bytes;
+	uint64_t non_ip;
+	uint32_t freeq_n;
+	int status __attribute__((aligned(64)));
+#define COUNTERS_EMPTY	0
+#define COUNTERS_FULL	1
+};
+
+struct counters counters_buf;
+
+static void *
+print_stats(void *arg)
+{
+	int npipes = glob_arg.output_rings;
+	int sys_int = 0;
+	(void)arg;
+	struct my_ctrs cur, prev;
+	struct my_ctrs *pipe_prev;
+
+	pipe_prev = calloc(npipes, sizeof(struct my_ctrs));
+	if (pipe_prev == NULL) {
+		D("out of memory");
+		exit(1);
+	}
+
+	char stat_msg[STAT_MSG_MAXSIZE] = "";
+
+	memset(&prev, 0, sizeof(prev));
+	while (!do_abort) {
+		int j, dosyslog = 0, dostdout = 0, newdata;
+		uint64_t pps = 0, dps = 0, bps = 0, dbps = 0, usec = 0;
+		struct my_ctrs x;
+
+		counters_buf.status = COUNTERS_EMPTY;
+		newdata = 0;
+		memset(&cur, 0, sizeof(cur));
+		sleep(1);
+		if (counters_buf.status == COUNTERS_FULL) {
+			__sync_synchronize();
+			newdata = 1;
+			cur.t = counters_buf.ts;
+			if (prev.t.tv_sec || prev.t.tv_usec) {
+				usec = (cur.t.tv_sec - prev.t.tv_sec) * 1000000 +
+					cur.t.tv_usec - prev.t.tv_usec;
+			}
+		}
+
+		++sys_int;
+		if (glob_arg.stdout_interval && sys_int % glob_arg.stdout_interval == 0)
+				dostdout = 1;
+		if (glob_arg.syslog_interval && sys_int % glob_arg.syslog_interval == 0)
+				dosyslog = 1;
+
+		for (j = 0; j < npipes; ++j) {
+			struct my_ctrs *c = &counters_buf.ctrs[j];
+			cur.pkts += c->pkts;
+			cur.drop += c->drop;
+			cur.drop_bytes += c->drop_bytes;
+			cur.bytes += c->bytes;
+
+			if (usec) {
+				x.pkts = c->pkts - pipe_prev[j].pkts;
+				x.drop = c->drop - pipe_prev[j].drop;
+				x.bytes = c->bytes - pipe_prev[j].bytes;
+				x.drop_bytes = c->drop_bytes - pipe_prev[j].drop_bytes;
+				pps = (x.pkts*1000000 + usec/2) / usec;
+				dps = (x.drop*1000000 + usec/2) / usec;
+				bps = ((x.bytes*1000000 + usec/2) / usec) * 8;
+				dbps = ((x.drop_bytes*1000000 + usec/2) / usec) * 8;
+			}
+			pipe_prev[j] = *c;
+
+			if ( (dosyslog || dostdout) && newdata )
+				snprintf(stat_msg, STAT_MSG_MAXSIZE,
+				       "{"
+				       "\"ts\":%.6f,"
+				       "\"interface\":\"%s\","
+				       "\"output_ring\":%" PRIu16 ","
+				       "\"packets_forwarded\":%" PRIu64 ","
+				       "\"packets_dropped\":%" PRIu64 ","
+				       "\"data_forward_rate_Mbps\":%.4f,"
+				       "\"data_drop_rate_Mbps\":%.4f,"
+				       "\"packet_forward_rate_kpps\":%.4f,"
+				       "\"packet_drop_rate_kpps\":%.4f,"
+				       "\"overflow_queue_size\":%" PRIu32
+				       "}", cur.t.tv_sec + (cur.t.tv_usec / 1000000.0),
+				            ports[j].interface,
+				            j,
+				            c->pkts,
+				            c->drop,
+				            (double)bps / 1024 / 1024,
+				            (double)dbps / 1024 / 1024,
+				            (double)pps / 1000,
+				            (double)dps / 1000,
+				            c->oq_n);
+
+			if (dosyslog && stat_msg[0])
+				syslog(LOG_INFO, "%s", stat_msg);
+			if (dostdout && stat_msg[0])
+				printf("%s\n", stat_msg);
+		}
+		if (usec) {
+			x.pkts = cur.pkts - prev.pkts;
+			x.drop = cur.drop - prev.drop;
+			x.bytes = cur.bytes - prev.bytes;
+			x.drop_bytes = cur.drop_bytes - prev.drop_bytes;
+			pps = (x.pkts*1000000 + usec/2) / usec;
+			dps = (x.drop*1000000 + usec/2) / usec;
+			bps = ((x.bytes*1000000 + usec/2) / usec) * 8;
+			dbps = ((x.drop_bytes*1000000 + usec/2) / usec) * 8;
+		}
+
+		if ( (dosyslog || dostdout) && newdata )
+			snprintf(stat_msg, STAT_MSG_MAXSIZE,
+			         "{"
+			         "\"ts\":%.6f,"
+			         "\"interface\":\"%s\","
+			         "\"output_ring\":null,"
+			         "\"packets_received\":%" PRIu64 ","
+			         "\"packets_forwarded\":%" PRIu64 ","
+			         "\"packets_dropped\":%" PRIu64 ","
+			         "\"non_ip_packets\":%" PRIu64 ","
+			         "\"data_forward_rate_Mbps\":%.4f,"
+			         "\"data_drop_rate_Mbps\":%.4f,"
+			         "\"packet_forward_rate_kpps\":%.4f,"
+			         "\"packet_drop_rate_kpps\":%.4f,"
+			         "\"free_buffer_slots\":%" PRIu32
+			         "}", cur.t.tv_sec + (cur.t.tv_usec / 1000000.0),
+			              glob_arg.ifname,
+			              received_pkts,
+			              cur.pkts,
+			              cur.drop,
+			              counters_buf.non_ip,
+			              (double)bps / 1024 / 1024,
+			              (double)dbps / 1024 / 1024,
+			              (double)pps / 1000,
+			              (double)dps / 1000,
+			              counters_buf.freeq_n);
+
+		if (dosyslog && stat_msg[0])
+			syslog(LOG_INFO, "%s", stat_msg);
+		if (dostdout && stat_msg[0])
+			printf("%s\n", stat_msg);
+
+		prev = cur;
+	}
+
+	free(pipe_prev);
+
+	return NULL;
+}
+
+static void
+free_buffers(void)
+{
+	int i, tot = 0;
+	struct port_des *rxport = &ports[glob_arg.output_rings];
+
+	/* build a netmap free list with the buffers in all the overflow queues */
+	for (i = 0; i < glob_arg.output_rings + 1; i++) {
+		struct port_des *cp = &ports[i];
+		struct overflow_queue *q = cp->oq;
+
+		if (!q)
+			continue;
+
+		while (q->n) {
+			struct netmap_slot s = oq_deq(q);
+			uint32_t *b = (uint32_t *)NETMAP_BUF(cp->ring, s.buf_idx);
+
+			*b = rxport->nmd->nifp->ni_bufs_head;
+			rxport->nmd->nifp->ni_bufs_head = s.buf_idx;
+			tot++;
+		}
+	}
+	D("added %d buffers to netmap free list", tot);
+
+	for (i = 0; i < glob_arg.output_rings + 1; ++i) {
+		nm_close(ports[i].nmd);
+	}
+}
+
+
+static void sigint_h(int sig)
+{
+	(void)sig;		/* UNUSED */
+	do_abort = 1;
+	signal(SIGINT, SIG_DFL);
+}
+
+void usage()
+{
+	printf("usage: lb [options]\n");
+	printf("where options are:\n");
+	printf("  -h              	view help text\n");
+	printf("  -i iface        	interface name (required)\n");
+	printf("  -p [prefix:]npipes	add a new group of output pipes\n");
+	printf("  -B nbufs        	number of extra buffers (default: %d)\n", DEF_EXTRA_BUFS);
+	printf("  -b batch        	batch size (default: %d)\n", DEF_BATCH);
+	printf("  -w seconds        	wait for link up (default: %d)\n", DEF_WAIT_LINK);
+	printf("  -W                    enable busy waiting. this will run your CPU at 100%%\n");
+	printf("  -s seconds      	seconds between syslog stats messages (default: 0)\n");
+	printf("  -o seconds      	seconds between stdout stats messages (default: 0)\n");
+	exit(0);
+}
+
+static int
+parse_pipes(char *spec)
+{
+	char *end = index(spec, ':');
+	static int max_groups = 0;
+	struct group_des *g;
+
+	ND("spec %s num_groups %d", spec, glob_arg.num_groups);
+	if (max_groups < glob_arg.num_groups + 1) {
+		size_t size = sizeof(*g) * (glob_arg.num_groups + 1);
+		groups = realloc(groups, size);
+		if (groups == NULL) {
+			D("out of memory");
+			return 1;
+		}
+	}
+	g = &groups[glob_arg.num_groups];
+	memset(g, 0, sizeof(*g));
+
+	if (end != NULL) {
+		if (end - spec > MAX_IFNAMELEN - 8) {
+			D("name '%s' too long", spec);
+			return 1;
+		}
+		if (end == spec) {
+			D("missing prefix before ':' in '%s'", spec);
+			return 1;
+		}
+		strncpy(g->pipename, spec, end - spec);
+		g->custom_port = 1;
+		end++;
+	} else {
+		/* no prefix, this group will use the
+		 * name of the input port.
+		 * This will be set in init_groups(),
+		 * since here the input port may still
+		 * be uninitialized
+		 */
+		end = spec;
+	}
+	if (*end == '\0') {
+		g->nports = DEF_OUT_PIPES;
+	} else {
+		g->nports = atoi(end);
+		if (g->nports < 1) {
+			D("invalid number of pipes '%s' (must be at least 1)", end);
+			return 1;
+		}
+	}
+	glob_arg.output_rings += g->nports;
+	glob_arg.num_groups++;
+	return 0;
+}
+
+/* complete the initialization of the groups data structure */
+void init_groups(void)
+{
+	int i, j, t = 0;
+	struct group_des *g = NULL;
+	for (i = 0; i < glob_arg.num_groups; i++) {
+		g = &groups[i];
+		g->ports = &ports[t];
+		for (j = 0; j < g->nports; j++)
+			g->ports[j].group = g;
+		t += g->nports;
+		if (!g->custom_port)
+			strcpy(g->pipename, glob_arg.base_name);
+		for (j = 0; j < i; j++) {
+			struct group_des *h = &groups[j];
+			if (!strcmp(h->pipename, g->pipename))
+				g->first_id += h->nports;
+		}
+	}
+	g->last = 1;
+}
+
+/* push the packet described by slot rs to the group g.
+ * This may cause other buffers to be pushed down the
+ * chain headed by g.
+ * Return a free buffer.
+ */
+uint32_t forward_packet(struct group_des *g, struct netmap_slot *rs)
+{
+	uint32_t hash = rs->ptr;
+	uint32_t output_port = hash % g->nports;
+	struct port_des *port = &g->ports[output_port];
+	struct netmap_ring *ring = port->ring;
+	struct overflow_queue *q = port->oq;
+
+	/* Move the packet to the output pipe, unless there is
+	 * either no space left on the ring, or there is some
+	 * packet still in the overflow queue (since those must
+	 * take precedence over the new one)
+	*/
+	if (ring->head != ring->tail && (q == NULL || oq_empty(q))) {
+		struct netmap_slot *ts = &ring->slot[ring->head];
+		struct netmap_slot old_slot = *ts;
+
+		ts->buf_idx = rs->buf_idx;
+		ts->len = rs->len;
+		ts->flags |= NS_BUF_CHANGED;
+		ts->ptr = rs->ptr;
+		ring->head = nm_ring_next(ring, ring->head);
+		port->ctr.bytes += rs->len;
+		port->ctr.pkts++;
+		forwarded++;
+		return old_slot.buf_idx;
+	}
+
+	/* use the overflow queue, if available */
+	if (q == NULL || oq_full(q)) {
+		/* no space left on the ring and no overflow queue
+		 * available: we are forced to drop the packet
+		 */
+		dropped++;
+		port->ctr.drop++;
+		port->ctr.drop_bytes += rs->len;
+		return rs->buf_idx;
+	}
+
+	oq_enq(q, rs);
+
+	/*
+	 * we cannot continue down the chain and we need to
+	 * return a free buffer now. We take it from the free queue.
+	 */
+	if (oq_empty(freeq)) {
+		/* the free queue is empty. Revoke some buffers
+		 * from the longest overflow queue
+		 */
+		uint32_t j;
+		struct port_des *lp = &ports[0];
+		uint32_t max = lp->oq->n;
+
+		/* let lp point to the port with the longest queue */
+		for (j = 1; j < glob_arg.output_rings; j++) {
+			struct port_des *cp = &ports[j];
+			if (cp->oq->n > max) {
+				lp = cp;
+				max = cp->oq->n;
+			}
+		}
+
+		/* move the oldest BUF_REVOKE buffers from the
+		 * lp queue to the free queue
+		 */
+		// XXX optimize this cycle
+		for (j = 0; lp->oq->n && j < BUF_REVOKE; j++) {
+			struct netmap_slot tmp = oq_deq(lp->oq);
+
+			dropped++;
+			lp->ctr.drop++;
+			lp->ctr.drop_bytes += tmp.len;
+
+			oq_enq(freeq, &tmp);
+		}
+
+		ND(1, "revoked %d buffers from %s", j, lq->name);
+	}
+
+	return oq_deq(freeq).buf_idx;
+}
+
+int main(int argc, char **argv)
+{
+	int ch;
+	uint32_t i;
+	int rv;
+	unsigned int iter = 0;
+	int poll_timeout = 10; /* default */
+
+	glob_arg.ifname[0] = '\0';
+	glob_arg.output_rings = 0;
+	glob_arg.batch = DEF_BATCH;
+	glob_arg.wait_link = DEF_WAIT_LINK;
+	glob_arg.busy_wait = false;
+	glob_arg.syslog_interval = 0;
+	glob_arg.stdout_interval = 0;
+
+	while ( (ch = getopt(argc, argv, "hi:p:b:B:s:o:w:W")) != -1) {
+		switch (ch) {
+		case 'i':
+			D("interface is %s", optarg);
+			if (strlen(optarg) > MAX_IFNAMELEN - 8) {
+				D("ifname too long %s", optarg);
+				return 1;
+			}
+			if (strncmp(optarg, "netmap:", 7) && strncmp(optarg, "vale", 4)) {
+				sprintf(glob_arg.ifname, "netmap:%s", optarg);
+			} else {
+				strcpy(glob_arg.ifname, optarg);
+			}
+			break;
+
+		case 'p':
+			if (parse_pipes(optarg)) {
+				usage();
+				return 1;
+			}
+			break;
+
+		case 'B':
+			glob_arg.extra_bufs = atoi(optarg);
+			D("requested %d extra buffers", glob_arg.extra_bufs);
+			break;
+
+		case 'b':
+			glob_arg.batch = atoi(optarg);
+			D("batch is %d", glob_arg.batch);
+			break;
+
+		case 'w':
+			glob_arg.wait_link = atoi(optarg);
+			D("link wait for up time is %d", glob_arg.wait_link);
+			break;
+
+		case 'W':
+			glob_arg.busy_wait = true;
+			break;
+
+		case 'o':
+			glob_arg.stdout_interval = atoi(optarg);
+			break;
+
+		case 's':
+			glob_arg.syslog_interval = atoi(optarg);
+			break;
+
+		case 'h':
+			usage();
+			return 0;
+			break;
+
+		default:
+			D("bad option %c %s", ch, optarg);
+			usage();
+			return 1;
+		}
+	}
+
+	if (glob_arg.ifname[0] == '\0') {
+		D("missing interface name");
+		usage();
+		return 1;
+	}
+
+	/* extract the base name */
+	char *nscan = strncmp(glob_arg.ifname, "netmap:", 7) ?
+			glob_arg.ifname : glob_arg.ifname + 7;
+	strncpy(glob_arg.base_name, nscan, MAX_IFNAMELEN-1);
+	for (nscan = glob_arg.base_name; *nscan && !index("-*^{}/@", *nscan); nscan++)
+		;
+	*nscan = '\0';
+
+	if (glob_arg.num_groups == 0)
+		parse_pipes("");

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-stable@freebsd.org  Mon Dec  3 19:02:16 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 047D4132FA31;
 Mon,  3 Dec 2018 19:02:16 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 7EA6D8F5E3;
 Mon,  3 Dec 2018 19:02:15 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 457891A11A;
 Mon,  3 Dec 2018 19:02:15 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3J2FQj049142;
 Mon, 3 Dec 2018 19:02:15 GMT (envelope-from gjb@FreeBSD.org)
Received: (from gjb@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3J2FMD049141;
 Mon, 3 Dec 2018 19:02:15 GMT (envelope-from gjb@FreeBSD.org)
Message-Id: <201812031902.wB3J2FMD049141@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org
 using -f
From: Glen Barber <gjb@FreeBSD.org>
Date: Mon, 3 Dec 2018 19:02:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341436 - stable/11/release/doc/share/xml
X-SVN-Group: stable-11
X-SVN-Commit-Author: gjb
X-SVN-Commit-Paths: stable/11/release/doc/share/xml
X-SVN-Commit-Revision: 341436
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 7EA6D8F5E3
X-Spamd-Result: default: False [-0.07 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.41)[-0.406,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.33)[0.330,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 19:02:16 -0000

Author: gjb
Date: Mon Dec  3 19:02:14 2018
New Revision: 341436
URL: https://svnweb.freebsd.org/changeset/base/341436

Log:
  Document SA-18:13, EN-18:13, EN-18:14, EN-18:15.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  stable/11/release/doc/share/xml/errata.xml
  stable/11/release/doc/share/xml/security.xml

Modified: stable/11/release/doc/share/xml/errata.xml
==============================================================================
--- stable/11/release/doc/share/xml/errata.xml	Mon Dec  3 18:00:46 2018	(r341435)
+++ stable/11/release/doc/share/xml/errata.xml	Mon Dec  3 19:02:14 2018	(r341436)
@@ -57,6 +57,29 @@
 	<entry><para>Small kernel memory disclosures in two system
 	    calls</para></entry>
       </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-EN-18:13.icmp.asc">FreeBSD-EN-18:13.icmp</link></entry>
+	<entry>27&nbsp;November&nbsp;2018</entry>
+	<entry><para>ICMP buffer underwrite</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-EN-18:14.tzdata.asc">FreeBSD-EN-18:14.tzdata</link></entry>
+	<entry>27&nbsp;November&nbsp;2018</entry>
+	<entry><para>Timezone database information
+	    update</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-EN-18:15.loader.asc">FreeBSD-EN-18:15.loader</link></entry>
+	<entry>27&nbsp;November&nbsp;2018</entry>
+	<entry><para>Deferred kernel loading breaks loader
+	    password</para></entry>
+      </row>
     </tbody>
   </tgroup>
 </informaltable>

Modified: stable/11/release/doc/share/xml/security.xml
==============================================================================
--- stable/11/release/doc/share/xml/security.xml	Mon Dec  3 18:00:46 2018	(r341435)
+++ stable/11/release/doc/share/xml/security.xml	Mon Dec  3 19:02:14 2018	(r341436)
@@ -56,6 +56,13 @@
 	<entry>12&nbsp;September&nbsp;2018</entry>
 	<entry><para>Improper ELF header parsing</para></entry>
       </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-18:13.nfs.asc">FreeBSD-SA-18:13.nfs</link></entry>
+	<entry>27&nbsp;November&nbsp;2018</entry>
+	<entry><para>Multiple vulnerabilities</para></entry>
+      </row>
     </tbody>
   </tgroup>
 </informaltable>

From owner-svn-src-stable@freebsd.org  Mon Dec  3 22:02:09 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 867B0130CEB5;
 Mon,  3 Dec 2018 22:02:09 +0000 (UTC) (envelope-from kp@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 2E10C7141B;
 Mon,  3 Dec 2018 22:02:09 +0000 (UTC) (envelope-from kp@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0F0911BF47;
 Mon,  3 Dec 2018 22:02:09 +0000 (UTC) (envelope-from kp@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB3M28pI047394;
 Mon, 3 Dec 2018 22:02:08 GMT (envelope-from kp@FreeBSD.org)
Received: (from kp@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB3M28sX047393;
 Mon, 3 Dec 2018 22:02:08 GMT (envelope-from kp@FreeBSD.org)
Message-Id: <201812032202.wB3M28sX047393@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kp set sender to kp@FreeBSD.org
 using -f
From: Kristof Provost <kp@FreeBSD.org>
Date: Mon, 3 Dec 2018 22:02:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341444 - stable/12/sbin/pfctl/tests/files
X-SVN-Group: stable-12
X-SVN-Commit-Author: kp
X-SVN-Commit-Paths: stable/12/sbin/pfctl/tests/files
X-SVN-Commit-Revision: 341444
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 2E10C7141B
X-Spamd-Result: default: False [-0.15 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.41)[-0.406,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.25)[0.246,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Dec 2018 22:02:09 -0000

Author: kp
Date: Mon Dec  3 22:02:08 2018
New Revision: 341444
URL: https://svnweb.freebsd.org/changeset/base/341444

Log:
  MFC r339627:
  
  pf tests: Fix incorrect test for PR 231323
  
  Fix r339466.  The test result file did not list the rdr rule.
  Additionally, the route-to rule needs a redirection address.
  
  PR:		233739

Modified:
  stable/12/sbin/pfctl/tests/files/pf1005.in
  stable/12/sbin/pfctl/tests/files/pf1005.ok
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sbin/pfctl/tests/files/pf1005.in
==============================================================================
--- stable/12/sbin/pfctl/tests/files/pf1005.in	Mon Dec  3 21:07:10 2018	(r341443)
+++ stable/12/sbin/pfctl/tests/files/pf1005.in	Mon Dec  3 22:02:08 2018	(r341444)
@@ -1,3 +1,3 @@
 rdr on em0 proto tcp from any to any -> 1.1.1.1 port 2121
-pass out log quick on lo0 route-to lo0 from any to any
-pass in log quick on lo0 route-to (lo0 localhost) from any to any
+pass out log quick on lo0 route-to (lo0 localhost) inet from any to any
+pass in log quick on lo0 route-to (lo0 localhost) inet6 from any to any

Modified: stable/12/sbin/pfctl/tests/files/pf1005.ok
==============================================================================
--- stable/12/sbin/pfctl/tests/files/pf1005.ok	Mon Dec  3 21:07:10 2018	(r341443)
+++ stable/12/sbin/pfctl/tests/files/pf1005.ok	Mon Dec  3 22:02:08 2018	(r341444)
@@ -1,2 +1,3 @@
-pass out log quick on lo0 route-to (lo0 ?) all flags S/SA keep state
+rdr on em0 inet proto tcp all -> 1.1.1.1 port 2121
+pass out log quick on lo0 route-to (lo0 127.0.0.1) inet all flags S/SA keep state
 pass in log quick on lo0 route-to (lo0 ::1) inet6 all flags S/SA keep state

From owner-svn-src-stable@freebsd.org  Tue Dec  4 00:41:13 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2536A130FE10;
 Tue,  4 Dec 2018 00:41:13 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id BE8E176837;
 Tue,  4 Dec 2018 00:41:12 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9F8121D86B;
 Tue,  4 Dec 2018 00:41:12 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB40fC2n027181;
 Tue, 4 Dec 2018 00:41:12 GMT (envelope-from eugen@FreeBSD.org)
Received: (from eugen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB40fCm4027180;
 Tue, 4 Dec 2018 00:41:12 GMT (envelope-from eugen@FreeBSD.org)
Message-Id: <201812040041.wB40fCm4027180@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: eugen set sender to
 eugen@FreeBSD.org using -f
From: Eugene Grosbein <eugen@FreeBSD.org>
Date: Tue, 4 Dec 2018 00:41:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341451 - stable/12/sbin/ipfw
X-SVN-Group: stable-12
X-SVN-Commit-Author: eugen
X-SVN-Commit-Paths: stable/12/sbin/ipfw
X-SVN-Commit-Revision: 341451
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: BE8E176837
X-Spamd-Result: default: False [-0.15 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.39)[0.391,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 00:41:13 -0000

Author: eugen
Date: Tue Dec  4 00:41:12 2018
New Revision: 341451
URL: https://svnweb.freebsd.org/changeset/base/341451

Log:
  MFC r340110: ipfw(8): clarify layer2 processing abilities
  
  Make it clear that ipfw action set for layer2 frames is a bit limited.
  
  PR:		59835
  Reviewed by:		yuripv
  Differential Revision:	https://reviews.freebsd.org/D17719

Modified:
  stable/12/sbin/ipfw/ipfw.8
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sbin/ipfw/ipfw.8
==============================================================================
--- stable/12/sbin/ipfw/ipfw.8	Tue Dec  4 00:22:08 2018	(r341450)
+++ stable/12/sbin/ipfw/ipfw.8	Tue Dec  4 00:41:12 2018	(r341451)
@@ -511,6 +511,27 @@ ipfw add 10 skipto 4000 all from any to any layer2 out
 .Pp
 (yes, at the moment there is no way to differentiate between
 ether_demux and bdg_forward).
+.Pp
+Also note that only actions
+.Cm allow,
+.Cm deny,
+.Cm netgraph,
+.Cm ngtee
+and related to
+.Cm dummynet
+are processed for
+.Cm layer2
+frames and all other actions act as if they were
+.Cm allow
+for such frames.
+Full set of actions is supported for IP packets without
+.Cm layer2
+headers only.
+For example,
+.Cm divert
+action does not divert
+.Cm layer2
+frames.
 .Sh SYNTAX
 In general, each keyword or argument must be provided as
 a separate command line argument, with no leading or trailing

From owner-svn-src-stable@freebsd.org  Tue Dec  4 02:30:12 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C992D131A12F;
 Tue,  4 Dec 2018 02:30:12 +0000 (UTC) (envelope-from ygy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 6DE247E1DB;
 Tue,  4 Dec 2018 02:30:12 +0000 (UTC) (envelope-from ygy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4EE751EF80;
 Tue,  4 Dec 2018 02:30:12 +0000 (UTC) (envelope-from ygy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB42UC2J083544;
 Tue, 4 Dec 2018 02:30:12 GMT (envelope-from ygy@FreeBSD.org)
Received: (from ygy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB42UCos083543;
 Tue, 4 Dec 2018 02:30:12 GMT (envelope-from ygy@FreeBSD.org)
Message-Id: <201812040230.wB42UCos083543@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ygy set sender to ygy@FreeBSD.org
 using -f
From: Guangyuan Yang <ygy@FreeBSD.org>
Date: Tue, 4 Dec 2018 02:30:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341452 - stable/12/bin/pkill
X-SVN-Group: stable-12
X-SVN-Commit-Author: ygy
X-SVN-Commit-Paths: stable/12/bin/pkill
X-SVN-Commit-Revision: 341452
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6DE247E1DB
X-Spamd-Result: default: False [-0.06 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 NEURAL_SPAM_SHORT(0.48)[0.481,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 02:30:13 -0000

Author: ygy (doc committer)
Date: Tue Dec  4 02:30:11 2018
New Revision: 341452
URL: https://svnweb.freebsd.org/changeset/base/341452

Log:
  MFC r341357:
  
  Clarify that patterns are extended regular expressions in pkill(1) manual page.
  
  PR:		231060
  Submitted by:	naddy

Modified:
  stable/12/bin/pkill/pkill.1
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/bin/pkill/pkill.1
==============================================================================
--- stable/12/bin/pkill/pkill.1	Tue Dec  4 00:41:12 2018	(r341451)
+++ stable/12/bin/pkill/pkill.1	Tue Dec  4 02:30:11 2018	(r341452)
@@ -29,7 +29,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd June 5, 2017
+.Dd December 1, 2018
 .Dt PKILL 1
 .Os
 .Sh NAME
@@ -221,7 +221,7 @@ This option is valid only when given as the first argu
 .Pp
 If any
 .Ar pattern
-operands are specified, they are used as regular expressions to match
+operands are specified, they are used as extended regular expressions to match
 the command name or full argument list of each process.
 If the
 .Fl f

From owner-svn-src-stable@freebsd.org  Tue Dec  4 07:30:03 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 16BAF1326F60;
 Tue,  4 Dec 2018 07:30:03 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id BAFE36A7A3;
 Tue,  4 Dec 2018 07:30:02 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9C8522204D;
 Tue,  4 Dec 2018 07:30:02 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB47U2v6038073;
 Tue, 4 Dec 2018 07:30:02 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB47U25s038071;
 Tue, 4 Dec 2018 07:30:02 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812040730.wB47U25s038071@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 07:30:02 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341457 - stable/11/tools/tools/netmap
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/tools/tools/netmap
X-SVN-Commit-Revision: 341457
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: BAFE36A7A3
X-Spamd-Result: default: False [0.25 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.42)[-0.423,0];
 NEURAL_SPAM_LONG(0.19)[0.192,0];
 NEURAL_SPAM_SHORT(0.48)[0.485,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 07:30:03 -0000

Author: vmaffione
Date: Tue Dec  4 07:30:02 2018
New Revision: 341457
URL: https://svnweb.freebsd.org/changeset/base/341457

Log:
  MFC r340325
  
  netmap: pkt-gen: several updates from upstream
  
  Various improvements to the netmap pkt-gen program:
  
   - indentation fixes
   - support for IPV6
   - fixes to checksum computation
   - support for NS_MOREFRAG
   - rate limiting in ping mode
  
  Reviewed by:    bcr, 0mp
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17698

Modified:
  stable/11/tools/tools/netmap/pkt-gen.8
  stable/11/tools/tools/netmap/pkt-gen.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/tools/tools/netmap/pkt-gen.8
==============================================================================
--- stable/11/tools/tools/netmap/pkt-gen.8	Tue Dec  4 06:11:04 2018	(r341456)
+++ stable/11/tools/tools/netmap/pkt-gen.8	Tue Dec  4 07:30:02 2018	(r341457)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 23, 2018
+.Dd October 31, 2018
 .Dt PKT-GEN 8
 .Os
 .Sh NAME
@@ -36,96 +36,215 @@
 .Bl -item -compact
 .It
 .Nm
+.Op Fl h46XzZNIWvrAB
 .Op Fl i Ar interface
 .Op Fl f Ar function
 .Op Fl n Ar count
-.Op Fl t Ar pkts_to_send
-.Op Fl r Ar pkts_to_receive
 .Op Fl l Ar pkt_size
+.Op Fl b Ar burst_size
 .Op Fl d Ar dst_ip[:port[-dst_ip:port]]
 .Op Fl s Ar src_ip[:port[-src_ip:port]]
-.Op Fl D Ar dst-mac
-.Op Fl S Ar src-mac
+.Op Fl D Ar dst_mac
+.Op Fl S Ar src_mac
 .Op Fl a Ar cpu_id
-.Op Fl b Ar burst size
-.Op Fl c Ar cores
+.Op Fl c Ar cpus
 .Op Fl p Ar threads
 .Op Fl T Ar report_ms
-.Op Fl P
+.Op Fl P Ar file
 .Op Fl w Ar wait_for_link_time
 .Op Fl R Ar rate
-.Op Fl X
 .Op Fl H Ar len
-.Op Fl P Ar xfile
-.Op Fl z
-.Op Fl Z
+.Op Fl F Ar num_frags
+.Op Fl M Ar frag_size
+.Op Fl C Ar port_config
+.El
 .Sh DESCRIPTION
 .Nm
-generates and receives raw network packets using
-.Xr netmap 4 .
+leverages
+.Xr netmap 4
+to generate and receive raw network packets in batches.
 The arguments are as follows:
-.Pp
 .Bl -tag -width Ds
+.It Fl h
+Show program usage and exit.
 .It Fl i Ar interface
-Network interface name.
-.It Fl f Ar function tx rx ping pong
-Set the function to transmit, receive of ping/pong.
-.It Fl n count
-Number of iterations (can be 0).
-.It Fl t pkts_to_send
-Number of packets to send.  Also forces transmit mode.
-.It Fl r Ar pkts_to_receive
-Number of packets to receive.  Also forces rx mode.
+Name of the network interface that
+.Nm
+operates on.
+It can be a system network interface (e.g., em0),
+the name of a
+.Xr vale 4
+port (e.g., valeSSS:PPP), the name of a netmap pipe or monitor,
+or any valid netmap port name accepted by the
+.Ar nm_open
+library function, as documented in
+.Xr netmap 4
+(NIOCREGIF section).
+.It Fl f Ar function
+The function to be executed by
+.Nm .
+Specify
+.Cm tx
+for transmission,
+.Cm rx
+for reception,
+.Cm ping
+for client-side ping-pong operation, and
+.Cm pong
+for server-side ping-pong operation.
+.It Fl n Ar count
+Number of iterations of the
+.Nm
+function, with 0 meaning infinite).
+In case of
+.Cm tx
+or
+.Cm rx ,
+.Ar count
+is the number of packets to receive or transmit.
+In case of
+.Cm ping
+or
+.Cm pong ,
+.Ar count
+is the number of ping-pong transactions.
 .It Fl l Ar pkt_size
 Packet size in bytes excluding CRC.
+If passed a second time, use random sizes larger or equal than the
+second one and lower than the first one.
+.It Fl b Ar burst_size
+Transmit or receive up to
+.Ar burst_size
+packets at a time.
+.It Fl 4
+Use IPv4 addresses.
+.It Fl 6
+Use IPv6 addresses.
 .It Fl d Ar dst_ip[:port[-dst_ip:port]]
-Destination IPv4 address and port, single or range.
+Destination IPv4/IPv6 address and port, single or range.
 .It Fl s Ar src_ip[:port[-src_ip:port]]
-Source IPv4 address and port, single or range.
-.It Fl D Ar dst-mac
-Destination MAC address in colon notation.
-.It Fl S Ar src-mac
+Source IPv4/IPv6 address and port, single or range.
+.It Fl D Ar dst_mac
+Destination MAC address in colon notation (e.g., aa:bb:cc:dd:ee:00).
+.It Fl S Ar src_mac
 Source MAC address in colon notation.
 .It Fl a Ar cpu_id
-Tie
+Pin the first thread of
 .Nm
-to a particular CPU core using
-.Xr setaffinity 2.
-.It Fl b Ar burst size
-Set the size of a burst of packets.
-.It Fl c Ar cores
-Number of cores to use.
+to a particular CPU using
+.Xr pthread_setaffinity_np 3 .
+If more threads are used, they are pinned to the subsequent CPUs,
+one per thread.
+.It Fl c Ar cpus
+Maximum number of CPUs to use (0 means to use all the available ones).
 .It Fl p Ar threads
 Number of threads to use.
+By default, only a single thread is used
+to handle all the netmap rings.
+If
+.Ar threads
+is larger than one, each thread handles a single TX ring (in
+.Cm tx
+mode), a single RX ring (in
+.Cm rx
+mode), or a TX/RX ring couple.
+The number of
+.Ar threads
+must be less or equal than the number of TX (or RX) ring available
+in the device specified by
+.Ar interface .
 .It Fl T Ar report_ms
 Number of milliseconds between reports.
-.It Fl P
-Use libpcap instead of netmap for reading or writing.
 .It Fl w Ar wait_for_link_time
-Number of seconds to wait to make sure that the network link is up.  A
-network device driver may take some time to create a new
-transmit/receive ring pair when
+Number of seconds to wait before starting the
+.Nm
+function, useuful to make sure that the network link is up.
+A network device driver may take some time to enter netmap mode, or
+to create a new transmit/receive ring pair when
 .Xr netmap 4
 requests one.
 .It Fl R Ar rate
-Packet transmission rate.  Not setting the packet transmission rate tells
+Packet transmission rate.
+Not setting the packet transmission rate tells
 .Nm
-to transmit packets as quickly as possible.  On servers from 2010 on-wards
+to transmit packets as quickly as possible.
+On servers from 2010 on-wards
 .Xr netmap 4
 is able to completely use all of the bandwidth of a 10 or 40Gbps link,
 so this option should be used unless your intention is to saturate the link.
 .It Fl X
-Dump payload transmitted or received.
+Dump payload of each packet transmitted or received.
 .It Fl H Ar len
-Add empty virtio-net-header with size 'len'.  This option is only use
-with Virtual Machine technologies that use virtio as a network interface.
+Add empty virtio-net-header with size
+.Ar len .
+Valid sizes are 0, 10 and 12.
+This option is only used with Virtual Machine technologies that use virtio
+as a network interface.
 .It Fl P Ar file
-Load the packet from a pcap file rather than constructing it inside of
-.Nm
+Load the packet to be transmitted from a pcap file rather than constructing
+it within
+.Nm .
 .It Fl z
-Use random IPv4 src address/port
+Use random IPv4/IPv6 src address/port.
 .It Fl Z
-Use random IPv4 dst address/port
+Use random IPv4/IPv6 dst address/port.
+.It Fl N
+Do not normalize units (i.e., use bps, pps instead of Mbps, Kpps, etc.).
+.It Fl F Ar num_frags
+Send multi-slot packets, each one with
+.Ar num_frags
+fragments.
+A multi-slot packet is represented by two or more consecutive netmap slots
+with the
+.Ar NS_MOREFRAG
+flag set (except for the last slot).
+This is useful to transmit or receive packets larger than the netmap
+buffer size.
+.It Fl M Ar frag_size
+In multi-slot mode,
+.Ar frag_size
+specifies the size of each fragment, if smaller than the packet length
+divided by
+.Ar num_frags .
+.It Fl I
+Use indirect buffers.
+It is only valid for transmitting on VALE ports,
+and it is implemented by setting the
+.Ar NS_INDIRECT
+flag in the netmap slots.
+.It Fl W
+Exit immediately if all the RX rings are empty the first time they are
+examined.
+.It Fl v
+Increase the verbosity level.
+.It Fl r
+In
+.Cm tx
+mode, do not initialize packets, but send whatever the content of
+the uninitialized netmap buffers is (rubbish mode).
+.It Fl A
+Compute mean and standard deviation (over a sliding window) for the
+transmit or receive rate.
+.It Fl B
+Take Ethernet framing and CRC into account when computing the average bps.
+This adds 4 bytes of CRC and 20 bytes of framing to each packet.
+.It Fl C Ar tx_slots Ns Oo Cm \&, Ns Ar rx_slots Ns Oo Cm \&, Ns Ar tx_rings Ns Oo Cm \&, Ns Ar rx_rings Oc Oc Oc
+Configuration in terms of number of rings and slots to be used when
+opening the netmap port.
+Such configuration has effect on software ports
+created on the fly, such as VALE ports and netmap pipes.
+The configuration may consist of 1 to 4 numbers separated by commas:
+.Dq tx_slots,rx_slots,tx_rings,rx_rings .
+Missing numbers or zeroes stand for default values.
+As an additional convenience, if exactly one number is specified,
+then this is assigned to both
+.Ar tx_slots
+and
+.Ar rx_slots .
+If there is no fourth number, then the third one is assigned to both
+.Ar tx_rings
+and
+.Ar rx_rings .
 .El
 .Pp
 .Nm
@@ -133,7 +252,7 @@ is a raw packet generator that can utilize either
 .Xr netmap 4
 or
 .Xr bpf 4
-but which is most often uses with
+but which is most often used with
 .Xr netmap 4 .
 The
 .Ar interface name
@@ -146,7 +265,8 @@ system to balance traffic across the interface.
 .Nm
 can peel off one or more of the transmit or receive rings for its own
 use without interfering with packets that might otherwise be destined
-for the host.  For example on a system with a Chelsio Network
+for the host.
+For example on a system with a Chelsio Network
 Interface Card (NIC) the interface specification of
 .Ar -i netmap:ncxl0
 gives
@@ -156,20 +276,20 @@ the more commonly known cxl0 interface, which is used 
 system's TCP/IP stack.
 .Sh EXAMPLES
 Capture and count all packets arriving on the operating system's cxl0
-interface.  Using this will block packets from reaching the operating
+interface.
+Using this will block packets from reaching the operating
 system's network stack.
-.Dl
+.Bd -literal -offset indent
+pkt-gen -i cxl0 -f rx
+.Ed
 .Pp
-.Nm
--i cxl0 -f rx
-.Pp
 Send a stream of fake DNS packets between two hosts with a packet
-length of 128 bytes.  You must set the destination MAC address for
+length of 128 bytes.
+You must set the destination MAC address for
 packets to be received by the target host.
-.Pp
-.Dl
-.Nm
--i netmap:ncxl0 -f tx -s 172.16.0.1:53 -d 172.16.1.3:53 -D 00:07:43:29:2a:e0 
+.Bd -literal -offset intent
+pkt-gen -i netmap:ncxl0 -f tx -s 172.16.0.1:53 -d 172.16.1.3:53 -D 00:07:43:29:2a:e0
+.Ed
 .Sh SEE ALSO
 .Xr netmap 4 ,
 .Xr bridge 8

Modified: stable/11/tools/tools/netmap/pkt-gen.c
==============================================================================
--- stable/11/tools/tools/netmap/pkt-gen.c	Tue Dec  4 06:11:04 2018	(r341456)
+++ stable/11/tools/tools/netmap/pkt-gen.c	Tue Dec  4 07:30:02 2018	(r341457)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2011-2014 Matteo Landi, Luigi Rizzo. All rights reserved.
- * Copyright (C) 2013-2014 Universita` di Pisa. All rights reserved.
+ * Copyright (C) 2013-2015 Universita` di Pisa. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -37,8 +37,6 @@
  *
  */
 
-// #define TRASH_VHOST_HDR
-
 #define _GNU_SOURCE	/* for CPU_SET() */
 #include <stdio.h>
 #define NETMAP_WITH_LIBS
@@ -49,12 +47,21 @@
 #include <unistd.h>	// sysconf()
 #include <sys/poll.h>
 #include <arpa/inet.h>	/* ntohs */
+#ifndef _WIN32
 #include <sys/sysctl.h>	/* sysctl */
+#endif
 #include <ifaddrs.h>	/* getifaddrs */
 #include <net/ethernet.h>
 #include <netinet/in.h>
 #include <netinet/ip.h>
 #include <netinet/udp.h>
+#include <netinet/ip6.h>
+#ifdef linux
+#define IPV6_VERSION	0x60
+#define IPV6_DEFHLIM	64
+#endif
+#include <assert.h>
+#include <math.h>
 
 #include <pthread.h>
 
@@ -62,6 +69,71 @@
 #include <pcap/pcap.h>
 #endif
 
+#include "ctrs.h"
+
+static void usage(int);
+
+#ifdef _WIN32
+#define cpuset_t        DWORD_PTR   //uint64_t
+static inline void CPU_ZERO(cpuset_t *p)
+{
+	*p = 0;
+}
+
+static inline void CPU_SET(uint32_t i, cpuset_t *p)
+{
+	*p |= 1<< (i & 0x3f);
+}
+
+#define pthread_setaffinity_np(a, b, c) !SetThreadAffinityMask(a, *c)    //((void)a, 0)
+#define TAP_CLONEDEV	"/dev/tap"
+#define AF_LINK	18	//defined in winsocks.h
+#define CLOCK_REALTIME_PRECISE CLOCK_REALTIME
+#include <net/if_dl.h>
+
+/*
+ * Convert an ASCII representation of an ethernet address to
+ * binary form.
+ */
+struct ether_addr *
+ether_aton(const char *a)
+{
+	int i;
+	static struct ether_addr o;
+	unsigned int o0, o1, o2, o3, o4, o5;
+
+	i = sscanf(a, "%x:%x:%x:%x:%x:%x", &o0, &o1, &o2, &o3, &o4, &o5);
+
+	if (i != 6)
+		return (NULL);
+
+	o.octet[0]=o0;
+	o.octet[1]=o1;
+	o.octet[2]=o2;
+	o.octet[3]=o3;
+	o.octet[4]=o4;
+	o.octet[5]=o5;
+
+	return ((struct ether_addr *)&o);
+}
+
+/*
+ * Convert a binary representation of an ethernet address to
+ * an ASCII string.
+ */
+char *
+ether_ntoa(const struct ether_addr *n)
+{
+	int i;
+	static char a[18];
+
+	i = sprintf(a, "%02x:%02x:%02x:%02x:%02x:%02x",
+	    n->octet[0], n->octet[1], n->octet[2],
+	    n->octet[3], n->octet[4], n->octet[5]);
+	return (i < 17 ? NULL : (char *)&a);
+}
+#endif /* _WIN32 */
+
 #ifdef linux
 
 #define cpuset_t        cpu_set_t
@@ -90,12 +162,12 @@
 #define cpuset_t        uint64_t        // XXX
 static inline void CPU_ZERO(cpuset_t *p)
 {
-        *p = 0;
+	*p = 0;
 }
 
 static inline void CPU_SET(uint32_t i, cpuset_t *p)
 {
-        *p |= 1<< (i & 0x3f);
+	*p |= 1<< (i & 0x3f);
 }
 
 #define pthread_setaffinity_np(a, b, c) ((void)a, 0)
@@ -104,7 +176,7 @@ static inline void CPU_SET(uint32_t i, cpuset_t *p)
 #define IFF_PPROMISC   IFF_PROMISC
 #include <net/if_dl.h>  /* LLADDR */
 #define clock_gettime(a,b)      \
-        do {struct timespec t0 = {0,0}; *(b) = t0; } while (0)
+	do {struct timespec t0 = {0,0}; *(b) = t0; } while (0)
 #endif  /* __APPLE__ */
 
 const char *default_payload="netmap pkt-gen DIRECT payload\n"
@@ -114,10 +186,8 @@ const char *indirect_payload="netmap pkt-gen indirect 
 	"http://info.iet.unipi.it/~luigi/netmap/ ";
 
 int verbose = 0;
+int normalize = 1;
 
-#define SKIP_PAYLOAD 1 /* do not check payload. XXX unused */
-
-
 #define VIRT_HDR_1	10	/* length of a base vnet-hdr */
 #define VIRT_HDR_2	12	/* length of the extenede vnet-hdr */
 #define VIRT_HDR_MAX	VIRT_HDR_2
@@ -130,14 +200,34 @@ struct virt_header {
 struct pkt {
 	struct virt_header vh;
 	struct ether_header eh;
-	struct ip ip;
-	struct udphdr udp;
-	uint8_t body[MAX_BODYSIZE];	// XXX hardwired
+	union {
+		struct {
+			struct ip ip;
+			struct udphdr udp;
+			uint8_t body[MAX_BODYSIZE];	/* hardwired */
+		} ipv4;
+		struct {
+			struct ip6_hdr ip;
+			struct udphdr udp;
+			uint8_t body[MAX_BODYSIZE];	/* hardwired */
+		} ipv6;
+	};
 } __attribute__((__packed__));
 
+#define	PKT(p, f, af)	\
+    ((af) == AF_INET ? (p)->ipv4.f: (p)->ipv6.f)
+
 struct ip_range {
 	char *name;
-	uint32_t start, end; /* same as struct in_addr */
+	union {
+		struct {
+			uint32_t start, end; /* same as struct in_addr */
+		} ipv4;
+		struct {
+			struct in6_addr start, end;
+			uint8_t sgroup, egroup;
+		} ipv6;
+	};
 	uint16_t port0, port1;
 };
 
@@ -162,17 +252,22 @@ struct tstamp {
  */
 
 struct glob_arg {
+	int af;		/* address family AF_INET/AF_INET6 */
 	struct ip_range src_ip;
 	struct ip_range dst_ip;
 	struct mac_range dst_mac;
 	struct mac_range src_mac;
 	int pkt_size;
+	int pkt_min_size;
 	int burst;
 	int forever;
-	int npackets;	/* total packets to send */
-	int frags;	/* fragments per packet */
+	uint64_t npackets;	/* total packets to send */
+	int frags;		/* fragments per packet */
+	u_int mtu;		/* size of each fragment */
 	int nthreads;
-	int cpus;
+	int cpus;	/* cpus used for running */
+	int system_cpus;	/* cpus on the system */
+
 	int options;	/* testing */
 #define OPT_PREFETCH	1
 #define OPT_ACCESS	2
@@ -181,10 +276,10 @@ struct glob_arg {
 #define OPT_TS		16	/* add a timestamp */
 #define OPT_INDIRECT	32	/* use indirect buffers, tx only */
 #define OPT_DUMP	64	/* dump rx/tx traffic */
-#define OPT_MONITOR_TX  128
-#define OPT_MONITOR_RX  256
+#define OPT_RUBBISH	256	/* send wathever the buffers contain */
 #define OPT_RANDOM_SRC  512
 #define OPT_RANDOM_DST  1024
+#define OPT_PPS_STATS   2048
 	int dev_type;
 #ifndef NO_PCAP
 	pcap_t *p;
@@ -198,13 +293,18 @@ struct glob_arg {
 	struct nm_desc *nmd;
 	int report_interval;		/* milliseconds between prints */
 	void *(*td_body)(void *);
+	int td_type;
 	void *mmap_addr;
 	char ifname[MAX_IFNAMELEN];
 	char *nmr_config;
 	int dummy_send;
 	int virt_header;	/* send also the virt_header */
-	int extra_bufs;		/* goes in nr_arg3 */
 	char *packet_file;	/* -P option */
+#define	STATS_WIN	15
+	int win_idx;
+	int64_t win[STATS_WIN];
+	int wait_link;
+	int framing;		/* #bits of framing (for bw output) */
 };
 enum dev_type { DEV_NONE, DEV_NETMAP, DEV_PCAP, DEV_TAP };
 
@@ -220,7 +320,11 @@ struct targ {
 	int cancel;
 	int fd;
 	struct nm_desc *nmd;
-	volatile uint64_t count;
+	/* these ought to be volatile, but they are
+	 * only sampled and errors should not accumulate
+	 */
+	struct my_ctrs ctr;
+
 	struct timespec tic, toc;
 	int me;
 	pthread_t thread;
@@ -228,79 +332,166 @@ struct targ {
 
 	struct pkt pkt;
 	void *frame;
+	uint16_t seed[3];
+	u_int frags;
+	u_int frag_size;
 };
 
+static __inline uint16_t
+cksum_add(uint16_t sum, uint16_t a)
+{
+	uint16_t res;
 
+	res = sum + a;
+	return (res + (res < a));
+}
+
+static void
+extract_ipv4_addr(char *name, uint32_t *addr, uint16_t *port)
+{
+	struct in_addr a;
+	char *pp;
+
+	pp = strchr(name, ':');
+	if (pp != NULL) {	/* do we have ports ? */
+		*pp++ = '\0';
+		*port = (uint16_t)strtol(pp, NULL, 0);
+	}
+
+	inet_pton(AF_INET, name, &a);
+	*addr = ntohl(a.s_addr);
+}
+
+static void
+extract_ipv6_addr(char *name, struct in6_addr *addr, uint16_t *port,
+    uint8_t *group)
+{
+	char *pp;
+
+	/*
+	 * We accept IPv6 address in the following form:
+	 *  group@[2001:DB8::1001]:port	(w/ brackets and port)
+	 *  group@[2001:DB8::1]		(w/ brackets and w/o port)
+	 *  group@2001:DB8::1234	(w/o brackets and w/o port)
+	 */
+	pp = strchr(name, '@');
+	if (pp != NULL) {
+		*pp++ = '\0';
+		*group = (uint8_t)strtol(name, NULL, 0);
+		if (*group > 7)
+			*group = 7;
+		name = pp;
+	}
+	if (name[0] == '[')
+		name++;
+	pp = strchr(name, ']');
+	if (pp != NULL)
+		*pp++ = '\0';
+	if (pp != NULL && *pp != ':')
+		pp = NULL;
+	if (pp != NULL) {	/* do we have ports ? */
+		*pp++ = '\0';
+		*port = (uint16_t)strtol(pp, NULL, 0);
+	}
+	inet_pton(AF_INET6, name, addr);
+}
 /*
  * extract the extremes from a range of ipv4 addresses.
  * addr_lo[-addr_hi][:port_lo[-port_hi]]
  */
-static void
-extract_ip_range(struct ip_range *r)
+static int
+extract_ip_range(struct ip_range *r, int af)
 {
-	char *ap, *pp;
+	char *name, *ap, start[INET6_ADDRSTRLEN];
+	char end[INET6_ADDRSTRLEN];
 	struct in_addr a;
+	uint32_t tmp;
 
 	if (verbose)
 		D("extract IP range from %s", r->name);
-	r->port0 = r->port1 = 0;
-	r->start = r->end = 0;
 
+	name = strdup(r->name);
+	if (name == NULL) {
+		D("strdup failed");
+		usage(-1);
+	}
 	/* the first - splits start/end of range */
-	ap = index(r->name, '-');	/* do we have ports ? */
-	if (ap) {
+	ap = strchr(name, '-');
+	if (ap != NULL)
 		*ap++ = '\0';
-	}
-	/* grab the initial values (mandatory) */
-	pp = index(r->name, ':');
-	if (pp) {
-		*pp++ = '\0';
-		r->port0 = r->port1 = strtol(pp, NULL, 0);
-	};
-	inet_aton(r->name, &a);
-	r->start = r->end = ntohl(a.s_addr);
-	if (ap) {
-		pp = index(ap, ':');
-		if (pp) {
-			*pp++ = '\0';
-			if (*pp)
-				r->port1 = strtol(pp, NULL, 0);
+	r->port0 = 1234;	/* default port */
+	if (af == AF_INET6) {
+		r->ipv6.sgroup = 7; /* default group */
+		extract_ipv6_addr(name, &r->ipv6.start, &r->port0,
+		    &r->ipv6.sgroup);
+	} else
+		extract_ipv4_addr(name, &r->ipv4.start, &r->port0);
+
+	r->port1 = r->port0;
+	if (af == AF_INET6) {
+		if (ap != NULL) {
+			r->ipv6.egroup = r->ipv6.sgroup;
+			extract_ipv6_addr(ap, &r->ipv6.end, &r->port1,
+			    &r->ipv6.egroup);
+		} else {
+			r->ipv6.end = r->ipv6.start;
+			r->ipv6.egroup = r->ipv6.sgroup;
 		}
-		if (*ap) {
-			inet_aton(ap, &a);
-			r->end = ntohl(a.s_addr);
-		}
+	} else {
+		if (ap != NULL) {
+			extract_ipv4_addr(ap, &r->ipv4.end, &r->port1);
+			if (r->ipv4.start > r->ipv4.end) {
+				tmp = r->ipv4.end;
+				r->ipv4.end = r->ipv4.start;
+				r->ipv4.start = tmp;
+			}
+		} else
+			r->ipv4.end = r->ipv4.start;
 	}
+
 	if (r->port0 > r->port1) {
-		uint16_t tmp = r->port0;
+		tmp = r->port0;
 		r->port0 = r->port1;
 		r->port1 = tmp;
 	}
-	if (r->start > r->end) {
-		uint32_t tmp = r->start;
-		r->start = r->end;
-		r->end = tmp;
+	if (af == AF_INET) {
+		a.s_addr = htonl(r->ipv4.start);
+		inet_ntop(af, &a, start, sizeof(start));
+		a.s_addr = htonl(r->ipv4.end);
+		inet_ntop(af, &a, end, sizeof(end));
+	} else {
+		inet_ntop(af, &r->ipv6.start, start, sizeof(start));
+		inet_ntop(af, &r->ipv6.end, end, sizeof(end));
 	}
-	{
-		struct in_addr a;
-		char buf1[16]; // one ip address
+	if (af == AF_INET)
+		D("range is %s:%d to %s:%d", start, r->port0, end, r->port1);
+	else
+		D("range is %d@[%s]:%d to %d@[%s]:%d", r->ipv6.sgroup,
+		    start, r->port0, r->ipv6.egroup, end, r->port1);
 
-		a.s_addr = htonl(r->end);
-		strncpy(buf1, inet_ntoa(a), sizeof(buf1));
-		a.s_addr = htonl(r->start);
-		if (1)
-		    D("range is %s:%d to %s:%d",
-			inet_ntoa(a), r->port0, buf1, r->port1);
-	}
+	free(name);
+	if (r->port0 != r->port1 ||
+	    (af == AF_INET && r->ipv4.start != r->ipv4.end) ||
+	    (af == AF_INET6 &&
+		!IN6_ARE_ADDR_EQUAL(&r->ipv6.start, &r->ipv6.end)))
+		return (OPT_COPY);
+	return (0);
 }
 
-static void
+static int
 extract_mac_range(struct mac_range *r)
 {
+	struct ether_addr *e;
 	if (verbose)
 	    D("extract MAC range from %s", r->name);
-	bcopy(ether_aton(r->name), &r->start, 6);
-	bcopy(ether_aton(r->name), &r->end, 6);
+
+	e = ether_aton(r->name);
+	if (e == NULL) {
+		D("invalid MAC address '%s'", r->name);
+		return 1;
+	}
+	bcopy(e, &r->start, 6);
+	bcopy(e, &r->end, 6);
 #if 0
 	bcopy(targ->src_mac, eh->ether_shost, 6);
 	p = index(targ->g->src_mac, '-');
@@ -315,6 +506,7 @@ extract_mac_range(struct mac_range *r)
 #endif
 	if (verbose)
 		D("%s starts at %s", r->name, ether_ntoa(&r->start));
+	return 0;
 }
 
 static struct targ *targs;
@@ -327,11 +519,10 @@ sigint_h(int sig)
 	int i;
 
 	(void)sig;	/* UNUSED */
-	D("received control-C on thread %p", pthread_self());
+	D("received control-C on thread %p", (void *)pthread_self());
 	for (i = 0; i < global_nthreads; i++) {
 		targs[i].cancel = 1;
 	}
-	signal(SIGINT, SIG_DFL);
 }
 
 /* sysctl wrapper to return the number of active CPUs */
@@ -345,6 +536,12 @@ system_ncpus(void)
 	sysctl(mib, 2, &ncpus, &len, NULL, 0);
 #elif defined(linux)
 	ncpus = sysconf(_SC_NPROCESSORS_ONLN);
+#elif defined(_WIN32)
+	{
+		SYSTEM_INFO sysinfo;
+		GetSystemInfo(&sysinfo);
+		ncpus = sysinfo.dwNumberOfProcessors;
+	}
 #else /* others */
 	ncpus = 1;
 #endif /* others */
@@ -375,7 +572,7 @@ system_ncpus(void)
 /*
  * parse the vale configuration in conf and put it in nmr.
  * Return the flag set if necessary.
- * The configuration may consist of 0 to 4 numbers separated
+ * The configuration may consist of 1 to 4 numbers separated
  * by commas: #tx-slots,#rx-slots,#tx-rings,#rx-rings.
  * Missing numbers or zeroes stand for default values.
  * As an additional convenience, if exactly one number
@@ -419,7 +616,7 @@ parse_nmr_config(const char* conf, struct nmreq *nmr)
 			nmr->nr_rx_rings, nmr->nr_rx_slots);
 	free(w);
 	return (nmr->nr_tx_rings || nmr->nr_tx_slots ||
-                        nmr->nr_rx_rings || nmr->nr_rx_slots) ?
+		nmr->nr_rx_rings || nmr->nr_rx_slots) ?
 		NM_OPEN_RING_CFG : 0;
 }
 
@@ -432,7 +629,6 @@ static int
 source_hwaddr(const char *ifname, char *buf)
 {
 	struct ifaddrs *ifaphead, *ifap;
-	int l = sizeof(ifap->ifa_name);
 
 	if (getifaddrs(&ifaphead) != 0) {
 		D("getifaddrs %s failed", ifname);
@@ -446,7 +642,7 @@ source_hwaddr(const char *ifname, char *buf)
 
 		if (!sdl || sdl->sdl_family != AF_LINK)
 			continue;
-		if (strncmp(ifap->ifa_name, ifname, l) != 0)
+		if (strncmp(ifap->ifa_name, ifname, IFNAMSIZ) != 0)
 			continue;
 		mac = (uint8_t *)LLADDR(sdl);
 		sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x",
@@ -481,19 +677,20 @@ setaffinity(pthread_t me, int i)
 	return 0;
 }
 
+
 /* Compute the checksum of the given ip header. */
-static uint16_t
+static uint32_t
 checksum(const void *data, uint16_t len, uint32_t sum)
 {
-        const uint8_t *addr = data;
+	const uint8_t *addr = data;
 	uint32_t i;
 
-        /* Checksum all the pairs of bytes first... */
-        for (i = 0; i < (len & ~1U); i += 2) {
-                sum += (u_int16_t)ntohs(*((u_int16_t *)(addr + i)));
-                if (sum > 0xFFFF)
-                        sum -= 0xFFFF;
-        }
+	/* Checksum all the pairs of bytes first... */
+	for (i = 0; i < (len & ~1U); i += 2) {
+		sum += (u_int16_t)ntohs(*((u_int16_t *)(addr + i)));
+		if (sum > 0xFFFF)
+			sum -= 0xFFFF;
+	}
 	/*
 	 * If there's a single byte left over, checksum it, too.
 	 * Network byte order is big-endian, so the remaining byte is
@@ -507,8 +704,8 @@ checksum(const void *data, uint16_t len, uint32_t sum)
 	return sum;
 }
 
-static u_int16_t
-wrapsum(u_int32_t sum)
+static uint16_t
+wrapsum(uint32_t sum)
 {
 	sum = ~sum & 0xFFFF;
 	return (htons(sum));
@@ -518,10 +715,11 @@ wrapsum(u_int32_t sum)
  * Look for consecutive ascii representations of the size of the packet.
  */
 static void
-dump_payload(char *p, int len, struct netmap_ring *ring, int cur)
+dump_payload(const char *_p, int len, struct netmap_ring *ring, int cur)
 {
 	char buf[128];
 	int i, j, i0;
+	const unsigned char *p = (const unsigned char *)_p;
 
 	/* get the length in ASCII of the length of the packet. */
 
@@ -530,7 +728,7 @@ dump_payload(char *p, int len, struct netmap_ring *rin
 		ring->slot[cur].flags, len);
 	/* hexdump routine */
 	for (i = 0; i < len; ) {
-		memset(buf, sizeof(buf), ' ');
+		memset(buf, ' ', sizeof(buf));
 		sprintf(buf, "%5d: ", i);
 		i0 = i;
 		for (j=0; j < 16 && i < len; i++, j++)
@@ -555,64 +753,198 @@ dump_payload(char *p, int len, struct netmap_ring *rin
 #define uh_sum check
 #endif /* linux */
 
-/*
- * increment the addressed in the packet,
- * starting from the least significant field.
- *	DST_IP DST_PORT SRC_IP SRC_PORT
- */
 static void
-update_addresses(struct pkt *pkt, struct glob_arg *g)
+update_ip(struct pkt *pkt, struct targ *t)
 {
-	uint32_t a;
-	uint16_t p;
-	struct ip *ip = &pkt->ip;
-	struct udphdr *udp = &pkt->udp;
+	struct glob_arg *g = t->g;
+	struct ip ip;
+	struct udphdr udp;
+	uint32_t oaddr, naddr;
+	uint16_t oport, nport;
+	uint16_t ip_sum, udp_sum;
 
-    do {
-    	/* XXX for now it doesn't handle non-random src, random dst */
-	if (g->options & OPT_RANDOM_SRC) {
-		udp->uh_sport = random();
-		ip->ip_src.s_addr = random();
-	} else {
-		p = ntohs(udp->uh_sport);
-		if (p < g->src_ip.port1) { /* just inc, no wrap */
-			udp->uh_sport = htons(p + 1);
+	memcpy(&ip, &pkt->ipv4.ip, sizeof(ip));
+	memcpy(&udp, &pkt->ipv4.udp, sizeof(udp));
+	do {
+		ip_sum = udp_sum = 0;
+		naddr = oaddr = ntohl(ip.ip_src.s_addr);
+		nport = oport = ntohs(udp.uh_sport);
+		if (g->options & OPT_RANDOM_SRC) {
+			ip.ip_src.s_addr = nrand48(t->seed);
+			udp.uh_sport = nrand48(t->seed);
+			naddr = ntohl(ip.ip_src.s_addr);
+			nport = ntohs(udp.uh_sport);
 			break;
 		}
-		udp->uh_sport = htons(g->src_ip.port0);
-
-		a = ntohl(ip->ip_src.s_addr);
-		if (a < g->src_ip.end) { /* just inc, no wrap */
-			ip->ip_src.s_addr = htonl(a + 1);
+		if (oport < g->src_ip.port1) {
+			nport = oport + 1;
+			udp.uh_sport = htons(nport);
 			break;
 		}
-		ip->ip_src.s_addr = htonl(g->src_ip.start);
-
-		udp->uh_sport = htons(g->src_ip.port0);
+		nport = g->src_ip.port0;
+		udp.uh_sport = htons(nport);
+		if (oaddr < g->src_ip.ipv4.end) {
+			naddr = oaddr + 1;
+			ip.ip_src.s_addr = htonl(naddr);
+			break;
+		}
+		naddr = g->src_ip.ipv4.start;
+		ip.ip_src.s_addr = htonl(naddr);
+	} while (0);
+	/* update checksums if needed */
+	if (oaddr != naddr) {
+		ip_sum = cksum_add(ip_sum, ~oaddr >> 16);

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-stable@freebsd.org  Tue Dec  4 07:34:48 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id EC2421327211;
 Tue,  4 Dec 2018 07:34:47 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 91BFA6AC38;
 Tue,  4 Dec 2018 07:34:47 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6F0BD221DC;
 Tue,  4 Dec 2018 07:34:47 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB47YlaO043013;
 Tue, 4 Dec 2018 07:34:47 GMT (envelope-from eugen@FreeBSD.org)
Received: (from eugen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB47YlFQ043012;
 Tue, 4 Dec 2018 07:34:47 GMT (envelope-from eugen@FreeBSD.org)
Message-Id: <201812040734.wB47YlFQ043012@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: eugen set sender to
 eugen@FreeBSD.org using -f
From: Eugene Grosbein <eugen@FreeBSD.org>
Date: Tue, 4 Dec 2018 07:34:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341458 - stable/11/sbin/ipfw
X-SVN-Group: stable-11
X-SVN-Commit-Author: eugen
X-SVN-Commit-Paths: stable/11/sbin/ipfw
X-SVN-Commit-Revision: 341458
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 91BFA6AC38
X-Spamd-Result: default: False [-0.20 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.34)[0.344,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 07:34:48 -0000

Author: eugen
Date: Tue Dec  4 07:34:47 2018
New Revision: 341458
URL: https://svnweb.freebsd.org/changeset/base/341458

Log:
  MFC r340110: ipfw(8): clarify layer2 processing abilities
  
  Make it clear that ipfw action set for layer2 frames is a bit limited.
  
  PR:			59835
  Reviewed by:		yuripv
  Differential Revision:	https://reviews.freebsd.org/D17719

Modified:
  stable/11/sbin/ipfw/ipfw.8
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sbin/ipfw/ipfw.8
==============================================================================
--- stable/11/sbin/ipfw/ipfw.8	Tue Dec  4 07:30:02 2018	(r341457)
+++ stable/11/sbin/ipfw/ipfw.8	Tue Dec  4 07:34:47 2018	(r341458)
@@ -511,6 +511,27 @@ ipfw add 10 skipto 4000 all from any to any layer2 out
 .Pp
 (yes, at the moment there is no way to differentiate between
 ether_demux and bdg_forward).
+.Pp
+Also note that only actions
+.Cm allow,
+.Cm deny,
+.Cm netgraph,
+.Cm ngtee
+and related to
+.Cm dummynet
+are processed for
+.Cm layer2
+frames and all other actions act as if they were
+.Cm allow
+for such frames.
+Full set of actions is supported for IP packets without
+.Cm layer2
+headers only.
+For example,
+.Cm divert
+action does not divert
+.Cm layer2
+frames.
 .Sh SYNTAX
 In general, each keyword or argument must be provided as
 a separate command line argument, with no leading or trailing

From owner-svn-src-stable@freebsd.org  Tue Dec  4 07:39:55 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2FBF21327527;
 Tue,  4 Dec 2018 07:39:55 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id D74486B039;
 Tue,  4 Dec 2018 07:39:54 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B80C2221E1;
 Tue,  4 Dec 2018 07:39:54 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB47dsPq043308;
 Tue, 4 Dec 2018 07:39:54 GMT (envelope-from eugen@FreeBSD.org)
Received: (from eugen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB47dsfC043306;
 Tue, 4 Dec 2018 07:39:54 GMT (envelope-from eugen@FreeBSD.org)
Message-Id: <201812040739.wB47dsfC043306@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: eugen set sender to
 eugen@FreeBSD.org using -f
From: Eugene Grosbein <eugen@FreeBSD.org>
Date: Tue, 4 Dec 2018 07:39:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341459 - in stable/12: share/man/man4 sys/netgraph
X-SVN-Group: stable-12
X-SVN-Commit-Author: eugen
X-SVN-Commit-Paths: in stable/12: share/man/man4 sys/netgraph
X-SVN-Commit-Revision: 341459
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: D74486B039
X-Spamd-Result: default: False [0.14 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.46)[-0.459,0];
 NEURAL_SPAM_SHORT(0.45)[0.452,0];
 NEURAL_SPAM_LONG(0.15)[0.147,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 07:39:55 -0000

Author: eugen
Date: Tue Dec  4 07:39:54 2018
New Revision: 341459
URL: https://svnweb.freebsd.org/changeset/base/341459

Log:
  MFC r340135: Make ng_pptpgre(8) netgraph node be able to restore order
  for packets reordered in transit instead of dropping them altogether.
  It uses sequence numbers of PPtPGRE packets.
  
  A set of new sysctl(8) added to control this ability or disable it:
  
  net.graph.pptpgre.reorder_max (1) defines maximum length of node's
  private reorder queue used to keep data waiting for late packets.
  Zero value disables reordering. Default value 1 allows the node to restore
  the order for two packets swapped in transit. Greater values allow the node
  to deliver packets being late after more packets in sequence
  at cost of increased kernel memory usage.
  
  net.graph.pptpgre.reorder_timeout (1) defines time value in miliseconds
  used to wait for late packets. It may be useful to increase this
  if reordering spot is distant.

Modified:
  stable/12/share/man/man4/ng_pptpgre.4
  stable/12/sys/netgraph/ng_pptpgre.c
  stable/12/sys/netgraph/ng_pptpgre.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/share/man/man4/ng_pptpgre.4
==============================================================================
--- stable/12/share/man/man4/ng_pptpgre.4	Tue Dec  4 07:34:47 2018	(r341458)
+++ stable/12/share/man/man4/ng_pptpgre.4	Tue Dec  4 07:39:54 2018	(r341459)
@@ -35,7 +35,7 @@
 .\" $FreeBSD$
 .\" $Whistle: ng_pptpgre.8,v 1.2 1999/12/08 00:20:53 archie Exp $
 .\"
-.Dd November 13, 2012
+.Dd November 4, 2018
 .Dt NG_PPTPGRE 4
 .Os
 .Sh NAME
@@ -141,11 +141,33 @@ This command atomically gets and resets the node stati
 This node shuts down upon receipt of a
 .Dv NGM_SHUTDOWN
 control message, or when both hooks have been disconnected.
+.Sh SYSCTL VARIABLES
+A set of
+.Xr sysctl 8
+variables controls ability of this node to deal with some
+amount of packet reorder that sometimes happens in transit.
+Packet reorder results in packet drops (unless the order is restored)
+as PPP protocol can not deliver reordered data.
+These variables are shown below together
+with their default value and meaning:
+.Bl -tag -width indent
+.It Va net.graph.pptpgre.reorder_max: 1
+Defines maximum length of node's private reorder queue
+used to keep data waiting for late packets.
+Zero value disables reordering.
+Default value allows the node to restore the order for two packets swapped
+in transit.
+Greater values allow the node to deliver packets being late after more
+packets in sequence at cost of increased kernel memory usage.
+.It Va net.graph.pptpgre.reorder_timeout: 1
+Defines time value in miliseconds used to wait for late packets.
+.El
 .Sh SEE ALSO
 .Xr netgraph 4 ,
 .Xr ng_ksocket 4 ,
 .Xr ng_ppp 4 ,
-.Xr ngctl 8
+.Xr ngctl 8 ,
+.Xr sysctl 8
 .Rs
 .%A K. Hamzeh
 .%A G. Pall

Modified: stable/12/sys/netgraph/ng_pptpgre.c
==============================================================================
--- stable/12/sys/netgraph/ng_pptpgre.c	Tue Dec  4 07:34:47 2018	(r341458)
+++ stable/12/sys/netgraph/ng_pptpgre.c	Tue Dec  4 07:39:54 2018	(r341459)
@@ -64,6 +64,7 @@
 #include <sys/mutex.h>
 #include <sys/endian.h>
 #include <sys/errno.h>
+#include <sys/sysctl.h>
 
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
@@ -124,6 +125,8 @@ typedef u_int64_t		pptptime_t;
 #define PPTP_MIN_TIMEOUT	(PPTP_TIME_SCALE / 83)	/* 12 milliseconds */
 #define PPTP_MAX_TIMEOUT	(3 * PPTP_TIME_SCALE)	/* 3 seconds */
 
+#define PPTP_REORDER_TIMEOUT	1
+
 /* When we receive a packet, we wait to see if there's an outgoing packet
    we can piggy-back the ACK off of. These parameters determine the mimimum
    and maxmimum length of time we're willing to wait in order to do that.
@@ -142,6 +145,34 @@ typedef u_int64_t		pptptime_t;
 #define SESSHASHSIZE		0x0020
 #define SESSHASH(x)		(((x) ^ ((x) >> 8)) & (SESSHASHSIZE - 1))
 
+SYSCTL_NODE(_net_graph, OID_AUTO, pptpgre, CTLFLAG_RW, 0, "PPTPGRE");
+
+/*
+ * Reorder queue maximum length. Zero disables reorder.
+ *
+ * The node may keep reorder_max queue entries per session
+ * if reorder is enabled, plus allocate one more for short time.
+ *
+ * Be conservative in memory consumption by default.
+ * Lots of sessions with large queues can overflow M_NETGRAPH zone.
+ */
+static int reorder_max = 1; /* reorder up to two swapped packets in a row */
+SYSCTL_UINT(_net_graph_pptpgre, OID_AUTO, reorder_max, CTLFLAG_RWTUN,
+	&reorder_max, 0, "Reorder queue maximum length");
+
+static int reorder_timeout = PPTP_REORDER_TIMEOUT;
+SYSCTL_UINT(_net_graph_pptpgre, OID_AUTO, reorder_timeout, CTLFLAG_RWTUN,
+	&reorder_timeout, 0, "Reorder timeout is milliseconds");
+
+/* Packet reorder FIFO queue */
+struct ng_pptpgre_roq {
+	SLIST_ENTRY(ng_pptpgre_roq)  next;	/* next entry of the queue */
+	item_p			item;		/* netgraph item */
+	u_int32_t		seq;		/* packet sequence number */
+};
+SLIST_HEAD(ng_pptpgre_roq_head, ng_pptpgre_roq);
+typedef struct ng_pptpgre_roq_head roqh;
+
 /* We keep packet retransmit and acknowlegement state in this struct */
 struct ng_pptpgre_sess {
 	node_p			node;		/* this node pointer */
@@ -161,6 +192,9 @@ struct ng_pptpgre_sess {
 	u_int32_t		winAck;		/* seq when xmitWin will grow */
 	pptptime_t		timeSent[PPTP_XMIT_WIN];
 	LIST_ENTRY(ng_pptpgre_sess) sessions;
+	roqh			roq;		/* reorder queue head */
+	u_int8_t		roq_len;	/* reorder queue length */
+	struct callout		reorderTimer;	/* reorder timeout handler */
 };
 typedef struct ng_pptpgre_sess *hpriv_p;
 
@@ -187,13 +221,19 @@ static ng_disconnect_t	ng_pptpgre_disconnect;
 static int	ng_pptpgre_xmit(hpriv_p hpriv, item_p item);
 static void	ng_pptpgre_start_send_ack_timer(hpriv_p hpriv);
 static void	ng_pptpgre_start_recv_ack_timer(hpriv_p hpriv);
+static void	ng_pptpgre_start_reorder_timer(hpriv_p hpriv);
 static void	ng_pptpgre_recv_ack_timeout(node_p node, hook_p hook,
 		    void *arg1, int arg2);
 static void	ng_pptpgre_send_ack_timeout(node_p node, hook_p hook,
 		    void *arg1, int arg2);
+static void	ng_pptpgre_reorder_timeout(node_p node, hook_p hook,
+		    void *arg1, int arg2);
 static hpriv_p	ng_pptpgre_find_session(priv_p privp, u_int16_t cid);
 static void	ng_pptpgre_reset(hpriv_p hpriv);
 static pptptime_t ng_pptpgre_time(void);
+static void	ng_pptpgre_ack(const hpriv_p hpriv);
+static int	ng_pptpgre_sendq(const hpriv_p hpriv, roqh *q,
+		    const struct ng_pptpgre_roq *st);
 
 /* Parse type for struct ng_pptpgre_conf */
 static const struct ng_parse_struct_field ng_pptpgre_conf_type_fields[]
@@ -291,6 +331,10 @@ ng_pptpgre_constructor(node_p node)
 	ng_callout_init(&priv->uppersess.rackTimer);
 	priv->uppersess.node = node;
 
+	SLIST_INIT(&priv->uppersess.roq);
+	priv->uppersess.roq_len = 0;
+	ng_callout_init(&priv->uppersess.reorderTimer);
+
 	for (i = 0; i < SESSHASHSIZE; i++)
 	    LIST_INIT(&priv->sesshash[i]);
 
@@ -348,6 +392,11 @@ ng_pptpgre_newhook(node_p node, hook_p hook, const cha
 		hpriv->conf.cid = cid;
 		hpriv->node = node;
 		hpriv->hook = hook;
+
+		SLIST_INIT(&hpriv->roq);
+		hpriv->roq_len = 0;
+		ng_callout_init(&hpriv->reorderTimer);
+
 		NG_HOOK_SET_PRIVATE(hook, hpriv);
 
 		hash = SESSHASH(cid);
@@ -646,7 +695,50 @@ done:
 	return (error);
 }
 
+static void
+ng_pptpgre_ack(const hpriv_p hpriv)
+{
+	mtx_assert(&hpriv->mtx, MA_OWNED);
+	if (!(callout_pending(&hpriv->sackTimer))) {
+		/* If delayed ACK is disabled, send it now */
+		if (!hpriv->conf.enableDelayedAck) {	/* ack now */
+			ng_pptpgre_xmit(hpriv, NULL);
+			/* ng_pptpgre_xmit() drops the mutex */
+			return;
+		}
+		/* ack later */
+		ng_pptpgre_start_send_ack_timer(hpriv);
+		mtx_unlock(&hpriv->mtx);
+		return;
+	}
+	mtx_unlock(&hpriv->mtx);
+}
+
 /*
+ * Delivers packets from the queue "q" to upper layers. Frees delivered
+ * entries with the exception of one equal to "st" that is allocated
+ * on caller's stack and not on the heap.
+ */
+static int
+ng_pptpgre_sendq(const hpriv_p hpriv, roqh *q, const struct ng_pptpgre_roq *st)
+{
+	struct ng_pptpgre_roq *np;
+	struct mbuf *m;
+	int error = 0;
+
+	mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+	while (!SLIST_EMPTY(q)) {
+		np = SLIST_FIRST(q);
+		SLIST_REMOVE_HEAD(q, next);
+		NGI_GET_M(np->item, m);
+		NG_FWD_NEW_DATA(error, np->item, hpriv->hook, m);
+		if (np != st)
+			free(np, M_NETGRAPH);
+	}
+	return (error);
+}
+
+/*
  * Handle an incoming packet.  The packet includes the IP header.
  */
 static int
@@ -661,7 +753,14 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 	int error = 0;
 	struct mbuf *m;
 
-	NGI_GET_M(item, m);
+	roqh sendq = SLIST_HEAD_INITIALIZER(sendq);  /* send queue on stack */
+	struct ng_pptpgre_roq *last = NULL;	/* last packet in the sendq */
+	struct ng_pptpgre_roq *np, *prev;
+	struct ng_pptpgre_roq temp = { { NULL }, NULL, 0 };
+	long diff;
+	u_int32_t seq;
+
+	m = NGI_M(item);
 	/* Update stats */
 	priv->stats.recvPackets++;
 	priv->stats.recvOctets += m->m_pkthdr.len;
@@ -673,18 +772,23 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 	}
 
 	/* Safely pull up the complete IP+GRE headers */
-	if (m->m_len < sizeof(*ip) + sizeof(*gre)
-	    && (m = m_pullup(m, sizeof(*ip) + sizeof(*gre))) == NULL) {
-		priv->stats.memoryFailures++;
-		ERROUT(ENOBUFS);
+	if (m->m_len < sizeof(*ip) + sizeof(*gre)) {
+		if ((m = m_pullup(m, sizeof(*ip) + sizeof(*gre))) == NULL) {
+			priv->stats.memoryFailures++;
+			_NGI_M(item) = NULL;
+			ERROUT(ENOBUFS);
+		}
+		_NGI_M(item) = m;
 	}
 	ip = mtod(m, const struct ip *);
 	iphlen = ip->ip_hl << 2;
 	if (m->m_len < iphlen + sizeof(*gre)) {
 		if ((m = m_pullup(m, iphlen + sizeof(*gre))) == NULL) {
 			priv->stats.memoryFailures++;
+			_NGI_M(item) = NULL;
 			ERROUT(ENOBUFS);
 		}
+		_NGI_M(item) = m;
 		ip = mtod(m, const struct ip *);
 	}
 	gre = (const struct greheader *)((const u_char *)ip + iphlen);
@@ -696,8 +800,10 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 	if (m->m_len < iphlen + grelen) {
 		if ((m = m_pullup(m, iphlen + grelen)) == NULL) {
 			priv->stats.memoryFailures++;
+			_NGI_M(item) = NULL;
 			ERROUT(ENOBUFS);
 		}
+		_NGI_M(item) = m;
 		ip = mtod(m, const struct ip *);
 		gre = (const struct greheader *)((const u_char *)ip + iphlen);
 	}
@@ -726,7 +832,6 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 		const u_int32_t	ack = be32dec(&gre->data[gre->hasSeq]);
 		const int index = ack - hpriv->recvAck - 1;
 		long sample;
-		long diff;
 
 		/* Sanity check ack value */
 		if (PPTP_SEQ_DIFF(ack, hpriv->xmitSeq) > 0) {
@@ -773,54 +878,178 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 badAck:
 
 	/* See if frame contains any data */
-	if (gre->hasSeq) {
-		const u_int32_t seq = be32dec(&gre->data[0]);
+	if (!gre->hasSeq) {		/* no data to deliver */
+		priv->stats.recvLoneAcks++;
+		mtx_unlock(&hpriv->mtx);
+		ERROUT(0);
+	}
 
-		/* Sanity check sequence number */
-		if (PPTP_SEQ_DIFF(seq, hpriv->recvSeq) <= 0) {
-			if (seq == hpriv->recvSeq)
-				priv->stats.recvDuplicates++;
-			else
-				priv->stats.recvOutOfOrder++;
+	seq = be32dec(&gre->data[0]);
+
+	diff = PPTP_SEQ_DIFF(seq, hpriv->recvSeq);
+	if (diff <= 0) {			/* late or duplicate packet */
+		if (diff < 0 && reorder_max == 0)	/* reorder disabled */
+			priv->stats.recvOutOfOrder++;	/* late */
+		else
+			priv->stats.recvDuplicates++;	/* duplicate */
+		mtx_unlock(&hpriv->mtx);
+		ERROUT(EINVAL);
+	}
+
+	/* Trim mbuf down to internal payload */
+	m_adj(m, iphlen + grelen);
+	if (extralen > 0)
+		m_adj(m, -extralen);
+
+#define INIT_SENDQ(t) do {				\
+		t.item = item;				\
+		t.seq = seq;				\
+		SLIST_INSERT_HEAD(&sendq, &t, next);	\
+		last = &t;				\
+		hpriv->recvSeq = seq;			\
+		goto deliver;				\
+	} while(0)
+
+	if (diff == 1)
+		/* the packet came in order, place it at the start of sendq */
+		INIT_SENDQ(temp);
+
+	/* The packet came too early, try to enqueue it.
+	 *
+	 * Check for duplicate in the queue. After this loop, "prev" will be
+	 * NULL if the packet should become new head of the queue,
+	 * or else it should be inserted after the "prev".
+	 */
+	prev = SLIST_FIRST(&hpriv->roq);
+	SLIST_FOREACH(np, &hpriv->roq, next) {
+		diff = PPTP_SEQ_DIFF(np->seq, seq);
+		if (diff == 0) { /* do not add duplicate, drop it */
+			priv->stats.recvDuplicates++;
 			mtx_unlock(&hpriv->mtx);
 			ERROUT(EINVAL);
 		}
-		hpriv->recvSeq = seq;
+		if (diff > 0) {		/* we found newer packet */
+			if (np == prev)	/* that is the head of the queue */
+			    prev = NULL; /* put current packet to the head */
+			break;
+		}
+		prev = np;
+	}
 
-		/* We need to acknowledge this packet; do it soon... */
-		if (!(callout_pending(&hpriv->sackTimer))) {
-			/* If delayed ACK is disabled, send it now */
-			if (!hpriv->conf.enableDelayedAck) {	/* ack now */
-				ng_pptpgre_xmit(hpriv, NULL);
-				/* ng_pptpgre_xmit() drops the mutex */
-			} else {				/* ack later */
-				ng_pptpgre_start_send_ack_timer(hpriv);
-				mtx_unlock(&hpriv->mtx);
-			}
-		} else
-			mtx_unlock(&hpriv->mtx);
+	priv->stats.recvOutOfOrder++;	/* duplicate not found */
+	if (hpriv->roq_len < reorder_max)
+		goto enqueue;	/* reorder enabled and there is a room */
 
-		/* Trim mbuf down to internal payload */
-		m_adj(m, iphlen + grelen);
-		if (extralen > 0)
-			m_adj(m, -extralen);
+	/*
+	 * There is no room in the queue or reorder disabled.
+	 *
+	 * It the latter case, we may still have non-empty reorder queue
+	 * if reorder was disabled in process of reordering.
+	 * Then we correctly deliver the queue without growing it.
+	 *
+	 * In both cases, no malloc()'s until the queue is shortened.
+	 */
+	priv->stats.recvReorderOverflow++;
+	if (prev == NULL) {	  /* new packet goes before the head      */
+		INIT_SENDQ(temp); /* of reorder queue, so put it to sendq */
+	}
+#undef INIT_SENDQ
 
-		mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+	/*
+	 * Current packet goes after the head of reorder queue.
+	 * Move the head to sendq to make room for current packet.
+	 */
+	np = SLIST_FIRST(&hpriv->roq);
+	if (prev == np)
+		prev = NULL;
+	SLIST_REMOVE_HEAD(&hpriv->roq, next);
+	hpriv->roq_len--;	/* we are allowed to use malloc() now */
+	SLIST_INSERT_HEAD(&sendq, np, next);
+	last = np;
+	hpriv->recvSeq = np->seq;
 
-		/* Deliver frame to upper layers */
+enqueue:
+	np = malloc(sizeof(*np), M_NETGRAPH, M_NOWAIT | M_ZERO);
+	if (np == NULL) {
+		priv->stats.memoryFailures++;
+		/*
+		 * Emergency: we cannot save new data.
+		 * Flush the queue delivering all queued packets preceeding
+		 * current one despite of gaps.
+		 */
+		while (!SLIST_EMPTY(&hpriv->roq)) {
+			np = SLIST_FIRST(&hpriv->roq);
+			if (np->seq > seq)
+				break;
+			SLIST_REMOVE_HEAD(&hpriv->roq, next);
+			hpriv->roq_len--;
+			if (last == NULL)
+				SLIST_INSERT_HEAD(&sendq, np, next);
+			else
+				SLIST_INSERT_AFTER(last, np, next);
+			last = np;
+		}
+
+		/*
+		 * Pretend we got all packets till the current one
+		 * and acknowledge it.
+		 */
+		hpriv->recvSeq = seq;
+		ng_pptpgre_ack(hpriv);	/* drops lock */
+		ng_pptpgre_sendq(hpriv, &sendq, &temp);
 		NG_FWD_NEW_DATA(error, item, hpriv->hook, m);
+		ERROUT(ENOMEM);
+	}
+
+	/* Add current (early) packet to the reorder queue. */
+	np->item = item;
+	np->seq = seq;
+	if (prev == NULL)
+		SLIST_INSERT_HEAD(&hpriv->roq, np, next);
+	else
+		SLIST_INSERT_AFTER(prev, np, next);
+	hpriv->roq_len++;
+
+deliver:
+	/* Look if we have some packets in sequence after sendq. */
+	while (!SLIST_EMPTY(&hpriv->roq)) {
+		np = SLIST_FIRST(&hpriv->roq);
+		if (PPTP_SEQ_DIFF(np->seq, hpriv->recvSeq) > 1)
+			break; /* the gap in the sequence */
+
+		/* "np" is in sequence, move it to the sendq. */
+		SLIST_REMOVE_HEAD(&hpriv->roq, next);
+		hpriv->roq_len--;
+		hpriv->recvSeq = np->seq;
+
+		if (last == NULL)
+			SLIST_INSERT_HEAD(&sendq, np, next);
+		else
+			SLIST_INSERT_AFTER(last, np, next);
+		last = np;
+	}
+
+	if (SLIST_EMPTY(&hpriv->roq)) {
+		if (callout_pending(&hpriv->reorderTimer))
+			ng_uncallout(&hpriv->reorderTimer, hpriv->node);
 	} else {
-		priv->stats.recvLoneAcks++;
+		if (!callout_pending(&hpriv->reorderTimer))
+			ng_pptpgre_start_reorder_timer(hpriv);
+	}
+
+	if (SLIST_EMPTY(&sendq)) {
+		/* Current packet has been queued, nothing to free/deliver. */
 		mtx_unlock(&hpriv->mtx);
-		NG_FREE_ITEM(item);
-		NG_FREE_M(m);		/* no data to deliver */
+		return (error);
 	}
 
+	/* We need to acknowledge last packet; do it soon... */
+	ng_pptpgre_ack(hpriv);		/* drops lock */
+	ng_pptpgre_sendq(hpriv, &sendq, &temp);
 	return (error);
 
 done:
 	NG_FREE_ITEM(item);
-	NG_FREE_M(m);
 	return (error);
 }
 
@@ -916,6 +1145,68 @@ ng_pptpgre_send_ack_timeout(node_p node, hook_p hook, 
 	mtx_assert(&hpriv->mtx, MA_NOTOWNED);
 }
 
+/*
+ * Start a timer for the reorder queue. This assumes the timer is not
+ * already running.
+ */
+static void
+ng_pptpgre_start_reorder_timer(hpriv_p hpriv)
+{
+	int ticks;
+
+	/* Be conservative: timeout can happen up to 1 tick early */
+	ticks = (((reorder_timeout * hz) + 1000 - 1) / 1000) + 1;
+	ng_callout(&hpriv->reorderTimer, hpriv->node, hpriv->hook,
+		ticks, ng_pptpgre_reorder_timeout, hpriv, 0);
+}
+
+/*
+ * The oldest packet spent too much time in the reorder queue.
+ * Deliver it and next packets in sequence, if any.
+ */
+static void
+ng_pptpgre_reorder_timeout(node_p node, hook_p hook, void *arg1, int arg2)
+{
+	const priv_p priv = NG_NODE_PRIVATE(node);
+	const hpriv_p hpriv = arg1;
+	roqh sendq = SLIST_HEAD_INITIALIZER(sendq);
+	struct ng_pptpgre_roq *np, *last = NULL;
+
+	priv->stats.recvReorderTimeouts++;
+	mtx_lock(&hpriv->mtx);
+	if (SLIST_EMPTY(&hpriv->roq)) { /* should not happen */
+		mtx_unlock(&hpriv->mtx);
+		return;
+	}
+
+	last = np = SLIST_FIRST(&hpriv->roq);
+	hpriv->roq_len--;
+	SLIST_REMOVE_HEAD(&hpriv->roq, next);
+	SLIST_INSERT_HEAD(&sendq, np, next);
+
+	/* Look if we have more packets in sequence */
+	while (!SLIST_EMPTY(&hpriv->roq)) {
+		np = SLIST_FIRST(&hpriv->roq);
+		if (PPTP_SEQ_DIFF(np->seq, last->seq) > 1)
+			break; /* the gap in the sequence */
+
+		/* Next packet is in sequence, move it to the sendq. */
+		hpriv->roq_len--;
+		SLIST_REMOVE_HEAD(&hpriv->roq, next);
+		SLIST_INSERT_AFTER(last, np, next);
+		last = np;
+	}
+
+	hpriv->recvSeq = last->seq;
+	if (!SLIST_EMPTY(&hpriv->roq))
+		ng_pptpgre_start_reorder_timer(hpriv);
+
+	/* We need to acknowledge last packet; do it soon... */
+	ng_pptpgre_ack(hpriv);		/* drops lock */
+	ng_pptpgre_sendq(hpriv, &sendq, NULL);
+	mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+}
+
 /*************************************************************************
 		    MISC FUNCTIONS
 *************************************************************************/
@@ -943,6 +1234,8 @@ ng_pptpgre_find_session(priv_p privp, u_int16_t cid)
 static void
 ng_pptpgre_reset(hpriv_p hpriv)
 {
+	struct ng_pptpgre_roq *np;
+
 	/* Reset adaptive timeout state */
 	hpriv->ato = PPTP_MAX_TIMEOUT;
 	hpriv->rtt = PPTP_TIME_SCALE / 10;
@@ -965,6 +1258,16 @@ ng_pptpgre_reset(hpriv_p hpriv)
 	/* Stop timers */
 	ng_uncallout(&hpriv->sackTimer, hpriv->node);
 	ng_uncallout(&hpriv->rackTimer, hpriv->node);
+	ng_uncallout(&hpriv->reorderTimer, hpriv->node);
+
+	/* Clear reorder queue */
+	while (!SLIST_EMPTY(&hpriv->roq)) {
+		np = SLIST_FIRST(&hpriv->roq);
+		SLIST_REMOVE_HEAD(&hpriv->roq, next);
+		NG_FREE_ITEM(np->item);
+		free(np, M_NETGRAPH);
+	}
+	hpriv->roq_len = 0;
 }
 
 /*

Modified: stable/12/sys/netgraph/ng_pptpgre.h
==============================================================================
--- stable/12/sys/netgraph/ng_pptpgre.h	Tue Dec  4 07:34:47 2018	(r341458)
+++ stable/12/sys/netgraph/ng_pptpgre.h	Tue Dec  4 07:39:54 2018	(r341459)
@@ -100,6 +100,10 @@ struct ng_pptpgre_stats {
 	u_int32_t recvLoneAcks;		/* ack-only packets rec'd */
 	u_int32_t recvAckTimeouts;	/* times peer failed to ack in time */
 	u_int32_t memoryFailures;	/* times we couldn't allocate memory */
+	u_int32_t recvReorderOverflow;	/* times we dropped GRE packet
+					   due to overflow of reorder queue */
+	u_int32_t recvReorderTimeouts;	/* times we flushed reorder queue
+					   due to timeout */
 };
 
 /* Keep this in sync with the above structure definition */
@@ -120,6 +124,8 @@ struct ng_pptpgre_stats {
 	  { "recvLoneAcks",	&ng_parse_uint32_type	},	\
 	  { "recvAckTimeouts",	&ng_parse_uint32_type	},	\
 	  { "memoryFailures",	&ng_parse_uint32_type	},	\
+	  { "recvReorderOverflow", &ng_parse_uint32_type},	\
+	  { "recvReorderTimeouts", &ng_parse_uint32_type},	\
 	  { NULL }						\
 }
 

From owner-svn-src-stable@freebsd.org  Tue Dec  4 07:48:45 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C9B9A1327E6E;
 Tue,  4 Dec 2018 07:48:44 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 770FF6B848;
 Tue,  4 Dec 2018 07:48:44 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 57E8722388;
 Tue,  4 Dec 2018 07:48:44 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB47miHE048355;
 Tue, 4 Dec 2018 07:48:44 GMT (envelope-from eugen@FreeBSD.org)
Received: (from eugen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB47mhmQ048353;
 Tue, 4 Dec 2018 07:48:43 GMT (envelope-from eugen@FreeBSD.org)
Message-Id: <201812040748.wB47mhmQ048353@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: eugen set sender to
 eugen@FreeBSD.org using -f
From: Eugene Grosbein <eugen@FreeBSD.org>
Date: Tue, 4 Dec 2018 07:48:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341460 - in stable/11: share/man/man4 sys/netgraph
X-SVN-Group: stable-11
X-SVN-Commit-Author: eugen
X-SVN-Commit-Paths: in stable/11: share/man/man4 sys/netgraph
X-SVN-Commit-Revision: 341460
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 770FF6B848
X-Spamd-Result: default: False [0.14 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.46)[-0.459,0];
 NEURAL_SPAM_LONG(0.15)[0.147,0];
 NEURAL_SPAM_SHORT(0.45)[0.452,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 07:48:45 -0000

Author: eugen
Date: Tue Dec  4 07:48:43 2018
New Revision: 341460
URL: https://svnweb.freebsd.org/changeset/base/341460

Log:
  MFC r340135: Make ng_pptpgre(8) netgraph node be able to restore order
  for packets reordered in transit instead of dropping them altogether.
  It uses sequence numbers of PPtPGRE packets.
  
  A set of new sysctl(8) added to control this ability or disable it:
  
  net.graph.pptpgre.reorder_max (1) defines maximum length of node's
  private reorder queue used to keep data waiting for late packets.
  Zero value disables reordering. Default value 1 allows the node to restore
  the order for two packets swapped in transit. Greater values allow the node
  to deliver packets being late after more packets in sequence
  at cost of increased kernel memory usage.
  
  net.graph.pptpgre.reorder_timeout (1) defines time value in miliseconds
  used to wait for late packets. It may be useful to increase this
  if reordering spot is distant.

Modified:
  stable/11/share/man/man4/ng_pptpgre.4
  stable/11/sys/netgraph/ng_pptpgre.c
  stable/11/sys/netgraph/ng_pptpgre.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man4/ng_pptpgre.4
==============================================================================
--- stable/11/share/man/man4/ng_pptpgre.4	Tue Dec  4 07:39:54 2018	(r341459)
+++ stable/11/share/man/man4/ng_pptpgre.4	Tue Dec  4 07:48:43 2018	(r341460)
@@ -35,7 +35,7 @@
 .\" $FreeBSD$
 .\" $Whistle: ng_pptpgre.8,v 1.2 1999/12/08 00:20:53 archie Exp $
 .\"
-.Dd November 13, 2012
+.Dd November 4, 2018
 .Dt NG_PPTPGRE 4
 .Os
 .Sh NAME
@@ -141,11 +141,33 @@ This command atomically gets and resets the node stati
 This node shuts down upon receipt of a
 .Dv NGM_SHUTDOWN
 control message, or when both hooks have been disconnected.
+.Sh SYSCTL VARIABLES
+A set of
+.Xr sysctl 8
+variables controls ability of this node to deal with some
+amount of packet reorder that sometimes happens in transit.
+Packet reorder results in packet drops (unless the order is restored)
+as PPP protocol can not deliver reordered data.
+These variables are shown below together
+with their default value and meaning:
+.Bl -tag -width indent
+.It Va net.graph.pptpgre.reorder_max: 1
+Defines maximum length of node's private reorder queue
+used to keep data waiting for late packets.
+Zero value disables reordering.
+Default value allows the node to restore the order for two packets swapped
+in transit.
+Greater values allow the node to deliver packets being late after more
+packets in sequence at cost of increased kernel memory usage.
+.It Va net.graph.pptpgre.reorder_timeout: 1
+Defines time value in miliseconds used to wait for late packets.
+.El
 .Sh SEE ALSO
 .Xr netgraph 4 ,
 .Xr ng_ksocket 4 ,
 .Xr ng_ppp 4 ,
-.Xr ngctl 8
+.Xr ngctl 8 ,
+.Xr sysctl 8
 .Rs
 .%A K. Hamzeh
 .%A G. Pall

Modified: stable/11/sys/netgraph/ng_pptpgre.c
==============================================================================
--- stable/11/sys/netgraph/ng_pptpgre.c	Tue Dec  4 07:39:54 2018	(r341459)
+++ stable/11/sys/netgraph/ng_pptpgre.c	Tue Dec  4 07:48:43 2018	(r341460)
@@ -64,6 +64,7 @@
 #include <sys/mutex.h>
 #include <sys/endian.h>
 #include <sys/errno.h>
+#include <sys/sysctl.h>
 
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
@@ -124,6 +125,8 @@ typedef u_int64_t		pptptime_t;
 #define PPTP_MIN_TIMEOUT	(PPTP_TIME_SCALE / 83)	/* 12 milliseconds */
 #define PPTP_MAX_TIMEOUT	(3 * PPTP_TIME_SCALE)	/* 3 seconds */
 
+#define PPTP_REORDER_TIMEOUT	1
+
 /* When we receive a packet, we wait to see if there's an outgoing packet
    we can piggy-back the ACK off of. These parameters determine the mimimum
    and maxmimum length of time we're willing to wait in order to do that.
@@ -142,6 +145,34 @@ typedef u_int64_t		pptptime_t;
 #define SESSHASHSIZE		0x0020
 #define SESSHASH(x)		(((x) ^ ((x) >> 8)) & (SESSHASHSIZE - 1))
 
+SYSCTL_NODE(_net_graph, OID_AUTO, pptpgre, CTLFLAG_RW, 0, "PPTPGRE");
+
+/*
+ * Reorder queue maximum length. Zero disables reorder.
+ *
+ * The node may keep reorder_max queue entries per session
+ * if reorder is enabled, plus allocate one more for short time.
+ *
+ * Be conservative in memory consumption by default.
+ * Lots of sessions with large queues can overflow M_NETGRAPH zone.
+ */
+static int reorder_max = 1; /* reorder up to two swapped packets in a row */
+SYSCTL_UINT(_net_graph_pptpgre, OID_AUTO, reorder_max, CTLFLAG_RWTUN,
+	&reorder_max, 0, "Reorder queue maximum length");
+
+static int reorder_timeout = PPTP_REORDER_TIMEOUT;
+SYSCTL_UINT(_net_graph_pptpgre, OID_AUTO, reorder_timeout, CTLFLAG_RWTUN,
+	&reorder_timeout, 0, "Reorder timeout is milliseconds");
+
+/* Packet reorder FIFO queue */
+struct ng_pptpgre_roq {
+	SLIST_ENTRY(ng_pptpgre_roq)  next;	/* next entry of the queue */
+	item_p			item;		/* netgraph item */
+	u_int32_t		seq;		/* packet sequence number */
+};
+SLIST_HEAD(ng_pptpgre_roq_head, ng_pptpgre_roq);
+typedef struct ng_pptpgre_roq_head roqh;
+
 /* We keep packet retransmit and acknowlegement state in this struct */
 struct ng_pptpgre_sess {
 	node_p			node;		/* this node pointer */
@@ -161,6 +192,9 @@ struct ng_pptpgre_sess {
 	u_int32_t		winAck;		/* seq when xmitWin will grow */
 	pptptime_t		timeSent[PPTP_XMIT_WIN];
 	LIST_ENTRY(ng_pptpgre_sess) sessions;
+	roqh			roq;		/* reorder queue head */
+	u_int8_t		roq_len;	/* reorder queue length */
+	struct callout		reorderTimer;	/* reorder timeout handler */
 };
 typedef struct ng_pptpgre_sess *hpriv_p;
 
@@ -187,13 +221,19 @@ static ng_disconnect_t	ng_pptpgre_disconnect;
 static int	ng_pptpgre_xmit(hpriv_p hpriv, item_p item);
 static void	ng_pptpgre_start_send_ack_timer(hpriv_p hpriv);
 static void	ng_pptpgre_start_recv_ack_timer(hpriv_p hpriv);
+static void	ng_pptpgre_start_reorder_timer(hpriv_p hpriv);
 static void	ng_pptpgre_recv_ack_timeout(node_p node, hook_p hook,
 		    void *arg1, int arg2);
 static void	ng_pptpgre_send_ack_timeout(node_p node, hook_p hook,
 		    void *arg1, int arg2);
+static void	ng_pptpgre_reorder_timeout(node_p node, hook_p hook,
+		    void *arg1, int arg2);
 static hpriv_p	ng_pptpgre_find_session(priv_p privp, u_int16_t cid);
 static void	ng_pptpgre_reset(hpriv_p hpriv);
 static pptptime_t ng_pptpgre_time(void);
+static void	ng_pptpgre_ack(const hpriv_p hpriv);
+static int	ng_pptpgre_sendq(const hpriv_p hpriv, roqh *q,
+		    const struct ng_pptpgre_roq *st);
 
 /* Parse type for struct ng_pptpgre_conf */
 static const struct ng_parse_struct_field ng_pptpgre_conf_type_fields[]
@@ -291,6 +331,10 @@ ng_pptpgre_constructor(node_p node)
 	ng_callout_init(&priv->uppersess.rackTimer);
 	priv->uppersess.node = node;
 
+	SLIST_INIT(&priv->uppersess.roq);
+	priv->uppersess.roq_len = 0;
+	ng_callout_init(&priv->uppersess.reorderTimer);
+
 	for (i = 0; i < SESSHASHSIZE; i++)
 	    LIST_INIT(&priv->sesshash[i]);
 
@@ -348,6 +392,11 @@ ng_pptpgre_newhook(node_p node, hook_p hook, const cha
 		hpriv->conf.cid = cid;
 		hpriv->node = node;
 		hpriv->hook = hook;
+
+		SLIST_INIT(&hpriv->roq);
+		hpriv->roq_len = 0;
+		ng_callout_init(&hpriv->reorderTimer);
+
 		NG_HOOK_SET_PRIVATE(hook, hpriv);
 
 		hash = SESSHASH(cid);
@@ -646,7 +695,50 @@ done:
 	return (error);
 }
 
+static void
+ng_pptpgre_ack(const hpriv_p hpriv)
+{
+	mtx_assert(&hpriv->mtx, MA_OWNED);
+	if (!(callout_pending(&hpriv->sackTimer))) {
+		/* If delayed ACK is disabled, send it now */
+		if (!hpriv->conf.enableDelayedAck) {	/* ack now */
+			ng_pptpgre_xmit(hpriv, NULL);
+			/* ng_pptpgre_xmit() drops the mutex */
+			return;
+		}
+		/* ack later */
+		ng_pptpgre_start_send_ack_timer(hpriv);
+		mtx_unlock(&hpriv->mtx);
+		return;
+	}
+	mtx_unlock(&hpriv->mtx);
+}
+
 /*
+ * Delivers packets from the queue "q" to upper layers. Frees delivered
+ * entries with the exception of one equal to "st" that is allocated
+ * on caller's stack and not on the heap.
+ */
+static int
+ng_pptpgre_sendq(const hpriv_p hpriv, roqh *q, const struct ng_pptpgre_roq *st)
+{
+	struct ng_pptpgre_roq *np;
+	struct mbuf *m;
+	int error = 0;
+
+	mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+	while (!SLIST_EMPTY(q)) {
+		np = SLIST_FIRST(q);
+		SLIST_REMOVE_HEAD(q, next);
+		NGI_GET_M(np->item, m);
+		NG_FWD_NEW_DATA(error, np->item, hpriv->hook, m);
+		if (np != st)
+			free(np, M_NETGRAPH);
+	}
+	return (error);
+}
+
+/*
  * Handle an incoming packet.  The packet includes the IP header.
  */
 static int
@@ -661,7 +753,14 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 	int error = 0;
 	struct mbuf *m;
 
-	NGI_GET_M(item, m);
+	roqh sendq = SLIST_HEAD_INITIALIZER(sendq);  /* send queue on stack */
+	struct ng_pptpgre_roq *last = NULL;	/* last packet in the sendq */
+	struct ng_pptpgre_roq *np, *prev;
+	struct ng_pptpgre_roq temp = { { NULL }, NULL, 0 };
+	long diff;
+	u_int32_t seq;
+
+	m = NGI_M(item);
 	/* Update stats */
 	priv->stats.recvPackets++;
 	priv->stats.recvOctets += m->m_pkthdr.len;
@@ -673,18 +772,23 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 	}
 
 	/* Safely pull up the complete IP+GRE headers */
-	if (m->m_len < sizeof(*ip) + sizeof(*gre)
-	    && (m = m_pullup(m, sizeof(*ip) + sizeof(*gre))) == NULL) {
-		priv->stats.memoryFailures++;
-		ERROUT(ENOBUFS);
+	if (m->m_len < sizeof(*ip) + sizeof(*gre)) {
+		if ((m = m_pullup(m, sizeof(*ip) + sizeof(*gre))) == NULL) {
+			priv->stats.memoryFailures++;
+			_NGI_M(item) = NULL;
+			ERROUT(ENOBUFS);
+		}
+		_NGI_M(item) = m;
 	}
 	ip = mtod(m, const struct ip *);
 	iphlen = ip->ip_hl << 2;
 	if (m->m_len < iphlen + sizeof(*gre)) {
 		if ((m = m_pullup(m, iphlen + sizeof(*gre))) == NULL) {
 			priv->stats.memoryFailures++;
+			_NGI_M(item) = NULL;
 			ERROUT(ENOBUFS);
 		}
+		_NGI_M(item) = m;
 		ip = mtod(m, const struct ip *);
 	}
 	gre = (const struct greheader *)((const u_char *)ip + iphlen);
@@ -696,8 +800,10 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 	if (m->m_len < iphlen + grelen) {
 		if ((m = m_pullup(m, iphlen + grelen)) == NULL) {
 			priv->stats.memoryFailures++;
+			_NGI_M(item) = NULL;
 			ERROUT(ENOBUFS);
 		}
+		_NGI_M(item) = m;
 		ip = mtod(m, const struct ip *);
 		gre = (const struct greheader *)((const u_char *)ip + iphlen);
 	}
@@ -726,7 +832,6 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 		const u_int32_t	ack = be32dec(&gre->data[gre->hasSeq]);
 		const int index = ack - hpriv->recvAck - 1;
 		long sample;
-		long diff;
 
 		/* Sanity check ack value */
 		if (PPTP_SEQ_DIFF(ack, hpriv->xmitSeq) > 0) {
@@ -773,54 +878,178 @@ ng_pptpgre_rcvdata_lower(hook_p hook, item_p item)
 badAck:
 
 	/* See if frame contains any data */
-	if (gre->hasSeq) {
-		const u_int32_t seq = be32dec(&gre->data[0]);
+	if (!gre->hasSeq) {		/* no data to deliver */
+		priv->stats.recvLoneAcks++;
+		mtx_unlock(&hpriv->mtx);
+		ERROUT(0);
+	}
 
-		/* Sanity check sequence number */
-		if (PPTP_SEQ_DIFF(seq, hpriv->recvSeq) <= 0) {
-			if (seq == hpriv->recvSeq)
-				priv->stats.recvDuplicates++;
-			else
-				priv->stats.recvOutOfOrder++;
+	seq = be32dec(&gre->data[0]);
+
+	diff = PPTP_SEQ_DIFF(seq, hpriv->recvSeq);
+	if (diff <= 0) {			/* late or duplicate packet */
+		if (diff < 0 && reorder_max == 0)	/* reorder disabled */
+			priv->stats.recvOutOfOrder++;	/* late */
+		else
+			priv->stats.recvDuplicates++;	/* duplicate */
+		mtx_unlock(&hpriv->mtx);
+		ERROUT(EINVAL);
+	}
+
+	/* Trim mbuf down to internal payload */
+	m_adj(m, iphlen + grelen);
+	if (extralen > 0)
+		m_adj(m, -extralen);
+
+#define INIT_SENDQ(t) do {				\
+		t.item = item;				\
+		t.seq = seq;				\
+		SLIST_INSERT_HEAD(&sendq, &t, next);	\
+		last = &t;				\
+		hpriv->recvSeq = seq;			\
+		goto deliver;				\
+	} while(0)
+
+	if (diff == 1)
+		/* the packet came in order, place it at the start of sendq */
+		INIT_SENDQ(temp);
+
+	/* The packet came too early, try to enqueue it.
+	 *
+	 * Check for duplicate in the queue. After this loop, "prev" will be
+	 * NULL if the packet should become new head of the queue,
+	 * or else it should be inserted after the "prev".
+	 */
+	prev = SLIST_FIRST(&hpriv->roq);
+	SLIST_FOREACH(np, &hpriv->roq, next) {
+		diff = PPTP_SEQ_DIFF(np->seq, seq);
+		if (diff == 0) { /* do not add duplicate, drop it */
+			priv->stats.recvDuplicates++;
 			mtx_unlock(&hpriv->mtx);
 			ERROUT(EINVAL);
 		}
-		hpriv->recvSeq = seq;
+		if (diff > 0) {		/* we found newer packet */
+			if (np == prev)	/* that is the head of the queue */
+			    prev = NULL; /* put current packet to the head */
+			break;
+		}
+		prev = np;
+	}
 
-		/* We need to acknowledge this packet; do it soon... */
-		if (!(callout_pending(&hpriv->sackTimer))) {
-			/* If delayed ACK is disabled, send it now */
-			if (!hpriv->conf.enableDelayedAck) {	/* ack now */
-				ng_pptpgre_xmit(hpriv, NULL);
-				/* ng_pptpgre_xmit() drops the mutex */
-			} else {				/* ack later */
-				ng_pptpgre_start_send_ack_timer(hpriv);
-				mtx_unlock(&hpriv->mtx);
-			}
-		} else
-			mtx_unlock(&hpriv->mtx);
+	priv->stats.recvOutOfOrder++;	/* duplicate not found */
+	if (hpriv->roq_len < reorder_max)
+		goto enqueue;	/* reorder enabled and there is a room */
 
-		/* Trim mbuf down to internal payload */
-		m_adj(m, iphlen + grelen);
-		if (extralen > 0)
-			m_adj(m, -extralen);
+	/*
+	 * There is no room in the queue or reorder disabled.
+	 *
+	 * It the latter case, we may still have non-empty reorder queue
+	 * if reorder was disabled in process of reordering.
+	 * Then we correctly deliver the queue without growing it.
+	 *
+	 * In both cases, no malloc()'s until the queue is shortened.
+	 */
+	priv->stats.recvReorderOverflow++;
+	if (prev == NULL) {	  /* new packet goes before the head      */
+		INIT_SENDQ(temp); /* of reorder queue, so put it to sendq */
+	}
+#undef INIT_SENDQ
 
-		mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+	/*
+	 * Current packet goes after the head of reorder queue.
+	 * Move the head to sendq to make room for current packet.
+	 */
+	np = SLIST_FIRST(&hpriv->roq);
+	if (prev == np)
+		prev = NULL;
+	SLIST_REMOVE_HEAD(&hpriv->roq, next);
+	hpriv->roq_len--;	/* we are allowed to use malloc() now */
+	SLIST_INSERT_HEAD(&sendq, np, next);
+	last = np;
+	hpriv->recvSeq = np->seq;
 
-		/* Deliver frame to upper layers */
+enqueue:
+	np = malloc(sizeof(*np), M_NETGRAPH, M_NOWAIT | M_ZERO);
+	if (np == NULL) {
+		priv->stats.memoryFailures++;
+		/*
+		 * Emergency: we cannot save new data.
+		 * Flush the queue delivering all queued packets preceeding
+		 * current one despite of gaps.
+		 */
+		while (!SLIST_EMPTY(&hpriv->roq)) {
+			np = SLIST_FIRST(&hpriv->roq);
+			if (np->seq > seq)
+				break;
+			SLIST_REMOVE_HEAD(&hpriv->roq, next);
+			hpriv->roq_len--;
+			if (last == NULL)
+				SLIST_INSERT_HEAD(&sendq, np, next);
+			else
+				SLIST_INSERT_AFTER(last, np, next);
+			last = np;
+		}
+
+		/*
+		 * Pretend we got all packets till the current one
+		 * and acknowledge it.
+		 */
+		hpriv->recvSeq = seq;
+		ng_pptpgre_ack(hpriv);	/* drops lock */
+		ng_pptpgre_sendq(hpriv, &sendq, &temp);
 		NG_FWD_NEW_DATA(error, item, hpriv->hook, m);
+		ERROUT(ENOMEM);
+	}
+
+	/* Add current (early) packet to the reorder queue. */
+	np->item = item;
+	np->seq = seq;
+	if (prev == NULL)
+		SLIST_INSERT_HEAD(&hpriv->roq, np, next);
+	else
+		SLIST_INSERT_AFTER(prev, np, next);
+	hpriv->roq_len++;
+
+deliver:
+	/* Look if we have some packets in sequence after sendq. */
+	while (!SLIST_EMPTY(&hpriv->roq)) {
+		np = SLIST_FIRST(&hpriv->roq);
+		if (PPTP_SEQ_DIFF(np->seq, hpriv->recvSeq) > 1)
+			break; /* the gap in the sequence */
+
+		/* "np" is in sequence, move it to the sendq. */
+		SLIST_REMOVE_HEAD(&hpriv->roq, next);
+		hpriv->roq_len--;
+		hpriv->recvSeq = np->seq;
+
+		if (last == NULL)
+			SLIST_INSERT_HEAD(&sendq, np, next);
+		else
+			SLIST_INSERT_AFTER(last, np, next);
+		last = np;
+	}
+
+	if (SLIST_EMPTY(&hpriv->roq)) {
+		if (callout_pending(&hpriv->reorderTimer))
+			ng_uncallout(&hpriv->reorderTimer, hpriv->node);
 	} else {
-		priv->stats.recvLoneAcks++;
+		if (!callout_pending(&hpriv->reorderTimer))
+			ng_pptpgre_start_reorder_timer(hpriv);
+	}
+
+	if (SLIST_EMPTY(&sendq)) {
+		/* Current packet has been queued, nothing to free/deliver. */
 		mtx_unlock(&hpriv->mtx);
-		NG_FREE_ITEM(item);
-		NG_FREE_M(m);		/* no data to deliver */
+		return (error);
 	}
 
+	/* We need to acknowledge last packet; do it soon... */
+	ng_pptpgre_ack(hpriv);		/* drops lock */
+	ng_pptpgre_sendq(hpriv, &sendq, &temp);
 	return (error);
 
 done:
 	NG_FREE_ITEM(item);
-	NG_FREE_M(m);
 	return (error);
 }
 
@@ -916,6 +1145,68 @@ ng_pptpgre_send_ack_timeout(node_p node, hook_p hook, 
 	mtx_assert(&hpriv->mtx, MA_NOTOWNED);
 }
 
+/*
+ * Start a timer for the reorder queue. This assumes the timer is not
+ * already running.
+ */
+static void
+ng_pptpgre_start_reorder_timer(hpriv_p hpriv)
+{
+	int ticks;
+
+	/* Be conservative: timeout can happen up to 1 tick early */
+	ticks = (((reorder_timeout * hz) + 1000 - 1) / 1000) + 1;
+	ng_callout(&hpriv->reorderTimer, hpriv->node, hpriv->hook,
+		ticks, ng_pptpgre_reorder_timeout, hpriv, 0);
+}
+
+/*
+ * The oldest packet spent too much time in the reorder queue.
+ * Deliver it and next packets in sequence, if any.
+ */
+static void
+ng_pptpgre_reorder_timeout(node_p node, hook_p hook, void *arg1, int arg2)
+{
+	const priv_p priv = NG_NODE_PRIVATE(node);
+	const hpriv_p hpriv = arg1;
+	roqh sendq = SLIST_HEAD_INITIALIZER(sendq);
+	struct ng_pptpgre_roq *np, *last = NULL;
+
+	priv->stats.recvReorderTimeouts++;
+	mtx_lock(&hpriv->mtx);
+	if (SLIST_EMPTY(&hpriv->roq)) { /* should not happen */
+		mtx_unlock(&hpriv->mtx);
+		return;
+	}
+
+	last = np = SLIST_FIRST(&hpriv->roq);
+	hpriv->roq_len--;
+	SLIST_REMOVE_HEAD(&hpriv->roq, next);
+	SLIST_INSERT_HEAD(&sendq, np, next);
+
+	/* Look if we have more packets in sequence */
+	while (!SLIST_EMPTY(&hpriv->roq)) {
+		np = SLIST_FIRST(&hpriv->roq);
+		if (PPTP_SEQ_DIFF(np->seq, last->seq) > 1)
+			break; /* the gap in the sequence */
+
+		/* Next packet is in sequence, move it to the sendq. */
+		hpriv->roq_len--;
+		SLIST_REMOVE_HEAD(&hpriv->roq, next);
+		SLIST_INSERT_AFTER(last, np, next);
+		last = np;
+	}
+
+	hpriv->recvSeq = last->seq;
+	if (!SLIST_EMPTY(&hpriv->roq))
+		ng_pptpgre_start_reorder_timer(hpriv);
+
+	/* We need to acknowledge last packet; do it soon... */
+	ng_pptpgre_ack(hpriv);		/* drops lock */
+	ng_pptpgre_sendq(hpriv, &sendq, NULL);
+	mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+}
+
 /*************************************************************************
 		    MISC FUNCTIONS
 *************************************************************************/
@@ -943,6 +1234,8 @@ ng_pptpgre_find_session(priv_p privp, u_int16_t cid)
 static void
 ng_pptpgre_reset(hpriv_p hpriv)
 {
+	struct ng_pptpgre_roq *np;
+
 	/* Reset adaptive timeout state */
 	hpriv->ato = PPTP_MAX_TIMEOUT;
 	hpriv->rtt = PPTP_TIME_SCALE / 10;
@@ -965,6 +1258,16 @@ ng_pptpgre_reset(hpriv_p hpriv)
 	/* Stop timers */
 	ng_uncallout(&hpriv->sackTimer, hpriv->node);
 	ng_uncallout(&hpriv->rackTimer, hpriv->node);
+	ng_uncallout(&hpriv->reorderTimer, hpriv->node);
+
+	/* Clear reorder queue */
+	while (!SLIST_EMPTY(&hpriv->roq)) {
+		np = SLIST_FIRST(&hpriv->roq);
+		SLIST_REMOVE_HEAD(&hpriv->roq, next);
+		NG_FREE_ITEM(np->item);
+		free(np, M_NETGRAPH);
+	}
+	hpriv->roq_len = 0;
 }
 
 /*

Modified: stable/11/sys/netgraph/ng_pptpgre.h
==============================================================================
--- stable/11/sys/netgraph/ng_pptpgre.h	Tue Dec  4 07:39:54 2018	(r341459)
+++ stable/11/sys/netgraph/ng_pptpgre.h	Tue Dec  4 07:48:43 2018	(r341460)
@@ -100,6 +100,10 @@ struct ng_pptpgre_stats {
 	u_int32_t recvLoneAcks;		/* ack-only packets rec'd */
 	u_int32_t recvAckTimeouts;	/* times peer failed to ack in time */
 	u_int32_t memoryFailures;	/* times we couldn't allocate memory */
+	u_int32_t recvReorderOverflow;	/* times we dropped GRE packet
+					   due to overflow of reorder queue */
+	u_int32_t recvReorderTimeouts;	/* times we flushed reorder queue
+					   due to timeout */
 };
 
 /* Keep this in sync with the above structure definition */
@@ -120,6 +124,8 @@ struct ng_pptpgre_stats {
 	  { "recvLoneAcks",	&ng_parse_uint32_type	},	\
 	  { "recvAckTimeouts",	&ng_parse_uint32_type	},	\
 	  { "memoryFailures",	&ng_parse_uint32_type	},	\
+	  { "recvReorderOverflow", &ng_parse_uint32_type},	\
+	  { "recvReorderTimeouts", &ng_parse_uint32_type},	\
 	  { NULL }						\
 }
 

From owner-svn-src-stable@freebsd.org  Tue Dec  4 09:16:21 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5E0F5132B21D;
 Tue,  4 Dec 2018 09:16:21 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 03BAC6EF43;
 Tue,  4 Dec 2018 09:16:21 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D8FE22325E;
 Tue,  4 Dec 2018 09:16:20 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB49GK8m093979;
 Tue, 4 Dec 2018 09:16:20 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB49GKS7093978;
 Tue, 4 Dec 2018 09:16:20 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201812040916.wB49GKS7093978@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Tue, 4 Dec 2018 09:16:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341461 - stable/12/sys/netpfil/ipfw
X-SVN-Group: stable-12
X-SVN-Commit-Author: ae
X-SVN-Commit-Paths: stable/12/sys/netpfil/ipfw
X-SVN-Commit-Revision: 341461
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 03BAC6EF43
X-Spamd-Result: default: False [-0.79 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.24)[-0.241,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 09:16:21 -0000

Author: ae
Date: Tue Dec  4 09:16:20 2018
New Revision: 341461
URL: https://svnweb.freebsd.org/changeset/base/341461

Log:
  MFC r341073:
    Do not limit the mbuf queue length for keepalive packets.
  
    It was unlimited before overhaul, and one user reported that this limit
    can be reached easily.
  
    PR:		233562

Modified:
  stable/12/sys/netpfil/ipfw/ip_fw_dynamic.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netpfil/ipfw/ip_fw_dynamic.c
==============================================================================
--- stable/12/sys/netpfil/ipfw/ip_fw_dynamic.c	Tue Dec  4 07:48:43 2018	(r341460)
+++ stable/12/sys/netpfil/ipfw/ip_fw_dynamic.c	Tue Dec  4 09:16:20 2018	(r341461)
@@ -349,7 +349,6 @@ VNET_DEFINE_STATIC(uint32_t, dyn_short_lifetime);
  * dyn_rst_lifetime and dyn_fin_lifetime should be strictly lower
  * than dyn_keepalive_period.
  */
-#define	DYN_KEEPALIVE_MAXQ		512
 VNET_DEFINE_STATIC(uint32_t, dyn_keepalive_interval);
 VNET_DEFINE_STATIC(uint32_t, dyn_keepalive_period);
 VNET_DEFINE_STATIC(uint32_t, dyn_keepalive);
@@ -2351,7 +2350,7 @@ dyn_send_keepalive_ipv4(struct ip_fw_chain *chain)
 	struct dyn_ipv4_state *s;
 	uint32_t bucket;
 
-	mbufq_init(&q, DYN_KEEPALIVE_MAXQ);
+	mbufq_init(&q, INT_MAX);
 	IPFW_UH_RLOCK(chain);
 	/*
 	 * It is safe to not use hazard pointer and just do lockless
@@ -2458,7 +2457,7 @@ dyn_send_keepalive_ipv6(struct ip_fw_chain *chain)
 	struct dyn_ipv6_state *s;
 	uint32_t bucket;
 
-	mbufq_init(&q, DYN_KEEPALIVE_MAXQ);
+	mbufq_init(&q, INT_MAX);
 	IPFW_UH_RLOCK(chain);
 	/*
 	 * It is safe to not use hazard pointer and just do lockless

From owner-svn-src-stable@freebsd.org  Tue Dec  4 09:18:29 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 804D3132B504;
 Tue,  4 Dec 2018 09:18:29 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 33FDC6F219;
 Tue,  4 Dec 2018 09:18:29 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1512923271;
 Tue,  4 Dec 2018 09:18:29 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB49ISLB094130;
 Tue, 4 Dec 2018 09:18:28 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB49ISiw094129;
 Tue, 4 Dec 2018 09:18:28 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201812040918.wB49ISiw094129@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Tue, 4 Dec 2018 09:18:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341462 - stable/11/sys/netpfil/ipfw
X-SVN-Group: stable-11
X-SVN-Commit-Author: ae
X-SVN-Commit-Paths: stable/11/sys/netpfil/ipfw
X-SVN-Commit-Revision: 341462
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 33FDC6F219
X-Spamd-Result: default: False [-0.79 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_SPAM_LONG(0.01)[0.011,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.24)[-0.241,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 09:18:29 -0000

Author: ae
Date: Tue Dec  4 09:18:28 2018
New Revision: 341462
URL: https://svnweb.freebsd.org/changeset/base/341462

Log:
  MFC r341073:
    Do not limit the mbuf queue length for keepalive packets.
  
    It was unlimited before overhaul, and one user reported that this limit
    can be reached easily.
  
    PR:		233562

Modified:
  stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c
==============================================================================
--- stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c	Tue Dec  4 09:16:20 2018	(r341461)
+++ stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c	Tue Dec  4 09:18:28 2018	(r341462)
@@ -348,7 +348,6 @@ static VNET_DEFINE(uint32_t, dyn_short_lifetime);
  * dyn_rst_lifetime and dyn_fin_lifetime should be strictly lower
  * than dyn_keepalive_period.
  */
-#define	DYN_KEEPALIVE_MAXQ		512
 static VNET_DEFINE(uint32_t, dyn_keepalive_interval);
 static VNET_DEFINE(uint32_t, dyn_keepalive_period);
 static VNET_DEFINE(uint32_t, dyn_keepalive);
@@ -2350,7 +2349,7 @@ dyn_send_keepalive_ipv4(struct ip_fw_chain *chain)
 	struct dyn_ipv4_state *s;
 	uint32_t bucket;
 
-	mbufq_init(&q, DYN_KEEPALIVE_MAXQ);
+	mbufq_init(&q, INT_MAX);
 	IPFW_UH_RLOCK(chain);
 	/*
 	 * It is safe to not use hazard pointer and just do lockless
@@ -2457,7 +2456,7 @@ dyn_send_keepalive_ipv6(struct ip_fw_chain *chain)
 	struct dyn_ipv6_state *s;
 	uint32_t bucket;
 
-	mbufq_init(&q, DYN_KEEPALIVE_MAXQ);
+	mbufq_init(&q, INT_MAX);
 	IPFW_UH_RLOCK(chain);
 	/*
 	 * It is safe to not use hazard pointer and just do lockless

From owner-svn-src-stable@freebsd.org  Tue Dec  4 12:16:27 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 38B04130A53B;
 Tue,  4 Dec 2018 12:16:27 +0000 (UTC)
 (envelope-from Andre.Albsmeier@siemens.com)
Received: from goliath.siemens.de (goliath.siemens.de [192.35.17.28])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "goliath.siemens.de",
 Issuer "Siemens Issuing CA Internet Server 2017" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id AB6F4762FF;
 Tue,  4 Dec 2018 12:16:22 +0000 (UTC)
 (envelope-from Andre.Albsmeier@siemens.com)
Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14])
 by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id wB4CDHaw012243
 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
 Tue, 4 Dec 2018 13:13:17 +0100
Received: from curry.mchp.siemens.de (curry.mchp.siemens.de [139.25.40.130])
 by mail3.siemens.de (8.15.2/8.15.2) with ESMTP id wB4CDG0J030338;
 Tue, 4 Dec 2018 13:13:16 +0100
Received: (from user@localhost)
 by curry.mchp.siemens.de (8.15.2/8.15.2) id wB4CDHOM033482;
Date: Tue, 4 Dec 2018 13:13:16 +0100
From: Andre Albsmeier <Andre.Albsmeier@siemens.com>
To: Sean Eric Fagan <sef@FreeBSD.org>
Cc: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: Re: svn commit: r339008 - in stable/11: include/rpcsvc lib/libutil
 libexec/rpc.rquotad sys/cddl/contrib/opensolaris/uts/common/fs/zfs
 usr.bin/quota
Message-ID: <20181204121316.GA6385@bali>
References: <201809290044.w8T0iNfu004260@repo.freebsd.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <201809290044.w8T0iNfu004260@repo.freebsd.org>
User-Agent: Mutt/1.7.2 (2016-11-26)
X-Rspamd-Queue-Id: AB6F4762FF
X-Spamd-Result: default: False [-3.08 / 15.00]; ARC_NA(0.00)[];
 NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; FROM_HAS_DN(0.00)[];
 TO_DN_SOME(0.00)[];
 R_SPF_ALLOW(-0.20)[+exists:192.35.17.28.spf.siemens.com];
 TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain];
 RCVD_TLS_LAST(0.00)[]; DMARC_NA(0.00)[siemens.com];
 RCPT_COUNT_FIVE(0.00)[5]; NEURAL_HAM_LONG(-0.99)[-0.993,0];
 RCVD_COUNT_THREE(0.00)[4]; IP_SCORE(-0.00)[country: DE(-0.01)];
 MX_GOOD(-0.01)[gordi.siemens.com,hephaistos.siemens.com,meleagros.siemens.com,hylas.siemens.com,zetes.siemens.com,paxos.siemens.com,balduin.siemens.com];
 NEURAL_HAM_SHORT(-0.78)[-0.778,0]; FROM_EQ_ENVFROM(0.00)[];
 R_DKIM_NA(0.00)[]; MID_RHS_NOT_FQDN(0.50)[];
 ASN(0.00)[asn:15465, ipnet:192.35.16.0/22, country:DE];
 RCVD_IN_DNSWL_HI(-0.50)[28.17.35.192.list.dnswl.org : 127.0.13.3]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 12:16:27 -0000

On Sat, 29-Sep-2018 at 00:44:23 +0000, Sean Eric Fagan wrote:
> Author: sef
> Date: Sat Sep 29 00:44:23 2018
> New Revision: 339008
> URL: https://svnweb.freebsd.org/changeset/base/339008
> 
> Log:
>   MFC r336017,r338799
>   
>   r336017
>   	This exposes ZFS user and group quotas via the normal
>   	quatactl(2) mechanism.  (Read-only at this point, however.)
>   	In particular, this is to allow rpc.rquotad query quotas
>   	for NFS mounts, allowing users to see their quotas on the
>   	hosts using the datasets.
>   
>   	The changes specifically:
>   
>   	* Add new RPC entry points for querying quotas.
>   	* Changes the library routines to allow non-UFS quotas.

This broke repquota on my UFS. I fixed it with:

--- lib/libutil/quotafile.c.ORI	2018-09-29 11:56:05.000000000 +0200
+++ lib/libutil/quotafile.c	2018-12-04 13:00:04.450826000 +0100
@@ -125,18 +125,18 @@
 	strlcpy(qf->fsname, fs->fs_file, sizeof(qf->fsname));
 	if (stat(qf->fsname, &st) != 0)
 		goto error;
 	qf->dev = st.st_dev;
 	qcmd = QCMD(Q_GETQUOTASIZE, quotatype);
+	serrno = hasquota(fs, quotatype, qf->qfname, sizeof(qf->qfname));
 	if (quotactl(qf->fsname, qcmd, 0, &qf->wordsize) == 0)
 		return (qf);
 	/* We only check the quota file for ufs */
 	if (strcmp(fs->fs_vfstype, "ufs")) {
 		errno = 0;
 		goto error;
 	}
-	serrno = hasquota(fs, quotatype, qf->qfname, sizeof(qf->qfname));
 	if (serrno == 0) {
 		errno = EOPNOTSUPP;
 		goto error;
 	}
 	qf->accmode = openflags & O_ACCMODE;


Apparently it wants qf->qfname to be filled in by hasquota(). No idea
if calling hasquota() hurts for non-UFS...

	-Andre

From owner-svn-src-stable@freebsd.org  Tue Dec  4 14:07:46 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 63983130D5B6;
 Tue,  4 Dec 2018 14:07:46 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 0763D79FC1;
 Tue,  4 Dec 2018 14:07:46 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D492D2637A;
 Tue,  4 Dec 2018 14:07:45 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4E7j0D042186;
 Tue, 4 Dec 2018 14:07:45 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4E7jaL042185;
 Tue, 4 Dec 2018 14:07:45 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812041407.wB4E7jaL042185@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Tue, 4 Dec 2018 14:07:45 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341465 - stable/10/share/man/man4
X-SVN-Group: stable-10
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/10/share/man/man4
X-SVN-Commit-Revision: 341465
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 0763D79FC1
X-Spamd-Result: default: False [-0.47 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_SPAM_SHORT(0.17)[0.169,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 14:07:46 -0000

Author: emaste
Date: Tue Dec  4 14:07:45 2018
New Revision: 341465
URL: https://svnweb.freebsd.org/changeset/base/341465

Log:
  MFC r323010: hv_vss.4: Fix spelling of 'responsibility'
  
  PR:		221300
  Submitted by:	Fabian Keil
  Obtained from:	ElectroBSD

Modified:
  stable/10/share/man/man4/hv_vss.4
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/share/man/man4/hv_vss.4
==============================================================================
--- stable/10/share/man/man4/hv_vss.4	Tue Dec  4 12:34:22 2018	(r341464)
+++ stable/10/share/man/man4/hv_vss.4	Tue Dec  4 14:07:45 2018	(r341465)
@@ -66,7 +66,7 @@ VM, and sends the result back to Hyper-V host.
 .Pp
 Generally,
 .Xr hv_vss_daemon 8
-takes the responsiblity to freeze/thaw UFS file system,
+takes the responsibility to freeze/thaw UFS file system,
 and it is automatically launched after system boots. When Hyper-V host wants to
 take a snapshot of the
 .Fx

From owner-svn-src-stable@freebsd.org  Tue Dec  4 15:02:20 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 947D8130F381;
 Tue,  4 Dec 2018 15:02:20 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 38DA27C7B4;
 Tue,  4 Dec 2018 15:02:20 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1878626D53;
 Tue,  4 Dec 2018 15:02:20 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4F2JQ9070473;
 Tue, 4 Dec 2018 15:02:19 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4F2JfU070472;
 Tue, 4 Dec 2018 15:02:19 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812041502.wB4F2JfU070472@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Tue, 4 Dec 2018 15:02:19 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341466 - stable/12/sys/kern
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/kern
X-SVN-Commit-Revision: 341466
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 38DA27C7B4
X-Spamd-Result: default: False [-0.37 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.27)[0.274,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 15:02:20 -0000

Author: kib
Date: Tue Dec  4 15:02:19 2018
New Revision: 341466
URL: https://svnweb.freebsd.org/changeset/base/341466

Log:
  MFC r341094:
  Improve sigonstack().

Modified:
  stable/12/sys/kern/kern_sig.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/kern/kern_sig.c
==============================================================================
--- stable/12/sys/kern/kern_sig.c	Tue Dec  4 14:07:45 2018	(r341465)
+++ stable/12/sys/kern/kern_sig.c	Tue Dec  4 15:02:19 2018	(r341466)
@@ -615,20 +615,25 @@ signotify(struct thread *td)
 	}
 }
 
+/*
+ * Returns 1 (true) if altstack is configured for the thread, and the
+ * passed stack bottom address falls into the altstack range.  Handles
+ * the 43 compat special case where the alt stack size is zero.
+ */
 int
 sigonstack(size_t sp)
 {
-	struct thread *td = curthread;
+	struct thread *td;
 
-	return ((td->td_pflags & TDP_ALTSTACK) ?
+	td = curthread;
+	if ((td->td_pflags & TDP_ALTSTACK) == 0)
+		return (0);
 #if defined(COMPAT_43)
-	    ((td->td_sigstk.ss_size == 0) ?
-		(td->td_sigstk.ss_flags & SS_ONSTACK) :
-		((sp - (size_t)td->td_sigstk.ss_sp) < td->td_sigstk.ss_size))
-#else
-	    ((sp - (size_t)td->td_sigstk.ss_sp) < td->td_sigstk.ss_size)
+	if (td->td_sigstk.ss_size == 0)
+		return ((td->td_sigstk.ss_flags & SS_ONSTACK) != 0);
 #endif
-	    : 0);
+	return (sp >= (size_t)td->td_sigstk.ss_sp &&
+	    sp < td->td_sigstk.ss_size + (size_t)td->td_sigstk.ss_sp);
 }
 
 static __inline int

From owner-svn-src-stable@freebsd.org  Tue Dec  4 15:04:50 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0B8DB130F452;
 Tue,  4 Dec 2018 15:04:50 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id A53377C9A3;
 Tue,  4 Dec 2018 15:04:49 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 876FB26D66;
 Tue,  4 Dec 2018 15:04:49 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4F4nCt073543;
 Tue, 4 Dec 2018 15:04:49 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4F4nKs073542;
 Tue, 4 Dec 2018 15:04:49 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812041504.wB4F4nKs073542@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Tue, 4 Dec 2018 15:04:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341467 - stable/11/sys/vm
X-SVN-Group: stable-11
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/11/sys/vm
X-SVN-Commit-Revision: 341467
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: A53377C9A3
X-Spamd-Result: default: False [-0.87 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_HAM_SHORT(-0.23)[-0.230,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 15:04:50 -0000

Author: emaste
Date: Tue Dec  4 15:04:48 2018
New Revision: 341467
URL: https://svnweb.freebsd.org/changeset/base/341467

Log:
  MFC r327860: ANSIfy function definitions in sys/vm/

Modified:
  stable/11/sys/vm/vm_glue.c
  stable/11/sys/vm/vm_unix.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/vm/vm_glue.c
==============================================================================
--- stable/11/sys/vm/vm_glue.c	Tue Dec  4 15:02:19 2018	(r341466)
+++ stable/11/sys/vm/vm_glue.c	Tue Dec  4 15:04:48 2018	(r341467)
@@ -111,9 +111,7 @@ __FBSDID("$FreeBSD$");
  * space.
  */
 int
-kernacc(addr, len, rw)
-	void *addr;
-	int len, rw;
+kernacc(void *addr, int len, int rw)
 {
 	boolean_t rv;
 	vm_offset_t saddr, eaddr;
@@ -145,9 +143,7 @@ kernacc(addr, len, rw)
  * used in conjunction with this call.
  */
 int
-useracc(addr, len, rw)
-	void *addr;
-	int len, rw;
+useracc(void *addr, int len, int rw)
 {
 	boolean_t rv;
 	vm_prot_t prot;
@@ -532,12 +528,8 @@ intr_prof_stack_use(struct thread *td, struct trapfram
  * to user mode to avoid stack copying and relocation problems.
  */
 int
-vm_forkproc(td, p2, td2, vm2, flags)
-	struct thread *td;
-	struct proc *p2;
-	struct thread *td2;
-	struct vmspace *vm2;
-	int flags;
+vm_forkproc(struct thread *td, struct proc *p2, struct thread *td2,
+    struct vmspace *vm2, int flags)
 {
 	struct proc *p1 = td->td_proc;
 	int error;

Modified: stable/11/sys/vm/vm_unix.c
==============================================================================
--- stable/11/sys/vm/vm_unix.c	Tue Dec  4 15:02:19 2018	(r341466)
+++ stable/11/sys/vm/vm_unix.c	Tue Dec  4 15:04:48 2018	(r341467)
@@ -71,9 +71,7 @@ struct obreak_args {
  */
 /* ARGSUSED */
 int
-sys_obreak(td, uap)
-	struct thread *td;
-	struct obreak_args *uap;
+sys_obreak(struct thread *td, struct obreak_args *uap)
 {
 	struct vmspace *vm = td->td_proc->p_vmspace;
 	vm_map_t map = &vm->vm_map;
@@ -245,9 +243,7 @@ struct ovadvise_args {
  */
 /* ARGSUSED */
 int
-sys_ovadvise(td, uap)
-	struct thread *td;
-	struct ovadvise_args *uap;
+sys_ovadvise(struct thread *td, struct ovadvise_args *uap)
 {
 	/* START_GIANT_OPTIONAL */
 	/* END_GIANT_OPTIONAL */

From owner-svn-src-stable@freebsd.org  Tue Dec  4 15:06:25 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4998D130F56E;
 Tue,  4 Dec 2018 15:06:25 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E19507CBFD;
 Tue,  4 Dec 2018 15:06:24 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C20D826D67;
 Tue,  4 Dec 2018 15:06:24 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4F6Ov7073654;
 Tue, 4 Dec 2018 15:06:24 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4F6O8S073653;
 Tue, 4 Dec 2018 15:06:24 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812041506.wB4F6O8S073653@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Tue, 4 Dec 2018 15:06:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341468 - stable/12/sys/amd64/amd64
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/amd64/amd64
X-SVN-Commit-Revision: 341468
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E19507CBFD
X-Spamd-Result: default: False [-0.87 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.556,0];
 NEURAL_HAM_SHORT(-0.23)[-0.230,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.09)[-0.087,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 15:06:25 -0000

Author: kib
Date: Tue Dec  4 15:06:24 2018
New Revision: 341468
URL: https://svnweb.freebsd.org/changeset/base/341468

Log:
  MFC r341096:
  Fix assert condition in pmap_large_unmap().

Modified:
  stable/12/sys/amd64/amd64/pmap.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/amd64/pmap.c
==============================================================================
--- stable/12/sys/amd64/amd64/pmap.c	Tue Dec  4 15:04:48 2018	(r341467)
+++ stable/12/sys/amd64/amd64/pmap.c	Tue Dec  4 15:06:24 2018	(r341468)
@@ -8441,9 +8441,10 @@ pmap_large_unmap(void *svaa, vm_size_t len)
 			KASSERT((va & PDPMASK) == 0,
 			    ("PDPMASK bit set, va %#lx pdpe %#lx pdp %#lx", va,
 			    (u_long)pdpe, pdp));
-			KASSERT(len <= NBPDP,
-			    ("len < NBPDP, sva %#lx va %#lx pdpe %#lx pdp %#lx "
-			    "len %#lx", sva, va, (u_long)pdpe, pdp, len));
+			KASSERT(va + NBPDP <= sva + len,
+			    ("unmap covers partial 1GB page, sva %#lx va %#lx "
+			    "pdpe %#lx pdp %#lx len %#lx", sva, va,
+			    (u_long)pdpe, pdp, len));
 			*pdpe = 0;
 			inc = NBPDP;
 			continue;
@@ -8457,9 +8458,10 @@ pmap_large_unmap(void *svaa, vm_size_t len)
 			KASSERT((va & PDRMASK) == 0,
 			    ("PDRMASK bit set, va %#lx pde %#lx pd %#lx", va,
 			    (u_long)pde, pd));
-			KASSERT(len <= NBPDR,
-			    ("len < NBPDR, sva %#lx va %#lx pde %#lx pd %#lx "
-			    "len %#lx", sva, va, (u_long)pde, pd, len));
+			KASSERT(va + NBPDR <= sva + len,
+			    ("unmap covers partial 2MB page, sva %#lx va %#lx "
+			    "pde %#lx pd %#lx len %#lx", sva, va, (u_long)pde,
+			    pd, len));
 			pde_store(pde, 0);
 			inc = NBPDR;
 			m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pde));

From owner-svn-src-stable@freebsd.org  Tue Dec  4 16:53:29 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 692761312BF1;
 Tue,  4 Dec 2018 16:53:29 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 0B5FD82B3E;
 Tue,  4 Dec 2018 16:53:29 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E1C0227FFC;
 Tue,  4 Dec 2018 16:53:28 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4GrSwG031004;
 Tue, 4 Dec 2018 16:53:28 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4GrSm8031003;
 Tue, 4 Dec 2018 16:53:28 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812041653.wB4GrSm8031003@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Tue, 4 Dec 2018 16:53:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341476 - stable/11/sys/kern
X-SVN-Group: stable-11
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/11/sys/kern
X-SVN-Commit-Revision: 341476
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 0B5FD82B3E
X-Spamd-Result: default: False [-0.45 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.14)[0.135,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 16:53:29 -0000

Author: kib
Date: Tue Dec  4 16:53:28 2018
New Revision: 341476
URL: https://svnweb.freebsd.org/changeset/base/341476

Log:
  MFC r341094:
  Improve sigonstack().

Modified:
  stable/11/sys/kern/kern_sig.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/kern_sig.c
==============================================================================
--- stable/11/sys/kern/kern_sig.c	Tue Dec  4 16:49:14 2018	(r341475)
+++ stable/11/sys/kern/kern_sig.c	Tue Dec  4 16:53:28 2018	(r341476)
@@ -617,20 +617,25 @@ signotify(struct thread *td)
 	}
 }
 
+/*
+ * Returns 1 (true) if altstack is configured for the thread, and the
+ * passed stack bottom address falls into the altstack range.  Handles
+ * the 43 compat special case where the alt stack size is zero.
+ */
 int
 sigonstack(size_t sp)
 {
-	struct thread *td = curthread;
+	struct thread *td;
 
-	return ((td->td_pflags & TDP_ALTSTACK) ?
+	td = curthread;
+	if ((td->td_pflags & TDP_ALTSTACK) == 0)
+		return (0);
 #if defined(COMPAT_43)
-	    ((td->td_sigstk.ss_size == 0) ?
-		(td->td_sigstk.ss_flags & SS_ONSTACK) :
-		((sp - (size_t)td->td_sigstk.ss_sp) < td->td_sigstk.ss_size))
-#else
-	    ((sp - (size_t)td->td_sigstk.ss_sp) < td->td_sigstk.ss_size)
+	if (td->td_sigstk.ss_size == 0)
+		return ((td->td_sigstk.ss_flags & SS_ONSTACK) != 0);
 #endif
-	    : 0);
+	return (sp >= (size_t)td->td_sigstk.ss_sp &&
+	    sp < td->td_sigstk.ss_size + (size_t)td->td_sigstk.ss_sp);
 }
 
 static __inline int

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:41:02 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 886041313E99;
 Tue,  4 Dec 2018 17:41:01 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 3B69A84A9D;
 Tue,  4 Dec 2018 17:41:01 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1B77871A;
 Tue,  4 Dec 2018 17:41:01 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4Hf0xT052779;
 Tue, 4 Dec 2018 17:41:00 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4Heuqv052754;
 Tue, 4 Dec 2018 17:40:56 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041740.wB4Heuqv052754@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:40:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341477 - in stable/11/sys: conf dev/cxgbe dev/e1000
 dev/ixgbe dev/ixl dev/netmap dev/re modules/netmap net
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: in stable/11/sys: conf dev/cxgbe dev/e1000 dev/ixgbe
 dev/ixl dev/netmap dev/re modules/netmap net
X-SVN-Commit-Revision: 341477
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 3B69A84A9D
X-Spamd-Result: default: False [-0.52 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.38)[-0.384,0];
 NEURAL_SPAM_LONG(0.08)[0.078,0];
 NEURAL_HAM_SHORT(-0.22)[-0.218,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:41:02 -0000

Author: vmaffione
Date: Tue Dec  4 17:40:56 2018
New Revision: 341477
URL: https://svnweb.freebsd.org/changeset/base/341477

Log:
  MFC r339639
  
  netmap: align codebase to the current upstream (sha 8374e1a7e6941)
  
  Changelist:
      - Move large parts of VALE code to a new file and header netmap_bdg.[ch].
        This is useful to reuse the code within upcoming projects.
      - Improvements and bug fixes to pipes and monitors.
      - Introduce nm_os_onattach(), nm_os_onenter() and nm_os_onexit() to
        handle differences between FreeBSD and Linux.
      - Introduce some new helper functions to handle more host rings and fake
        rings (netmap_all_rings(), netmap_real_rings(), ...)
      - Added new sysctl to enable/disable hw checksum in emulated netmap mode.
      - nm_inject: add support for NS_MOREFRAG
  
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17364

Added:
  stable/11/sys/dev/netmap/netmap_bdg.c   (contents, props changed)
  stable/11/sys/dev/netmap/netmap_bdg.h   (contents, props changed)
  stable/11/sys/dev/netmap/netmap_legacy.c   (contents, props changed)
  stable/11/sys/dev/netmap/netmap_pt.c   (contents, props changed)
  stable/11/sys/net/netmap_legacy.h   (contents, props changed)
  stable/11/sys/net/netmap_virt.h   (contents, props changed)
Modified:
  stable/11/sys/conf/files
  stable/11/sys/dev/cxgbe/t4_netmap.c
  stable/11/sys/dev/e1000/if_em.c
  stable/11/sys/dev/e1000/if_igb.c
  stable/11/sys/dev/e1000/if_lem.c
  stable/11/sys/dev/ixgbe/if_ix.c
  stable/11/sys/dev/ixgbe/if_ixv.c
  stable/11/sys/dev/ixgbe/ix_txrx.c
  stable/11/sys/dev/ixgbe/ixgbe_netmap.c
  stable/11/sys/dev/ixl/ixl_pf_main.c
  stable/11/sys/dev/ixl/ixl_txrx.c
  stable/11/sys/dev/netmap/if_em_netmap.h
  stable/11/sys/dev/netmap/if_igb_netmap.h
  stable/11/sys/dev/netmap/if_ixl_netmap.h
  stable/11/sys/dev/netmap/if_lem_netmap.h
  stable/11/sys/dev/netmap/if_re_netmap.h
  stable/11/sys/dev/netmap/if_vtnet_netmap.h
  stable/11/sys/dev/netmap/ixgbe_netmap.h
  stable/11/sys/dev/netmap/netmap.c
  stable/11/sys/dev/netmap/netmap_freebsd.c
  stable/11/sys/dev/netmap/netmap_generic.c
  stable/11/sys/dev/netmap/netmap_kern.h
  stable/11/sys/dev/netmap/netmap_mbq.c
  stable/11/sys/dev/netmap/netmap_mbq.h
  stable/11/sys/dev/netmap/netmap_mem2.c
  stable/11/sys/dev/netmap/netmap_mem2.h
  stable/11/sys/dev/netmap/netmap_monitor.c
  stable/11/sys/dev/netmap/netmap_offloadings.c
  stable/11/sys/dev/netmap/netmap_pipe.c
  stable/11/sys/dev/netmap/netmap_vale.c
  stable/11/sys/dev/re/if_re.c
  stable/11/sys/modules/netmap/Makefile
  stable/11/sys/net/iflib.c
  stable/11/sys/net/netmap.h
  stable/11/sys/net/netmap_user.h

Modified: stable/11/sys/conf/files
==============================================================================
--- stable/11/sys/conf/files	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/conf/files	Tue Dec  4 17:40:56 2018	(r341477)
@@ -2476,7 +2476,10 @@ dev/netmap/netmap_mem2.c	optional netmap
 dev/netmap/netmap_monitor.c	optional netmap
 dev/netmap/netmap_offloadings.c	optional netmap
 dev/netmap/netmap_pipe.c	optional netmap
+dev/netmap/netmap_pt.c		optional netmap
 dev/netmap/netmap_vale.c	optional netmap
+dev/netmap/netmap_legacy.c	optional netmap
+dev/netmap/netmap_bdg.c		optional netmap
 # compile-with "${NORMAL_C} -Wconversion -Wextra"
 dev/nfsmb/nfsmb.c		optional nfsmb pci
 dev/nge/if_nge.c		optional nge

Modified: stable/11/sys/dev/cxgbe/t4_netmap.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_netmap.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/cxgbe/t4_netmap.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -909,7 +909,7 @@ t4_nm_intr(void *arg)
 	struct adapter *sc = vi->pi->adapter;
 	struct ifnet *ifp = vi->ifp;
 	struct netmap_adapter *na = NA(ifp);
-	struct netmap_kring *kring = &na->rx_rings[nm_rxq->nid];
+	struct netmap_kring *kring = na->rx_rings[nm_rxq->nid];
 	struct netmap_ring *ring = kring->ring;
 	struct iq_desc *d = &nm_rxq->iq_desc[nm_rxq->iq_cidx];
 	const void *cpl;
@@ -950,7 +950,7 @@ t4_nm_intr(void *arg)
 			case CPL_RX_PKT:
 				ring->slot[fl_cidx].len = G_RSPD_LEN(lq) -
 				    sc->params.sge.fl_pktshift;
-				ring->slot[fl_cidx].flags = kring->nkr_slot_flags;
+				ring->slot[fl_cidx].flags = 0;
 				fl_cidx += (lq & F_RSPD_NEWBUF) ? 1 : 0;
 				fl_credits += (lq & F_RSPD_NEWBUF) ? 1 : 0;
 				if (__predict_false(fl_cidx == nm_rxq->fl_sidx))

Modified: stable/11/sys/dev/e1000/if_em.c
==============================================================================
--- stable/11/sys/dev/e1000/if_em.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/e1000/if_em.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -3644,7 +3644,7 @@ em_setup_transmit_ring(struct tx_ring *txr)
 		}
 #ifdef DEV_NETMAP
 		if (slot) {
-			int si = netmap_idx_n2k(&na->tx_rings[txr->me], i);
+			int si = netmap_idx_n2k(na->tx_rings[txr->me], i);
 			uint64_t paddr;
 			void *addr;
 
@@ -4436,7 +4436,7 @@ em_setup_receive_ring(struct rx_ring *rxr)
 		rxbuf = &rxr->rx_buffers[j];
 #ifdef DEV_NETMAP
 		if (slot) {
-			int si = netmap_idx_n2k(&na->rx_rings[rxr->me], j);
+			int si = netmap_idx_n2k(na->rx_rings[rxr->me], j);
 			uint64_t paddr;
 			void *addr;
 
@@ -4741,7 +4741,7 @@ em_initialize_receive_unit(struct adapter *adapter)
 		 */
 		if (if_getcapenable(ifp) & IFCAP_NETMAP) {
 			struct netmap_adapter *na = netmap_getna(adapter->ifp);
-			rdt -= nm_kr_rxspace(&na->rx_rings[i]);
+			rdt -= nm_kr_rxspace(na->rx_rings[i]);
 		}
 #endif /* DEV_NETMAP */
 		E1000_WRITE_REG(hw, E1000_RDT(i), rdt);

Modified: stable/11/sys/dev/e1000/if_igb.c
==============================================================================
--- stable/11/sys/dev/e1000/if_igb.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/e1000/if_igb.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -3604,7 +3604,7 @@ igb_setup_transmit_ring(struct tx_ring *txr)
 		}
 #ifdef DEV_NETMAP
 		if (slot) {
-			int si = netmap_idx_n2k(&na->tx_rings[txr->me], i);
+			int si = netmap_idx_n2k(na->tx_rings[txr->me], i);
 			/* no need to set the address */
 			netmap_load_map(na, txr->txtag, txbuf->map, NMB(na, slot + si));
 		}
@@ -4420,7 +4420,7 @@ igb_setup_receive_ring(struct rx_ring *rxr)
 #ifdef DEV_NETMAP
 		if (slot) {
 			/* slot sj is mapped to the j-th NIC-ring entry */
-			int sj = netmap_idx_n2k(&na->rx_rings[rxr->me], j);
+			int sj = netmap_idx_n2k(na->rx_rings[rxr->me], j);
 			uint64_t paddr;
 			void *addr;
 
@@ -4806,7 +4806,7 @@ igb_initialize_receive_units(struct adapter *adapter)
 		 */
 		if (ifp->if_capenable & IFCAP_NETMAP) {
 			struct netmap_adapter *na = NA(adapter->ifp);
-			struct netmap_kring *kring = &na->rx_rings[i];
+			struct netmap_kring *kring = na->rx_rings[i];
 			int t = rxr->next_to_refresh - nm_kr_rxspace(kring);
 
 			if (t >= adapter->num_rx_desc)

Modified: stable/11/sys/dev/e1000/if_lem.c
==============================================================================
--- stable/11/sys/dev/e1000/if_lem.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/e1000/if_lem.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -2792,7 +2792,7 @@ lem_setup_transmit_structures(struct adapter *adapter)
 #ifdef DEV_NETMAP
 		if (slot) {
 			/* the i-th NIC entry goes to slot si */
-			int si = netmap_idx_n2k(&na->tx_rings[0], i);
+			int si = netmap_idx_n2k(na->tx_rings[0], i);
 			uint64_t paddr;
 			void *addr;
 
@@ -3374,7 +3374,7 @@ lem_setup_receive_structures(struct adapter *adapter)
 #ifdef DEV_NETMAP
 		if (slot) {
 			/* the i-th NIC entry goes to slot si */
-			int si = netmap_idx_n2k(&na->rx_rings[0], i);
+			int si = netmap_idx_n2k(na->rx_rings[0], i);
 			uint64_t paddr;
 			void *addr;
 
@@ -3498,7 +3498,7 @@ lem_initialize_receive_unit(struct adapter *adapter)
 	/* preserve buffers already made available to clients */
 	if (if_getcapenable(ifp) & IFCAP_NETMAP) {
 		struct netmap_adapter *na = netmap_getna(adapter->ifp);
-		rctl -= nm_kr_rxspace(&na->rx_rings[0]);
+		rctl -= nm_kr_rxspace(na->rx_rings[0]);
 	}
 #endif /* DEV_NETMAP */
 	E1000_WRITE_REG(&adapter->hw, E1000_RDT(0), rctl);

Modified: stable/11/sys/dev/ixgbe/if_ix.c
==============================================================================
--- stable/11/sys/dev/ixgbe/if_ix.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/ixgbe/if_ix.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -2986,7 +2986,7 @@ ixgbe_init_locked(struct adapter *adapter)
 		if ((adapter->feat_en & IXGBE_FEATURE_NETMAP) &&
 		    (ifp->if_capenable & IFCAP_NETMAP)) {
 			struct netmap_adapter *na = NA(adapter->ifp);
-			struct netmap_kring *kring = &na->rx_rings[i];
+			struct netmap_kring *kring = na->rx_rings[i];
 			int t = na->num_rx_desc - 1 - nm_kr_rxspace(kring);
 
 			IXGBE_WRITE_REG(hw, IXGBE_RDT(rxr->me), t);

Modified: stable/11/sys/dev/ixgbe/if_ixv.c
==============================================================================
--- stable/11/sys/dev/ixgbe/if_ixv.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/ixgbe/if_ixv.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -1490,7 +1490,7 @@ ixv_initialize_receive_units(struct adapter *adapter)
 		if ((adapter->feat_en & IXGBE_FEATURE_NETMAP) &&
 		    (ifp->if_capenable & IFCAP_NETMAP)) {
 			struct netmap_adapter *na = NA(adapter->ifp);
-			struct netmap_kring *kring = &na->rx_rings[i];
+			struct netmap_kring *kring = na->rx_rings[i];
 			int t = na->num_rx_desc - 1 - nm_kr_rxspace(kring);
 
 			IXGBE_WRITE_REG(hw, IXGBE_VFRDT(rxr->me), t);

Modified: stable/11/sys/dev/ixgbe/ix_txrx.c
==============================================================================
--- stable/11/sys/dev/ixgbe/ix_txrx.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/ixgbe/ix_txrx.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -589,7 +589,7 @@ ixgbe_setup_transmit_ring(struct tx_ring *txr)
 		 * netmap_idx_n2k() handles wraparounds properly.
 		 */
 		if ((adapter->feat_en & IXGBE_FEATURE_NETMAP) && slot) {
-			int si = netmap_idx_n2k(&na->tx_rings[txr->me], i);
+			int si = netmap_idx_n2k(na->tx_rings[txr->me], i);
 			netmap_load_map(na, txr->txtag,
 			    txbuf->map, NMB(na, slot + si));
 		}
@@ -991,7 +991,7 @@ ixgbe_txeof(struct tx_ring *txr)
 	if ((adapter->feat_en & IXGBE_FEATURE_NETMAP) &&
 	    (adapter->ifp->if_capenable & IFCAP_NETMAP)) {
 		struct netmap_adapter *na = NA(adapter->ifp);
-		struct netmap_kring *kring = &na->tx_rings[txr->me];
+		struct netmap_kring *kring = na->tx_rings[txr->me];
 		txd = txr->tx_base;
 		bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
 		    BUS_DMASYNC_POSTREAD);
@@ -1402,7 +1402,7 @@ ixgbe_setup_receive_ring(struct rx_ring *rxr)
 		 * an mbuf, so end the block with a continue;
 		 */
 		if ((adapter->feat_en & IXGBE_FEATURE_NETMAP) && slot) {
-			int sj = netmap_idx_n2k(&na->rx_rings[rxr->me], j);
+			int sj = netmap_idx_n2k(na->rx_rings[rxr->me], j);
 			uint64_t paddr;
 			void *addr;
 

Modified: stable/11/sys/dev/ixgbe/ixgbe_netmap.c
==============================================================================
--- stable/11/sys/dev/ixgbe/ixgbe_netmap.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/ixgbe/ixgbe_netmap.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -409,7 +409,6 @@ ixgbe_netmap_rxsync(struct netmap_kring *kring, int fl
 	 */
 	if (netmap_no_pendintr || force_update) {
 		int crclen = (ix_crcstrip) ? 0 : 4;
-		uint16_t slot_flags = kring->nkr_slot_flags;
 
 		nic_i = rxr->next_to_check; // or also k2n(kring->nr_hwtail)
 		nm_i = netmap_idx_n2k(kring, nic_i);
@@ -421,7 +420,7 @@ ixgbe_netmap_rxsync(struct netmap_kring *kring, int fl
 			if ((staterr & IXGBE_RXD_STAT_DD) == 0)
 				break;
 			ring->slot[nm_i].len = le16toh(curr->wb.upper.length) - crclen;
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			bus_dmamap_sync(rxr->ptag,
 			    rxr->rx_buffers[nic_i].pmap, BUS_DMASYNC_POSTREAD);
 			nm_i = nm_next(nm_i, lim);

Modified: stable/11/sys/dev/ixl/ixl_pf_main.c
==============================================================================
--- stable/11/sys/dev/ixl/ixl_pf_main.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/ixl/ixl_pf_main.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -2252,7 +2252,7 @@ ixl_initialize_vsi(struct ixl_vsi *vsi)
 		/* preserve queue */
 		if (vsi->ifp->if_capenable & IFCAP_NETMAP) {
 			struct netmap_adapter *na = NA(vsi->ifp);
-			struct netmap_kring *kring = &na->rx_rings[i];
+			struct netmap_kring *kring = na->rx_rings[i];
 			int t = na->num_rx_desc - 1 - nm_kr_rxspace(kring);
 			wr32(vsi->hw, I40E_QRX_TAIL(que->me), t);
 		} else

Modified: stable/11/sys/dev/ixl/ixl_txrx.c
==============================================================================
--- stable/11/sys/dev/ixl/ixl_txrx.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/ixl/ixl_txrx.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -613,7 +613,7 @@ ixl_init_tx_ring(struct ixl_queue *que)
 		 * netmap slot index, si
 		 */
 		if (slot) {
-			int si = netmap_idx_n2k(&na->tx_rings[que->me], i);
+			int si = netmap_idx_n2k(na->tx_rings[que->me], i);
 			netmap_load_map(na, buf->tag, buf->map, NMB(na, slot + si));
 		}
 #endif /* DEV_NETMAP */
@@ -1414,7 +1414,7 @@ ixl_init_rx_ring(struct ixl_queue *que)
 		 * an mbuf, so end the block with a continue;
 		 */
 		if (slot) {
-			int sj = netmap_idx_n2k(&na->rx_rings[que->me], j);
+			int sj = netmap_idx_n2k(na->rx_rings[que->me], j);
 			uint64_t paddr;
 			void *addr;
 

Modified: stable/11/sys/dev/netmap/if_em_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_em_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/if_em_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -233,8 +233,6 @@ em_netmap_rxsync(struct netmap_kring *kring, int flags
 	 * First part: import newly received packets.
 	 */
 	if (netmap_no_pendintr || force_update) {
-		uint16_t slot_flags = kring->nkr_slot_flags;
-
 		nic_i = rxr->next_to_check;
 		nm_i = netmap_idx_n2k(kring, nic_i);
 
@@ -245,7 +243,7 @@ em_netmap_rxsync(struct netmap_kring *kring, int flags
 			if ((staterr & E1000_RXD_STAT_DD) == 0)
 				break;
 			ring->slot[nm_i].len = le16toh(curr->wb.upper.length);
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			bus_dmamap_sync(rxr->rxtag, rxr->rx_buffers[nic_i].map,
 				BUS_DMASYNC_POSTREAD);
 			nm_i = nm_next(nm_i, lim);

Modified: stable/11/sys/dev/netmap/if_igb_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_igb_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/if_igb_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -215,8 +215,6 @@ igb_netmap_rxsync(struct netmap_kring *kring, int flag
 	 * First part: import newly received packets.
 	 */
 	if (netmap_no_pendintr || force_update) {
-		uint16_t slot_flags = kring->nkr_slot_flags;
-
 		nic_i = rxr->next_to_check;
 		nm_i = netmap_idx_n2k(kring, nic_i);
 
@@ -227,7 +225,7 @@ igb_netmap_rxsync(struct netmap_kring *kring, int flag
 			if ((staterr & E1000_RXD_STAT_DD) == 0)
 				break;
 			ring->slot[nm_i].len = le16toh(curr->wb.upper.length);
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			bus_dmamap_sync(rxr->ptag,
 			    rxr->rx_buffers[nic_i].pmap, BUS_DMASYNC_POSTREAD);
 			nm_i = nm_next(nm_i, lim);

Modified: stable/11/sys/dev/netmap/if_ixl_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_ixl_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/if_ixl_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -59,7 +59,7 @@ extern int ixl_rx_miss, ixl_rx_miss_bufs, ixl_crcstrip
 /*
  * device-specific sysctl variables:
  *
- * ixl_crcstrip: 0: keep CRC in rx frames (default), 1: strip it.
+ * ixl_crcstrip: 0: NIC keeps CRC in rx frames, 1: NIC strips it (default).
  *	During regular operations the CRC is stripped, but on some
  *	hardware reception of frames not multiple of 64 is slower,
  *	so using crcstrip=0 helps in benchmarks.
@@ -67,14 +67,14 @@ extern int ixl_rx_miss, ixl_rx_miss_bufs, ixl_crcstrip
  * ixl_rx_miss, ixl_rx_miss_bufs:
  *	count packets that might be missed due to lost interrupts.
  */
+int ixl_rx_miss, ixl_rx_miss_bufs, ixl_crcstrip = 1;
 SYSCTL_DECL(_dev_netmap);
 /*
  * The xl driver by default strips CRCs and we do not override it.
  */
-int ixl_rx_miss, ixl_rx_miss_bufs, ixl_crcstrip = 1;
 #if 0
 SYSCTL_INT(_dev_netmap, OID_AUTO, ixl_crcstrip,
-    CTLFLAG_RW, &ixl_crcstrip, 1, "strip CRC on rx frames");
+    CTLFLAG_RW, &ixl_crcstrip, 1, "NIC strips CRC on rx frames");
 #endif
 SYSCTL_INT(_dev_netmap, OID_AUTO, ixl_rx_miss,
     CTLFLAG_RW, &ixl_rx_miss, 0, "potentially missed rx intr");
@@ -130,7 +130,7 @@ ixl_netmap_attach(struct ixl_vsi *vsi)
 	na.ifp = vsi->ifp;
 	na.na_flags = NAF_BDG_MAYSLEEP;
 	// XXX check that queues is set.
-	printf("queues is %p\n", vsi->queues);
+	nm_prinf("queues is %p\n", vsi->queues);
 	if (vsi->queues) {
 		na.num_tx_desc = vsi->queues[0].num_desc;
 		na.num_rx_desc = vsi->queues[0].num_desc;
@@ -332,7 +332,6 @@ ixl_netmap_rxsync(struct netmap_kring *kring, int flag
 	 */
 	if (netmap_no_pendintr || force_update) {
 		int crclen = ixl_crcstrip ? 0 : 4;
-		uint16_t slot_flags = kring->nkr_slot_flags;
 
 		nic_i = rxr->next_check; // or also k2n(kring->nr_hwtail)
 		nm_i = netmap_idx_n2k(kring, nic_i);
@@ -347,7 +346,7 @@ ixl_netmap_rxsync(struct netmap_kring *kring, int flag
 				break;
 			ring->slot[nm_i].len = ((qword & I40E_RXD_QW1_LENGTH_PBUF_MASK)
 			    >> I40E_RXD_QW1_LENGTH_PBUF_SHIFT) - crclen;
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			bus_dmamap_sync(rxr->ptag,
 			    rxr->buffers[nic_i].pmap, BUS_DMASYNC_POSTREAD);
 			nm_i = nm_next(nm_i, lim);

Modified: stable/11/sys/dev/netmap/if_lem_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_lem_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/if_lem_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -35,12 +35,8 @@
 
 #include <net/netmap.h>
 #include <sys/selinfo.h>
-#include <vm/vm.h>
-#include <vm/pmap.h>    /* vtophys ? */
 #include <dev/netmap/netmap_kern.h>
 
-extern int netmap_adaptive_io;
-
 /*
  * Register/unregister. We are already under netmap lock.
  */
@@ -81,6 +77,22 @@ lem_netmap_reg(struct netmap_adapter *na, int onoff)
 }
 
 
+static void
+lem_netmap_intr(struct netmap_adapter *na, int onoff)
+{
+	struct ifnet *ifp = na->ifp;
+	struct adapter *adapter = ifp->if_softc;
+
+	EM_CORE_LOCK(adapter);
+	if (onoff) {
+		lem_enable_intr(adapter);
+	} else {
+		lem_disable_intr(adapter);
+	}
+	EM_CORE_UNLOCK(adapter);
+}
+
+
 /*
  * Reconcile kernel and user view of the transmit ring.
  */
@@ -99,10 +111,6 @@ lem_netmap_txsync(struct netmap_kring *kring, int flag
 
 	/* device-specific */
 	struct adapter *adapter = ifp->if_softc;
-#ifdef NIC_PARAVIRT
-	struct paravirt_csb *csb = adapter->csb;
-	uint64_t *csbd = (uint64_t *)(csb + 1);
-#endif /* NIC_PARAVIRT */
 
 	bus_dmamap_sync(adapter->txdma.dma_tag, adapter->txdma.dma_map,
 			BUS_DMASYNC_POSTREAD);
@@ -113,19 +121,6 @@ lem_netmap_txsync(struct netmap_kring *kring, int flag
 
 	nm_i = kring->nr_hwcur;
 	if (nm_i != head) {	/* we have new packets to send */
-#ifdef NIC_PARAVIRT
-		int do_kick = 0;
-		uint64_t t = 0; // timestamp
-		int n = head - nm_i;
-		if (n < 0)
-			n += lim + 1;
-		if (csb) {
-			t = rdtsc(); /* last timestamp */
-			csbd[16] += t - csbd[0]; /* total Wg */
-			csbd[17] += n;		/* Wg count */
-			csbd[0] = t;
-		}
-#endif /* NIC_PARAVIRT */
 		nic_i = netmap_idx_k2n(kring, nm_i);
 		while (nm_i != head) {
 			struct netmap_slot *slot = &ring->slot[nm_i];
@@ -166,38 +161,8 @@ lem_netmap_txsync(struct netmap_kring *kring, int flag
 		bus_dmamap_sync(adapter->txdma.dma_tag, adapter->txdma.dma_map,
 			BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
 
-#ifdef NIC_PARAVIRT
-		/* set unconditionally, then also kick if needed */
-		if (csb) {
-			t = rdtsc();
-			if (csb->host_need_txkick == 2) {
-				/* can compute an update of delta */
-				int64_t delta = t - csbd[3];
-				if (delta < 0)
-					delta = -delta;
-				if (csbd[8] == 0 || delta < csbd[8]) {
-					csbd[8] = delta;
-					csbd[9]++;
-				}
-				csbd[10]++;
-			}
-			csb->guest_tdt = nic_i;
-			csbd[18] += t - csbd[0]; // total wp
-			csbd[19] += n;
-		}
-		if (!csb || !csb->guest_csb_on || (csb->host_need_txkick & 1))
-			do_kick = 1;
-		if (do_kick)
-#endif /* NIC_PARAVIRT */
 		/* (re)start the tx unit up to slot nic_i (excluded) */
 		E1000_WRITE_REG(&adapter->hw, E1000_TDT(0), nic_i);
-#ifdef NIC_PARAVIRT
-		if (do_kick) {
-			uint64_t t1 = rdtsc();
-			csbd[20] += t1 - t; // total Np
-			csbd[21]++;
-		}
-#endif /* NIC_PARAVIRT */
 	}
 
 	/*
@@ -206,93 +171,6 @@ lem_netmap_txsync(struct netmap_kring *kring, int flag
 	if (ticks != kring->last_reclaim || flags & NAF_FORCE_RECLAIM || nm_kr_txempty(kring)) {
 		kring->last_reclaim = ticks;
 		/* record completed transmissions using TDH */
-#ifdef NIC_PARAVIRT
-		/* host updates tdh unconditionally, and we have
-		 * no side effects on reads, so we can read from there
-		 * instead of exiting.
-		 */
-		if (csb) {
-		    static int drain = 0, nodrain=0, good = 0, bad = 0, fail = 0;
-		    u_int x = adapter->next_tx_to_clean;
-		    csbd[19]++; // XXX count reclaims
-		    nic_i = csb->host_tdh;
-		    if (csb->guest_csb_on) {
-			if (nic_i == x) {
-			    bad++;
-		    	    csbd[24]++; // failed reclaims
-			    /* no progress, request kick and retry */
-			    csb->guest_need_txkick = 1;
-			    mb(); // XXX barrier
-		    	    nic_i = csb->host_tdh;
-			} else {
-			    good++;
-			}
-			if (nic_i != x) {
-			    csb->guest_need_txkick = 2;
-			    if (nic_i == csb->guest_tdt)
-				drain++;
-			    else
-				nodrain++;
-#if 1
-			if (netmap_adaptive_io) {
-			    /* new mechanism: last half ring (or so)
-			     * released one slot at a time.
-			     * This effectively makes the system spin.
-			     *
-			     * Take next_to_clean + 1 as a reference.
-			     * tdh must be ahead or equal
-			     * On entry, the logical order is
-			     *		x < tdh = nic_i
-			     * We first push tdh up to avoid wraps.
-			     * The limit is tdh-ll (half ring).
-			     * if tdh-256 < x we report x;
-			     * else we report tdh-256
-			     */
-			    u_int tdh = nic_i;
-			    u_int ll = csbd[15];
-			    u_int delta = lim/8;
-			    if (netmap_adaptive_io == 2 || ll > delta)
-				csbd[15] = ll = delta;
-			    else if (netmap_adaptive_io == 1 && ll > 1) {
-				csbd[15]--;
-			    }
-
-			    if (nic_i >= kring->nkr_num_slots) {
-				RD(5, "bad nic_i %d on input", nic_i);
-			    }
-			    x = nm_next(x, lim);
-			    if (tdh < x)
-				tdh += lim + 1;
-			    if (tdh <= x + ll) {
-				nic_i = x;
-				csbd[25]++; //report n + 1;
-			    } else {
-				tdh = nic_i;
-				if (tdh < ll)
-				    tdh += lim + 1;
-				nic_i = tdh - ll;
-				csbd[26]++; // report tdh - ll
-			    }
-			}
-#endif
-			} else {
-			    /* we stop, count whether we are idle or not */
-			    int bh_active = csb->host_need_txkick & 2 ? 4 : 0;
-			    csbd[27+ csb->host_need_txkick]++;
-			    if (netmap_adaptive_io == 1) {
-				if (bh_active && csbd[15] > 1)
-				    csbd[15]--;
-				else if (!bh_active && csbd[15] < lim/2)
-				    csbd[15]++;
-			    }
-			    bad--;
-			    fail++;
-			}
-		    }
-		    RD(1, "drain %d nodrain %d good %d retry %d fail %d",
-			drain, nodrain, good, bad, fail);
-		} else
-#endif /* !NIC_PARAVIRT */
 		nic_i = E1000_READ_REG(&adapter->hw, E1000_TDH(0));
 		if (nic_i >= kring->nkr_num_slots) { /* XXX can it happen ? */
 			D("TDH wrap %d", nic_i);
@@ -324,21 +202,10 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 
 	/* device-specific */
 	struct adapter *adapter = ifp->if_softc;
-#ifdef NIC_PARAVIRT
-	struct paravirt_csb *csb = adapter->csb;
-	uint32_t csb_mode = csb && csb->guest_csb_on;
-	uint32_t do_host_rxkick = 0;
-#endif /* NIC_PARAVIRT */
 
 	if (head > lim)
 		return netmap_ring_reinit(kring);
 
-#ifdef NIC_PARAVIRT
-	if (csb_mode) {
-		force_update = 1;
-		csb->guest_need_rxkick = 0;
-	}
-#endif /* NIC_PARAVIRT */
 	/* XXX check sync modes */
 	bus_dmamap_sync(adapter->rxdma.dma_tag, adapter->rxdma.dma_map,
 			BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
@@ -347,8 +214,6 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 	 * First part: import newly received packets.
 	 */
 	if (netmap_no_pendintr || force_update) {
-		uint16_t slot_flags = kring->nkr_slot_flags;
-
 		nic_i = adapter->next_rx_desc_to_check;
 		nm_i = netmap_idx_n2k(kring, nic_i);
 
@@ -357,23 +222,6 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 			uint32_t staterr = le32toh(curr->status);
 			int len;
 
-#ifdef NIC_PARAVIRT
-			if (csb_mode) {
-			    if ((staterr & E1000_RXD_STAT_DD) == 0) {
-				/* don't bother to retry if more than 1 pkt */
-				if (n > 1)
-				    break;
-				csb->guest_need_rxkick = 1;
-				wmb();
-				staterr = le32toh(curr->status);
-				if ((staterr & E1000_RXD_STAT_DD) == 0) {
-				    break;
-				} else { /* we are good */
-				   csb->guest_need_rxkick = 0;
-				}
-			    }
-			} else
-#endif /* NIC_PARAVIRT */
 			if ((staterr & E1000_RXD_STAT_DD) == 0)
 				break;
 			len = le16toh(curr->length) - 4; // CRC
@@ -382,7 +230,7 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 				len = 0;
 			}
 			ring->slot[nm_i].len = len;
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			bus_dmamap_sync(adapter->rxtag,
 				adapter->rx_buffer_area[nic_i].map,
 				BUS_DMASYNC_POSTREAD);
@@ -390,18 +238,6 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 			nic_i = nm_next(nic_i, lim);
 		}
 		if (n) { /* update the state variables */
-#ifdef NIC_PARAVIRT
-			if (csb_mode) {
-			    if (n > 1) {
-				/* leave one spare buffer so we avoid rxkicks */
-				nm_i = nm_prev(nm_i, lim);
-				nic_i = nm_prev(nic_i, lim);
-				n--;
-			    } else {
-				csb->guest_need_rxkick = 1;
-			    }
-			}
-#endif /* NIC_PARAVIRT */
 			ND("%d new packets at nic %d nm %d tail %d",
 				n,
 				adapter->next_rx_desc_to_check,
@@ -440,10 +276,6 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 			curr->status = 0;
 			bus_dmamap_sync(adapter->rxtag, rxbuf->map,
 			    BUS_DMASYNC_PREREAD);
-#ifdef NIC_PARAVIRT
-			if (csb_mode && csb->host_rxkick_at == nic_i)
-				do_host_rxkick = 1;
-#endif /* NIC_PARAVIRT */
 			nm_i = nm_next(nm_i, lim);
 			nic_i = nm_next(nic_i, lim);
 		}
@@ -455,12 +287,6 @@ lem_netmap_rxsync(struct netmap_kring *kring, int flag
 		 * so move nic_i back by one unit
 		 */
 		nic_i = nm_prev(nic_i, lim);
-#ifdef NIC_PARAVIRT
-		/* set unconditionally, then also kick if needed */
-		if (csb)
-			csb->guest_rdt = nic_i;
-		if (!csb_mode || do_host_rxkick)
-#endif /* NIC_PARAVIRT */
 		E1000_WRITE_REG(&adapter->hw, E1000_RDT(0), nic_i);
 	}
 
@@ -486,6 +312,7 @@ lem_netmap_attach(struct adapter *adapter)
 	na.nm_rxsync = lem_netmap_rxsync;
 	na.nm_register = lem_netmap_reg;
 	na.num_tx_rings = na.num_rx_rings = 1;
+	na.nm_intr = lem_netmap_intr;
 	netmap_attach(&na);
 }
 

Modified: stable/11/sys/dev/netmap/if_re_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_re_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/if_re_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -199,7 +199,6 @@ re_netmap_rxsync(struct netmap_kring *kring, int flags
 	 * is to stop right before nm_hwcur.
 	 */
 	if (netmap_no_pendintr || force_update) {
-		uint16_t slot_flags = kring->nkr_slot_flags;
 		uint32_t stop_i = nm_prev(kring->nr_hwcur, lim);
 
 		nic_i = sc->rl_ldata.rl_rx_prodidx; /* next pkt to check */
@@ -216,7 +215,7 @@ re_netmap_rxsync(struct netmap_kring *kring, int flags
 			/* XXX subtract crc */
 			total_len = (total_len < 4) ? 0 : total_len - 4;
 			ring->slot[nm_i].len = total_len;
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			/*  sync was in re_newbuf() */
 			bus_dmamap_sync(sc->rl_ldata.rl_rx_mtag,
 			    rxd[nic_i].rx_dmamap, BUS_DMASYNC_POSTREAD);
@@ -303,7 +302,7 @@ re_netmap_tx_init(struct rl_softc *sc)
 	/* l points in the netmap ring, i points in the NIC ring */
 	for (i = 0; i < n; i++) {
 		uint64_t paddr;
-		int l = netmap_idx_n2k(&na->tx_rings[0], i);
+		int l = netmap_idx_n2k(na->tx_rings[0], i);
 		void *addr = PNMB(na, slot + l, &paddr);
 
 		desc[i].rl_bufaddr_lo = htole32(RL_ADDR_LO(paddr));
@@ -329,11 +328,11 @@ re_netmap_rx_init(struct rl_softc *sc)
 	 * Do not release the slots owned by userspace,
 	 * and also keep one empty.
 	 */
-	max_avail = n - 1 - nm_kr_rxspace(&na->rx_rings[0]);
+	max_avail = n - 1 - nm_kr_rxspace(na->rx_rings[0]);
 	for (nic_i = 0; nic_i < n; nic_i++) {
 		void *addr;
 		uint64_t paddr;
-		uint32_t nm_i = netmap_idx_n2k(&na->rx_rings[0], nic_i);
+		uint32_t nm_i = netmap_idx_n2k(na->rx_rings[0], nic_i);
 
 		addr = PNMB(na, slot + nm_i, &paddr);
 

Modified: stable/11/sys/dev/netmap/if_vtnet_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_vtnet_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/if_vtnet_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -122,12 +122,13 @@ vtnet_netmap_txsync(struct netmap_kring *kring, int fl
 	struct SOFTC_T *sc = ifp->if_softc;
 	struct vtnet_txq *txq = &sc->vtnet_txqs[ring_nr];
 	struct virtqueue *vq = txq->vtntx_vq;
+	int interrupts = !(kring->nr_kflags & NKR_NOINTR);
 
 	/*
 	 * First part: process new packets to send.
 	 */
 	rmb();
-	
+
 	nm_i = kring->nr_hwcur;
 	if (nm_i != head) {	/* we have new packets to send */
 		struct sglist *sg = txq->vtntx_sg;
@@ -179,10 +180,12 @@ vtnet_netmap_txsync(struct netmap_kring *kring, int fl
 			ring->head, ring->tail, virtqueue_nused(vq),
 			(virtqueue_dump(vq), 1));
 		virtqueue_notify(vq);
-		virtqueue_enable_intr(vq); // like postpone with 0
+		if (interrupts) {
+			virtqueue_enable_intr(vq); // like postpone with 0
+		}
 	}
 
-	
+
         /* Free used slots. We only consider our own used buffers, recognized
 	 * by the token we passed to virtqueue_add_outbuf.
 	 */
@@ -209,7 +212,7 @@ vtnet_netmap_txsync(struct netmap_kring *kring, int fl
 	if (nm_i != kring->nr_hwtail /* && vtnet_txq_below_threshold(txq) == 0*/) {
 		ND(3, "disable intr, hwcur %d", nm_i);
 		virtqueue_disable_intr(vq);
-	} else {
+	} else if (interrupts) {
 		ND(3, "enable intr, hwcur %d", nm_i);
 		virtqueue_postpone_intr(vq, VQ_POSTPONE_SHORT);
 	}
@@ -277,6 +280,7 @@ vtnet_netmap_rxsync(struct netmap_kring *kring, int fl
 	u_int const lim = kring->nkr_num_slots - 1;
 	u_int const head = kring->rhead;
 	int force_update = (flags & NAF_FORCE_READ) || kring->nr_kflags & NKR_PENDINTR;
+	int interrupts = !(kring->nr_kflags & NKR_NOINTR);
 
 	/* device-specific */
 	struct SOFTC_T *sc = ifp->if_softc;
@@ -297,7 +301,6 @@ vtnet_netmap_rxsync(struct netmap_kring *kring, int fl
 	 * and vtnet_netmap_init_buffers().
 	 */
 	if (netmap_no_pendintr || force_update) {
-		uint16_t slot_flags = kring->nkr_slot_flags;
                 struct netmap_adapter *token;
 
                 nm_i = kring->nr_hwtail;
@@ -309,7 +312,7 @@ vtnet_netmap_rxsync(struct netmap_kring *kring, int fl
                                 break;
                         if (likely(token == (void *)rxq)) {
                             ring->slot[nm_i].len = len;
-                            ring->slot[nm_i].flags = slot_flags;
+                            ring->slot[nm_i].flags = 0;
                             nm_i = nm_next(nm_i, lim);
                             n++;
                         } else {
@@ -334,7 +337,9 @@ vtnet_netmap_rxsync(struct netmap_kring *kring, int fl
 		kring->nr_hwcur = err;
 		virtqueue_notify(vq);
 		/* After draining the queue may need an intr from the hypervisor */
-        	vtnet_rxq_enable_intr(rxq);
+		if (interrupts) {
+			vtnet_rxq_enable_intr(rxq);
+		}
 	}
 
         ND("[C] h %d c %d t %d hwcur %d hwtail %d",
@@ -345,6 +350,28 @@ vtnet_netmap_rxsync(struct netmap_kring *kring, int fl
 }
 
 
+/* Enable/disable interrupts on all virtqueues. */
+static void
+vtnet_netmap_intr(struct netmap_adapter *na, int onoff)
+{
+	struct SOFTC_T *sc = na->ifp->if_softc;
+	int i;
+
+	for (i = 0; i < sc->vtnet_max_vq_pairs; i++) {
+		struct vtnet_rxq *rxq = &sc->vtnet_rxqs[i];
+		struct vtnet_txq *txq = &sc->vtnet_txqs[i];
+		struct virtqueue *txvq = txq->vtntx_vq;
+
+		if (onoff) {
+			vtnet_rxq_enable_intr(rxq);
+			virtqueue_enable_intr(txvq);
+		} else {
+			vtnet_rxq_disable_intr(rxq);
+			virtqueue_disable_intr(txvq);
+		}
+	}
+}
+
 /* Make RX virtqueues buffers pointing to netmap buffers. */
 static int
 vtnet_netmap_init_rx_buffers(struct SOFTC_T *sc)
@@ -356,7 +383,7 @@ vtnet_netmap_init_rx_buffers(struct SOFTC_T *sc)
 	if (!nm_native_on(na))
 		return 0;
 	for (r = 0; r < na->num_rx_rings; r++) {
-                struct netmap_kring *kring = &na->rx_rings[r];
+                struct netmap_kring *kring = na->rx_rings[r];
 		struct vtnet_rxq *rxq = &sc->vtnet_rxqs[r];
 		struct virtqueue *vq = rxq->vtnrx_vq;
 	        struct netmap_slot* slot;
@@ -380,29 +407,6 @@ vtnet_netmap_init_rx_buffers(struct SOFTC_T *sc)
 	return 1;
 }
 
-/* Update the virtio-net device configurations. Number of queues can
- * change dinamically, by 'ethtool --set-channels $IFNAME combined $N'.
- * This is actually the only way virtio-net can currently enable
- * the multiqueue mode.
- * XXX note that we seem to lose packets if the netmap ring has more
- * slots than the queue
- */
-static int
-vtnet_netmap_config(struct netmap_adapter *na, u_int *txr, u_int *txd,
-						u_int *rxr, u_int *rxd)
-{
-	struct ifnet *ifp = na->ifp;
-	struct SOFTC_T *sc = ifp->if_softc;
-
-	*txr = *rxr = sc->vtnet_max_vq_pairs;
-	*rxd = 512; // sc->vtnet_rx_nmbufs;
-	*txd = *rxd; // XXX
-        D("vtnet config txq=%d, txd=%d rxq=%d, rxd=%d",
-					*txr, *txd, *rxr, *rxd);
-
-	return 0;
-}
-
 static void
 vtnet_netmap_attach(struct SOFTC_T *sc)
 {
@@ -416,7 +420,7 @@ vtnet_netmap_attach(struct SOFTC_T *sc)
 	na.nm_register = vtnet_netmap_reg;
 	na.nm_txsync = vtnet_netmap_txsync;
 	na.nm_rxsync = vtnet_netmap_rxsync;
-	na.nm_config = vtnet_netmap_config;
+	na.nm_intr = vtnet_netmap_intr;
 	na.num_tx_rings = na.num_rx_rings = sc->vtnet_max_vq_pairs;
 	D("max rings %d", sc->vtnet_max_vq_pairs);
 	netmap_attach(&na);

Modified: stable/11/sys/dev/netmap/ixgbe_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/ixgbe_netmap.h	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/ixgbe_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
@@ -53,7 +53,7 @@ void ixgbe_netmap_attach(struct adapter *adapter);
 /*
  * device-specific sysctl variables:
  *
- * ix_crcstrip: 0: keep CRC in rx frames (default), 1: strip it.
+ * ix_crcstrip: 0: NIC keeps CRC in rx frames (default), 1: NIC strips it.
  *	During regular operations the CRC is stripped, but on some
  *	hardware reception of frames not multiple of 64 is slower,
  *	so using crcstrip=0 helps in benchmarks.
@@ -65,7 +65,7 @@ SYSCTL_DECL(_dev_netmap);
 static int ix_rx_miss, ix_rx_miss_bufs;
 int ix_crcstrip;
 SYSCTL_INT(_dev_netmap, OID_AUTO, ix_crcstrip,
-    CTLFLAG_RW, &ix_crcstrip, 0, "strip CRC on rx frames");
+    CTLFLAG_RW, &ix_crcstrip, 0, "NIC strips CRC on rx frames");
 SYSCTL_INT(_dev_netmap, OID_AUTO, ix_rx_miss,
     CTLFLAG_RW, &ix_rx_miss, 0, "potentially missed rx intr");
 SYSCTL_INT(_dev_netmap, OID_AUTO, ix_rx_miss_bufs,
@@ -109,7 +109,21 @@ set_crcstrip(struct ixgbe_hw *hw, int onoff)
 	IXGBE_WRITE_REG(hw, IXGBE_RDRXCTL, rxc);
 }
 
+static void
+ixgbe_netmap_intr(struct netmap_adapter *na, int onoff)
+{
+	struct ifnet *ifp = na->ifp;
+	struct adapter *adapter = ifp->if_softc;
 
+	IXGBE_CORE_LOCK(adapter);
+	if (onoff) {
+		ixgbe_enable_intr(adapter); // XXX maybe ixgbe_stop ?
+	} else {
+		ixgbe_disable_intr(adapter); // XXX maybe ixgbe_stop ?
+	}
+	IXGBE_CORE_UNLOCK(adapter);
+}
+
 /*
  * Register/unregister. We are already under netmap lock.
  * Only called on the first register or the last unregister.
@@ -311,7 +325,7 @@ ixgbe_netmap_txsync(struct netmap_kring *kring, int fl
 		 * good way.
 		 */
 		nic_i = IXGBE_READ_REG(&adapter->hw, IXGBE_IS_VF(adapter) ?
-				       IXGBE_VFTDH(kring->ring_id) : IXGBE_TDH(kring->ring_id));
+				IXGBE_VFTDH(kring->ring_id) : IXGBE_TDH(kring->ring_id));
 		if (nic_i >= kring->nkr_num_slots) { /* XXX can it happen ? */
 			D("TDH wrap %d", nic_i);
 			nic_i -= kring->nkr_num_slots;
@@ -381,7 +395,6 @@ ixgbe_netmap_rxsync(struct netmap_kring *kring, int fl
 	 */
 	if (netmap_no_pendintr || force_update) {
 		int crclen = (ix_crcstrip || IXGBE_IS_VF(adapter) ) ? 0 : 4;
-		uint16_t slot_flags = kring->nkr_slot_flags;
 
 		nic_i = rxr->next_to_check; // or also k2n(kring->nr_hwtail)
 		nm_i = netmap_idx_n2k(kring, nic_i);
@@ -393,7 +406,7 @@ ixgbe_netmap_rxsync(struct netmap_kring *kring, int fl
 			if ((staterr & IXGBE_RXD_STAT_DD) == 0)
 				break;
 			ring->slot[nm_i].len = le16toh(curr->wb.upper.length) - crclen;
-			ring->slot[nm_i].flags = slot_flags;
+			ring->slot[nm_i].flags = 0;
 			bus_dmamap_sync(rxr->ptag,
 			    rxr->rx_buffers[nic_i].pmap, BUS_DMASYNC_POSTREAD);
 			nm_i = nm_next(nm_i, lim);
@@ -486,6 +499,7 @@ ixgbe_netmap_attach(struct adapter *adapter)
 	na.nm_rxsync = ixgbe_netmap_rxsync;
 	na.nm_register = ixgbe_netmap_reg;
 	na.num_tx_rings = na.num_rx_rings = adapter->num_queues;
+	na.nm_intr = ixgbe_netmap_intr;
 	netmap_attach(&na);
 }
 

Modified: stable/11/sys/dev/netmap/netmap.c
==============================================================================
--- stable/11/sys/dev/netmap/netmap.c	Tue Dec  4 16:53:28 2018	(r341476)
+++ stable/11/sys/dev/netmap/netmap.c	Tue Dec  4 17:40:56 2018	(r341477)
@@ -1,5 +1,9 @@
 /*
- * Copyright (C) 2011-2014 Matteo Landi, Luigi Rizzo. All rights reserved.
+ * Copyright (C) 2011-2014 Matteo Landi
+ * Copyright (C) 2011-2016 Luigi Rizzo
+ * Copyright (C) 2011-2016 Giuseppe Lettieri
+ * Copyright (C) 2011-2016 Vincenzo Maffione
+ * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -133,13 +137,12 @@ ports attached to the switch)
  * >    select()able file descriptor on which events are reported.
  *
  *  	Internally, we allocate a netmap_priv_d structure, that will be
- *  	initialized on ioctl(NIOCREGIF).
+ *  	initialized on ioctl(NIOCREGIF). There is one netmap_priv_d
+ *  	structure for each open().
  *
  *      os-specific:
- *  	    FreeBSD: netmap_open (netmap_freebsd.c). The priv is
- *  		     per-thread.
- *  	    linux:   linux_netmap_open (netmap_linux.c). The priv is
- *  		     per-open.
+ *  	    FreeBSD: see netmap_open() (netmap_freebsd.c)
+ *  	    linux:   see linux_netmap_open() (netmap_linux.c)
  *
  * > 2. on each descriptor, the process issues an ioctl() to identify
  * >    the interface that should report events to the file descriptor.
@@ -257,7 +260,7 @@ ports attached to the switch)
  *
  *  Any network interface known to the system (including a persistent VALE
  *  port) can be attached to a VALE switch by issuing the
- *  NETMAP_BDG_ATTACH subcommand. After the attachment, persistent VALE ports
+ *  NETMAP_REQ_VALE_ATTACH command. After the attachment, persistent VALE ports
  *  look exactly like ephemeral VALE ports (as created in step 2 above).  The
  *  attachment of other interfaces, instead, requires the creation of a
  *  netmap_bwrap_adapter.  Moreover, the attached interface must be put in
@@ -299,18 +302,17 @@ ports attached to the switch)
  *                netmap_transmit()
  *                  na->nm_notify  == netmap_notify()
  *           2) ioctl(NIOCRXSYNC)/netmap_poll() in process context
- *                kring->nm_sync() == netmap_rxsync_from_host_compat
+ *                kring->nm_sync() == netmap_rxsync_from_host
  *                  netmap_rxsync_from_host(na, NULL, NULL)
  *    - tx to host stack
  *           ioctl(NIOCTXSYNC)/netmap_poll() in process context
- *             kring->nm_sync() == netmap_txsync_to_host_compat
+ *             kring->nm_sync() == netmap_txsync_to_host
  *               netmap_txsync_to_host(na)
- *                 NM_SEND_UP()
- *                   FreeBSD: na->if_input() == ?? XXX
+ *                 nm_os_send_up()
+ *                   FreeBSD: na->if_input() == ether_input()
  *                   linux: netif_rx() with NM_MAGIC_PRIORITY_RX
  *
  *
- *
  *               -= SYSTEM DEVICE WITH GENERIC SUPPORT =-
  *
  *    na == NA(ifp) == generic_netmap_adapter created in generic_netmap_attach()
@@ -319,10 +321,11 @@ ports attached to the switch)
  *       concurrently:
  *           1) ioctl(NIOCTXSYNC)/netmap_poll() in process context
  *               kring->nm_sync() == generic_netmap_txsync()
- *                   linux:   dev_queue_xmit() with NM_MAGIC_PRIORITY_TX
- *                       generic_ndo_start_xmit()
- *                           orig. dev. start_xmit
- *                   FreeBSD: na->if_transmit() == orig. dev if_transmit
+ *                   nm_os_generic_xmit_frame()
+ *                       linux:   dev_queue_xmit() with NM_MAGIC_PRIORITY_TX
+ *                           ifp->ndo_start_xmit == generic_ndo_start_xmit()
+ *                               gna->save_start_xmit == orig. dev. start_xmit
+ *                       FreeBSD: na->if_transmit() == orig. dev if_transmit
  *           2) generic_mbuf_destructor()
  *                   na->nm_notify() == netmap_notify()
  *    - rx from netmap userspace:
@@ -333,24 +336,15 @@ ports attached to the switch)
  *               generic_rx_handler()
  *                   mbq_safe_enqueue()
  *                   na->nm_notify() == netmap_notify()
- *    - rx from host stack:
- *        concurrently:
+ *    - rx from host stack
+ *        FreeBSD: same as native
+ *        Linux: same as native except:
  *           1) host stack
- *               linux: generic_ndo_start_xmit()
- *                   netmap_transmit()
- *               FreeBSD: ifp->if_input() == netmap_transmit
- *               both:
- *                       na->nm_notify() == netmap_notify()
- *           2) ioctl(NIOCRXSYNC)/netmap_poll() in process context
- *                kring->nm_sync() == netmap_rxsync_from_host_compat

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:44:13 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 68E2113141DD;
 Tue,  4 Dec 2018 17:44:13 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 1CB7284F14;
 Tue,  4 Dec 2018 17:44:13 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F3574893;
 Tue,  4 Dec 2018 17:44:12 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4HiCGP057377;
 Tue, 4 Dec 2018 17:44:12 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4HiCRa057375;
 Tue, 4 Dec 2018 17:44:12 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041744.wB4HiCRa057375@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:44:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341478 - in stable/11/sys/dev: netmap virtio/network
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: in stable/11/sys/dev: netmap virtio/network
X-SVN-Commit-Revision: 341478
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 1CB7284F14
X-Spamd-Result: default: False [-0.52 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_SHORT(-0.22)[-0.218,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_MEDIUM(-0.38)[-0.384,0];
 NEURAL_SPAM_LONG(0.08)[0.078,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:44:13 -0000

Author: vmaffione
Date: Tue Dec  4 17:44:12 2018
New Revision: 341478
URL: https://svnweb.freebsd.org/changeset/base/341478

Log:
  MFC r340436
  
  vtnet: fix netmap support
  
  netmap(4) support for vtnet(4) was incomplete and had multiple bugs.
  This commit fixes those bugs to bring netmap on vtnet in a functional state.
  
  Changelist:
    - handle errors returned by virtqueue_enqueue() properly (they were
      previously ignored)
    - make sure netmap XOR rest of the kernel access each virtqueue.
    - compute the number of netmap slots for TX and RX separately, according to
      whether indirect descriptors are used or not for a given virtqueue.
    - make sure sglist are freed according to their type (mbufs or netmap
      buffers)
    - add support for mulitiqueue and netmap host (aka sw) rings.
    - intercept VQ interrupts directly instead of intercepting them in txq_eof
      and rxq_eof. This simplifies the code and makes it easier to make sure
      taskqueues are not running for a VQ while it is in netmap mode.
    - implement vntet_netmap_config() to cope with changes in the number of queues.
  
  Reviewed by:    bryanv
  Approved by:    gnn (mentor)
  Sponsored by:   Sunny Valley Networks
  Differential Revision:  https://reviews.freebsd.org/D17916

Modified:
  stable/11/sys/dev/netmap/if_vtnet_netmap.h
  stable/11/sys/dev/virtio/network/if_vtnet.c
  stable/11/sys/dev/virtio/network/if_vtnetvar.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/netmap/if_vtnet_netmap.h
==============================================================================
--- stable/11/sys/dev/netmap/if_vtnet_netmap.h	Tue Dec  4 17:40:56 2018	(r341477)
+++ stable/11/sys/dev/netmap/if_vtnet_netmap.h	Tue Dec  4 17:44:12 2018	(r341478)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 Vincenzo Maffione, Luigi Rizzo. All rights reserved.
+ * Copyright (C) 2014-2018 Vincenzo Maffione, Luigi Rizzo.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -33,74 +33,148 @@
 #include <vm/pmap.h>    /* vtophys ? */
 #include <dev/netmap/netmap_kern.h>
 
+/*
+ * Return 1 if the queue identified by 't' and 'idx' is in netmap mode.
+ */
+static int
+vtnet_netmap_queue_on(struct vtnet_softc *sc, enum txrx t, int idx)
+{
+	struct netmap_adapter *na = NA(sc->vtnet_ifp);
 
-#define SOFTC_T	vtnet_softc
+	if (!nm_native_on(na))
+		return 0;
 
-/* Free all the unused buffer in all the RX virtqueues.
- * This function is called when entering and exiting netmap mode.
- * - buffers queued by the virtio driver return skbuf/mbuf pointer
- *   and need to be freed;
- * - buffers queued by netmap return the txq/rxq, and do not need work
- */
+	if (t == NR_RX)
+		return !!(idx < na->num_rx_rings &&
+			na->rx_rings[idx]->nr_mode == NKR_NETMAP_ON);
+
+	return !!(idx < na->num_tx_rings &&
+		na->tx_rings[idx]->nr_mode == NKR_NETMAP_ON);
+}
+
 static void
-vtnet_netmap_free_bufs(struct SOFTC_T* sc)
+vtnet_free_used(struct virtqueue *vq, int netmap_bufs, enum txrx t, int idx)
 {
-	int i, nmb = 0, n = 0, last;
+	void *cookie;
+	int deq = 0;
 
-	for (i = 0; i < sc->vtnet_max_vq_pairs; i++) {
-		struct vtnet_rxq *rxq = &sc->vtnet_rxqs[i];
-		struct virtqueue *vq;
-		struct mbuf *m;
-		struct vtnet_txq *txq = &sc->vtnet_txqs[i];
-                struct vtnet_tx_header *txhdr;
+	while ((cookie = virtqueue_dequeue(vq, NULL)) != NULL) {
+		if (netmap_bufs) {
+			/* These are netmap buffers: there is nothing to do. */
+		} else {
+			/* These are mbufs that we need to free. */
+			struct mbuf *m;
 
-		last = 0;
-		vq = rxq->vtnrx_vq;
-		while ((m = virtqueue_drain(vq, &last)) != NULL) {
-			n++;
-			if (m != (void *)rxq)
+			if (t == NR_TX) {
+				struct vtnet_tx_header *txhdr = cookie;
+				m = txhdr->vth_mbuf;
 				m_freem(m);
-			else
-				nmb++;
-		}
-
-		last = 0;
-		vq = txq->vtntx_vq;
-		while ((txhdr = virtqueue_drain(vq, &last)) != NULL) {
-			n++;
-			if (txhdr != (void *)txq) {
-				m_freem(txhdr->vth_mbuf);
 				uma_zfree(vtnet_tx_header_zone, txhdr);
-			} else
-				nmb++;
+			} else {
+				m = cookie;
+				m_freem(m);
+			}
 		}
+		deq++;
 	}
-	D("freed %d mbufs, %d netmap bufs on %d queues",
-		n - nmb, nmb, i);
+
+	if (deq)
+		nm_prinf("%d sgs dequeued from %s-%d (netmap=%d)\n",
+			 deq, nm_txrx2str(t), idx, netmap_bufs);
 }
 
 /* Register and unregister. */
 static int
-vtnet_netmap_reg(struct netmap_adapter *na, int onoff)
+vtnet_netmap_reg(struct netmap_adapter *na, int state)
 {
-        struct ifnet *ifp = na->ifp;
-	struct SOFTC_T *sc = ifp->if_softc;
+	struct ifnet *ifp = na->ifp;
+	struct vtnet_softc *sc = ifp->if_softc;
+	int success;
+	enum txrx t;
+	int i;
 
+	/* Drain the taskqueues to make sure that there are no worker threads
+	 * accessing the virtqueues. */
+	vtnet_drain_taskqueues(sc);
+
 	VTNET_CORE_LOCK(sc);
-	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
-	/* enable or disable flags and callbacks in na and ifp */
-	if (onoff) {
+
+	/* We need nm_netmap_on() to return true when called by
+	 * vtnet_init_locked() below. */
+	if (state)
 		nm_set_native_flags(na);
+
+	/* We need to trigger a device reset in order to unexpose guest buffers
+	 * published to the host. */
+	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+	/* Get pending used buffers. The way they are freed depends on whether
+	 * they are netmap buffer or they are mbufs. We can tell apart the two
+	 * cases by looking at kring->nr_mode, before this is possibly updated
+	 * in the loop below. */
+	for (i = 0; i < sc->vtnet_act_vq_pairs; i++) {
+		struct vtnet_txq *txq = &sc->vtnet_txqs[i];
+		struct vtnet_rxq *rxq = &sc->vtnet_rxqs[i];
+		struct netmap_kring *kring;
+
+		VTNET_TXQ_LOCK(txq);
+		kring = NMR(na, NR_TX)[i];
+		vtnet_free_used(txq->vtntx_vq,
+				kring->nr_mode == NKR_NETMAP_ON, NR_TX, i);
+		VTNET_TXQ_UNLOCK(txq);
+
+		VTNET_RXQ_LOCK(rxq);
+		kring = NMR(na, NR_RX)[i];
+		vtnet_free_used(rxq->vtnrx_vq,
+				kring->nr_mode == NKR_NETMAP_ON, NR_RX, i);
+		VTNET_RXQ_UNLOCK(rxq);
+	}
+	vtnet_init_locked(sc);
+	success = (ifp->if_drv_flags & IFF_DRV_RUNNING) ? 0 : ENXIO;
+
+	if (state) {
+		for_rx_tx(t) {
+			/* Hardware rings. */
+			for (i = 0; i < nma_get_nrings(na, t); i++) {
+				struct netmap_kring *kring = NMR(na, t)[i];
+
+				if (nm_kring_pending_on(kring))
+					kring->nr_mode = NKR_NETMAP_ON;
+			}
+
+			/* Host rings. */
+			for (i = 0; i < nma_get_host_nrings(na, t); i++) {
+				struct netmap_kring *kring =
+					NMR(na, t)[nma_get_nrings(na, t) + i];
+
+				if (nm_kring_pending_on(kring))
+					kring->nr_mode = NKR_NETMAP_ON;
+			}
+		}
 	} else {
 		nm_clear_native_flags(na);
+		for_rx_tx(t) {
+			/* Hardware rings. */
+			for (i = 0; i < nma_get_nrings(na, t); i++) {
+				struct netmap_kring *kring = NMR(na, t)[i];
+
+				if (nm_kring_pending_off(kring))
+					kring->nr_mode = NKR_NETMAP_OFF;
+			}
+
+			/* Host rings. */
+			for (i = 0; i < nma_get_host_nrings(na, t); i++) {
+				struct netmap_kring *kring =
+					NMR(na, t)[nma_get_nrings(na, t) + i];
+
+				if (nm_kring_pending_off(kring))
+					kring->nr_mode = NKR_NETMAP_OFF;
+			}
+		}
 	}
-	/* drain queues so netmap and native drivers
-	 * do not interfere with each other
-	 */
-	vtnet_netmap_free_bufs(sc);
-        vtnet_init_locked(sc);       /* also enable intr */
-        VTNET_CORE_UNLOCK(sc);
-        return (ifp->if_drv_flags & IFF_DRV_RUNNING ? 0 : 1);
+
+	VTNET_CORE_UNLOCK(sc);
+
+	return success;
 }
 
 
@@ -109,20 +183,19 @@ static int
 vtnet_netmap_txsync(struct netmap_kring *kring, int flags)
 {
 	struct netmap_adapter *na = kring->na;
-        struct ifnet *ifp = na->ifp;
+	struct ifnet *ifp = na->ifp;
 	struct netmap_ring *ring = kring->ring;
 	u_int ring_nr = kring->ring_id;
 	u_int nm_i;	/* index into the netmap ring */
-	u_int nic_i;	/* index into the NIC ring */
-	u_int n;
 	u_int const lim = kring->nkr_num_slots - 1;
 	u_int const head = kring->rhead;
 
 	/* device-specific */
-	struct SOFTC_T *sc = ifp->if_softc;
+	struct vtnet_softc *sc = ifp->if_softc;
 	struct vtnet_txq *txq = &sc->vtnet_txqs[ring_nr];
 	struct virtqueue *vq = txq->vtntx_vq;
 	int interrupts = !(kring->nr_kflags & NKR_NOINTR);
+	u_int n;
 
 	/*
 	 * First part: process new packets to send.
@@ -133,15 +206,13 @@ vtnet_netmap_txsync(struct netmap_kring *kring, int fl
 	if (nm_i != head) {	/* we have new packets to send */
 		struct sglist *sg = txq->vtntx_sg;
 
-		nic_i = netmap_idx_k2n(kring, nm_i);
-		for (n = 0; nm_i != head; n++) {
+		for (; nm_i != head; nm_i = nm_next(nm_i, lim)) {
 			/* we use an empty header here */
-			static struct virtio_net_hdr_mrg_rxbuf hdr;
 			struct netmap_slot *slot = &ring->slot[nm_i];
 			u_int len = slot->len;
 			uint64_t paddr;
 			void *addr = PNMB(na, slot, &paddr);
-                        int err;
+			int err;
 
 			NM_CHECK_ADDR_LEN(na, addr, len);
 
@@ -150,88 +221,63 @@ vtnet_netmap_txsync(struct netmap_kring *kring, int fl
 			 * and kick the hypervisor (if necessary).
 			 */
 			sglist_reset(sg); // cheap
-			// if vtnet_hdr_size > 0 ...
-			err = sglist_append(sg, &hdr, sc->vtnet_hdr_size);
-			// XXX later, support multi segment
-			err = sglist_append_phys(sg, paddr, len);
-			/* use na as the cookie */
-                        err = virtqueue_enqueue(vq, txq, sg, sg->sg_nseg, 0);
-                        if (unlikely(err < 0)) {
-                                D("virtqueue_enqueue failed");
-                                break;
-                        }
-
-			nm_i = nm_next(nm_i, lim);
-			nic_i = nm_next(nic_i, lim);
+			err = sglist_append(sg, &txq->vtntx_shrhdr, sc->vtnet_hdr_size);
+			err |= sglist_append_phys(sg, paddr, len);
+			KASSERT(err == 0, ("%s: cannot append to sglist %d",
+						__func__, err));
+			err = virtqueue_enqueue(vq, /*cookie=*/txq, sg,
+						/*readable=*/sg->sg_nseg,
+						/*writeable=*/0);
+			if (unlikely(err)) {
+				if (err != ENOSPC)
+					nm_prerr("virtqueue_enqueue(%s) failed: %d\n",
+							kring->name, err);
+				break;
+			}
 		}
-		/* Update hwcur depending on where we stopped. */
-		kring->nr_hwcur = nm_i; /* note we migth break early */
 
-		/* No more free TX slots? Ask the hypervisor for notifications,
-		 * possibly only when a considerable amount of work has been
-		 * done.
-		 */
-		ND(3,"sent %d packets, hwcur %d", n, nm_i);
-		virtqueue_disable_intr(vq);
 		virtqueue_notify(vq);
-	} else {
-		if (ring->head != ring->tail)
-		    ND(5, "pure notify ? head %d tail %d nused %d %d",
-			ring->head, ring->tail, virtqueue_nused(vq),
-			(virtqueue_dump(vq), 1));
-		virtqueue_notify(vq);
-		if (interrupts) {
-			virtqueue_enable_intr(vq); // like postpone with 0
-		}
+
+		/* Update hwcur depending on where we stopped. */
+		kring->nr_hwcur = nm_i; /* note we migth break early */
 	}
 
-
-        /* Free used slots. We only consider our own used buffers, recognized
-	 * by the token we passed to virtqueue_add_outbuf.
+	/* Free used slots. We only consider our own used buffers, recognized
+	 * by the token we passed to virtqueue_enqueue.
 	 */
-        n = 0;
-        for (;;) {
-                struct vtnet_tx_header *txhdr = virtqueue_dequeue(vq, NULL);
-                if (txhdr == NULL)
-                        break;
-                if (likely(txhdr == (void *)txq)) {
-                        n++;
-			if (virtqueue_nused(vq) < 32) { // XXX slow release
-				break;
-			}
-		} else { /* leftover from previous transmission */
-			m_freem(txhdr->vth_mbuf);
-			uma_zfree(vtnet_tx_header_zone, txhdr);
-		}
-        }
-	if (n) {
+	n = 0;
+	for (;;) {
+		void *token = virtqueue_dequeue(vq, NULL);
+		if (token == NULL)
+			break;
+		if (unlikely(token != (void *)txq))
+			nm_prerr("BUG: TX token mismatch\n");
+		else
+			n++;
+	}
+	if (n > 0) {
 		kring->nr_hwtail += n;
 		if (kring->nr_hwtail > lim)
 			kring->nr_hwtail -= lim + 1;
 	}
-	if (nm_i != kring->nr_hwtail /* && vtnet_txq_below_threshold(txq) == 0*/) {
-		ND(3, "disable intr, hwcur %d", nm_i);
-		virtqueue_disable_intr(vq);
-	} else if (interrupts) {
-		ND(3, "enable intr, hwcur %d", nm_i);
-		virtqueue_postpone_intr(vq, VQ_POSTPONE_SHORT);
-	}
 
-        return 0;
+	if (interrupts && virtqueue_nfree(vq) < 32)
+		virtqueue_postpone_intr(vq, VQ_POSTPONE_LONG);
+
+	return 0;
 }
 
 static int
-vtnet_refill_rxq(struct netmap_kring *kring, u_int nm_i, u_int head)
+vtnet_netmap_kring_refill(struct netmap_kring *kring, u_int nm_i, u_int head)
 {
 	struct netmap_adapter *na = kring->na;
-        struct ifnet *ifp = na->ifp;
+	struct ifnet *ifp = na->ifp;
 	struct netmap_ring *ring = kring->ring;
 	u_int ring_nr = kring->ring_id;
 	u_int const lim = kring->nkr_num_slots - 1;
-	u_int n;
 
 	/* device-specific */
-	struct SOFTC_T *sc = ifp->if_softc;
+	struct vtnet_softc *sc = ifp->if_softc;
 	struct vtnet_rxq *rxq = &sc->vtnet_rxqs[ring_nr];
 	struct virtqueue *vq = rxq->vtnrx_vq;
 
@@ -239,12 +285,11 @@ vtnet_refill_rxq(struct netmap_kring *kring, u_int nm_
 	struct sglist_seg ss[2];
 	struct sglist sg = { ss, 0, 0, 2 };
 
-	for (n = 0; nm_i != head; n++) {
-		static struct virtio_net_hdr_mrg_rxbuf hdr;
+	for (; nm_i != head; nm_i = nm_next(nm_i, lim)) {
 		struct netmap_slot *slot = &ring->slot[nm_i];
 		uint64_t paddr;
 		void *addr = PNMB(na, slot, &paddr);
-		int err = 0;
+		int err;
 
 		if (addr == NETMAP_BUF_BASE(na)) { /* bad buf */
 			if (netmap_ring_reinit(kring))
@@ -252,99 +297,134 @@ vtnet_refill_rxq(struct netmap_kring *kring, u_int nm_
 		}
 
 		slot->flags &= ~NS_BUF_CHANGED;
-		sglist_reset(&sg); // cheap
-		err = sglist_append(&sg, &hdr, sc->vtnet_hdr_size);
-		err = sglist_append_phys(&sg, paddr, NETMAP_BUF_SIZE(na));
+		sglist_reset(&sg);
+		err = sglist_append(&sg, &rxq->vtnrx_shrhdr, sc->vtnet_hdr_size);
+		err |= sglist_append_phys(&sg, paddr, NETMAP_BUF_SIZE(na));
+		KASSERT(err == 0, ("%s: cannot append to sglist %d",
+					__func__, err));
 		/* writable for the host */
-		err = virtqueue_enqueue(vq, rxq, &sg, 0, sg.sg_nseg);
-		if (err < 0) {
-			D("virtqueue_enqueue failed");
+		err = virtqueue_enqueue(vq, /*cookie=*/rxq, &sg,
+				/*readable=*/0, /*writeable=*/sg.sg_nseg);
+		if (unlikely(err)) {
+			if (err != ENOSPC)
+				nm_prerr("virtqueue_enqueue(%s) failed: %d\n",
+					kring->name, err);
 			break;
 		}
-		nm_i = nm_next(nm_i, lim);
 	}
+
 	return nm_i;
 }
 
+/*
+ * Publish netmap buffers on a RX virtqueue.
+ * Returns -1 if this virtqueue is not being opened in netmap mode.
+ * If the virtqueue is being opened in netmap mode, return 0 on success and
+ * a positive error code on failure.
+ */
+static int
+vtnet_netmap_rxq_populate(struct vtnet_rxq *rxq)
+{
+	struct netmap_adapter *na = NA(rxq->vtnrx_sc->vtnet_ifp);
+	struct netmap_kring *kring;
+	int error;
+
+	if (!nm_native_on(na) || rxq->vtnrx_id >= na->num_rx_rings)
+		return -1;
+
+	kring = na->rx_rings[rxq->vtnrx_id];
+	if (!(nm_kring_pending_on(kring) ||
+			kring->nr_pending_mode == NKR_NETMAP_ON))
+		return -1;
+
+	/* Expose all the RX netmap buffers. Note that the number of
+	 * netmap slots in the RX ring matches the maximum number of
+	 * 2-elements sglist that the RX virtqueue can accommodate. */
+	error = vtnet_netmap_kring_refill(kring, 0, na->num_rx_desc);
+	virtqueue_notify(rxq->vtnrx_vq);
+
+	return error < 0 ? ENXIO : 0;
+}
+
 /* Reconcile kernel and user view of the receive ring. */
 static int
 vtnet_netmap_rxsync(struct netmap_kring *kring, int flags)
 {
 	struct netmap_adapter *na = kring->na;
-        struct ifnet *ifp = na->ifp;
+	struct ifnet *ifp = na->ifp;
 	struct netmap_ring *ring = kring->ring;
 	u_int ring_nr = kring->ring_id;
 	u_int nm_i;	/* index into the netmap ring */
-	// u_int nic_i;	/* index into the NIC ring */
-	u_int n;
 	u_int const lim = kring->nkr_num_slots - 1;
 	u_int const head = kring->rhead;
-	int force_update = (flags & NAF_FORCE_READ) || kring->nr_kflags & NKR_PENDINTR;
+	int force_update = (flags & NAF_FORCE_READ) ||
+				(kring->nr_kflags & NKR_PENDINTR);
 	int interrupts = !(kring->nr_kflags & NKR_NOINTR);
 
 	/* device-specific */
-	struct SOFTC_T *sc = ifp->if_softc;
+	struct vtnet_softc *sc = ifp->if_softc;
 	struct vtnet_rxq *rxq = &sc->vtnet_rxqs[ring_nr];
 	struct virtqueue *vq = rxq->vtnrx_vq;
 
-	/* XXX netif_carrier_ok ? */
-
-	if (head > lim)
-		return netmap_ring_reinit(kring);
-
 	rmb();
 	/*
 	 * First part: import newly received packets.
-	 * Only accept our
-	 * own buffers (matching the token). We should only get
-	 * matching buffers, because of vtnet_netmap_free_rx_unused_bufs()
-	 * and vtnet_netmap_init_buffers().
+	 * Only accept our own buffers (matching the token). We should only get
+	 * matching buffers. We may need to stop early to avoid hwtail to overrun
+	 * hwcur.
 	 */
 	if (netmap_no_pendintr || force_update) {
-                struct netmap_adapter *token;
+		uint32_t hwtail_lim = nm_prev(kring->nr_hwcur, lim);
+		void *token;
 
-                nm_i = kring->nr_hwtail;
-                n = 0;
-		for (;;) {
+		vtnet_rxq_disable_intr(rxq);
+
+		nm_i = kring->nr_hwtail;
+		while (nm_i != hwtail_lim) {
 			int len;
-                        token = virtqueue_dequeue(vq, &len);
-                        if (token == NULL)
-                                break;
-                        if (likely(token == (void *)rxq)) {
-                            ring->slot[nm_i].len = len;
-                            ring->slot[nm_i].flags = 0;
-                            nm_i = nm_next(nm_i, lim);
-                            n++;
-                        } else {
-			    D("This should not happen");
-                        }
+			token = virtqueue_dequeue(vq, &len);
+			if (token == NULL) {
+				if (interrupts && vtnet_rxq_enable_intr(rxq)) {
+					vtnet_rxq_disable_intr(rxq);
+					continue;
+				}
+				break;
+			}
+			if (unlikely(token != (void *)rxq)) {
+				nm_prerr("BUG: RX token mismatch\n");
+			} else {
+				/* Skip the virtio-net header. */
+				len -= sc->vtnet_hdr_size;
+				if (unlikely(len < 0)) {
+					RD(1, "Truncated virtio-net-header, "
+						"missing %d bytes", -len);
+					len = 0;
+				}
+				ring->slot[nm_i].len = len;
+				ring->slot[nm_i].flags = 0;
+				nm_i = nm_next(nm_i, lim);
+			}
 		}
 		kring->nr_hwtail = nm_i;
 		kring->nr_kflags &= ~NKR_PENDINTR;
 	}
-        ND("[B] h %d c %d hwcur %d hwtail %d",
-		ring->head, ring->cur, kring->nr_hwcur,
-			      kring->nr_hwtail);
+	ND("[B] h %d c %d hwcur %d hwtail %d", ring->head, ring->cur,
+				kring->nr_hwcur, kring->nr_hwtail);
 
 	/*
 	 * Second part: skip past packets that userspace has released.
 	 */
 	nm_i = kring->nr_hwcur; /* netmap ring index */
 	if (nm_i != head) {
-		int err = vtnet_refill_rxq(kring, nm_i, head);
-		if (err < 0)
-			return 1;
-		kring->nr_hwcur = err;
+		int nm_j = vtnet_netmap_kring_refill(kring, nm_i, head);
+		if (nm_j < 0)
+			return nm_j;
+		kring->nr_hwcur = nm_j;
 		virtqueue_notify(vq);
-		/* After draining the queue may need an intr from the hypervisor */
-		if (interrupts) {
-			vtnet_rxq_enable_intr(rxq);
-		}
 	}
 
-        ND("[C] h %d c %d t %d hwcur %d hwtail %d",
-		ring->head, ring->cur, ring->tail,
-		kring->nr_hwcur, kring->nr_hwtail);
+	ND("[C] h %d c %d t %d hwcur %d hwtail %d", ring->head, ring->cur,
+		ring->tail, kring->nr_hwcur, kring->nr_hwtail);
 
 	return 0;
 }
@@ -352,9 +432,9 @@ vtnet_netmap_rxsync(struct netmap_kring *kring, int fl
 
 /* Enable/disable interrupts on all virtqueues. */
 static void
-vtnet_netmap_intr(struct netmap_adapter *na, int onoff)
+vtnet_netmap_intr(struct netmap_adapter *na, int state)
 {
-	struct SOFTC_T *sc = na->ifp->if_softc;
+	struct vtnet_softc *sc = na->ifp->if_softc;
 	int i;
 
 	for (i = 0; i < sc->vtnet_max_vq_pairs; i++) {
@@ -362,7 +442,7 @@ vtnet_netmap_intr(struct netmap_adapter *na, int onoff
 		struct vtnet_txq *txq = &sc->vtnet_txqs[i];
 		struct virtqueue *txvq = txq->vtntx_vq;
 
-		if (onoff) {
+		if (state) {
 			vtnet_rxq_enable_intr(rxq);
 			virtqueue_enable_intr(txvq);
 		} else {
@@ -372,60 +452,88 @@ vtnet_netmap_intr(struct netmap_adapter *na, int onoff
 	}
 }
 
-/* Make RX virtqueues buffers pointing to netmap buffers. */
 static int
-vtnet_netmap_init_rx_buffers(struct SOFTC_T *sc)
+vtnet_netmap_tx_slots(struct vtnet_softc *sc)
 {
-	struct ifnet *ifp = sc->vtnet_ifp;
-	struct netmap_adapter* na = NA(ifp);
-	unsigned int r;
+	int div;
 
-	if (!nm_native_on(na))
-		return 0;
-	for (r = 0; r < na->num_rx_rings; r++) {
-                struct netmap_kring *kring = na->rx_rings[r];
-		struct vtnet_rxq *rxq = &sc->vtnet_rxqs[r];
-		struct virtqueue *vq = rxq->vtnrx_vq;
-	        struct netmap_slot* slot;
-		int err = 0;
+	/* We need to prepend a virtio-net header to each netmap buffer to be
+	 * transmitted, therefore calling virtqueue_enqueue() passing sglist
+	 * with 2 elements.
+	 * TX virtqueues use indirect descriptors if the feature was negotiated
+	 * with the host, and if sc->vtnet_tx_nsegs > 1. With indirect
+	 * descriptors, a single virtio descriptor is sufficient to reference
+	 * each TX sglist. Without them, we need two separate virtio descriptors
+	 * for each TX sglist. We therefore compute the number of netmap TX
+	 * slots according to these assumptions.
+	 */
+	if ((sc->vtnet_flags & VTNET_FLAG_INDIRECT) && sc->vtnet_tx_nsegs > 1)
+		div = 1;
+	else
+		div = 2;
 
-		slot = netmap_reset(na, NR_RX, r, 0);
-		if (!slot) {
-			D("strange, null netmap ring %d", r);
-			return 0;
-		}
-		/* Add up to na>-num_rx_desc-1 buffers to this RX virtqueue.
-		 * It's important to leave one virtqueue slot free, otherwise
-		 * we can run into ring->cur/ring->tail wraparounds.
-		 */
-		err = vtnet_refill_rxq(kring, 0, na->num_rx_desc-1);
-		if (err < 0)
-			return 0;
-		virtqueue_notify(vq);
-	}
+	return virtqueue_size(sc->vtnet_txqs[0].vtntx_vq) / div;
+}
 
-	return 1;
+static int
+vtnet_netmap_rx_slots(struct vtnet_softc *sc)
+{
+	int div;
+
+	/* We need to prepend a virtio-net header to each netmap buffer to be
+	 * received, therefore calling virtqueue_enqueue() passing sglist
+	 * with 2 elements.
+	 * RX virtqueues use indirect descriptors if the feature was negotiated
+	 * with the host, and if sc->vtnet_rx_nsegs > 1. With indirect
+	 * descriptors, a single virtio descriptor is sufficient to reference
+	 * each RX sglist. Without them, we need two separate virtio descriptors
+	 * for each RX sglist. We therefore compute the number of netmap RX
+	 * slots according to these assumptions.
+	 */
+	if ((sc->vtnet_flags & VTNET_FLAG_INDIRECT) && sc->vtnet_rx_nsegs > 1)
+		div = 1;
+	else
+		div = 2;
+
+	return virtqueue_size(sc->vtnet_rxqs[0].vtnrx_vq) / div;
 }
 
+static int
+vtnet_netmap_config(struct netmap_adapter *na, struct nm_config_info *info)
+{
+	struct vtnet_softc *sc = na->ifp->if_softc;
+
+	info->num_tx_rings = sc->vtnet_act_vq_pairs;
+	info->num_rx_rings = sc->vtnet_act_vq_pairs;
+	info->num_tx_descs = vtnet_netmap_tx_slots(sc);
+	info->num_rx_descs = vtnet_netmap_rx_slots(sc);
+	info->rx_buf_maxsize = NETMAP_BUF_SIZE(na);
+
+	return 0;
+}
+
 static void
-vtnet_netmap_attach(struct SOFTC_T *sc)
+vtnet_netmap_attach(struct vtnet_softc *sc)
 {
 	struct netmap_adapter na;
 
 	bzero(&na, sizeof(na));
 
 	na.ifp = sc->vtnet_ifp;
-	na.num_tx_desc =  1024;// sc->vtnet_rx_nmbufs;
-	na.num_rx_desc =  1024; // sc->vtnet_rx_nmbufs;
+	na.na_flags = 0;
+	na.num_tx_desc = vtnet_netmap_tx_slots(sc);
+	na.num_rx_desc = vtnet_netmap_rx_slots(sc);
+	na.num_tx_rings = na.num_rx_rings = sc->vtnet_max_vq_pairs;
+	na.rx_buf_maxsize = 0;
 	na.nm_register = vtnet_netmap_reg;
 	na.nm_txsync = vtnet_netmap_txsync;
 	na.nm_rxsync = vtnet_netmap_rxsync;
 	na.nm_intr = vtnet_netmap_intr;
-	na.num_tx_rings = na.num_rx_rings = sc->vtnet_max_vq_pairs;
-	D("max rings %d", sc->vtnet_max_vq_pairs);
+	na.nm_config = vtnet_netmap_config;
+
 	netmap_attach(&na);
 
-        D("virtio attached txq=%d, txd=%d rxq=%d, rxd=%d",
+	nm_prinf("vtnet attached txq=%d, txd=%d rxq=%d, rxd=%d\n",
 			na.num_tx_rings, na.num_tx_desc,
 			na.num_tx_rings, na.num_rx_desc);
 }

Modified: stable/11/sys/dev/virtio/network/if_vtnet.c
==============================================================================
--- stable/11/sys/dev/virtio/network/if_vtnet.c	Tue Dec  4 17:40:56 2018	(r341477)
+++ stable/11/sys/dev/virtio/network/if_vtnet.c	Tue Dec  4 17:44:12 2018	(r341478)
@@ -1186,6 +1186,12 @@ vtnet_rxq_populate(struct vtnet_rxq *rxq)
 	struct virtqueue *vq;
 	int nbufs, error;
 
+#ifdef DEV_NETMAP
+	error = vtnet_netmap_rxq_populate(rxq);
+	if (error >= 0)
+		return (error);
+#endif  /* DEV_NETMAP */
+
 	vq = rxq->vtnrx_vq;
 	error = ENOSPC;
 
@@ -1215,12 +1221,20 @@ vtnet_rxq_free_mbufs(struct vtnet_rxq *rxq)
 	struct virtqueue *vq;
 	struct mbuf *m;
 	int last;
+#ifdef DEV_NETMAP
+	int netmap_bufs = vtnet_netmap_queue_on(rxq->vtnrx_sc, NR_RX,
+						rxq->vtnrx_id);
+#else  /* !DEV_NETMAP */
+	int netmap_bufs = 0;
+#endif /* !DEV_NETMAP */
 
 	vq = rxq->vtnrx_vq;
 	last = 0;
 
-	while ((m = virtqueue_drain(vq, &last)) != NULL)
-		m_freem(m);
+	while ((m = virtqueue_drain(vq, &last)) != NULL) {
+		if (!netmap_bufs)
+			m_freem(m);
+	}
 
 	KASSERT(virtqueue_empty(vq),
 	    ("%s: mbufs remaining in rx queue %p", __func__, rxq));
@@ -1766,12 +1780,6 @@ vtnet_rxq_eof(struct vtnet_rxq *rxq)
 
 	VTNET_RXQ_LOCK_ASSERT(rxq);
 
-#ifdef DEV_NETMAP
-	if (netmap_rx_irq(ifp, 0, &deq)) {
-		return (FALSE);
-	}
-#endif /* DEV_NETMAP */
-
 	while (count-- > 0) {
 		m = virtqueue_dequeue(vq, &len);
 		if (m == NULL)
@@ -1865,6 +1873,11 @@ vtnet_rx_vq_intr(void *xrxq)
 		return;
 	}
 
+#ifdef DEV_NETMAP
+	if (netmap_rx_irq(ifp, rxq->vtnrx_id, &more) != NM_IRQ_PASS)
+		return;
+#endif /* DEV_NETMAP */
+
 	VTNET_RXQ_LOCK(rxq);
 
 again:
@@ -1965,13 +1978,21 @@ vtnet_txq_free_mbufs(struct vtnet_txq *txq)
 	struct virtqueue *vq;
 	struct vtnet_tx_header *txhdr;
 	int last;
+#ifdef DEV_NETMAP
+	int netmap_bufs = vtnet_netmap_queue_on(txq->vtntx_sc, NR_TX,
+						txq->vtntx_id);
+#else  /* !DEV_NETMAP */
+	int netmap_bufs = 0;
+#endif /* !DEV_NETMAP */
 
 	vq = txq->vtntx_vq;
 	last = 0;
 
 	while ((txhdr = virtqueue_drain(vq, &last)) != NULL) {
-		m_freem(txhdr->vth_mbuf);
-		uma_zfree(vtnet_tx_header_zone, txhdr);
+		if (!netmap_bufs) {
+			m_freem(txhdr->vth_mbuf);
+			uma_zfree(vtnet_tx_header_zone, txhdr);
+		}
 	}
 
 	KASSERT(virtqueue_empty(vq),
@@ -2459,13 +2480,6 @@ vtnet_txq_eof(struct vtnet_txq *txq)
 	deq = 0;
 	VTNET_TXQ_LOCK_ASSERT(txq);
 
-#ifdef DEV_NETMAP
-	if (netmap_tx_irq(txq->vtntx_sc->vtnet_ifp, txq->vtntx_id)) {
-		virtqueue_disable_intr(vq); // XXX luigi
-		return 0; // XXX or 1 ?
-	}
-#endif /* DEV_NETMAP */
-
 	while ((txhdr = virtqueue_dequeue(vq, NULL)) != NULL) {
 		m = txhdr->vth_mbuf;
 		deq++;
@@ -2507,6 +2521,11 @@ vtnet_tx_vq_intr(void *xtxq)
 		return;
 	}
 
+#ifdef DEV_NETMAP
+	if (netmap_tx_irq(ifp, txq->vtntx_id) != NM_IRQ_PASS)
+		return;
+#endif /* DEV_NETMAP */
+
 	VTNET_TXQ_LOCK(txq);
 
 	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
@@ -2763,11 +2782,6 @@ vtnet_drain_rxtx_queues(struct vtnet_softc *sc)
 	struct vtnet_txq *txq;
 	int i;
 
-#ifdef DEV_NETMAP
-	if (nm_native_on(NA(sc->vtnet_ifp)))
-		return;
-#endif /* DEV_NETMAP */
-
 	for (i = 0; i < sc->vtnet_act_vq_pairs; i++) {
 		rxq = &sc->vtnet_rxqs[i];
 		vtnet_rxq_free_mbufs(rxq);
@@ -2932,11 +2946,6 @@ vtnet_init_rx_queues(struct vtnet_softc *sc)
 	    ("%s: too many rx mbufs %d for %d segments", __func__,
 	    sc->vtnet_rx_nmbufs, sc->vtnet_rx_nsegs));
 
-#ifdef DEV_NETMAP
-	if (vtnet_netmap_init_rx_buffers(sc))
-		return 0;
-#endif /* DEV_NETMAP */
-
 	for (i = 0; i < sc->vtnet_act_vq_pairs; i++) {
 		rxq = &sc->vtnet_rxqs[i];
 
@@ -3086,13 +3095,6 @@ vtnet_init(void *xsc)
 	struct vtnet_softc *sc;
 
 	sc = xsc;
-
-#ifdef DEV_NETMAP
-	if (!NA(sc->vtnet_ifp)) {
-		D("try to attach again");
-		vtnet_netmap_attach(sc);
-	}
-#endif /* DEV_NETMAP */
 
 	VTNET_CORE_LOCK(sc);
 	vtnet_init_locked(sc);

Modified: stable/11/sys/dev/virtio/network/if_vtnetvar.h
==============================================================================
--- stable/11/sys/dev/virtio/network/if_vtnetvar.h	Tue Dec  4 17:40:56 2018	(r341477)
+++ stable/11/sys/dev/virtio/network/if_vtnetvar.h	Tue Dec  4 17:44:12 2018	(r341478)
@@ -77,6 +77,9 @@ struct vtnet_rxq {
 	struct vtnet_rxq_stats	 vtnrx_stats;
 	struct taskqueue	*vtnrx_tq;
 	struct task		 vtnrx_intrtask;
+#ifdef DEV_NETMAP
+	struct virtio_net_hdr_mrg_rxbuf vtnrx_shrhdr;
+#endif  /* DEV_NETMAP */
 	char			 vtnrx_name[16];
 } __aligned(CACHE_LINE_SIZE);
 
@@ -112,6 +115,9 @@ struct vtnet_txq {
 #ifndef VTNET_LEGACY_TX
 	struct task		 vtntx_defrtask;
 #endif
+#ifdef DEV_NETMAP
+	struct virtio_net_hdr_mrg_rxbuf vtntx_shrhdr;
+#endif  /* DEV_NETMAP */
 	char			 vtntx_name[16];
 } __aligned(CACHE_LINE_SIZE);
 

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:46:07 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3CFDF13142DB;
 Tue,  4 Dec 2018 17:46:07 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id D6E51850B8;
 Tue,  4 Dec 2018 17:46:06 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B7FD9895;
 Tue,  4 Dec 2018 17:46:06 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4Hk6PH057526;
 Tue, 4 Dec 2018 17:46:06 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4Hk6RS057525;
 Tue, 4 Dec 2018 17:46:06 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041746.wB4Hk6RS057525@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:46:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341479 - stable/11/share/man/man9
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/share/man/man9
X-SVN-Commit-Revision: 341479
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: D6E51850B8
X-Spamd-Result: default: False [-0.80 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_HAM_SHORT(-0.21)[-0.214,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:46:07 -0000

Author: vmaffione
Date: Tue Dec  4 17:46:06 2018
New Revision: 341479
URL: https://svnweb.freebsd.org/changeset/base/341479

Log:
  MFC r340475
  
  ifnet(9): Add description of IFCAP_NETMAP
  
  Describe IFCAP_NETMAP adding a cross reference to netmap(4).
  
  Reviewed by:    bcr, 0mp
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17988

Modified:
  stable/11/share/man/man9/ifnet.9
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man9/ifnet.9
==============================================================================
--- stable/11/share/man/man9/ifnet.9	Tue Dec  4 17:44:12 2018	(r341478)
+++ stable/11/share/man/man9/ifnet.9	Tue Dec  4 17:46:06 2018	(r341479)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 22, 2017
+.Dd November 14, 2018
 .Dt IFNET 9
 .Os
 .Sh NAME
@@ -762,6 +762,9 @@ interfaces (implies
 .Dv IFCAP_TSO ) .
 .It Dv IFCAP_LINKSTATE
 This Ethernet interface supports dynamic link state changes.
+.It Dv IFCAP_NETMAP
+This Ethernet interface supports
+.Xr netmap  4 .
 .El
 .Pp
 The ability of advanced network interfaces to offload certain

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:47:44 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E6A21314387;
 Tue,  4 Dec 2018 17:47:44 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id DA8AF852D6;
 Tue,  4 Dec 2018 17:47:43 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BB983898;
 Tue,  4 Dec 2018 17:47:43 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4HlhkT057842;
 Tue, 4 Dec 2018 17:47:43 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4Hlhre057841;
 Tue, 4 Dec 2018 17:47:43 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041747.wB4Hlhre057841@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:47:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341480 - stable/11/sys/dev/netmap
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/sys/dev/netmap
X-SVN-Commit-Revision: 341480
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: DA8AF852D6
X-Spamd-Result: default: False [-0.80 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 NEURAL_HAM_SHORT(-0.21)[-0.214,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:47:44 -0000

Author: vmaffione
Date: Tue Dec  4 17:47:43 2018
New Revision: 341480
URL: https://svnweb.freebsd.org/changeset/base/341480

Log:
  MFC r341144
  
  netmap: set IFCAP_NETMAP in if_capabilities
  
  Revision r307394 removed (by mistake) the code that sets IFCAP_NETMAP
  in if_capabilities on netmap_attach. This patch reverts this change.
  
  Reviewed by:    np
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17987

Modified:
  stable/11/sys/dev/netmap/netmap_freebsd.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/netmap/netmap_freebsd.c
==============================================================================
--- stable/11/sys/dev/netmap/netmap_freebsd.c	Tue Dec  4 17:46:06 2018	(r341479)
+++ stable/11/sys/dev/netmap/netmap_freebsd.c	Tue Dec  4 17:47:43 2018	(r341480)
@@ -1547,6 +1547,7 @@ out:
 void
 nm_os_onattach(struct ifnet *ifp)
 {
+	ifp->if_capabilities |= IFCAP_NETMAP;
 }
 
 void

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:49:46 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C966A13144C1;
 Tue,  4 Dec 2018 17:49:45 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 6D4CA856D3;
 Tue,  4 Dec 2018 17:49:45 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4E17789A;
 Tue,  4 Dec 2018 17:49:45 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4HnjqV057977;
 Tue, 4 Dec 2018 17:49:45 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4Hnib4057975;
 Tue, 4 Dec 2018 17:49:44 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041749.wB4Hnib4057975@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:49:44 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341481 - stable/11/sys/dev/cxgbe
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/sys/dev/cxgbe
X-SVN-Commit-Revision: 341481
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6D4CA856D3
X-Spamd-Result: default: False [-0.92 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_HAM_SHORT(-0.33)[-0.329,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:49:46 -0000

Author: vmaffione
Date: Tue Dec  4 17:49:44 2018
New Revision: 341481
URL: https://svnweb.freebsd.org/changeset/base/341481

Log:
  MFC r341145
  
  cxgbe: revert r309725
  
  After the fix contained in r341144, cxgbe does not need anymore
  to set the IFCAP_NETMAP flag manually.
  
  Reviewed by:    np
  Approved by:    gnn (mentor)
  Differential Revision:  https://reviews.freebsd.org/D17987

Modified:
  stable/11/sys/dev/cxgbe/t4_main.c
  stable/11/sys/dev/cxgbe/t4_netmap.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/cxgbe/t4_main.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_main.c	Tue Dec  4 17:47:43 2018	(r341480)
+++ stable/11/sys/dev/cxgbe/t4_main.c	Tue Dec  4 17:49:44 2018	(r341481)
@@ -1480,10 +1480,6 @@ cxgbe_vi_attach(device_t dev, struct vi_info *vi)
 	if (vi->nofldrxq != 0)
 		ifp->if_capabilities |= IFCAP_TOE;
 #endif
-#ifdef DEV_NETMAP
-	if (vi->nnmrxq != 0)
-		ifp->if_capabilities |= IFCAP_NETMAP;
-#endif
 	ifp->if_capenable = T4_CAP_ENABLE;
 	ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO |
 	    CSUM_UDP_IPV6 | CSUM_TCP_IPV6;
@@ -1497,7 +1493,7 @@ cxgbe_vi_attach(device_t dev, struct vi_info *vi)
 
 	ether_ifattach(ifp, vi->hw_addr);
 #ifdef DEV_NETMAP
-	if (ifp->if_capabilities & IFCAP_NETMAP)
+	if (vi->nnmrxq != 0)
 		cxgbe_nm_attach(vi);
 #endif
 	sb = sbuf_new_auto();

Modified: stable/11/sys/dev/cxgbe/t4_netmap.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_netmap.c	Tue Dec  4 17:47:43 2018	(r341480)
+++ stable/11/sys/dev/cxgbe/t4_netmap.c	Tue Dec  4 17:49:44 2018	(r341481)
@@ -864,7 +864,7 @@ cxgbe_nm_attach(struct vi_info *vi)
 	na.nm_register = cxgbe_netmap_reg;
 	na.num_tx_rings = vi->nnmtxq;
 	na.num_rx_rings = vi->nnmrxq;
-	netmap_attach(&na);
+	netmap_attach(&na);	/* This adds IFCAP_NETMAP to if_capabilities */
 }
 
 void

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:53:58 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4818F131480D;
 Tue,  4 Dec 2018 17:53:58 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id EE77485CC1;
 Tue,  4 Dec 2018 17:53:57 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DE228A4A;
 Tue,  4 Dec 2018 17:53:56 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4Hrubm062961;
 Tue, 4 Dec 2018 17:53:56 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4HruP1062960;
 Tue, 4 Dec 2018 17:53:56 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041753.wB4HruP1062960@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:53:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341482 - stable/11/share/man/man4
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/share/man/man4
X-SVN-Commit-Revision: 341482
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: EE77485CC1
X-Spamd-Result: default: False [-0.70 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.42)[-0.416,0];
 NEURAL_SPAM_LONG(0.04)[0.037,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.33)[-0.326,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:53:58 -0000

Author: vmaffione
Date: Tue Dec  4 17:53:56 2018
New Revision: 341482
URL: https://svnweb.freebsd.org/changeset/base/341482

Log:
  MFC r341430
  
  netmap(4): improve man page
  
  Reviewed by:    bcr
  Differential Revision:  https://reviews.freebsd.org/D18057

Modified:
  stable/11/share/man/man4/netmap.4
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man4/netmap.4
==============================================================================
--- stable/11/share/man/man4/netmap.4	Tue Dec  4 17:49:44 2018	(r341481)
+++ stable/11/share/man/man4/netmap.4	Tue Dec  4 17:53:56 2018	(r341482)
@@ -27,45 +27,60 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 28, 2018
+.Dd November 20, 2018
 .Dt NETMAP 4
 .Os
 .Sh NAME
 .Nm netmap
 .Nd a framework for fast packet I/O
-.Pp
-.Nm VALE
-.Nd a fast VirtuAl Local Ethernet using the netmap API
-.Pp
-.Nm netmap pipes
-.Nd a shared memory packet transport channel
 .Sh SYNOPSIS
 .Cd device netmap
 .Sh DESCRIPTION
 .Nm
 is a framework for extremely fast and efficient packet I/O
-for both userspace and kernel clients.
+for userspace and kernel clients, and for Virtual Machines.
 It runs on
 .Fx
-and Linux, and includes
-.Nm VALE ,
-a very fast and modular in-kernel software switch/dataplane,
-and
-.Nm netmap pipes ,
-a shared memory packet transport channel.
-All these are accessed interchangeably with the same API.
+Linux and some versions of Windows, and supports a variety of
+.Nm netmap ports ,
+including
+.Bl -tag -width XXXX
+.It Nm physical NIC ports
+to access individual queues of network interfaces;
+.It Nm host ports
+to inject packets into the host stack;
+.It Nm VALE ports
+implementing a very fast and modular in-kernel software switch/dataplane;
+.It Nm netmap pipes
+a shared memory packet transport channel;
+.It Nm netmap monitors
+a mechanism similar to
+.Xr bpf 4
+to capture traffic
+.El
 .Pp
-.Nm ,
-.Nm VALE
-and
-.Nm netmap pipes
-are at least one order of magnitude faster than
+All these
+.Nm netmap ports
+are accessed interchangeably with the same API,
+and are at least one order of magnitude faster than
 standard OS mechanisms
-(sockets, bpf, tun/tap interfaces, native switches, pipes),
-reaching 14.88 million packets per second (Mpps)
-with much less than one core on a 10 Gbit NIC,
-about 20 Mpps per core for VALE ports,
-and over 100 Mpps for netmap pipes.
+(sockets, bpf, tun/tap interfaces, native switches, pipes).
+With suitably fast hardware (NICs, PCIe buses, CPUs),
+packet I/O using
+.Nm
+on supported NICs
+reaches 14.88 million packets per second (Mpps)
+with much less than one core on 10 Gbit/s NICs;
+35-40 Mpps on 40 Gbit/s NICs (limited by the hardware);
+about 20 Mpps per core for VALE ports;
+and over 100 Mpps for
+.Nm netmap pipes .
+NICs without native
+.Nm
+support can still use the API in emulated mode,
+which uses unmodified device drivers and is 3-5 times faster than
+.Xr bpf 4
+or raw sockets.
 .Pp
 Userspace clients can dynamically switch NICs into
 .Nm
@@ -73,8 +88,10 @@ mode and send and receive raw packets through
 memory mapped buffers.
 Similarly,
 .Nm VALE
-switch instances and ports, and
+switch instances and ports,
 .Nm netmap pipes
+and
+.Nm netmap monitors
 can be created dynamically,
 providing high speed packet I/O between processes,
 virtual machines, NICs and the host stack.
@@ -86,20 +103,20 @@ synchronization and blocking I/O through a file descri
 and standard OS mechanisms such as
 .Xr select 2 ,
 .Xr poll 2 ,
-.Xr epoll 2 ,
+.Xr kqueue 2
 and
-.Xr kqueue 2 .
-.Nm VALE
-and
-.Nm netmap pipes
+.Xr epoll 7 .
+All types of
+.Nm netmap ports
+and the
+.Nm VALE switch
 are implemented by a single kernel module, which also emulates the
 .Nm
-API over standard drivers for devices without native
-.Nm
-support.
+API over standard drivers.
 For best performance,
 .Nm
-requires explicit support in device drivers.
+requires native support in device drivers.
+A list of such devices is at the end of this document.
 .Pp
 In the rest of this (long) manual page we document
 various aspects of the
@@ -116,7 +133,7 @@ which can be connected to a physical interface
 to the host stack,
 or to a
 .Nm VALE
-switch).
+switch.
 Ports use preallocated circular queues of buffers
 .Em ( rings )
 residing in an mmapped region.
@@ -152,8 +169,9 @@ ports (including
 and
 .Nm netmap pipe
 ports).
-Simpler, higher level functions are described in section
-.Xr LIBRARIES .
+Simpler, higher level functions are described in the
+.Sx LIBRARIES
+section.
 .Pp
 Ports and rings are created and controlled through a file descriptor,
 created by opening a special device
@@ -166,16 +184,18 @@ has multiple modes of operation controlled by the
 .Vt struct nmreq
 argument.
 .Va arg.nr_name
-specifies the port name, as follows:
+specifies the netmap port name, as follows:
 .Bl -tag -width XXXX
-.It Dv OS network interface name (e.g. 'em0', 'eth1', ... )
+.It Dv OS network interface name (e.g., 'em0', 'eth1', ... )
 the data path of the NIC is disconnected from the host stack,
 and the file descriptor is bound to the NIC (one or all queues),
 or to the host stack;
-.It Dv valeXXX:YYY (arbitrary XXX and YYY)
-the file descriptor is bound to port YYY of a VALE switch called XXX,
-both dynamically created if necessary.
-The string cannot exceed IFNAMSIZ characters, and YYY cannot
+.It Dv valeSSS:PPP
+the file descriptor is bound to port PPP of VALE switch SSS.
+Switch instances and ports are dynamically created if necessary.
+.Pp
+Both SSS and PPP have the form [0-9a-zA-Z_]+ , the string
+cannot exceed IFNAMSIZ characters, and PPP cannot
 be the name of any existing OS network interface.
 .El
 .Pp
@@ -193,12 +213,6 @@ Non-blocking I/O is done with special
 and
 .Xr poll 2
 on the file descriptor permit blocking I/O.
-.Xr epoll 2
-and
-.Xr kqueue 2
-are not supported on
-.Nm
-file descriptors.
 .Pp
 While a NIC is in
 .Nm
@@ -219,7 +233,7 @@ which is the ultimate reference for the
 API.
 The main structures and fields are indicated below:
 .Bl -tag -width XXX
-.It Dv struct netmap_if (one per interface)
+.It Dv struct netmap_if (one per interface )
 .Bd -literal
 struct netmap_if {
     ...
@@ -242,14 +256,30 @@ NICs also have an extra tx/rx ring pair connected to t
 .Em NIOCREGIF
 can also request additional unbound buffers in the same memory space,
 to be used as temporary storage for packets.
+The number of extra
+buffers is specified in the
+.Va arg.nr_arg3
+field.
+On success, the kernel writes back to
+.Va arg.nr_arg3
+the number of extra buffers actually allocated (they may be less
+than the amount requested if the memory space ran out of buffers).
 .Pa ni_bufs_head
-contains the index of the first of these free rings,
+contains the index of the first of these extra buffers,
 which are connected in a list (the first uint32_t of each
 buffer being the index of the next buffer in the list).
 A
 .Dv 0
 indicates the end of the list.
-.It Dv struct netmap_ring (one per ring)
+The application is free to modify
+this list and use the buffers (i.e., binding them to the slots of a
+netmap ring).
+When closing the netmap file descriptor,
+the kernel frees the buffers contained in the list pointed by
+.Pa ni_bufs_head
+, irrespectively of the buffers originally provided by the kernel on
+.Em NIOCREGIF .
+.It Dv struct netmap_ring (one per ring )
 .Bd -literal
 struct netmap_ring {
     ...
@@ -271,7 +301,7 @@ Implements transmit and receive rings, with read/write
 pointers, metadata and an array of
 .Em slots
 describing the buffers.
-.It Dv struct netmap_slot (one per buffer)
+.It Dv struct netmap_slot (one per buffer )
 .Bd -literal
 struct netmap_slot {
     uint32_t buf_idx;           /* buffer index                 */
@@ -312,20 +342,17 @@ one slot is always kept empty.
 The ring size
 .Va ( num_slots )
 should not be assumed to be a power of two.
-.br
-(NOTE: older versions of netmap used head/count format to indicate
-the content of a ring).
 .Pp
 .Va head
 is the first slot available to userspace;
-.br
+.Pp
 .Va cur
 is the wakeup point:
 select/poll will unblock when
 .Va tail
 passes
 .Va cur ;
-.br
+.Pp
 .Va tail
 is the first slot reserved to the kernel.
 .Pp
@@ -349,7 +376,6 @@ during the execution of a netmap-related system call.
 The only exception are slots (and buffers) in the range
 .Va tail\  . . . head-1 ,
 that are explicitly assigned to the kernel.
-.Pp
 .Ss TRANSMIT RINGS
 On transmit rings, after a
 .Nm
@@ -397,7 +423,7 @@ Below is an example of the evolution of a TX ring:
 .Fn select
 and
 .Fn poll
-will block if there is no space in the ring, i.e.
+will block if there is no space in the ring, i.e.,
 .Dl ring->cur == ring->tail
 and return when new slots have become available.
 .Pp
@@ -431,7 +457,7 @@ slots up to
 are returned to the kernel for further receives, and
 .Va tail
 may advance to report new incoming packets.
-.br
+.Pp
 Below is an example of the evolution of an RX ring:
 .Bd -literal
     after the syscall, there are some (h)eld and some (R)eceived slots
@@ -476,10 +502,9 @@ can be delayed indefinitely.
 This flag helps detect
 when packets have been sent and a file descriptor can be closed.
 .It NS_FORWARD
-When a ring is in 'transparent' mode (see
-.Sx TRANSPARENT MODE ) ,
-packets marked with this flag are forwarded to the other endpoint
-at the next system call, thus restoring (in a selective way)
+When a ring is in 'transparent' mode,
+packets marked with this flag by the user application are forwarded to the
+other endpoint at the next system call, thus restoring (in a selective way)
 the connection between a NIC and the host stack.
 .It NS_NO_LEARN
 tells the forwarding code that the source MAC address for this
@@ -488,7 +513,7 @@ packet must not be used in the learning bridge code.
 indicates that the packet's payload is in a user-supplied buffer
 whose user virtual address is in the 'ptr' field of the slot.
 The size can reach 65535 bytes.
-.br
+.Pp
 This is only supported on the transmit ring of
 .Nm VALE
 ports, and it helps reducing data copies in the interconnection
@@ -570,8 +595,8 @@ indicate the size of transmit and receive rings.
 indicate the number of transmit
 and receive rings.
 Both ring number and sizes may be configured at runtime
-using interface-specific functions (e.g.
-.Xr ethtool
+using interface-specific functions (e.g.,
+.Xr ethtool 8
 ).
 .El
 .It Dv NIOCREGIF
@@ -585,6 +610,15 @@ it from the host stack.
 Multiple file descriptors can be bound to the same port,
 with proper synchronization left to the user.
 .Pp
+The recommended way to bind a file descriptor to a port is
+to use function
+.Va nm_open(..)
+(see
+.Sx LIBRARIES )
+which parses names to access specific port types and
+enable features.
+In the following we document the main features.
+.Pp
 .Dv NIOCREGIF can also bind a file descriptor to one endpoint of a
 .Em netmap pipe ,
 consisting of two netmap ports with a crossover connection.
@@ -638,7 +672,7 @@ and does not need to be sequential.
 On return the pipe
 will only have a single ring pair with index 0,
 irrespective of the value of
-.Va i.
+.Va i .
 .El
 .Pp
 By default, a
@@ -650,11 +684,14 @@ no write events are specified.
 The feature can be disabled by or-ing
 .Va NETMAP_NO_TX_POLL
 to the value written to
-.Va nr_ringid.
+.Va nr_ringid .
 When this feature is used,
 packets are transmitted only on
 .Va ioctl(NIOCTXSYNC)
-or select()/poll() are called with a write event (POLLOUT/wfdset) or a full ring.
+or
+.Va select() /
+.Va poll()
+are called with a write event (POLLOUT/wfdset) or a full ring.
 .Pp
 When registering a virtual interface that is dynamically created to a
 .Xr vale 4
@@ -667,7 +704,7 @@ number of slots available for transmission.
 tells the hardware of consumed packets, and asks for newly available
 packets.
 .El
-.Sh SELECT, POLL, EPOLL, KQUEUE.
+.Sh SELECT, POLL, EPOLL, KQUEUE
 .Xr select 2
 and
 .Xr poll 2
@@ -681,7 +718,7 @@ respectively when write (POLLOUT) and read (POLLIN) ev
 Both block if no slots are available in the ring
 .Va ( ring->cur == ring->tail ) .
 Depending on the platform,
-.Xr epoll 2
+.Xr epoll 7
 and
 .Xr kqueue 2
 are supported too.
@@ -700,7 +737,10 @@ Passing the
 .Dv NETMAP_DO_RX_POLL
 flag to
 .Em NIOCREGIF updates receive rings even without read events.
-Note that on epoll and kqueue,
+Note that on
+.Xr epoll 7
+and
+.Xr kqueue 2 ,
 .Dv NETMAP_NO_TX_POLL
 and
 .Dv NETMAP_DO_RX_POLL
@@ -728,13 +768,13 @@ before
 .Pp
 The following functions are available:
 .Bl -tag -width XXXXX
-.It Va  struct nm_desc * nm_open(const char *ifname, const struct nmreq *req, uint64_t flags, const struct nm_desc *arg)
+.It Va  struct nm_desc * nm_open(const char *ifname, const struct nmreq *req, uint64_t flags, const struct nm_desc *arg )
 similar to
-.Xr pcap_open ,
+.Xr pcap_open_live 3 ,
 binds a file descriptor to a port.
 .Bl -tag -width XX
 .It Va ifname
-is a port name, in the form "netmap:XXX" for a NIC and "valeXXX:YYY" for a
+is a port name, in the form "netmap:PPP" for a NIC and "valeSSS:PPP" for a
 .Nm VALE
 port.
 .It Va req
@@ -743,7 +783,7 @@ The nm_flags and nm_ringid values are overwritten by p
 ifname and flags, and other fields can be overridden through
 the other two arguments.
 .It Va arg
-points to a struct nm_desc containing arguments (e.g. from a previously
+points to a struct nm_desc containing arguments (e.g., from a previously
 open file descriptor) that should override the defaults.
 The fields are used as described below
 .It Va flags
@@ -751,52 +791,70 @@ can be set to a combination of the following flags:
 .Va NETMAP_NO_TX_POLL ,
 .Va NETMAP_DO_RX_POLL
 (copied into nr_ringid);
-.Va NM_OPEN_NO_MMAP (if arg points to the same memory region,
+.Va NM_OPEN_NO_MMAP
+(if arg points to the same memory region,
 avoids the mmap and uses the values from it);
-.Va NM_OPEN_IFNAME (ignores ifname and uses the values in arg);
+.Va NM_OPEN_IFNAME
+(ignores ifname and uses the values in arg);
 .Va NM_OPEN_ARG1 ,
 .Va NM_OPEN_ARG2 ,
-.Va NM_OPEN_ARG3 (uses the fields from arg);
-.Va NM_OPEN_RING_CFG (uses the ring number and sizes from arg).
+.Va NM_OPEN_ARG3
+(uses the fields from arg);
+.Va NM_OPEN_RING_CFG
+(uses the ring number and sizes from arg).
 .El
-.It Va int nm_close(struct nm_desc *d)
+.It Va int nm_close(struct nm_desc *d )
 closes the file descriptor, unmaps memory, frees resources.
-.It Va int nm_inject(struct nm_desc *d, const void *buf, size_t size)
-similar to pcap_inject(), pushes a packet to a ring, returns the size
+.It Va int nm_inject(struct nm_desc *d, const void *buf, size_t size )
+similar to
+.Va pcap_inject() ,
+pushes a packet to a ring, returns the size
 of the packet is successful, or 0 on error;
-.It Va int nm_dispatch(struct nm_desc *d, int cnt, nm_cb_t cb, u_char *arg)
-similar to pcap_dispatch(), applies a callback to incoming packets
-.It Va u_char * nm_nextpkt(struct nm_desc *d, struct nm_pkthdr *hdr)
-similar to pcap_next(), fetches the next packet
+.It Va int nm_dispatch(struct nm_desc *d, int cnt, nm_cb_t cb, u_char *arg )
+similar to
+.Va pcap_dispatch() ,
+applies a callback to incoming packets
+.It Va u_char * nm_nextpkt(struct nm_desc *d, struct nm_pkthdr *hdr )
+similar to
+.Va pcap_next() ,
+fetches the next packet
 .El
 .Sh SUPPORTED DEVICES
 .Nm
 natively supports the following devices:
 .Pp
-On FreeBSD:
+On
+.Fx :
+.Xr cxgbe 4 ,
 .Xr em 4 ,
-.Xr igb 4 ,
+.Xr iflib 4
+(providing igb, em and lem),
 .Xr ixgbe 4 ,
-.Xr lem 4 ,
-.Xr re 4 .
+.Xr ixl 4 ,
+.Xr re 4 ,
+.Xr vtnet 4 .
 .Pp
-On Linux
-.Xr e1000 4 ,
-.Xr e1000e 4 ,
-.Xr igb 4 ,
-.Xr ixgbe 4 ,
-.Xr mlx4 4 ,
-.Xr forcedeth 4 ,
-.Xr r8169 4 .
+On Linux e1000, e1000e, i40e, igb, ixgbe, ixgbevf, r8169, virtio_net, vmxnet3.
 .Pp
 NICs without native support can still be used in
 .Nm
 mode through emulation.
 Performance is inferior to native netmap
-mode but still significantly higher than sockets, and approaching
-that of in-kernel solutions such as Linux's
-.Xr pktgen .
+mode but still significantly higher than various raw socket types
+(bpf, PF_PACKET, etc.).
+Note that for slow devices (such as 1 Gbit/s and slower NICs,
+or several 10 Gbit/s NICs whose hardware is unable to sustain line rate),
+emulated and native mode will likely have similar or same throughput.
 .Pp
+When emulation is in use, packet sniffer programs such as tcpdump
+could see received packets before they are diverted by netmap.
+This behaviour is not intentional, being just an artifact of the implementation
+of emulation.
+Note that in case the netmap application subsequently moves packets received
+from the emulated adapter onto the host RX ring, the sniffer will intercept
+those packets again, since the packets are injected to the host stack as they
+were received by the network interface.
+.Pp
 Emulation is also available for devices with native netmap support,
 which can be used for testing or performance comparison.
 The sysctl variable
@@ -805,15 +863,22 @@ globally controls how netmap mode is implemented.
 .Sh SYSCTL VARIABLES AND MODULE PARAMETERS
 Some aspect of the operation of
 .Nm
-are controlled through sysctl variables on FreeBSD
+are controlled through sysctl variables on
+.Fx
 .Em ( dev.netmap.* )
 and module parameters on Linux
-.Em ( /sys/module/netmap_lin/parameters/* ) :
+.Em ( /sys/module/netmap/parameters/* ) :
 .Bl -tag -width indent
 .It Va dev.netmap.admode: 0
 Controls the use of native or emulated adapter mode.
-0 uses the best available option, 1 forces native and
-fails if not available, 2 forces emulated hence never fails.
+.Pp
+0 uses the best available option;
+.Pp
+1 forces native mode and fails if not available;
+.Pp
+2 forces emulated hence never fails.
+.It Va dev.netmap.generic_rings: 1
+Number of rings used for emulated netmap mode
 .It Va dev.netmap.generic_ringsize: 1024
 Ring size used for emulated netmap mode
 .It Va dev.netmap.generic_mit: 100000
@@ -855,15 +920,17 @@ Batch size used when moving packets across a
 switch.
 Values above 64 generally guarantee good
 performance.
+.It Va dev.netmap.ptnet_vnet_hdr: 1
+Allow ptnet devices to use virtio-net headers
 .El
 .Sh SYSTEM CALLS
 .Nm
 uses
 .Xr select 2 ,
 .Xr poll 2 ,
-.Xr epoll
+.Xr epoll 7
 and
-.Xr kqueue
+.Xr kqueue 2
 to wake up processes when significant events occur, and
 .Xr mmap 2
 to map memory.
@@ -893,7 +960,7 @@ directory in
 .Fx
 distributions.
 .Pp
-.Xr pkt-gen
+.Xr pkt-gen 8
 is a general purpose traffic source/sink.
 .Pp
 As an example
@@ -904,11 +971,11 @@ is a traffic sink.
 Both print traffic statistics, to help monitor
 how the system performs.
 .Pp
-.Xr pkt-gen
+.Xr pkt-gen 8
 has many options can be uses to set packet sizes, addresses,
 rates, and use multiple send/receive threads and cores.
 .Pp
-.Xr bridge
+.Xr bridge 4
 is another test program which interconnects two
 .Nm
 ports.
@@ -1000,7 +1067,7 @@ to replenish the receive ring:
 .Ed
 .Ss ACCESSING THE HOST STACK
 The host stack is for all practical purposes just a regular ring pair,
-which you can access with the netmap API (e.g. with
+which you can access with the netmap API (e.g., with
 .Dl nm_open("netmap:eth0^", ... ) ;
 All packets that the host would send to an interface in
 .Nm
@@ -1010,13 +1077,13 @@ TX ring are send up to the host stack.
 A simple way to test the performance of a
 .Nm VALE
 switch is to attach a sender and a receiver to it,
-e.g. running the following in two different terminals:
+e.g., running the following in two different terminals:
 .Dl pkt-gen -i vale1:a -f rx # receiver
 .Dl pkt-gen -i vale1:b -f tx # sender
 The same example can be used to test netmap pipes, by simply
-changing port names, e.g.
-.Dl pkt-gen -i vale:x{3 -f rx # receiver on the master side
-.Dl pkt-gen -i vale:x}3 -f tx # sender on the slave side
+changing port names, e.g.,
+.Dl pkt-gen -i vale2:x{3 -f rx # receiver on the master side
+.Dl pkt-gen -i vale2:x}3 -f tx # sender on the slave side
 .Pp
 The following command attaches an interface and the host stack
 to a switch:
@@ -1030,6 +1097,7 @@ with the network card or the host.
 .Xr vale-ctl 4 ,
 .Xr bridge 8 ,
 .Xr lb 8 ,
+.Xr nmreplay 8 ,
 .Xr pkt-gen 8
 .Pp
 .Pa http://info.iet.unipi.it/~luigi/netmap/
@@ -1088,7 +1156,7 @@ multiqueue, schedulers, packet filters.
 Multiple transmit and receive rings are supported natively
 and can be configured with ordinary OS tools,
 such as
-.Xr ethtool
+.Xr ethtool 8
 or
 device-specific sysctl variables.
 The same goes for Receive Packet Steering (RPS)

From owner-svn-src-stable@freebsd.org  Tue Dec  4 17:57:02 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id B3CB41314A66;
 Tue,  4 Dec 2018 17:57:02 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 5B4D5860D7;
 Tue,  4 Dec 2018 17:57:02 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 38153A4C;
 Tue,  4 Dec 2018 17:57:02 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4Hv2i2063311;
 Tue, 4 Dec 2018 17:57:02 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4Hv2dZ063310;
 Tue, 4 Dec 2018 17:57:02 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812041757.wB4Hv2dZ063310@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Tue, 4 Dec 2018 17:57:02 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341483 - stable/12/share/man/man4
X-SVN-Group: stable-12
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/12/share/man/man4
X-SVN-Commit-Revision: 341483
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 5B4D5860D7
X-Spamd-Result: default: False [-0.78 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.45)[-0.447,0];
 NEURAL_HAM_SHORT(-0.33)[-0.327,0];
 NEURAL_HAM_LONG(-0.00)[-0.004,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 17:57:02 -0000

Author: vmaffione
Date: Tue Dec  4 17:57:01 2018
New Revision: 341483
URL: https://svnweb.freebsd.org/changeset/base/341483

Log:
  MFC r341430
  
  netmap(4): improve man page
  
  Reviewed by:    bcr
  Differential Revision:  https://reviews.freebsd.org/D18057

Modified:
  stable/12/share/man/man4/netmap.4
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/share/man/man4/netmap.4
==============================================================================
--- stable/12/share/man/man4/netmap.4	Tue Dec  4 17:53:56 2018	(r341482)
+++ stable/12/share/man/man4/netmap.4	Tue Dec  4 17:57:01 2018	(r341483)
@@ -27,17 +27,12 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 28, 2018
+.Dd November 20, 2018
 .Dt NETMAP 4
 .Os
 .Sh NAME
 .Nm netmap
 .Nd a framework for fast packet I/O
-.Nm VALE
-.Nd a fast VirtuAl Local Ethernet using the netmap API
-.Pp
-.Nm netmap pipes
-.Nd a shared memory packet transport channel
 .Sh SYNOPSIS
 .Cd device netmap
 .Sh DESCRIPTION
@@ -79,7 +74,7 @@ with much less than one core on 10 Gbit/s NICs;
 35-40 Mpps on 40 Gbit/s NICs (limited by the hardware);
 about 20 Mpps per core for VALE ports;
 and over 100 Mpps for
-.Nm netmap pipes.
+.Nm netmap pipes .
 NICs without native
 .Nm
 support can still use the API in emulated mode,
@@ -108,9 +103,9 @@ synchronization and blocking I/O through a file descri
 and standard OS mechanisms such as
 .Xr select 2 ,
 .Xr poll 2 ,
-.Xr epoll 2 ,
+.Xr kqueue 2
 and
-.Xr kqueue 2 .
+.Xr epoll 7 .
 All types of
 .Nm netmap ports
 and the
@@ -218,12 +213,6 @@ Non-blocking I/O is done with special
 and
 .Xr poll 2
 on the file descriptor permit blocking I/O.
-.Xr epoll 2
-and
-.Xr kqueue 2
-are not supported on
-.Nm
-file descriptors.
 .Pp
 While a NIC is in
 .Nm
@@ -244,7 +233,7 @@ which is the ultimate reference for the
 API.
 The main structures and fields are indicated below:
 .Bl -tag -width XXX
-.It Dv struct netmap_if (one per interface)
+.It Dv struct netmap_if (one per interface )
 .Bd -literal
 struct netmap_if {
     ...
@@ -267,14 +256,30 @@ NICs also have an extra tx/rx ring pair connected to t
 .Em NIOCREGIF
 can also request additional unbound buffers in the same memory space,
 to be used as temporary storage for packets.
+The number of extra
+buffers is specified in the
+.Va arg.nr_arg3
+field.
+On success, the kernel writes back to
+.Va arg.nr_arg3
+the number of extra buffers actually allocated (they may be less
+than the amount requested if the memory space ran out of buffers).
 .Pa ni_bufs_head
-contains the index of the first of these free rings,
+contains the index of the first of these extra buffers,
 which are connected in a list (the first uint32_t of each
 buffer being the index of the next buffer in the list).
 A
 .Dv 0
 indicates the end of the list.
-.It Dv struct netmap_ring (one per ring)
+The application is free to modify
+this list and use the buffers (i.e., binding them to the slots of a
+netmap ring).
+When closing the netmap file descriptor,
+the kernel frees the buffers contained in the list pointed by
+.Pa ni_bufs_head
+, irrespectively of the buffers originally provided by the kernel on
+.Em NIOCREGIF .
+.It Dv struct netmap_ring (one per ring )
 .Bd -literal
 struct netmap_ring {
     ...
@@ -296,7 +301,7 @@ Implements transmit and receive rings, with read/write
 pointers, metadata and an array of
 .Em slots
 describing the buffers.
-.It Dv struct netmap_slot (one per buffer)
+.It Dv struct netmap_slot (one per buffer )
 .Bd -literal
 struct netmap_slot {
     uint32_t buf_idx;           /* buffer index                 */
@@ -371,7 +376,6 @@ during the execution of a netmap-related system call.
 The only exception are slots (and buffers) in the range
 .Va tail\  . . . head-1 ,
 that are explicitly assigned to the kernel.
-.Pp
 .Ss TRANSMIT RINGS
 On transmit rings, after a
 .Nm
@@ -498,10 +502,9 @@ can be delayed indefinitely.
 This flag helps detect
 when packets have been sent and a file descriptor can be closed.
 .It NS_FORWARD
-When a ring is in 'transparent' mode (see
-.Sx TRANSPARENT MODE ) ,
-packets marked with this flag are forwarded to the other endpoint
-at the next system call, thus restoring (in a selective way)
+When a ring is in 'transparent' mode,
+packets marked with this flag by the user application are forwarded to the
+other endpoint at the next system call, thus restoring (in a selective way)
 the connection between a NIC and the host stack.
 .It NS_NO_LEARN
 tells the forwarding code that the source MAC address for this
@@ -669,7 +672,7 @@ and does not need to be sequential.
 On return the pipe
 will only have a single ring pair with index 0,
 irrespective of the value of
-.Va i.
+.Va i .
 .El
 .Pp
 By default, a
@@ -681,11 +684,14 @@ no write events are specified.
 The feature can be disabled by or-ing
 .Va NETMAP_NO_TX_POLL
 to the value written to
-.Va nr_ringid.
+.Va nr_ringid .
 When this feature is used,
 packets are transmitted only on
 .Va ioctl(NIOCTXSYNC)
-or select()/poll() are called with a write event (POLLOUT/wfdset) or a full ring.
+or
+.Va select() /
+.Va poll()
+are called with a write event (POLLOUT/wfdset) or a full ring.
 .Pp
 When registering a virtual interface that is dynamically created to a
 .Xr vale 4
@@ -698,7 +704,7 @@ number of slots available for transmission.
 tells the hardware of consumed packets, and asks for newly available
 packets.
 .El
-.Sh SELECT, POLL, EPOLL, KQUEUE.
+.Sh SELECT, POLL, EPOLL, KQUEUE
 .Xr select 2
 and
 .Xr poll 2
@@ -712,7 +718,7 @@ respectively when write (POLLOUT) and read (POLLIN) ev
 Both block if no slots are available in the ring
 .Va ( ring->cur == ring->tail ) .
 Depending on the platform,
-.Xr epoll 2
+.Xr epoll 7
 and
 .Xr kqueue 2
 are supported too.
@@ -731,7 +737,10 @@ Passing the
 .Dv NETMAP_DO_RX_POLL
 flag to
 .Em NIOCREGIF updates receive rings even without read events.
-Note that on epoll and kqueue,
+Note that on
+.Xr epoll 7
+and
+.Xr kqueue 2 ,
 .Dv NETMAP_NO_TX_POLL
 and
 .Dv NETMAP_DO_RX_POLL
@@ -759,9 +768,9 @@ before
 .Pp
 The following functions are available:
 .Bl -tag -width XXXXX
-.It Va  struct nm_desc * nm_open(const char *ifname, const struct nmreq *req, uint64_t flags, const struct nm_desc *arg)
+.It Va  struct nm_desc * nm_open(const char *ifname, const struct nmreq *req, uint64_t flags, const struct nm_desc *arg )
 similar to
-.Xr pcap_open 3pcap ,
+.Xr pcap_open_live 3 ,
 binds a file descriptor to a port.
 .Bl -tag -width XX
 .It Va ifname
@@ -782,44 +791,50 @@ can be set to a combination of the following flags:
 .Va NETMAP_NO_TX_POLL ,
 .Va NETMAP_DO_RX_POLL
 (copied into nr_ringid);
-.Va NM_OPEN_NO_MMAP (if arg points to the same memory region,
+.Va NM_OPEN_NO_MMAP
+(if arg points to the same memory region,
 avoids the mmap and uses the values from it);
-.Va NM_OPEN_IFNAME (ignores ifname and uses the values in arg);
+.Va NM_OPEN_IFNAME
+(ignores ifname and uses the values in arg);
 .Va NM_OPEN_ARG1 ,
 .Va NM_OPEN_ARG2 ,
-.Va NM_OPEN_ARG3 (uses the fields from arg);
-.Va NM_OPEN_RING_CFG (uses the ring number and sizes from arg).
+.Va NM_OPEN_ARG3
+(uses the fields from arg);
+.Va NM_OPEN_RING_CFG
+(uses the ring number and sizes from arg).
 .El
-.It Va int nm_close(struct nm_desc *d)
+.It Va int nm_close(struct nm_desc *d )
 closes the file descriptor, unmaps memory, frees resources.
-.It Va int nm_inject(struct nm_desc *d, const void *buf, size_t size)
-similar to pcap_inject(), pushes a packet to a ring, returns the size
+.It Va int nm_inject(struct nm_desc *d, const void *buf, size_t size )
+similar to
+.Va pcap_inject() ,
+pushes a packet to a ring, returns the size
 of the packet is successful, or 0 on error;
-.It Va int nm_dispatch(struct nm_desc *d, int cnt, nm_cb_t cb, u_char *arg)
-similar to pcap_dispatch(), applies a callback to incoming packets
-.It Va u_char * nm_nextpkt(struct nm_desc *d, struct nm_pkthdr *hdr)
-similar to pcap_next(), fetches the next packet
+.It Va int nm_dispatch(struct nm_desc *d, int cnt, nm_cb_t cb, u_char *arg )
+similar to
+.Va pcap_dispatch() ,
+applies a callback to incoming packets
+.It Va u_char * nm_nextpkt(struct nm_desc *d, struct nm_pkthdr *hdr )
+similar to
+.Va pcap_next() ,
+fetches the next packet
 .El
 .Sh SUPPORTED DEVICES
 .Nm
 natively supports the following devices:
 .Pp
-On FreeBSD:
+On
+.Fx :
 .Xr cxgbe 4 ,
 .Xr em 4 ,
-.Xr igb 4 ,
+.Xr iflib 4
+(providing igb, em and lem),
 .Xr ixgbe 4 ,
 .Xr ixl 4 ,
-.Xr lem 4 ,
-.Xr re 4 .
+.Xr re 4 ,
+.Xr vtnet 4 .
 .Pp
-On Linux
-.Xr e1000 4 ,
-.Xr e1000e 4 ,
-.Xr i40e 4 ,
-.Xr igb 4 ,
-.Xr ixgbe 4 ,
-.Xr r8169 4 .
+On Linux e1000, e1000e, i40e, igb, ixgbe, ixgbevf, r8169, virtio_net, vmxnet3.
 .Pp
 NICs without native support can still be used in
 .Nm
@@ -848,10 +863,11 @@ globally controls how netmap mode is implemented.
 .Sh SYSCTL VARIABLES AND MODULE PARAMETERS
 Some aspect of the operation of
 .Nm
-are controlled through sysctl variables on FreeBSD
+are controlled through sysctl variables on
+.Fx
 .Em ( dev.netmap.* )
 and module parameters on Linux
-.Em ( /sys/module/netmap_lin/parameters/* ) :
+.Em ( /sys/module/netmap/parameters/* ) :
 .Bl -tag -width indent
 .It Va dev.netmap.admode: 0
 Controls the use of native or emulated adapter mode.
@@ -861,6 +877,8 @@ Controls the use of native or emulated adapter mode.
 1 forces native mode and fails if not available;
 .Pp
 2 forces emulated hence never fails.
+.It Va dev.netmap.generic_rings: 1
+Number of rings used for emulated netmap mode
 .It Va dev.netmap.generic_ringsize: 1024
 Ring size used for emulated netmap mode
 .It Va dev.netmap.generic_mit: 100000
@@ -902,13 +920,15 @@ Batch size used when moving packets across a
 switch.
 Values above 64 generally guarantee good
 performance.
+.It Va dev.netmap.ptnet_vnet_hdr: 1
+Allow ptnet devices to use virtio-net headers
 .El
 .Sh SYSTEM CALLS
 .Nm
 uses
 .Xr select 2 ,
 .Xr poll 2 ,
-.Xr epoll 2
+.Xr epoll 7
 and
 .Xr kqueue 2
 to wake up processes when significant events occur, and
@@ -1077,6 +1097,7 @@ with the network card or the host.
 .Xr vale-ctl 4 ,
 .Xr bridge 8 ,
 .Xr lb 8 ,
+.Xr nmreplay 8 ,
 .Xr pkt-gen 8
 .Pp
 .Pa http://info.iet.unipi.it/~luigi/netmap/

From owner-svn-src-stable@freebsd.org  Tue Dec  4 18:31:22 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 629A713163DA;
 Tue,  4 Dec 2018 18:31:22 +0000 (UTC)
 (envelope-from gordon@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 08B4B6A700;
 Tue,  4 Dec 2018 18:31:22 +0000 (UTC)
 (envelope-from gordon@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C6B3F1072;
 Tue,  4 Dec 2018 18:31:21 +0000 (UTC)
 (envelope-from gordon@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4IVLFl083514;
 Tue, 4 Dec 2018 18:31:21 GMT (envelope-from gordon@FreeBSD.org)
Received: (from gordon@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4IVLNZ083513;
 Tue, 4 Dec 2018 18:31:21 GMT (envelope-from gordon@FreeBSD.org)
Message-Id: <201812041831.wB4IVLNZ083513@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: gordon set sender to
 gordon@FreeBSD.org using -f
From: Gordon Tetlow <gordon@FreeBSD.org>
Date: Tue, 4 Dec 2018 18:31:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341485 - stable/12/usr.sbin/bhyve
X-SVN-Group: stable-12
X-SVN-Commit-Author: gordon
X-SVN-Commit-Paths: stable/12/usr.sbin/bhyve
X-SVN-Commit-Revision: 341485
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 08B4B6A700
X-Spamd-Result: default: False [-0.39 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.475,0];
 NEURAL_SPAM_SHORT(0.13)[0.133,0];
 NEURAL_HAM_LONG(-0.05)[-0.046,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 18:31:22 -0000

Author: gordon
Date: Tue Dec  4 18:31:21 2018
New Revision: 341485
URL: https://svnweb.freebsd.org/changeset/base/341485

Log:
  MFC r341484
  
  Always treat firmware request and response sizes as unsigned.
  
  This fixes an incomplete bounds check on the guest-supplied request
  size where a very large request size could be interpreted as a negative
  value and not be caught by the bounds check.
  
  Submitted by: jhb
  Reported by:  Reno Robert
  Approved by:  so
  Security:     FreeBSD-SA-18:14.bhyve
  Security:     CVE-2018-17160

Modified:
  stable/12/usr.sbin/bhyve/fwctl.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.sbin/bhyve/fwctl.c
==============================================================================
--- stable/12/usr.sbin/bhyve/fwctl.c	Tue Dec  4 18:28:25 2018	(r341484)
+++ stable/12/usr.sbin/bhyve/fwctl.c	Tue Dec  4 18:31:21 2018	(r341485)
@@ -79,8 +79,8 @@ static u_int ident_idx;
 
 struct op_info {
 	int op;
-	int  (*op_start)(int len);
-	void (*op_data)(uint32_t data, int len);
+	int  (*op_start)(uint32_t len);
+	void (*op_data)(uint32_t data, uint32_t len);
 	int  (*op_result)(struct iovec **data);
 	void (*op_done)(struct iovec *data);
 };
@@ -119,7 +119,7 @@ errop_set(int err)
 }
 
 static int
-errop_start(int len)
+errop_start(uint32_t len)
 {
 	errop_code = ENOENT;
 
@@ -128,7 +128,7 @@ errop_start(int len)
 }
 
 static void
-errop_data(uint32_t data, int len)
+errop_data(uint32_t data, uint32_t len)
 {
 
 	/* ignore */
@@ -188,7 +188,7 @@ static int fget_cnt;
 static size_t fget_size;
 
 static int
-fget_start(int len)
+fget_start(uint32_t len)
 {
 
 	if (len > FGET_STRSZ)
@@ -200,7 +200,7 @@ fget_start(int len)
 }
 
 static void
-fget_data(uint32_t data, int len)
+fget_data(uint32_t data, uint32_t len)
 {
 
 	*((uint32_t *) &fget_str[fget_cnt]) = data;
@@ -285,8 +285,8 @@ static struct req_info {
 	struct op_info *req_op;
 	int	 resp_error;
 	int	 resp_count;
-	int	 resp_size;
-	int	 resp_off;
+	size_t	 resp_size;
+	size_t	 resp_off;
 	struct iovec *resp_biov;
 } rinfo;
 
@@ -346,13 +346,14 @@ fwctl_request_start(void)
 static int
 fwctl_request_data(uint32_t value)
 {
-	int remlen;
 
 	/* Make sure remaining size is >= 0 */
-	rinfo.req_size -= sizeof(uint32_t);
-	remlen = MAX(rinfo.req_size, 0);
+	if (rinfo.req_size <= sizeof(uint32_t))
+		rinfo.req_size = 0;
+	else
+		rinfo.req_size -= sizeof(uint32_t);
 
-	(*rinfo.req_op->op_data)(value, remlen);
+	(*rinfo.req_op->op_data)(value, rinfo.req_size);
 
 	if (rinfo.req_size < sizeof(uint32_t)) {
 		fwctl_request_done();
@@ -401,7 +402,7 @@ static int
 fwctl_response(uint32_t *retval)
 {
 	uint32_t *dp;
-	int remlen;
+	ssize_t remlen;
 
 	switch(rinfo.resp_count) {
 	case 0:
@@ -436,7 +437,7 @@ fwctl_response(uint32_t *retval)
 	}
 
 	if (rinfo.resp_count > 3 &&
-	    rinfo.resp_size - rinfo.resp_off <= 0) {
+	    rinfo.resp_off >= rinfo.resp_size) {
 		fwctl_response_done();
 		return (1);
 	}

From owner-svn-src-stable@freebsd.org  Tue Dec  4 18:32:52 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id EF508131661F;
 Tue,  4 Dec 2018 18:32:51 +0000 (UTC)
 (envelope-from gordon@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 93CDF6A9A1;
 Tue,  4 Dec 2018 18:32:51 +0000 (UTC)
 (envelope-from gordon@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5C4E110C8;
 Tue,  4 Dec 2018 18:32:51 +0000 (UTC)
 (envelope-from gordon@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4IWpBE084586;
 Tue, 4 Dec 2018 18:32:51 GMT (envelope-from gordon@FreeBSD.org)
Received: (from gordon@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4IWp3l084585;
 Tue, 4 Dec 2018 18:32:51 GMT (envelope-from gordon@FreeBSD.org)
Message-Id: <201812041832.wB4IWp3l084585@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: gordon set sender to
 gordon@FreeBSD.org using -f
From: Gordon Tetlow <gordon@FreeBSD.org>
Date: Tue, 4 Dec 2018 18:32:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341486 - stable/11/usr.sbin/bhyve
X-SVN-Group: stable-11
X-SVN-Commit-Author: gordon
X-SVN-Commit-Paths: stable/11/usr.sbin/bhyve
X-SVN-Commit-Revision: 341486
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 93CDF6A9A1
X-Spamd-Result: default: False [-0.39 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.475,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.13)[0.133,0];
 NEURAL_HAM_LONG(-0.05)[-0.046,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 18:32:52 -0000

Author: gordon
Date: Tue Dec  4 18:32:50 2018
New Revision: 341486
URL: https://svnweb.freebsd.org/changeset/base/341486

Log:
  MFC r341484
  
  Always treat firmware request and response sizes as unsigned.
  
  This fixes an incomplete bounds check on the guest-supplied request
  size where a very large request size could be interpreted as a negative
  value and not be caught by the bounds check.
  
  Submitted by: jhb
  Reported by:  Reno Robert
  Approved by:  so
  Security:     FreeBSD-SA-18:14.bhyve
  Security:     CVE-2018-17160

Modified:
  stable/11/usr.sbin/bhyve/fwctl.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.sbin/bhyve/fwctl.c
==============================================================================
--- stable/11/usr.sbin/bhyve/fwctl.c	Tue Dec  4 18:31:21 2018	(r341485)
+++ stable/11/usr.sbin/bhyve/fwctl.c	Tue Dec  4 18:32:50 2018	(r341486)
@@ -79,8 +79,8 @@ static u_int ident_idx;
 
 struct op_info {
 	int op;
-	int  (*op_start)(int len);
-	void (*op_data)(uint32_t data, int len);
+	int  (*op_start)(uint32_t len);
+	void (*op_data)(uint32_t data, uint32_t len);
 	int  (*op_result)(struct iovec **data);
 	void (*op_done)(struct iovec *data);
 };
@@ -119,7 +119,7 @@ errop_set(int err)
 }
 
 static int
-errop_start(int len)
+errop_start(uint32_t len)
 {
 	errop_code = ENOENT;
 
@@ -128,7 +128,7 @@ errop_start(int len)
 }
 
 static void
-errop_data(uint32_t data, int len)
+errop_data(uint32_t data, uint32_t len)
 {
 
 	/* ignore */
@@ -188,7 +188,7 @@ static int fget_cnt;
 static size_t fget_size;
 
 static int
-fget_start(int len)
+fget_start(uint32_t len)
 {
 
 	if (len > FGET_STRSZ)
@@ -200,7 +200,7 @@ fget_start(int len)
 }
 
 static void
-fget_data(uint32_t data, int len)
+fget_data(uint32_t data, uint32_t len)
 {
 
 	*((uint32_t *) &fget_str[fget_cnt]) = data;
@@ -285,8 +285,8 @@ static struct req_info {
 	struct op_info *req_op;
 	int	 resp_error;
 	int	 resp_count;
-	int	 resp_size;
-	int	 resp_off;
+	size_t	 resp_size;
+	size_t	 resp_off;
 	struct iovec *resp_biov;
 } rinfo;
 
@@ -346,13 +346,14 @@ fwctl_request_start(void)
 static int
 fwctl_request_data(uint32_t value)
 {
-	int remlen;
 
 	/* Make sure remaining size is >= 0 */
-	rinfo.req_size -= sizeof(uint32_t);
-	remlen = MAX(rinfo.req_size, 0);
+	if (rinfo.req_size <= sizeof(uint32_t))
+		rinfo.req_size = 0;
+	else
+		rinfo.req_size -= sizeof(uint32_t);
 
-	(*rinfo.req_op->op_data)(value, remlen);
+	(*rinfo.req_op->op_data)(value, rinfo.req_size);
 
 	if (rinfo.req_size < sizeof(uint32_t)) {
 		fwctl_request_done();
@@ -401,7 +402,7 @@ static int
 fwctl_response(uint32_t *retval)
 {
 	uint32_t *dp;
-	int remlen;
+	ssize_t remlen;
 
 	switch(rinfo.resp_count) {
 	case 0:
@@ -436,7 +437,7 @@ fwctl_response(uint32_t *retval)
 	}
 
 	if (rinfo.resp_count > 3 &&
-	    rinfo.resp_size - rinfo.resp_off <= 0) {
+	    rinfo.resp_off >= rinfo.resp_size) {
 		fwctl_response_done();
 		return (1);
 	}

From owner-svn-src-stable@freebsd.org  Tue Dec  4 19:06:14 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0A96C1317F61;
 Tue,  4 Dec 2018 19:06:14 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 877D26D0F6;
 Tue,  4 Dec 2018 19:06:13 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 60C2B15DA;
 Tue,  4 Dec 2018 19:06:13 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4J6Dld001125;
 Tue, 4 Dec 2018 19:06:13 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4J6Br6001116;
 Tue, 4 Dec 2018 19:06:11 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201812041906.wB4J6Br6001116@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Tue, 4 Dec 2018 19:06:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341490 - in stable/12/sys: amd64/amd64 amd64/ia32
 arm/arm fs/procfs i386/i386 kern sparc64/sparc64
X-SVN-Group: stable-12
X-SVN-Commit-Author: markj
X-SVN-Commit-Paths: in stable/12/sys: amd64/amd64 amd64/ia32 arm/arm fs/procfs
 i386/i386 kern sparc64/sparc64
X-SVN-Commit-Revision: 341490
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 877D26D0F6
X-Spamd-Result: default: False [-0.39 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.475,0];
 NEURAL_SPAM_SHORT(0.13)[0.133,0];
 NEURAL_HAM_LONG(-0.05)[-0.046,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 19:06:14 -0000

Author: markj
Date: Tue Dec  4 19:06:11 2018
New Revision: 341490
URL: https://svnweb.freebsd.org/changeset/base/341490

Log:
  MFC r341442, r341443:
  Plug memory disclosures via ptrace(2).

Modified:
  stable/12/sys/amd64/amd64/machdep.c
  stable/12/sys/amd64/ia32/ia32_reg.c
  stable/12/sys/arm/arm/machdep_kdb.c
  stable/12/sys/fs/procfs/procfs_dbregs.c
  stable/12/sys/fs/procfs/procfs_fpregs.c
  stable/12/sys/fs/procfs/procfs_regs.c
  stable/12/sys/i386/i386/machdep.c
  stable/12/sys/kern/sys_process.c
  stable/12/sys/sparc64/sparc64/machdep.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/amd64/machdep.c
==============================================================================
--- stable/12/sys/amd64/amd64/machdep.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/amd64/amd64/machdep.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -2046,6 +2046,7 @@ fill_regs(struct thread *td, struct reg *regs)
 int
 fill_frame_regs(struct trapframe *tp, struct reg *regs)
 {
+
 	regs->r_r15 = tp->tf_r15;
 	regs->r_r14 = tp->tf_r14;
 	regs->r_r13 = tp->tf_r13;
@@ -2077,6 +2078,8 @@ fill_frame_regs(struct trapframe *tp, struct reg *regs
 		regs->r_fs = 0;
 		regs->r_gs = 0;
 	}
+	regs->r_err = 0;
+	regs->r_trapno = 0;
 	return (0);
 }
 

Modified: stable/12/sys/amd64/ia32/ia32_reg.c
==============================================================================
--- stable/12/sys/amd64/ia32/ia32_reg.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/amd64/ia32/ia32_reg.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -105,6 +105,8 @@ fill_regs32(struct thread *td, struct reg32 *regs)
 	regs->r_eflags = tp->tf_rflags;
 	regs->r_esp = tp->tf_rsp;
 	regs->r_ss = tp->tf_ss;
+	regs->r_err = 0;
+	regs->r_trapno = 0;
 	return (0);
 }
 

Modified: stable/12/sys/arm/arm/machdep_kdb.c
==============================================================================
--- stable/12/sys/arm/arm/machdep_kdb.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/arm/arm/machdep_kdb.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -104,6 +104,7 @@ fill_regs(struct thread *td, struct reg *regs)
 	regs->r_cpsr = tf->tf_spsr;
 	return (0);
 }
+
 int
 fill_fpregs(struct thread *td, struct fpreg *regs)
 {
@@ -134,8 +135,11 @@ set_fpregs(struct thread *td, struct fpreg *regs)
 int
 fill_dbregs(struct thread *td, struct dbreg *regs)
 {
+
+	bzero(regs, sizeof(*regs));
 	return (0);
 }
+
 int
 set_dbregs(struct thread *td, struct dbreg *regs)
 {

Modified: stable/12/sys/fs/procfs/procfs_dbregs.c
==============================================================================
--- stable/12/sys/fs/procfs/procfs_dbregs.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/fs/procfs/procfs_dbregs.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -112,8 +112,10 @@ procfs_doprocdbregs(PFS_FILL_ARGS)
 			return (EINVAL);
 		}
 		wrap32 = 1;
-	}
+		memset(&r32, 0, sizeof(r32));
+	} else
 #endif
+		memset(&r, 0, sizeof(r));
 	error = PROC(read, dbregs, td2, &r);
 	if (error == 0) {
 		PROC_UNLOCK(p);

Modified: stable/12/sys/fs/procfs/procfs_fpregs.c
==============================================================================
--- stable/12/sys/fs/procfs/procfs_fpregs.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/fs/procfs/procfs_fpregs.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -102,7 +102,6 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
 		return (EBUSY);
 	}
 
-	/* XXXKSE: */
 	td2 = FIRST_THREAD_IN_PROC(p);
 #ifdef COMPAT_FREEBSD32
 	if (SV_CURPROC_FLAG(SV_ILP32)) {
@@ -111,8 +110,10 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
 			return (EINVAL);
 		}
 		wrap32 = 1;
-	}
+		memset(&r32, 0, sizeof(r32));
+	} else
 #endif
+		memset(&r, 0, sizeof(r));
 	error = PROC(read, fpregs, td2, &r);
 	if (error == 0) {
 		PROC_UNLOCK(p);

Modified: stable/12/sys/fs/procfs/procfs_regs.c
==============================================================================
--- stable/12/sys/fs/procfs/procfs_regs.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/fs/procfs/procfs_regs.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -102,7 +102,6 @@ procfs_doprocregs(PFS_FILL_ARGS)
 		return (EBUSY);
 	}
 
-	/* XXXKSE: */
 	td2 = FIRST_THREAD_IN_PROC(p);
 #ifdef COMPAT_FREEBSD32
 	if (SV_CURPROC_FLAG(SV_ILP32)) {
@@ -111,8 +110,10 @@ procfs_doprocregs(PFS_FILL_ARGS)
 			return (EINVAL);
 		}
 		wrap32 = 1;
-	}
+		memset(&r32, 0, sizeof(r32));
+	} else
 #endif
+		memset(&r, 0, sizeof(r));
 	error = PROC(read, regs, td2, &r);
 	if (error == 0) {
 		PROC_UNLOCK(p);

Modified: stable/12/sys/i386/i386/machdep.c
==============================================================================
--- stable/12/sys/i386/i386/machdep.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/i386/i386/machdep.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -2817,6 +2817,7 @@ fill_regs(struct thread *td, struct reg *regs)
 int
 fill_frame_regs(struct trapframe *tp, struct reg *regs)
 {
+
 	regs->r_fs = tp->tf_fs;
 	regs->r_es = tp->tf_es;
 	regs->r_ds = tp->tf_ds;
@@ -2832,6 +2833,8 @@ fill_frame_regs(struct trapframe *tp, struct reg *regs
 	regs->r_eflags = tp->tf_eflags;
 	regs->r_esp = tp->tf_esp;
 	regs->r_ss = tp->tf_ss;
+	regs->r_err = 0;
+	regs->r_trapno = 0;
 	return (0);
 }
 

Modified: stable/12/sys/kern/sys_process.c
==============================================================================
--- stable/12/sys/kern/sys_process.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/kern/sys_process.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -541,6 +541,9 @@ struct ptrace_args {
  *   copyin(uap->addr, &r.reg32, sizeof r.reg32);
  * .. except this is done at runtime.
  */
+#define	BZERO(a, s)		wrap32 ? \
+	bzero(a ## 32, s ## 32) : \
+	bzero(a, s)
 #define	COPYIN(u, k, s)		wrap32 ? \
 	copyin(u, k ## 32, s ## 32) : \
 	copyin(u, k, s)
@@ -548,6 +551,7 @@ struct ptrace_args {
 	copyout(k ## 32, u, s ## 32) : \
 	copyout(k, u, s)
 #else
+#define	BZERO(a, s)		bzero(a, s)
 #define	COPYIN(u, k, s)		copyin(u, k, s)
 #define	COPYOUT(k, u, s)	copyout(k, u, s)
 #endif
@@ -573,7 +577,7 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 		struct ptrace_lwpinfo32 pl32;
 		struct ptrace_vm_entry32 pve32;
 #endif
-		char args[nitems(td->td_sa.args) * sizeof(register_t)];
+		char args[sizeof(td->td_sa.args)];
 		int ptevents;
 	} r;
 	void *addr;
@@ -590,11 +594,17 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 	addr = &r;
 	switch (uap->req) {
 	case PT_GET_EVENT_MASK:
+	case PT_LWPINFO:
+	case PT_GET_SC_ARGS:
+		break;
 	case PT_GETREGS:
+		BZERO(&r.reg, sizeof r.reg);
+		break;
 	case PT_GETFPREGS:
+		BZERO(&r.fpreg, sizeof r.fpreg);
+		break;
 	case PT_GETDBREGS:
-	case PT_LWPINFO:
-	case PT_GET_SC_ARGS:
+		BZERO(&r.dbreg, sizeof r.dbreg);
 		break;
 	case PT_SETREGS:
 		error = COPYIN(uap->addr, &r.reg, sizeof r.reg);
@@ -662,6 +672,7 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 }
 #undef COPYIN
 #undef COPYOUT
+#undef BZERO
 
 #ifdef COMPAT_FREEBSD32
 /*

Modified: stable/12/sys/sparc64/sparc64/machdep.c
==============================================================================
--- stable/12/sys/sparc64/sparc64/machdep.c	Tue Dec  4 18:51:28 2018	(r341489)
+++ stable/12/sys/sparc64/sparc64/machdep.c	Tue Dec  4 19:06:11 2018	(r341490)
@@ -1056,6 +1056,7 @@ fill_fpregs(struct thread *td, struct fpreg *fpregs)
 	bcopy(pcb->pcb_ufp, fpregs->fr_regs, sizeof(fpregs->fr_regs));
 	fpregs->fr_fsr = tf->tf_fsr;
 	fpregs->fr_gsr = tf->tf_gsr;
+	fpregs->fr_pad[0] = 0;
 	return (0);
 }
 

From owner-svn-src-stable@freebsd.org  Tue Dec  4 19:07:13 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 47694131800A;
 Tue,  4 Dec 2018 19:07:13 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id B99DB6D25E;
 Tue,  4 Dec 2018 19:07:12 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9978115DF;
 Tue,  4 Dec 2018 19:07:12 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4J7Cru001217;
 Tue, 4 Dec 2018 19:07:12 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4J7Ag6001205;
 Tue, 4 Dec 2018 19:07:10 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201812041907.wB4J7Ag6001205@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Tue, 4 Dec 2018 19:07:10 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341491 - in stable/11/sys: amd64/amd64 amd64/ia32
 arm/arm fs/procfs i386/i386 kern sparc64/sparc64
X-SVN-Group: stable-11
X-SVN-Commit-Author: markj
X-SVN-Commit-Paths: in stable/11/sys: amd64/amd64 amd64/ia32 arm/arm fs/procfs
 i386/i386 kern sparc64/sparc64
X-SVN-Commit-Revision: 341491
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: B99DB6D25E
X-Spamd-Result: default: False [-0.18 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.475,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.34)[0.342,0];
 NEURAL_HAM_LONG(-0.05)[-0.046,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 19:07:13 -0000

Author: markj
Date: Tue Dec  4 19:07:10 2018
New Revision: 341491
URL: https://svnweb.freebsd.org/changeset/base/341491

Log:
  MFC r341442, r341443:
  Plug memory disclosures via ptrace(2).

Modified:
  stable/11/sys/amd64/amd64/machdep.c
  stable/11/sys/amd64/ia32/ia32_reg.c
  stable/11/sys/arm/arm/machdep_kdb.c
  stable/11/sys/fs/procfs/procfs_dbregs.c
  stable/11/sys/fs/procfs/procfs_fpregs.c
  stable/11/sys/fs/procfs/procfs_regs.c
  stable/11/sys/i386/i386/machdep.c
  stable/11/sys/kern/sys_process.c
  stable/11/sys/sparc64/sparc64/machdep.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/amd64/amd64/machdep.c
==============================================================================
--- stable/11/sys/amd64/amd64/machdep.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/amd64/amd64/machdep.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -2025,6 +2025,7 @@ fill_regs(struct thread *td, struct reg *regs)
 int
 fill_frame_regs(struct trapframe *tp, struct reg *regs)
 {
+
 	regs->r_r15 = tp->tf_r15;
 	regs->r_r14 = tp->tf_r14;
 	regs->r_r13 = tp->tf_r13;
@@ -2056,6 +2057,8 @@ fill_frame_regs(struct trapframe *tp, struct reg *regs
 		regs->r_fs = 0;
 		regs->r_gs = 0;
 	}
+	regs->r_err = 0;
+	regs->r_trapno = 0;
 	return (0);
 }
 

Modified: stable/11/sys/amd64/ia32/ia32_reg.c
==============================================================================
--- stable/11/sys/amd64/ia32/ia32_reg.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/amd64/ia32/ia32_reg.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -105,6 +105,8 @@ fill_regs32(struct thread *td, struct reg32 *regs)
 	regs->r_eflags = tp->tf_rflags;
 	regs->r_esp = tp->tf_rsp;
 	regs->r_ss = tp->tf_ss;
+	regs->r_err = 0;
+	regs->r_trapno = 0;
 	return (0);
 }
 

Modified: stable/11/sys/arm/arm/machdep_kdb.c
==============================================================================
--- stable/11/sys/arm/arm/machdep_kdb.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/arm/arm/machdep_kdb.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -104,6 +104,7 @@ fill_regs(struct thread *td, struct reg *regs)
 	regs->r_cpsr = tf->tf_spsr;
 	return (0);
 }
+
 int
 fill_fpregs(struct thread *td, struct fpreg *regs)
 {
@@ -134,8 +135,11 @@ set_fpregs(struct thread *td, struct fpreg *regs)
 int
 fill_dbregs(struct thread *td, struct dbreg *regs)
 {
+
+	bzero(regs, sizeof(*regs));
 	return (0);
 }
+
 int
 set_dbregs(struct thread *td, struct dbreg *regs)
 {

Modified: stable/11/sys/fs/procfs/procfs_dbregs.c
==============================================================================
--- stable/11/sys/fs/procfs/procfs_dbregs.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/fs/procfs/procfs_dbregs.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -112,8 +112,10 @@ procfs_doprocdbregs(PFS_FILL_ARGS)
 			return (EINVAL);
 		}
 		wrap32 = 1;
-	}
+		memset(&r32, 0, sizeof(r32));
+	} else
 #endif
+		memset(&r, 0, sizeof(r));
 	error = PROC(read, dbregs, td2, &r);
 	if (error == 0) {
 		PROC_UNLOCK(p);

Modified: stable/11/sys/fs/procfs/procfs_fpregs.c
==============================================================================
--- stable/11/sys/fs/procfs/procfs_fpregs.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/fs/procfs/procfs_fpregs.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -102,7 +102,6 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
 		return (EBUSY);
 	}
 
-	/* XXXKSE: */
 	td2 = FIRST_THREAD_IN_PROC(p);
 #ifdef COMPAT_FREEBSD32
 	if (SV_CURPROC_FLAG(SV_ILP32)) {
@@ -111,8 +110,10 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
 			return (EINVAL);
 		}
 		wrap32 = 1;
-	}
+		memset(&r32, 0, sizeof(r32));
+	} else
 #endif
+		memset(&r, 0, sizeof(r));
 	error = PROC(read, fpregs, td2, &r);
 	if (error == 0) {
 		PROC_UNLOCK(p);

Modified: stable/11/sys/fs/procfs/procfs_regs.c
==============================================================================
--- stable/11/sys/fs/procfs/procfs_regs.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/fs/procfs/procfs_regs.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -102,7 +102,6 @@ procfs_doprocregs(PFS_FILL_ARGS)
 		return (EBUSY);
 	}
 
-	/* XXXKSE: */
 	td2 = FIRST_THREAD_IN_PROC(p);
 #ifdef COMPAT_FREEBSD32
 	if (SV_CURPROC_FLAG(SV_ILP32)) {
@@ -111,8 +110,10 @@ procfs_doprocregs(PFS_FILL_ARGS)
 			return (EINVAL);
 		}
 		wrap32 = 1;
-	}
+		memset(&r32, 0, sizeof(r32));
+	} else
 #endif
+		memset(&r, 0, sizeof(r));
 	error = PROC(read, regs, td2, &r);
 	if (error == 0) {
 		PROC_UNLOCK(p);

Modified: stable/11/sys/i386/i386/machdep.c
==============================================================================
--- stable/11/sys/i386/i386/machdep.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/i386/i386/machdep.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -2954,6 +2954,7 @@ fill_regs(struct thread *td, struct reg *regs)
 int
 fill_frame_regs(struct trapframe *tp, struct reg *regs)
 {
+
 	regs->r_fs = tp->tf_fs;
 	regs->r_es = tp->tf_es;
 	regs->r_ds = tp->tf_ds;
@@ -2969,6 +2970,8 @@ fill_frame_regs(struct trapframe *tp, struct reg *regs
 	regs->r_eflags = tp->tf_eflags;
 	regs->r_esp = tp->tf_esp;
 	regs->r_ss = tp->tf_ss;
+	regs->r_err = 0;
+	regs->r_trapno = 0;
 	return (0);
 }
 

Modified: stable/11/sys/kern/sys_process.c
==============================================================================
--- stable/11/sys/kern/sys_process.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/kern/sys_process.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -541,6 +541,9 @@ struct ptrace_args {
  *   copyin(uap->addr, &r.reg32, sizeof r.reg32);
  * .. except this is done at runtime.
  */
+#define	BZERO(a, s)		wrap32 ? \
+	bzero(a ## 32, s ## 32) : \
+	bzero(a, s)
 #define	COPYIN(u, k, s)		wrap32 ? \
 	copyin(u, k ## 32, s ## 32) : \
 	copyin(u, k, s)
@@ -548,6 +551,7 @@ struct ptrace_args {
 	copyout(k ## 32, u, s ## 32) : \
 	copyout(k, u, s)
 #else
+#define	BZERO(a, s)		bzero(a, s)
 #define	COPYIN(u, k, s)		copyin(u, k, s)
 #define	COPYOUT(k, u, s)	copyout(k, u, s)
 #endif
@@ -573,7 +577,7 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 		struct ptrace_lwpinfo32 pl32;
 		struct ptrace_vm_entry32 pve32;
 #endif
-		char args[nitems(td->td_sa.args) * sizeof(register_t)];
+		char args[sizeof(td->td_sa.args)];
 		int ptevents;
 	} r;
 	void *addr;
@@ -590,11 +594,17 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 	addr = &r;
 	switch (uap->req) {
 	case PT_GET_EVENT_MASK:
+	case PT_LWPINFO:
+	case PT_GET_SC_ARGS:
+		break;
 	case PT_GETREGS:
+		BZERO(&r.reg, sizeof r.reg);
+		break;
 	case PT_GETFPREGS:
+		BZERO(&r.fpreg, sizeof r.fpreg);
+		break;
 	case PT_GETDBREGS:
-	case PT_LWPINFO:
-	case PT_GET_SC_ARGS:
+		BZERO(&r.dbreg, sizeof r.dbreg);
 		break;
 	case PT_SETREGS:
 		error = COPYIN(uap->addr, &r.reg, sizeof r.reg);
@@ -662,6 +672,7 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 }
 #undef COPYIN
 #undef COPYOUT
+#undef BZERO
 
 #ifdef COMPAT_FREEBSD32
 /*

Modified: stable/11/sys/sparc64/sparc64/machdep.c
==============================================================================
--- stable/11/sys/sparc64/sparc64/machdep.c	Tue Dec  4 19:06:11 2018	(r341490)
+++ stable/11/sys/sparc64/sparc64/machdep.c	Tue Dec  4 19:07:10 2018	(r341491)
@@ -1057,6 +1057,7 @@ fill_fpregs(struct thread *td, struct fpreg *fpregs)
 	bcopy(pcb->pcb_ufp, fpregs->fr_regs, sizeof(fpregs->fr_regs));
 	fpregs->fr_fsr = tf->tf_fsr;
 	fpregs->fr_gsr = tf->tf_gsr;
+	fpregs->fr_pad[0] = 0;
 	return (0);
 }
 

From owner-svn-src-stable@freebsd.org  Tue Dec  4 19:55:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 64013131A1B9;
 Tue,  4 Dec 2018 19:55:40 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id AA5166F7BA;
 Tue,  4 Dec 2018 19:55:39 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 885AB1DEE;
 Tue,  4 Dec 2018 19:55:39 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4Jtd9s027377;
 Tue, 4 Dec 2018 19:55:39 GMT (envelope-from gjb@FreeBSD.org)
Received: (from gjb@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4JtdVk027376;
 Tue, 4 Dec 2018 19:55:39 GMT (envelope-from gjb@FreeBSD.org)
Message-Id: <201812041955.wB4JtdVk027376@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org
 using -f
From: Glen Barber <gjb@FreeBSD.org>
Date: Tue, 4 Dec 2018 19:55:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341492 - stable/11/release/doc/share/xml
X-SVN-Group: stable-11
X-SVN-Commit-Author: gjb
X-SVN-Commit-Paths: stable/11/release/doc/share/xml
X-SVN-Commit-Revision: 341492
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: AA5166F7BA
X-Spamd-Result: default: False [-0.26 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_SPAM_SHORT(0.33)[0.326,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 19:55:40 -0000

Author: gjb
Date: Tue Dec  4 19:55:39 2018
New Revision: 341492
URL: https://svnweb.freebsd.org/changeset/base/341492

Log:
  Document SA-18:14.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  stable/11/release/doc/share/xml/security.xml

Modified: stable/11/release/doc/share/xml/security.xml
==============================================================================
--- stable/11/release/doc/share/xml/security.xml	Tue Dec  4 19:07:10 2018	(r341491)
+++ stable/11/release/doc/share/xml/security.xml	Tue Dec  4 19:55:39 2018	(r341492)
@@ -63,6 +63,13 @@
 	<entry>27&nbsp;November&nbsp;2018</entry>
 	<entry><para>Multiple vulnerabilities</para></entry>
       </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-18:14.bhyve.asc">FreeBSD-SA-18:14.bhyve</link></entry>
+	<entry>4&nbsp;December&nbsp;2018</entry>
+	<entry><para>Insufficient bounds checking</para></entry>
+      </row>
     </tbody>
   </tgroup>
 </informaltable>

From owner-svn-src-stable@freebsd.org  Tue Dec  4 20:40:29 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 328B413210C1;
 Tue,  4 Dec 2018 20:40:29 +0000 (UTC)
 (envelope-from garga@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id CA56E71AB3;
 Tue,  4 Dec 2018 20:40:28 +0000 (UTC)
 (envelope-from garga@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A59532463;
 Tue,  4 Dec 2018 20:40:28 +0000 (UTC)
 (envelope-from garga@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4KeSus047928;
 Tue, 4 Dec 2018 20:40:28 GMT (envelope-from garga@FreeBSD.org)
Received: (from garga@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4KeS61047927;
 Tue, 4 Dec 2018 20:40:28 GMT (envelope-from garga@FreeBSD.org)
Message-Id: <201812042040.wB4KeS61047927@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: garga set sender to
 garga@FreeBSD.org using -f
From: Renato Botelho <garga@FreeBSD.org>
Date: Tue, 4 Dec 2018 20:40:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341493 - stable/12/sbin/savecore
X-SVN-Group: stable-12
X-SVN-Commit-Author: garga
X-SVN-Commit-Paths: stable/12/sbin/savecore
X-SVN-Commit-Revision: 341493
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: CA56E71AB3
X-Spamd-Result: default: False [-0.33 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_SPAM_SHORT(0.26)[0.264,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 20:40:29 -0000

Author: garga (ports committer)
Date: Tue Dec  4 20:40:28 2018
New Revision: 341493
URL: https://svnweb.freebsd.org/changeset/base/341493

Log:
  MFC r341464:
  
  Restore /var/crash permissions to 0750, as declared in mtree file. After
  r337337 it changed to 0755.
  
  Reviewed by:	loos
  Approved by:	loos
  Sponsored by:	Rubicon Communications, LLC (Netgate)
  Differential Revision:	https://reviews.freebsd.org/D18355

Modified:
  stable/12/sbin/savecore/Makefile
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sbin/savecore/Makefile
==============================================================================
--- stable/12/sbin/savecore/Makefile	Tue Dec  4 19:55:39 2018	(r341492)
+++ stable/12/sbin/savecore/Makefile	Tue Dec  4 20:40:28 2018	(r341493)
@@ -2,7 +2,9 @@
 
 PACKAGE=runtime
 CONFS=	minfree
-CONFSDIR=	/var/crash
+VAR_CRASH=	/var/crash
+VAR_CRASH_MODE=	0750
+CONFSDIR=	VAR_CRASH
 PROG=	savecore
 LIBADD=	z xo
 MAN=	savecore.8

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:05:37 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A77D913230F6;
 Tue,  4 Dec 2018 22:05:37 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 440FD74AFA;
 Tue,  4 Dec 2018 22:05:37 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9CAAC32DF;
 Tue,  4 Dec 2018 22:05:36 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4M5aao093149;
 Tue, 4 Dec 2018 22:05:36 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4M5ahT093148;
 Tue, 4 Dec 2018 22:05:36 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042205.wB4M5ahT093148@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:05:36 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341497 - stable/12/sys/netinet/tcp_stacks
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: stable/12/sys/netinet/tcp_stacks
X-SVN-Commit-Revision: 341497
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 440FD74AFA
X-Spamd-Result: default: False [-0.02 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.475,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.50)[0.496,0];
 NEURAL_HAM_LONG(-0.05)[-0.046,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:05:37 -0000

Author: tuexen
Date: Tue Dec  4 22:05:36 2018
New Revision: 341497
URL: https://svnweb.freebsd.org/changeset/base/341497

Log:
  MFC r340738:
  
  Improve two KASSERTs in the TCP RACK stack.
  
  There are two locations where an always true comparison was made in
  a KASSERT. Replace this by an appropriate check and use a consistent
  panic message. Also use this code when checking a similar condition.
  
  PR:			229664
  Reviewed by:		rrs@
  MFC after:		1 week
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D18021

Modified:
  stable/12/sys/netinet/tcp_stacks/rack.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 21:57:26 2018	(r341496)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:05:36 2018	(r341497)
@@ -7053,12 +7053,10 @@ again:
 		tlen = rsm->r_end - rsm->r_start;
 		if (tlen > tp->t_maxseg)
 			tlen = tp->t_maxseg;
-#ifdef INVARIANTS
-		if (SEQ_GT(tp->snd_una, rsm->r_start)) {
-			panic("tp:%p rack:%p snd_una:%u rsm:%p r_start:%u",
-			    tp, rack, tp->snd_una, rsm, rsm->r_start);
-		}
-#endif
+		KASSERT(SEQ_LEQ(tp->snd_una, rsm->r_start),
+		    ("%s:%d: r.start:%u < SND.UNA:%u; tp:%p, rack:%p, rsm:%p",
+		    __func__, __LINE__,
+		    rsm->r_start, tp->snd_una, tp, rack, rsm));
 		sb_offset = rsm->r_start - tp->snd_una;
 		cwin = min(tp->snd_wnd, tlen);
 		len = cwin;
@@ -7069,12 +7067,14 @@ again:
 		len = rsm->r_end - rsm->r_start;
 		sack_rxmit = 1;
 		sendalot = 0;
+		KASSERT(SEQ_LEQ(tp->snd_una, rsm->r_start),
+		    ("%s:%d: r.start:%u < SND.UNA:%u; tp:%p, rack:%p, rsm:%p",
+		    __func__, __LINE__,
+		    rsm->r_start, tp->snd_una, tp, rack, rsm));
 		sb_offset = rsm->r_start - tp->snd_una;
 		if (len >= tp->t_maxseg) {
 			len = tp->t_maxseg;
 		}
-		KASSERT(sb_offset >= 0, ("%s: sack block to the left of una : %d",
-		    __func__, sb_offset));
 	} else if ((rack->rc_in_persist == 0) &&
 	    ((rsm = tcp_rack_output(tp, rack, cts)) != NULL)) {
 		long tlen;
@@ -7099,6 +7099,10 @@ again:
 		}
 #endif
 		tlen = rsm->r_end - rsm->r_start;
+		KASSERT(SEQ_LEQ(tp->snd_una, rsm->r_start),
+		    ("%s:%d: r.start:%u < SND.UNA:%u; tp:%p, rack:%p, rsm:%p",
+		    __func__, __LINE__,
+		    rsm->r_start, tp->snd_una, tp, rack, rsm));
 		sb_offset = rsm->r_start - tp->snd_una;
 		if (tlen > rack->r_ctl.rc_prr_sndcnt) {
 			len = rack->r_ctl.rc_prr_sndcnt;
@@ -7120,8 +7124,6 @@ again:
 				goto just_return_nolock;
 			}
 		}
-		KASSERT(sb_offset >= 0, ("%s: sack block to the left of una : %d",
-		    __func__, sb_offset));
 		if (len > 0) {
 			sub_from_prr = 1;
 			sack_rxmit = 1;

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:10:10 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 56A5913231FA;
 Tue,  4 Dec 2018 22:10:10 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id EEC2074CEF;
 Tue,  4 Dec 2018 22:10:09 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CE5B53306;
 Tue,  4 Dec 2018 22:10:09 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MA9Mw093451;
 Tue, 4 Dec 2018 22:10:09 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MA9rk093449;
 Tue, 4 Dec 2018 22:10:09 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042210.wB4MA9rk093449@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:10:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341498 - in stable/12/sys/netinet: . tcp_stacks
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: in stable/12/sys/netinet: . tcp_stacks
X-SVN-Commit-Revision: 341498
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: EEC2074CEF
X-Spamd-Result: default: False [-0.02 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.475,0];
 NEURAL_SPAM_SHORT(0.50)[0.496,0];
 NEURAL_HAM_LONG(-0.05)[-0.046,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:10:10 -0000

Author: tuexen
Date: Tue Dec  4 22:10:09 2018
New Revision: 341498
URL: https://svnweb.freebsd.org/changeset/base/341498

Log:
  MFC r340774:
  
  Ensure that TCP RST-segments announce consistently a receiver window of
  zero. This was already done when sending them via tcp_respond().
  
  Reviewed by:		rrs@
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D17949

Modified:
  stable/12/sys/netinet/tcp_output.c
  stable/12/sys/netinet/tcp_stacks/rack.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_output.c
==============================================================================
--- stable/12/sys/netinet/tcp_output.c	Tue Dec  4 22:05:36 2018	(r341497)
+++ stable/12/sys/netinet/tcp_output.c	Tue Dec  4 22:10:09 2018	(r341498)
@@ -1171,14 +1171,18 @@ send:
 	/*
 	 * Calculate receive window.  Don't shrink window,
 	 * but avoid silly window syndrome.
+	 * If a RST segment is sent, advertise a window of zero.
 	 */
-	if (recwin < (so->so_rcv.sb_hiwat / 4) &&
-	    recwin < tp->t_maxseg)
+	if (flags & TH_RST) {
 		recwin = 0;
-	if (SEQ_GT(tp->rcv_adv, tp->rcv_nxt) &&
-	    recwin < (tp->rcv_adv - tp->rcv_nxt))
-		recwin = (tp->rcv_adv - tp->rcv_nxt);
-
+	} else {
+		if (recwin < (so->so_rcv.sb_hiwat / 4) &&
+		    recwin < tp->t_maxseg)
+			recwin = 0;
+		if (SEQ_GT(tp->rcv_adv, tp->rcv_nxt) &&
+		    recwin < (tp->rcv_adv - tp->rcv_nxt))
+			recwin = (tp->rcv_adv - tp->rcv_nxt);
+	}
 	/*
 	 * According to RFC1323 the window field in a SYN (i.e., a <SYN>
 	 * or <SYN,ACK>) segment itself is never scaled.  The <SYN,ACK>

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:05:36 2018	(r341497)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:10:09 2018	(r341498)
@@ -8189,15 +8189,20 @@ send:
 	/*
 	 * Calculate receive window.  Don't shrink window, but avoid silly
 	 * window syndrome.
+	 * If a RST segment is sent, advertise a window of zero.
 	 */
-	if (recwin < (long)(so->so_rcv.sb_hiwat / 4) &&
-	    recwin < (long)tp->t_maxseg)
+	if (flags & TH_RST) {
 		recwin = 0;
-	if (SEQ_GT(tp->rcv_adv, tp->rcv_nxt) &&
-	    recwin < (long)(tp->rcv_adv - tp->rcv_nxt))
-		recwin = (long)(tp->rcv_adv - tp->rcv_nxt);
-	if (recwin > (long)TCP_MAXWIN << tp->rcv_scale)
-		recwin = (long)TCP_MAXWIN << tp->rcv_scale;
+	} else {
+		if (recwin < (long)(so->so_rcv.sb_hiwat / 4) &&
+		    recwin < (long)tp->t_maxseg)
+			recwin = 0;
+		if (SEQ_GT(tp->rcv_adv, tp->rcv_nxt) &&
+		    recwin < (long)(tp->rcv_adv - tp->rcv_nxt))
+			recwin = (long)(tp->rcv_adv - tp->rcv_nxt);
+		if (recwin > (long)TCP_MAXWIN << tp->rcv_scale)
+			recwin = (long)TCP_MAXWIN << tp->rcv_scale;
+	}
 
 	/*
 	 * According to RFC1323 the window field in a SYN (i.e., a <SYN> or

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:11:42 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 47B491323315;
 Tue,  4 Dec 2018 22:11:42 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E399874F27;
 Tue,  4 Dec 2018 22:11:41 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C5BBD3453;
 Tue,  4 Dec 2018 22:11:41 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MBfp6097623;
 Tue, 4 Dec 2018 22:11:41 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MBfO4097622;
 Tue, 4 Dec 2018 22:11:41 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042211.wB4MBfO4097622@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:11:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341499 - stable/12/sys/netinet/tcp_stacks
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: stable/12/sys/netinet/tcp_stacks
X-SVN-Commit-Revision: 341499
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E399874F27
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:11:42 -0000

Author: tuexen
Date: Tue Dec  4 22:11:41 2018
New Revision: 341499
URL: https://svnweb.freebsd.org/changeset/base/341499

Log:
  MFC r340777:
  
  Ensure that the default RTT stack can make an RTT measurement if
  the TCP connection was initiated using the RACK stack, but the
  peer does not support the TCP RACK extension.
  
  This ensures that the TCP behaviour on the wire is the same if
  the TCP connection is initated using the RACK stack or the default
  stack.
  
  Reviewed by:		rrs@
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D18032

Modified:
  stable/12/sys/netinet/tcp_stacks/rack.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:10:09 2018	(r341498)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:11:41 2018	(r341499)
@@ -8493,9 +8493,7 @@ out:
 	    pass, rsm);
 	if ((tp->t_flags & TF_FORCEDATA) == 0 ||
 	    (rack->rc_in_persist == 0)) {
-#ifdef NETFLIX_STATS
 		tcp_seq startseq = tp->snd_nxt;
-#endif
 
 		/*
 		 * Advance snd_nxt over sequence space of this segment.
@@ -8527,6 +8525,17 @@ out:
 				tp->t_acktime = ticks;
 			}
 			tp->snd_max = tp->snd_nxt;
+			/*
+			 * Time this transmission if not a retransmission and
+			 * not currently timing anything.
+			 * This is only relevant in case of switching back to
+			 * the base stack.
+			 */
+			if (tp->t_rtttime == 0) {
+				tp->t_rtttime = ticks;
+				tp->t_rtseq = startseq;
+				TCPSTAT_INC(tcps_segstimed);
+			}
 #ifdef NETFLIX_STATS
 			if (!(tp->t_flags & TF_GPUTINPROG) && len) {
 				tp->t_flags |= TF_GPUTINPROG;

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:13:06 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9EFAF13234DA;
 Tue,  4 Dec 2018 22:13:06 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 413747521E;
 Tue,  4 Dec 2018 22:13:06 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1F2BF3497;
 Tue,  4 Dec 2018 22:13:06 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MD5UH098439;
 Tue, 4 Dec 2018 22:13:05 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MD5LJ098438;
 Tue, 4 Dec 2018 22:13:05 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042213.wB4MD5LJ098438@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:13:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341500 - stable/12/sys/netinet/tcp_stacks
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: stable/12/sys/netinet/tcp_stacks
X-SVN-Commit-Revision: 341500
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 413747521E
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:13:06 -0000

Author: tuexen
Date: Tue Dec  4 22:13:05 2018
New Revision: 341500
URL: https://svnweb.freebsd.org/changeset/base/341500

Log:
  MFC r340781:
  
  Ensure that the TCP RACK stack honours the setting of the
  net.inet.tcp.drop_synfin sysctl-variable.
  
  Reviewed by:		rrs@
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D18033

Modified:
  stable/12/sys/netinet/tcp_stacks/rack.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:11:41 2018	(r341499)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:13:05 2018	(r341500)
@@ -6528,6 +6528,10 @@ rack_hpts_do_segment(struct mbuf *m, struct tcphdr *th
 		TCP_LOG_EVENT(tp, th, &so->so_rcv, &so->so_snd, TCP_LOG_IN, 0,
 		    tlen, &log, true);
 	}
+	if ((thflags & TH_SYN) && (thflags & TH_FIN) && V_drop_synfin) {
+		way_out = 4;
+		goto done_with_input;
+	}
 	/*
 	 * Segment received on connection. Reset idle time and keep-alive
 	 * timer. XXX: This should be done after segment validation to

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:14:19 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9697E1323595;
 Tue,  4 Dec 2018 22:14:19 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 3ADE4753BF;
 Tue,  4 Dec 2018 22:14:19 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 18F4D3498;
 Tue,  4 Dec 2018 22:14:19 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MEIkD098549;
 Tue, 4 Dec 2018 22:14:18 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MEIIl098548;
 Tue, 4 Dec 2018 22:14:18 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042214.wB4MEIIl098548@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:14:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341501 - stable/12/sys/netinet/tcp_stacks
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: stable/12/sys/netinet/tcp_stacks
X-SVN-Commit-Revision: 341501
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 3ADE4753BF
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:14:19 -0000

Author: tuexen
Date: Tue Dec  4 22:14:18 2018
New Revision: 341501
URL: https://svnweb.freebsd.org/changeset/base/341501

Log:
  MFC r340782:
  
  A TCP stack is required to check SEG.ACK first, when processing a
  segment in the SYN-SENT state as stated in Section 3.9 of RFC 793,
  page 66. Ensure this is also done by the TCP RACK stack.
  
  Reviewed by:		rrs@
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D18034

Modified:
  stable/12/sys/netinet/tcp_stacks/rack.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:13:05 2018	(r341500)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Tue Dec  4 22:14:18 2018	(r341501)
@@ -6533,6 +6533,15 @@ rack_hpts_do_segment(struct mbuf *m, struct tcphdr *th
 		goto done_with_input;
 	}
 	/*
+	 * If a segment with the ACK-bit set arrives in the SYN-SENT state
+	 * check SEQ.ACK first as described on page 66 of RFC 793, section 3.9.
+	 */
+	if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) &&
+	    (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) {
+		rack_do_dropwithreset(m, tp, th, BANDLIM_RST_OPENPORT, tlen);
+		return;
+	}
+	/*
 	 * Segment received on connection. Reset idle time and keep-alive
 	 * timer. XXX: This should be done after segment validation to
 	 * ignore broken/spoofed segs.

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:15:57 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id BA0D71323633;
 Tue,  4 Dec 2018 22:15:57 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 607417551E;
 Tue,  4 Dec 2018 22:15:57 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 410F6349C;
 Tue,  4 Dec 2018 22:15:57 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MFvkq098705;
 Tue, 4 Dec 2018 22:15:57 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MFuMG098704;
 Tue, 4 Dec 2018 22:15:56 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042215.wB4MFuMG098704@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:15:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341502 - in stable/12/sys/netinet: . cc
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: in stable/12/sys/netinet: . cc
X-SVN-Commit-Revision: 341502
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 607417551E
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:15:57 -0000

Author: tuexen
Date: Tue Dec  4 22:15:56 2018
New Revision: 341502
URL: https://svnweb.freebsd.org/changeset/base/341502

Log:
  MFC r341335:
  
  Limit option_len for the TCP_CCALGOOPT.
  
  Limiting the length to 2048 bytes seems to be acceptable, since
  the values used right now are using 8 bytes.
  This issue was found by using syzkaller.
  
  Reviewed by:		glebius, bz, rrs
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D18366

Modified:
  stable/12/sys/netinet/cc/cc.h
  stable/12/sys/netinet/tcp_usrreq.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/cc/cc.h
==============================================================================
--- stable/12/sys/netinet/cc/cc.h	Tue Dec  4 22:14:18 2018	(r341501)
+++ stable/12/sys/netinet/cc/cc.h	Tue Dec  4 22:15:56 2018	(r341502)
@@ -184,4 +184,6 @@ extern struct rwlock cc_list_lock;
 #define	CC_LIST_WUNLOCK()	rw_wunlock(&cc_list_lock)
 #define	CC_LIST_LOCK_ASSERT()	rw_assert(&cc_list_lock, RA_LOCKED)
 
+#define CC_ALGOOPT_LIMIT	2048
+
 #endif /* _NETINET_CC_CC_H_ */

Modified: stable/12/sys/netinet/tcp_usrreq.c
==============================================================================
--- stable/12/sys/netinet/tcp_usrreq.c	Tue Dec  4 22:14:18 2018	(r341501)
+++ stable/12/sys/netinet/tcp_usrreq.c	Tue Dec  4 22:15:56 2018	(r341502)
@@ -1769,6 +1769,8 @@ tcp_default_ctloutput(struct socket *so, struct sockop
 	switch (sopt->sopt_name) {
 	case TCP_CCALGOOPT:
 		INP_WUNLOCK(inp);
+		if (sopt->sopt_valsize > CC_ALGOOPT_LIMIT)
+			return (EINVAL);
 		pbuf = malloc(sopt->sopt_valsize, M_TEMP, M_WAITOK | M_ZERO);
 		error = sooptcopyin(sopt, pbuf, sopt->sopt_valsize,
 		    sopt->sopt_valsize);

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:25:25 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id AF0A11323B37;
 Tue,  4 Dec 2018 22:25:25 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 450E875D85;
 Tue,  4 Dec 2018 22:25:25 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 246A239B6;
 Tue,  4 Dec 2018 22:25:25 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MPOSj003970;
 Tue, 4 Dec 2018 22:25:24 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MPO3Z003968;
 Tue, 4 Dec 2018 22:25:24 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042225.wB4MPO3Z003968@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:25:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341503 - in stable/11/sys/netinet: . cc
X-SVN-Group: stable-11
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: in stable/11/sys/netinet: . cc
X-SVN-Commit-Revision: 341503
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 450E875D85
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:25:25 -0000

Author: tuexen
Date: Tue Dec  4 22:25:24 2018
New Revision: 341503
URL: https://svnweb.freebsd.org/changeset/base/341503

Log:
  MFC r341335:
  
  Limit option_len for the TCP_CCALGOOPT.
  
  Limiting the length to 2048 bytes seems to be acceptable, since
  the values used right now are using 8 bytes.
  This issue was found by using syzkaller.
  
  Reviewed by:		glebius, bz, rrs
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D18366

Modified:
  stable/11/sys/netinet/cc/cc.h
  stable/11/sys/netinet/tcp_usrreq.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netinet/cc/cc.h
==============================================================================
--- stable/11/sys/netinet/cc/cc.h	Tue Dec  4 22:15:56 2018	(r341502)
+++ stable/11/sys/netinet/cc/cc.h	Tue Dec  4 22:25:24 2018	(r341503)
@@ -175,4 +175,6 @@ extern struct rwlock cc_list_lock;
 #define	CC_LIST_WUNLOCK()	rw_wunlock(&cc_list_lock)
 #define	CC_LIST_LOCK_ASSERT()	rw_assert(&cc_list_lock, RA_LOCKED)
 
+#define CC_ALGOOPT_LIMIT	2048
+
 #endif /* _NETINET_CC_CC_H_ */

Modified: stable/11/sys/netinet/tcp_usrreq.c
==============================================================================
--- stable/11/sys/netinet/tcp_usrreq.c	Tue Dec  4 22:15:56 2018	(r341502)
+++ stable/11/sys/netinet/tcp_usrreq.c	Tue Dec  4 22:25:24 2018	(r341503)
@@ -1549,6 +1549,8 @@ tcp_default_ctloutput(struct socket *so, struct sockop
 	switch (sopt->sopt_name) {
 	case TCP_CCALGOOPT:
 		INP_WUNLOCK(inp);
+		if (sopt->sopt_valsize > CC_ALGOOPT_LIMIT)
+			return (EINVAL);
 		pbuf = malloc(sopt->sopt_valsize, M_TEMP, M_WAITOK | M_ZERO);
 		error = sooptcopyin(sopt, pbuf, sopt->sopt_valsize,
 		    sopt->sopt_valsize);

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:47:00 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E4BCE1324377;
 Tue,  4 Dec 2018 22:46:59 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 88CAF76C3E;
 Tue,  4 Dec 2018 22:46:59 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 641833DAE;
 Tue,  4 Dec 2018 22:46:59 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4Mkxv2014726;
 Tue, 4 Dec 2018 22:46:59 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4Mkx1e014725;
 Tue, 4 Dec 2018 22:46:59 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042246.wB4Mkx1e014725@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:46:59 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341504 - stable/12/sys/netinet
X-SVN-Group: stable-12
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: stable/12/sys/netinet
X-SVN-Commit-Revision: 341504
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 88CAF76C3E
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:47:00 -0000

Author: tuexen
Date: Tue Dec  4 22:46:58 2018
New Revision: 341504
URL: https://svnweb.freebsd.org/changeset/base/341504

Log:
  MFC r339989, r339991:
  
  Improve a comment to refer to the actual sections in the TCP
  specification for the comparisons made.
  Thanks to lstewart@ for the suggestion.
  
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D17595

Modified:
  stable/12/sys/netinet/tcp_syncache.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_syncache.c
==============================================================================
--- stable/12/sys/netinet/tcp_syncache.c	Tue Dec  4 22:25:24 2018	(r341503)
+++ stable/12/sys/netinet/tcp_syncache.c	Tue Dec  4 22:46:58 2018	(r341504)
@@ -581,15 +581,28 @@ syncache_chkrst(struct in_conninfo *inc, struct tcphdr
 	/*
 	 * If the RST bit is set, check the sequence number to see
 	 * if this is a valid reset segment.
+	 *
 	 * RFC 793 page 37:
 	 *   In all states except SYN-SENT, all reset (RST) segments
 	 *   are validated by checking their SEQ-fields.  A reset is
 	 *   valid if its sequence number is in the window.
 	 *
-	 *   The sequence number in the reset segment is normally an
-	 *   echo of our outgoing acknowlegement numbers, but some hosts
-	 *   send a reset with the sequence number at the rightmost edge
-	 *   of our receive window, and we have to handle this case.
+	 * RFC 793 page 69:
+	 *   There are four cases for the acceptability test for an incoming
+	 *   segment:
+	 *
+	 * Segment Receive  Test
+	 * Length  Window
+	 * ------- -------  -------------------------------------------
+	 *    0       0     SEG.SEQ = RCV.NXT
+	 *    0      >0     RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
+	 *   >0       0     not acceptable
+	 *   >0      >0     RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
+	 *               or RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
+	 *
+	 * Note that when receiving a SYN segment in the LISTEN state,
+	 * IRS is set to SEG.SEQ and RCV.NXT is set to SEG.SEQ+1, as
+	 * described in RFC 793, page 66.
 	 */
 	if ((SEQ_GEQ(th->th_seq, sc->sc_irs + 1) &&
 	    SEQ_LT(th->th_seq, sc->sc_irs + 1 + sc->sc_wnd)) ||

From owner-svn-src-stable@freebsd.org  Tue Dec  4 22:52:17 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id EB8A71324636;
 Tue,  4 Dec 2018 22:52:16 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 9200177245;
 Tue,  4 Dec 2018 22:52:16 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 72F0C3F41;
 Tue,  4 Dec 2018 22:52:16 +0000 (UTC)
 (envelope-from tuexen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB4MqG5I019592;
 Tue, 4 Dec 2018 22:52:16 GMT (envelope-from tuexen@FreeBSD.org)
Received: (from tuexen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB4MqGL6019590;
 Tue, 4 Dec 2018 22:52:16 GMT (envelope-from tuexen@FreeBSD.org)
Message-Id: <201812042252.wB4MqGL6019590@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: tuexen set sender to
 tuexen@FreeBSD.org using -f
From: Michael Tuexen <tuexen@FreeBSD.org>
Date: Tue, 4 Dec 2018 22:52:16 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341506 - stable/11/sys/netinet
X-SVN-Group: stable-11
X-SVN-Commit-Author: tuexen
X-SVN-Commit-Paths: stable/11/sys/netinet
X-SVN-Commit-Revision: 341506
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 9200177245
X-Spamd-Result: default: False [-0.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.50)[-0.502,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.48)[0.475,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Dec 2018 22:52:17 -0000

Author: tuexen
Date: Tue Dec  4 22:52:15 2018
New Revision: 341506
URL: https://svnweb.freebsd.org/changeset/base/341506

Log:
  MFC r339042:
  
  Mitigate providing a timing signal if the COOKIE or AUTH
  validation fails.
  Thanks to jmg@ for reporting the issue, which was discussed in
  https://admbugs.freebsd.org/show_bug.cgi?id=878

Modified:
  stable/11/sys/netinet/sctp_auth.c
  stable/11/sys/netinet/sctp_input.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netinet/sctp_auth.c
==============================================================================
--- stable/11/sys/netinet/sctp_auth.c	Tue Dec  4 22:51:13 2018	(r341505)
+++ stable/11/sys/netinet/sctp_auth.c	Tue Dec  4 22:52:15 2018	(r341506)
@@ -1735,7 +1735,7 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_au
 	    m, offset, computed_digest);
 
 	/* compare the computed digest with the one in the AUTH chunk */
-	if (memcmp(digest, computed_digest, digestlen) != 0) {
+	if (timingsafe_bcmp(digest, computed_digest, digestlen) != 0) {
 		SCTP_STAT_INCR(sctps_recvauthfailed);
 		SCTPDBG(SCTP_DEBUG_AUTH1,
 		    "SCTP Auth: HMAC digest check failed\n");

Modified: stable/11/sys/netinet/sctp_input.c
==============================================================================
--- stable/11/sys/netinet/sctp_input.c	Tue Dec  4 22:51:13 2018	(r341505)
+++ stable/11/sys/netinet/sctp_input.c	Tue Dec  4 22:52:15 2018	(r341506)
@@ -2552,7 +2552,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, in
 		return (NULL);
 	}
 	/* compare the received digest with the computed digest */
-	if (memcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) != 0) {
+	if (timingsafe_bcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) != 0) {
 		/* try the old cookie? */
 		if ((cookie->time_entered.tv_sec == (long)ep->time_of_secret_change) &&
 		    (ep->current_secret_number != ep->last_secret_number)) {
@@ -2561,7 +2561,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, in
 			    (uint8_t *)ep->secret_key[(int)ep->last_secret_number],
 			    SCTP_SECRET_SIZE, m, cookie_offset, calc_sig, 0);
 			/* compare */
-			if (memcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) == 0)
+			if (timingsafe_bcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) == 0)
 				cookie_ok = 1;
 		}
 	} else {

From owner-svn-src-stable@freebsd.org  Wed Dec  5 15:05:27 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0935A131793D;
 Wed,  5 Dec 2018 15:05:27 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id A2CFD77DEA;
 Wed,  5 Dec 2018 15:05:26 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7D21316035;
 Wed,  5 Dec 2018 15:05:26 +0000 (UTC)
 (envelope-from vmaffione@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB5F5QMq025145;
 Wed, 5 Dec 2018 15:05:26 GMT (envelope-from vmaffione@FreeBSD.org)
Received: (from vmaffione@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB5F5QW2025144;
 Wed, 5 Dec 2018 15:05:26 GMT (envelope-from vmaffione@FreeBSD.org)
Message-Id: <201812051505.wB5F5QW2025144@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: vmaffione set sender to
 vmaffione@FreeBSD.org using -f
From: Vincenzo Maffione <vmaffione@FreeBSD.org>
Date: Wed, 5 Dec 2018 15:05:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341588 - stable/11/sys/modules/netmap
X-SVN-Group: stable-11
X-SVN-Commit-Author: vmaffione
X-SVN-Commit-Paths: stable/11/sys/modules/netmap
X-SVN-Commit-Revision: 341588
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: A2CFD77DEA
X-Spamd-Result: default: False [-0.83 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.54)[-0.538,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 NEURAL_HAM_SHORT(-0.21)[-0.206,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Dec 2018 15:05:27 -0000

Author: vmaffione
Date: Wed Dec  5 15:05:26 2018
New Revision: 341588
URL: https://svnweb.freebsd.org/changeset/base/341588

Log:
  netmap: fix module Makefile
  
  Reported by:	mav

Modified:
  stable/11/sys/modules/netmap/Makefile

Modified: stable/11/sys/modules/netmap/Makefile
==============================================================================
--- stable/11/sys/modules/netmap/Makefile	Wed Dec  5 14:25:34 2018	(r341587)
+++ stable/11/sys/modules/netmap/Makefile	Wed Dec  5 15:05:26 2018	(r341588)
@@ -22,7 +22,6 @@ SRCS	+= netmap_pipe.c
 SRCS	+= netmap_monitor.c
 SRCS	+= netmap_pt.c
 SRCS	+= netmap_legacy.c
-SRCS	+= if_ptnet.c
 SRCS	+= opt_inet.h opt_inet6.h
 
 .include <bsd.kmod.mk>

From owner-svn-src-stable@freebsd.org  Wed Dec  5 17:10:08 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E526013215C8;
 Wed,  5 Dec 2018 17:10:07 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 7309A7E186;
 Wed,  5 Dec 2018 17:10:07 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 541AA174FD;
 Wed,  5 Dec 2018 17:10:07 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB5HA7l3089095;
 Wed, 5 Dec 2018 17:10:07 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB5HA7IZ089094;
 Wed, 5 Dec 2018 17:10:07 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812051710.wB5HA7IZ089094@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Wed, 5 Dec 2018 17:10:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341596 - stable/12/usr.bin/localedef
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: stable/12/usr.bin/localedef
X-SVN-Commit-Revision: 341596
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 7309A7E186
X-Spamd-Result: default: False [-1.05 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.54)[-0.538,0];
 NEURAL_HAM_SHORT(-0.43)[-0.427,0];
 NEURAL_HAM_LONG(-0.09)[-0.087,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Dec 2018 17:10:08 -0000

Author: yuripv
Date: Wed Dec  5 17:10:06 2018
New Revision: 341596
URL: https://svnweb.freebsd.org/changeset/base/341596

Log:
  MFC r339827:
  localedef: define characters in "space" class also as "print", except
  for the known conflicts ("control" characters can't be "print"able).
  POSIX doesn't explicitly forbid this, and actually includes <space>
  character in "print".
  
  PR:		225692
  Reviewed by:	bapt, cem (previous version), pfg (previous version)
  Differential Revision:	https://reviews.freebsd.org/D17467

Modified:
  stable/12/usr.bin/localedef/ctype.c

Modified: stable/12/usr.bin/localedef/ctype.c
==============================================================================
--- stable/12/usr.bin/localedef/ctype.c	Wed Dec  5 17:06:00 2018	(r341595)
+++ stable/12/usr.bin/localedef/ctype.c	Wed Dec  5 17:10:06 2018	(r341596)
@@ -120,7 +120,13 @@ add_ctype_impl(ctype_node_t *ctn)
 		ctn->ctype |= (_ISDIGIT | _ISGRAPH | _ISPRINT | _ISXDIGIT | _E4);
 		break;
 	case T_ISSPACE:
-		ctn->ctype |= _ISSPACE;
+		/*
+		 * This can be troublesome as <form-feed>, <newline>,
+		 * <carriage-return>, <tab>, and <vertical-tab> are defined both
+		 * as space and cntrl, and POSIX doesn't allow cntrl/print
+		 * combination.  We will take care of this in dump_ctype().
+		 */
+		ctn->ctype |= (_ISSPACE | _ISPRINT);
 		break;
 	case T_ISCNTRL:
 		ctn->ctype |= _ISCNTRL;
@@ -378,9 +384,15 @@ dump_ctype(void)
 			ctn->ctype |= _ISPRINT;
 
 		/*
-		 * Finally, POSIX requires that certain combinations
-		 * are invalid.  We don't flag this as a fatal error,
-		 * but we will warn about.
+		 * POSIX requires that certain combinations are invalid.
+		 * Try fixing the cases we know about (see add_ctype_impl()).
+		 */
+		if ((ctn->ctype & (_ISSPACE|_ISCNTRL)) == (_ISSPACE|_ISCNTRL))
+			ctn->ctype &= ~_ISPRINT;
+
+		/*
+		 * Finally, don't flag remaining cases as a fatal error,
+		 * and just warn about them.
 		 */
 		if ((ctn->ctype & _ISALPHA) &&
 		    (ctn->ctype & (_ISPUNCT|_ISDIGIT)))

From owner-svn-src-stable@freebsd.org  Wed Dec  5 17:13:35 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0B7B213218F2;
 Wed,  5 Dec 2018 17:13:35 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 9D6947E694;
 Wed,  5 Dec 2018 17:13:34 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5EA751769F;
 Wed,  5 Dec 2018 17:13:34 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB5HDYqd094172;
 Wed, 5 Dec 2018 17:13:34 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB5HDY4k094171;
 Wed, 5 Dec 2018 17:13:34 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812051713.wB5HDY4k094171@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Wed, 5 Dec 2018 17:13:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341597 - stable/12
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: stable/12
X-SVN-Commit-Revision: 341597
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 9D6947E694
X-Spamd-Result: default: False [-1.11 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.56)[-0.560,0];
 NEURAL_HAM_LONG(-0.13)[-0.127,0];
 NEURAL_HAM_SHORT(-0.42)[-0.419,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Dec 2018 17:13:35 -0000

Author: yuripv
Date: Wed Dec  5 17:13:33 2018
New Revision: 341597
URL: https://svnweb.freebsd.org/changeset/base/341597

Log:
  Actually mark r341596 as MFC.

Modified:
Directory Properties:
  stable/12/   (props changed)

From owner-svn-src-stable@freebsd.org  Wed Dec  5 21:49:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id CCBE41328249;
 Wed,  5 Dec 2018 21:49:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 7386F6CC0C;
 Wed,  5 Dec 2018 21:49:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5467D1A371;
 Wed,  5 Dec 2018 21:49:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB5Lneqj039005;
 Wed, 5 Dec 2018 21:49:40 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB5LndpM039002;
 Wed, 5 Dec 2018 21:49:39 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812052149.wB5LndpM039002@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Wed, 5 Dec 2018 21:49:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341606 - stable/10/usr.sbin/bhyve
X-SVN-Group: stable-10
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/10/usr.sbin/bhyve
X-SVN-Commit-Revision: 341606
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 7386F6CC0C
X-Spamd-Result: default: False [-0.35 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_SPAM_SHORT(0.23)[0.226,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Dec 2018 21:49:41 -0000

Author: emaste
Date: Wed Dec  5 21:49:39 2018
New Revision: 341606
URL: https://svnweb.freebsd.org/changeset/base/341606

Log:
  MFC r298454 (araujo): Use MIN()/MAX() macros from sys/param.h.

Modified:
  stable/10/usr.sbin/bhyve/fwctl.c
  stable/10/usr.sbin/bhyve/pci_ahci.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/bhyve/fwctl.c
==============================================================================
--- stable/10/usr.sbin/bhyve/fwctl.c	Wed Dec  5 19:53:09 2018	(r341605)
+++ stable/10/usr.sbin/bhyve/fwctl.c	Wed Dec  5 21:49:39 2018	(r341606)
@@ -348,7 +348,7 @@ fwctl_request_data(uint32_t value)
 
 	/* Make sure remaining size is >= 0 */
 	rinfo.req_size -= sizeof(uint32_t);
-	remlen = (rinfo.req_size > 0) ? rinfo.req_size: 0;
+	remlen = MAX(rinfo.req_size, 0);
 
 	(*rinfo.req_op->op_data)(value, remlen);
 

Modified: stable/10/usr.sbin/bhyve/pci_ahci.c
==============================================================================
--- stable/10/usr.sbin/bhyve/pci_ahci.c	Wed Dec  5 19:53:09 2018	(r341605)
+++ stable/10/usr.sbin/bhyve/pci_ahci.c	Wed Dec  5 21:49:39 2018	(r341606)
@@ -798,7 +798,7 @@ read_prdt(struct ahci_port *p, int slot, uint8_t *cfis
 
 		dbcsz = (prdt->dbc & DBCMASK) + 1;
 		ptr = paddr_guest2host(ahci_ctx(p->pr_sc), prdt->dba, dbcsz);
-		sublen = len < dbcsz ? len : dbcsz;
+		sublen = MIN(len, dbcsz);
 		memcpy(to, ptr, sublen);
 		len -= sublen;
 		to += sublen;
@@ -912,7 +912,7 @@ write_prdt(struct ahci_port *p, int slot, uint8_t *cfi
 
 		dbcsz = (prdt->dbc & DBCMASK) + 1;
 		ptr = paddr_guest2host(ahci_ctx(p->pr_sc), prdt->dba, dbcsz);
-		sublen = len < dbcsz ? len : dbcsz;
+		sublen = MIN(len, dbcsz);
 		memcpy(ptr, from, sublen);
 		len -= sublen;
 		from += sublen;

From owner-svn-src-stable@freebsd.org  Wed Dec  5 21:51:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 61A19132831A;
 Wed,  5 Dec 2018 21:51:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 0994F6CF5B;
 Wed,  5 Dec 2018 21:51:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DEAD21A4D6;
 Wed,  5 Dec 2018 21:51:39 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB5Lpdnm039172;
 Wed, 5 Dec 2018 21:51:39 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB5LpdGG039171;
 Wed, 5 Dec 2018 21:51:39 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812052151.wB5LpdGG039171@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Wed, 5 Dec 2018 21:51:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341607 - stable/10/usr.sbin/bhyve
X-SVN-Group: stable-10
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/10/usr.sbin/bhyve
X-SVN-Commit-Revision: 341607
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 0994F6CF5B
X-Spamd-Result: default: False [-0.73 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.46)[-0.456,0];
 NEURAL_HAM_SHORT(-0.20)[-0.200,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.07)[-0.070,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Dec 2018 21:51:40 -0000

Author: emaste
Date: Wed Dec  5 21:51:39 2018
New Revision: 341607
URL: https://svnweb.freebsd.org/changeset/base/341607

Log:
  MFC r341484: Always treat firmware request and response sizes as unsigned.
  
  This fixes an incomplete bounds check on the guest-supplied request
  size where a very large request size could be interpreted as a negative
  value and not be caught by the bounds check.
  
  Submitted by:	jhb
  Reported by:	Reno Robert
  Security:	CVE-2018-17160

Modified:
  stable/10/usr.sbin/bhyve/fwctl.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/bhyve/fwctl.c
==============================================================================
--- stable/10/usr.sbin/bhyve/fwctl.c	Wed Dec  5 21:49:39 2018	(r341606)
+++ stable/10/usr.sbin/bhyve/fwctl.c	Wed Dec  5 21:51:39 2018	(r341607)
@@ -77,8 +77,8 @@ static u_int ident_idx;
 
 struct op_info {
 	int op;
-	int  (*op_start)(int len);
-	void (*op_data)(uint32_t data, int len);
+	int  (*op_start)(uint32_t len);
+	void (*op_data)(uint32_t data, uint32_t len);
 	int  (*op_result)(struct iovec **data);
 	void (*op_done)(struct iovec *data);
 };
@@ -117,7 +117,7 @@ errop_set(int err)
 }
 
 static int
-errop_start(int len)
+errop_start(uint32_t len)
 {
 	errop_code = ENOENT;
 
@@ -126,7 +126,7 @@ errop_start(int len)
 }
 
 static void
-errop_data(uint32_t data, int len)
+errop_data(uint32_t data, uint32_t len)
 {
 
 	/* ignore */
@@ -186,7 +186,7 @@ static int fget_cnt;
 static size_t fget_size;
 
 static int
-fget_start(int len)
+fget_start(uint32_t len)
 {
 
 	if (len > FGET_STRSZ)
@@ -198,7 +198,7 @@ fget_start(int len)
 }
 
 static void
-fget_data(uint32_t data, int len)
+fget_data(uint32_t data, uint32_t len)
 {
 
 	*((uint32_t *) &fget_str[fget_cnt]) = data;
@@ -283,8 +283,8 @@ static struct req_info {
 	struct op_info *req_op;
 	int	 resp_error;
 	int	 resp_count;
-	int	 resp_size;
-	int	 resp_off;
+	size_t	 resp_size;
+	size_t	 resp_off;
 	struct iovec *resp_biov;
 } rinfo;
 
@@ -344,13 +344,14 @@ fwctl_request_start(void)
 static int
 fwctl_request_data(uint32_t value)
 {
-	int remlen;
 
 	/* Make sure remaining size is >= 0 */
-	rinfo.req_size -= sizeof(uint32_t);
-	remlen = MAX(rinfo.req_size, 0);
+	if (rinfo.req_size <= sizeof(uint32_t))
+		rinfo.req_size = 0;
+	else
+		rinfo.req_size -= sizeof(uint32_t);
 
-	(*rinfo.req_op->op_data)(value, remlen);
+	(*rinfo.req_op->op_data)(value, rinfo.req_size);
 
 	if (rinfo.req_size < sizeof(uint32_t)) {
 		fwctl_request_done();
@@ -399,7 +400,7 @@ static int
 fwctl_response(uint32_t *retval)
 {
 	uint32_t *dp;
-	int remlen;
+	ssize_t remlen;
 
 	switch(rinfo.resp_count) {
 	case 0:
@@ -434,7 +435,7 @@ fwctl_response(uint32_t *retval)
 	}
 
 	if (rinfo.resp_count > 3 &&
-	    rinfo.resp_size - rinfo.resp_off <= 0) {
+	    rinfo.resp_off >= rinfo.resp_size) {
 		fwctl_response_done();
 		return (1);
 	}

From owner-svn-src-stable@freebsd.org  Thu Dec  6 02:38:43 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id ED5EB13314C9;
 Thu,  6 Dec 2018 02:38:42 +0000 (UTC)
 (envelope-from asomers@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 961A97716F;
 Thu,  6 Dec 2018 02:38:42 +0000 (UTC)
 (envelope-from asomers@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 779171D596;
 Thu,  6 Dec 2018 02:38:42 +0000 (UTC)
 (envelope-from asomers@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB62cgIq088350;
 Thu, 6 Dec 2018 02:38:42 GMT (envelope-from asomers@FreeBSD.org)
Received: (from asomers@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB62cgf7088349;
 Thu, 6 Dec 2018 02:38:42 GMT (envelope-from asomers@FreeBSD.org)
Message-Id: <201812060238.wB62cgf7088349@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: asomers set sender to
 asomers@FreeBSD.org using -f
From: Alan Somers <asomers@FreeBSD.org>
Date: Thu, 6 Dec 2018 02:38:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341613 - stable/12/sbin/mount_fusefs
X-SVN-Group: stable-12
X-SVN-Commit-Author: asomers
X-SVN-Commit-Paths: stable/12/sbin/mount_fusefs
X-SVN-Commit-Revision: 341613
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 961A97716F
X-Spamd-Result: default: False [-0.84 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_SHORT(-0.26)[-0.261,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 02:38:43 -0000

Author: asomers
Date: Thu Dec  6 02:38:42 2018
New Revision: 341613
URL: https://svnweb.freebsd.org/changeset/base/341613

Log:
  MFC r340525:
  
  mount_fusefs.8: expand HISTORY section
  
  Note that fuse was available from ports long before joining the base system.
  Also, update the upstream URL.

Modified:
  stable/12/sbin/mount_fusefs/mount_fusefs.8

Modified: stable/12/sbin/mount_fusefs/mount_fusefs.8
==============================================================================
--- stable/12/sbin/mount_fusefs/mount_fusefs.8	Thu Dec  6 02:37:34 2018	(r341612)
+++ stable/12/sbin/mount_fusefs/mount_fusefs.8	Thu Dec  6 02:38:42 2018	(r341613)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 3, 2016
+.Dd November 17, 2018
 .Dt MOUNT_FUSEFS 8
 .Os
 .Sh NAME
@@ -339,12 +339,16 @@ does not call any external utility and also provides a
 .Xr umount 8
 .Sh HISTORY
 .Nm
-appeared in
-.Fx 10.0
-as the part of the
+was written as the part of the
 .Fx
-implementation of the Fuse userspace filesystem
-framework (see http://fuse.sourceforge.net).
+implementation of the Fuse userspace filesystem framework (see
+.Xr https://github.com/libfuse/libfuse )
+and first appeared in the
+.Pa sysutils/fusefs-kmod
+port, supporting
+.Fx 6.0 .
+It was added to the base system in
+.Fx 10.0 .
 .Sh CAVEATS
 This user interface is
 .Fx

From owner-svn-src-stable@freebsd.org  Thu Dec  6 04:28:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6F454130D175;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 133C17B943;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E779B1E871;
 Thu,  6 Dec 2018 04:28:39 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB64Sdqt045268;
 Thu, 6 Dec 2018 04:28:39 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB64Sdv5045267;
 Thu, 6 Dec 2018 04:28:39 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812060428.wB64Sdv5045267@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Thu, 6 Dec 2018 04:28:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341615 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-11
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341615
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 133C17B943
X-Spamd-Result: default: False [-0.71 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 NEURAL_HAM_SHORT(-0.13)[-0.130,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 04:28:40 -0000

Author: cy
Date: Thu Dec  6 04:28:39 2018
New Revision: 341615
URL: https://svnweb.freebsd.org/changeset/base/341615

Log:
  MFC r341265:
  
  Remove an old comment/code and replace with a comment that
  directly references a NetBSD commit.

Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/11/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/10/   (props changed)
  stable/12/   (props changed)

Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Thu Dec  6 04:25:12 2018	(r341614)
+++ stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Thu Dec  6 04:28:39 2018	(r341615)
@@ -542,12 +542,7 @@ ipf_send_icmp_err(type, fin, dst)
 
 	code = fin->fin_icode;
 #ifdef USE_INET6
-#if 0
-	/* XXX Fix an off by one error: s/>/>=/
-	 was:
-	 if ((code < 0) || (code > sizeof(icmptoicmp6unreach)/sizeof(int)))
-	 Fix obtained from NetBSD ip_fil_netbsd.c r1.4: */
-#endif
+	/* See NetBSD ip_fil_netbsd.c r1.4: */
 	if ((code < 0) || (code >= sizeof(icmptoicmp6unreach)/sizeof(int)))
 		return -1;
 #endif

From owner-svn-src-stable@freebsd.org  Thu Dec  6 02:37:35 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id B959C133139F;
 Thu,  6 Dec 2018 02:37:35 +0000 (UTC)
 (envelope-from asomers@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 5E34676FBA;
 Thu,  6 Dec 2018 02:37:35 +0000 (UTC)
 (envelope-from asomers@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3F5B61D58E;
 Thu,  6 Dec 2018 02:37:35 +0000 (UTC)
 (envelope-from asomers@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB62bZ6e088236;
 Thu, 6 Dec 2018 02:37:35 GMT (envelope-from asomers@FreeBSD.org)
Received: (from asomers@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB62bZqJ088235;
 Thu, 6 Dec 2018 02:37:35 GMT (envelope-from asomers@FreeBSD.org)
Message-Id: <201812060237.wB62bZqJ088235@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: asomers set sender to
 asomers@FreeBSD.org using -f
From: Alan Somers <asomers@FreeBSD.org>
Date: Thu, 6 Dec 2018 02:37:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341612 - stable/12/lib/libc/sys
X-SVN-Group: stable-12
X-SVN-Commit-Author: asomers
X-SVN-Commit-Paths: stable/12/lib/libc/sys
X-SVN-Commit-Revision: 341612
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 5E34676FBA
X-Spamd-Result: default: False [-0.84 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_SHORT(-0.26)[-0.261,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 02:37:35 -0000

Author: asomers
Date: Thu Dec  6 02:37:34 2018
New Revision: 341612
URL: https://svnweb.freebsd.org/changeset/base/341612

Log:
  MFC r340455:
  
  fcntl.2: document an additional error condition

Modified:
  stable/12/lib/libc/sys/fcntl.2
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/libc/sys/fcntl.2
==============================================================================
--- stable/12/lib/libc/sys/fcntl.2	Thu Dec  6 01:04:56 2018	(r341611)
+++ stable/12/lib/libc/sys/fcntl.2	Thu Dec  6 02:37:34 2018	(r341612)
@@ -28,7 +28,7 @@
 .\"     @(#)fcntl.2	8.2 (Berkeley) 1/12/94
 .\" $FreeBSD$
 .\"
-.Dd May 2, 2018
+.Dd Nov 15, 2018
 .Dt FCNTL 2
 .Os
 .Sh NAME
@@ -562,6 +562,10 @@ or
 and the data to which
 .Fa arg
 points is not valid.
+.Pp
+The argument
+.Fa cmd
+is invalid.
 .It Bq Er EMFILE
 The argument
 .Fa cmd

From owner-svn-src-stable@freebsd.org  Thu Dec  6 04:28:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id B970C130D179;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 6050D7B944;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 400581E872;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB64SegA045275;
 Thu, 6 Dec 2018 04:28:40 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB64Se3O045274;
 Thu, 6 Dec 2018 04:28:40 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812060428.wB64Se3O045274@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Thu, 6 Dec 2018 04:28:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341615 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-12
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341615
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6050D7B944
X-Spamd-Result: default: False [-0.71 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_SHORT(-0.13)[-0.130,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 04:28:40 -0000

Author: cy
Date: Thu Dec  6 04:28:39 2018
New Revision: 341615
URL: https://svnweb.freebsd.org/changeset/base/341615

Log:
  MFC r341265:
  
  Remove an old comment/code and replace with a comment that
  directly references a NetBSD commit.

Modified:
  stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/12/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/10/   (props changed)
  stable/11/   (props changed)

Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Thu Dec  6 04:25:12 2018	(r341614)
+++ stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Thu Dec  6 04:28:39 2018	(r341615)
@@ -542,12 +542,7 @@ ipf_send_icmp_err(type, fin, dst)
 
 	code = fin->fin_icode;
 #ifdef USE_INET6
-#if 0
-	/* XXX Fix an off by one error: s/>/>=/
-	 was:
-	 if ((code < 0) || (code > sizeof(icmptoicmp6unreach)/sizeof(int)))
-	 Fix obtained from NetBSD ip_fil_netbsd.c r1.4: */
-#endif
+	/* See NetBSD ip_fil_netbsd.c r1.4: */
 	if ((code < 0) || (code >= sizeof(icmptoicmp6unreach)/sizeof(int)))
 		return -1;
 #endif

From owner-svn-src-stable@freebsd.org  Thu Dec  6 04:28:41 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 17FBE130D17D;
 Thu,  6 Dec 2018 04:28:41 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id AB9817B945;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8DE8C1E873;
 Thu,  6 Dec 2018 04:28:40 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB64Seva045281;
 Thu, 6 Dec 2018 04:28:40 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB64Setl045280;
 Thu, 6 Dec 2018 04:28:40 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812060428.wB64Setl045280@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Thu, 6 Dec 2018 04:28:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341615 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-10
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341615
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: AB9817B945
X-Spamd-Result: default: False [-0.71 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_SHORT(-0.13)[-0.130,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 04:28:41 -0000

Author: cy
Date: Thu Dec  6 04:28:39 2018
New Revision: 341615
URL: https://svnweb.freebsd.org/changeset/base/341615

Log:
  MFC r341265:
  
  Remove an old comment/code and replace with a comment that
  directly references a NetBSD commit.

Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/10/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/11/   (props changed)
  stable/12/   (props changed)

Modified: stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Thu Dec  6 04:25:12 2018	(r341614)
+++ stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Thu Dec  6 04:28:39 2018	(r341615)
@@ -537,12 +537,7 @@ ipf_send_icmp_err(type, fin, dst)
 
 	code = fin->fin_icode;
 #ifdef USE_INET6
-#if 0
-	/* XXX Fix an off by one error: s/>/>=/
-	 was:
-	 if ((code < 0) || (code > sizeof(icmptoicmp6unreach)/sizeof(int)))
-	 Fix obtained from NetBSD ip_fil_netbsd.c r1.4: */
-#endif
+	/* See NetBSD ip_fil_netbsd.c r1.4: */
 	if ((code < 0) || (code >= sizeof(icmptoicmp6unreach)/sizeof(int)))
 		return -1;
 #endif

From owner-svn-src-stable@freebsd.org  Thu Dec  6 08:27:31 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6059F13230BE;
 Thu,  6 Dec 2018 08:27:31 +0000 (UTC)
 (envelope-from bapt@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id F3C548588F;
 Thu,  6 Dec 2018 08:27:30 +0000 (UTC)
 (envelope-from bapt@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B3CA320FE5;
 Thu,  6 Dec 2018 08:27:30 +0000 (UTC)
 (envelope-from bapt@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB68RUFM068508;
 Thu, 6 Dec 2018 08:27:30 GMT (envelope-from bapt@FreeBSD.org)
Received: (from bapt@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB68RUwJ068507;
 Thu, 6 Dec 2018 08:27:30 GMT (envelope-from bapt@FreeBSD.org)
Message-Id: <201812060827.wB68RUwJ068507@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: bapt set sender to
 bapt@FreeBSD.org using -f
From: Baptiste Daroussin <bapt@FreeBSD.org>
Date: Thu, 6 Dec 2018 08:27:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341621 - stable/12/usr.sbin/nfsd
X-SVN-Group: stable-12
X-SVN-Commit-Author: bapt
X-SVN-Commit-Paths: stable/12/usr.sbin/nfsd
X-SVN-Commit-Revision: 341621
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: F3C548588F
X-Spamd-Result: default: False [-0.94 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.46)[-0.456,0];
 NEURAL_HAM_SHORT(-0.41)[-0.414,0];
 NEURAL_HAM_LONG(-0.07)[-0.070,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 08:27:31 -0000

Author: bapt
Date: Thu Dec  6 08:27:30 2018
New Revision: 341621
URL: https://svnweb.freebsd.org/changeset/base/341621

Log:
  MFC r340111:
  
  nfsd: Factorize code
  
  Factorize code by using struct sockaddr_storage to handle both ipv6 and ipv4
  
  Discussed with: rmacklem
  Reviewed by: manu
  Sponsored by: Gandi.net
  Differential Revision: https://reviews.freebsd.org/D13223

Modified:
  stable/12/usr.sbin/nfsd/nfsd.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.sbin/nfsd/nfsd.c
==============================================================================
--- stable/12/usr.sbin/nfsd/nfsd.c	Thu Dec  6 06:18:21 2018	(r341620)
+++ stable/12/usr.sbin/nfsd/nfsd.c	Thu Dec  6 08:27:30 2018	(r341621)
@@ -160,10 +160,8 @@ main(int argc, char **argv)
 	struct addrinfo *ai_udp, *ai_tcp, *ai_udp6, *ai_tcp6, hints;
 	struct netconfig *nconf_udp, *nconf_tcp, *nconf_udp6, *nconf_tcp6;
 	struct netbuf nb_udp, nb_tcp, nb_udp6, nb_tcp6;
-	struct sockaddr_in inetpeer;
-	struct sockaddr_in6 inet6peer;
+	struct sockaddr_storage peer;
 	fd_set ready, sockbits;
-	fd_set v4bits, v6bits;
 	int ch, connect_type_cnt, i, maxsock, msgsock;
 	socklen_t len;
 	int on = 1, unregister, reregister, sock;
@@ -480,8 +478,6 @@ main(int argc, char **argv)
 	}
 
 	(void)signal(SIGUSR1, cleanup);
-	FD_ZERO(&v4bits);
-	FD_ZERO(&v6bits);
 	FD_ZERO(&sockbits);
  
 	rpcbregcnt = 0;
@@ -663,7 +659,6 @@ main(int argc, char **argv)
 				}
 				freeaddrinfo(ai_tcp);
 				FD_SET(tcpsock, &sockbits);
-				FD_SET(tcpsock, &v4bits); 
 				maxsock = tcpsock;
 				connect_type_cnt++;
 			}
@@ -742,7 +737,6 @@ main(int argc, char **argv)
 				}
 				freeaddrinfo(ai_tcp6);
 				FD_SET(tcp6sock, &sockbits);
-				FD_SET(tcp6sock, &v6bits);
 				if (maxsock < tcp6sock)
 					maxsock = tcp6sock;
 				connect_type_cnt++;
@@ -816,52 +810,25 @@ main(int argc, char **argv)
 		}
 		for (tcpsock = 0; tcpsock <= maxsock; tcpsock++) {
 			if (FD_ISSET(tcpsock, &ready)) {
-				if (FD_ISSET(tcpsock, &v4bits)) {
-					len = sizeof(inetpeer);
-					if ((msgsock = accept(tcpsock,
-					    (struct sockaddr *)&inetpeer, &len)) < 0) {
-						error = errno;
-						syslog(LOG_ERR, "accept failed: %m");
-						if (error == ECONNABORTED ||
-						    error == EINTR)
-							continue;
-						nfsd_exit(1);
-					}
-					memset(inetpeer.sin_zero, 0,
-						sizeof(inetpeer.sin_zero));
-					if (setsockopt(msgsock, SOL_SOCKET,
-					    SO_KEEPALIVE, (char *)&on, sizeof(on)) < 0)
-						syslog(LOG_ERR,
-						    "setsockopt SO_KEEPALIVE: %m");
-					addsockargs.sock = msgsock;
-					addsockargs.name = (caddr_t)&inetpeer;
-					addsockargs.namelen = len;
-					nfssvc(nfssvc_addsock, &addsockargs);
-					(void)close(msgsock);
-				} else if (FD_ISSET(tcpsock, &v6bits)) {
-					len = sizeof(inet6peer);
-					if ((msgsock = accept(tcpsock,
-					    (struct sockaddr *)&inet6peer,
-					    &len)) < 0) {
-						error = errno;
-						syslog(LOG_ERR,
-						     "accept failed: %m");
-						if (error == ECONNABORTED ||
-						    error == EINTR)
-							continue;
-						nfsd_exit(1);
-					}
-					if (setsockopt(msgsock, SOL_SOCKET,
-					    SO_KEEPALIVE, (char *)&on,
-					    sizeof(on)) < 0)
-						syslog(LOG_ERR, "setsockopt "
-						    "SO_KEEPALIVE: %m");
-					addsockargs.sock = msgsock;
-					addsockargs.name = (caddr_t)&inet6peer;
-					addsockargs.namelen = len;
-					nfssvc(nfssvc_addsock, &addsockargs);
-					(void)close(msgsock);
+				len = sizeof(peer);
+				if ((msgsock = accept(tcpsock,
+				    (struct sockaddr *)&peer, &len)) < 0) {
+					error = errno;
+					syslog(LOG_ERR, "accept failed: %m");
+					if (error == ECONNABORTED ||
+					    error == EINTR)
+						continue;
+					nfsd_exit(1);
 				}
+				if (setsockopt(msgsock, SOL_SOCKET,
+				    SO_KEEPALIVE, (char *)&on, sizeof(on)) < 0)
+					syslog(LOG_ERR,
+					    "setsockopt SO_KEEPALIVE: %m");
+				addsockargs.sock = msgsock;
+				addsockargs.name = (caddr_t)&peer;
+				addsockargs.namelen = len;
+				nfssvc(nfssvc_addsock, &addsockargs);
+				(void)close(msgsock);
 			}
 		}
 	}

From owner-svn-src-stable@freebsd.org  Thu Dec  6 08:27:57 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A88511323104;
 Thu,  6 Dec 2018 08:27:57 +0000 (UTC)
 (envelope-from bapt@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4EC37859A4;
 Thu,  6 Dec 2018 08:27:57 +0000 (UTC)
 (envelope-from bapt@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2F4D220FE6;
 Thu,  6 Dec 2018 08:27:57 +0000 (UTC)
 (envelope-from bapt@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB68RuG0068567;
 Thu, 6 Dec 2018 08:27:56 GMT (envelope-from bapt@FreeBSD.org)
Received: (from bapt@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB68RuQp068566;
 Thu, 6 Dec 2018 08:27:56 GMT (envelope-from bapt@FreeBSD.org)
Message-Id: <201812060827.wB68RuQp068566@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: bapt set sender to
 bapt@FreeBSD.org using -f
From: Baptiste Daroussin <bapt@FreeBSD.org>
Date: Thu, 6 Dec 2018 08:27:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341622 - stable/11/usr.sbin/nfsd
X-SVN-Group: stable-11
X-SVN-Commit-Author: bapt
X-SVN-Commit-Paths: stable/11/usr.sbin/nfsd
X-SVN-Commit-Revision: 341622
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4EC37859A4
X-Spamd-Result: default: False [-0.94 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.46)[-0.456,0];
 NEURAL_HAM_SHORT(-0.41)[-0.414,0];
 NEURAL_HAM_LONG(-0.07)[-0.070,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 08:27:57 -0000

Author: bapt
Date: Thu Dec  6 08:27:56 2018
New Revision: 341622
URL: https://svnweb.freebsd.org/changeset/base/341622

Log:
  MFC r340111:
  
  nfsd: Factorize code
  
  Factorize code by using struct sockaddr_storage to handle both ipv6 and ipv4
  
  Discussed with: rmacklem
  Reviewed by: manu
  Sponsored by: Gandi.net
  Differential Revision: https://reviews.freebsd.org/D13223

Modified:
  stable/11/usr.sbin/nfsd/nfsd.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.sbin/nfsd/nfsd.c
==============================================================================
--- stable/11/usr.sbin/nfsd/nfsd.c	Thu Dec  6 08:27:30 2018	(r341621)
+++ stable/11/usr.sbin/nfsd/nfsd.c	Thu Dec  6 08:27:56 2018	(r341622)
@@ -149,10 +149,8 @@ main(int argc, char **argv)
 	struct addrinfo *ai_udp, *ai_tcp, *ai_udp6, *ai_tcp6, hints;
 	struct netconfig *nconf_udp, *nconf_tcp, *nconf_udp6, *nconf_tcp6;
 	struct netbuf nb_udp, nb_tcp, nb_udp6, nb_tcp6;
-	struct sockaddr_in inetpeer;
-	struct sockaddr_in6 inet6peer;
+	struct sockaddr_storage peer;
 	fd_set ready, sockbits;
-	fd_set v4bits, v6bits;
 	int ch, connect_type_cnt, i, maxsock, msgsock;
 	socklen_t len;
 	int on = 1, unregister, reregister, sock;
@@ -450,8 +448,6 @@ main(int argc, char **argv)
 	}
 
 	(void)signal(SIGUSR1, cleanup);
-	FD_ZERO(&v4bits);
-	FD_ZERO(&v6bits);
 	FD_ZERO(&sockbits);
  
 	rpcbregcnt = 0;
@@ -633,7 +629,6 @@ main(int argc, char **argv)
 				}
 				freeaddrinfo(ai_tcp);
 				FD_SET(tcpsock, &sockbits);
-				FD_SET(tcpsock, &v4bits); 
 				maxsock = tcpsock;
 				connect_type_cnt++;
 			}
@@ -712,7 +707,6 @@ main(int argc, char **argv)
 				}
 				freeaddrinfo(ai_tcp6);
 				FD_SET(tcp6sock, &sockbits);
-				FD_SET(tcp6sock, &v6bits);
 				if (maxsock < tcp6sock)
 					maxsock = tcp6sock;
 				connect_type_cnt++;
@@ -786,52 +780,25 @@ main(int argc, char **argv)
 		}
 		for (tcpsock = 0; tcpsock <= maxsock; tcpsock++) {
 			if (FD_ISSET(tcpsock, &ready)) {
-				if (FD_ISSET(tcpsock, &v4bits)) {
-					len = sizeof(inetpeer);
-					if ((msgsock = accept(tcpsock,
-					    (struct sockaddr *)&inetpeer, &len)) < 0) {
-						error = errno;
-						syslog(LOG_ERR, "accept failed: %m");
-						if (error == ECONNABORTED ||
-						    error == EINTR)
-							continue;
-						nfsd_exit(1);
-					}
-					memset(inetpeer.sin_zero, 0,
-						sizeof(inetpeer.sin_zero));
-					if (setsockopt(msgsock, SOL_SOCKET,
-					    SO_KEEPALIVE, (char *)&on, sizeof(on)) < 0)
-						syslog(LOG_ERR,
-						    "setsockopt SO_KEEPALIVE: %m");
-					addsockargs.sock = msgsock;
-					addsockargs.name = (caddr_t)&inetpeer;
-					addsockargs.namelen = len;
-					nfssvc(nfssvc_addsock, &addsockargs);
-					(void)close(msgsock);
-				} else if (FD_ISSET(tcpsock, &v6bits)) {
-					len = sizeof(inet6peer);
-					if ((msgsock = accept(tcpsock,
-					    (struct sockaddr *)&inet6peer,
-					    &len)) < 0) {
-						error = errno;
-						syslog(LOG_ERR,
-						     "accept failed: %m");
-						if (error == ECONNABORTED ||
-						    error == EINTR)
-							continue;
-						nfsd_exit(1);
-					}
-					if (setsockopt(msgsock, SOL_SOCKET,
-					    SO_KEEPALIVE, (char *)&on,
-					    sizeof(on)) < 0)
-						syslog(LOG_ERR, "setsockopt "
-						    "SO_KEEPALIVE: %m");
-					addsockargs.sock = msgsock;
-					addsockargs.name = (caddr_t)&inet6peer;
-					addsockargs.namelen = len;
-					nfssvc(nfssvc_addsock, &addsockargs);
-					(void)close(msgsock);
+				len = sizeof(peer);
+				if ((msgsock = accept(tcpsock,
+				    (struct sockaddr *)&peer, &len)) < 0) {
+					error = errno;
+					syslog(LOG_ERR, "accept failed: %m");
+					if (error == ECONNABORTED ||
+					    error == EINTR)
+						continue;
+					nfsd_exit(1);
 				}
+				if (setsockopt(msgsock, SOL_SOCKET,
+				    SO_KEEPALIVE, (char *)&on, sizeof(on)) < 0)
+					syslog(LOG_ERR,
+					    "setsockopt SO_KEEPALIVE: %m");
+				addsockargs.sock = msgsock;
+				addsockargs.name = (caddr_t)&peer;
+				addsockargs.namelen = len;
+				nfssvc(nfssvc_addsock, &addsockargs);
+				(void)close(msgsock);
 			}
 		}
 	}

From owner-svn-src-stable@freebsd.org  Thu Dec  6 09:47:25 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C270A1325B62;
 Thu,  6 Dec 2018 09:47:24 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 58AD78957A;
 Thu,  6 Dec 2018 09:47:24 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3967121D0E;
 Thu,  6 Dec 2018 09:47:24 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB69lOsP009722;
 Thu, 6 Dec 2018 09:47:24 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB69lO3r009721;
 Thu, 6 Dec 2018 09:47:24 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812060947.wB69lO3r009721@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 09:47:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341625 - in stable/12: share/colldef share/ctypedef
 share/monetdef share/numericdef tools/tools/locale tools/tools/locale/etc
 tools/tools/locale/etc/final-maps
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: in stable/12: share/colldef share/ctypedef share/monetdef
 share/numericdef tools/tools/locale tools/tools/locale/etc
 tools/tools/locale/etc/final-maps
X-SVN-Commit-Revision: 341625
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 58AD78957A
X-Spamd-Result: default: False [-0.66 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.39)[-0.385,0];
 NEURAL_SPAM_LONG(0.02)[0.020,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.29)[-0.291,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 09:47:25 -0000

Author: yuripv
Date: Thu Dec  6 09:47:23 2018
New Revision: 341625
URL: https://svnweb.freebsd.org/changeset/base/341625

Log:
  MFC r340104:
  Update to CLDR 34 and UNICODE 11.
  
  Discussed with:	bapt

Added:
  stable/12/share/monetdef/fr_FR.UTF-8.src
     - copied unchanged from r340104, head/share/monetdef/fr_FR.UTF-8.src
  stable/12/share/monetdef/it_IT.ISO8859-15.src
     - copied unchanged from r340104, head/share/monetdef/it_IT.ISO8859-15.src
  stable/12/share/monetdef/it_IT.UTF-8.src
     - copied unchanged from r340104, head/share/monetdef/it_IT.UTF-8.src
  stable/12/share/monetdef/nl_BE.ISO8859-1.src
     - copied unchanged from r340104, head/share/monetdef/nl_BE.ISO8859-1.src
  stable/12/share/numericdef/fr_FR.UTF-8.src
     - copied unchanged from r340104, head/share/numericdef/fr_FR.UTF-8.src
Deleted:
  stable/12/share/monetdef/de_AT.ISO8859-1.src
  stable/12/share/monetdef/de_AT.ISO8859-15.src
  stable/12/share/monetdef/de_AT.UTF-8.src
Modified:
  stable/12/share/colldef/af_ZA.UTF-8.src
  stable/12/share/colldef/am_ET.UTF-8.src
  stable/12/share/colldef/ar_SA.UTF-8.src
  stable/12/share/colldef/be_BY.UTF-8.src
  stable/12/share/colldef/ca_AD.UTF-8.src
  stable/12/share/colldef/cs_CZ.ISO8859-2.src
  stable/12/share/colldef/cs_CZ.UTF-8.src
  stable/12/share/colldef/da_DK.ISO8859-1.src
  stable/12/share/colldef/da_DK.ISO8859-15.src
  stable/12/share/colldef/da_DK.UTF-8.src
  stable/12/share/colldef/el_GR.UTF-8.src
  stable/12/share/colldef/en_US.UTF-8.src
  stable/12/share/colldef/es_MX.UTF-8.src
  stable/12/share/colldef/et_EE.UTF-8.src
  stable/12/share/colldef/fi_FI.UTF-8.src
  stable/12/share/colldef/fr_CA.UTF-8.src
  stable/12/share/colldef/he_IL.UTF-8.src
  stable/12/share/colldef/hi_IN.UTF-8.src
  stable/12/share/colldef/hr_HR.ISO8859-2.src
  stable/12/share/colldef/hu_HU.ISO8859-2.src
  stable/12/share/colldef/hu_HU.UTF-8.src
  stable/12/share/colldef/hy_AM.UTF-8.src
  stable/12/share/colldef/is_IS.UTF-8.src
  stable/12/share/colldef/ja_JP.UTF-8.src
  stable/12/share/colldef/ja_JP.eucJP.src
  stable/12/share/colldef/kk_KZ.UTF-8.src
  stable/12/share/colldef/ko_KR.UTF-8.src
  stable/12/share/colldef/lt_LT.UTF-8.src
  stable/12/share/colldef/lv_LV.UTF-8.src
  stable/12/share/colldef/nb_NO.ISO8859-1.src
  stable/12/share/colldef/nb_NO.ISO8859-15.src
  stable/12/share/colldef/nn_NO.ISO8859-1.src
  stable/12/share/colldef/nn_NO.ISO8859-15.src
  stable/12/share/colldef/nn_NO.UTF-8.src
  stable/12/share/colldef/pl_PL.UTF-8.src
  stable/12/share/colldef/ro_RO.UTF-8.src
  stable/12/share/colldef/ru_RU.UTF-8.src
  stable/12/share/colldef/se_NO.UTF-8.src
  stable/12/share/colldef/sk_SK.ISO8859-2.src
  stable/12/share/colldef/sk_SK.UTF-8.src
  stable/12/share/colldef/sl_SI.UTF-8.src
  stable/12/share/colldef/sr_RS.ISO8859-2.src
  stable/12/share/colldef/sr_RS.ISO8859-5.src
  stable/12/share/colldef/sr_RS.UTF-8.src
  stable/12/share/colldef/sr_RS.UTF-8@latin.src
  stable/12/share/colldef/sv_SE.UTF-8.src
  stable/12/share/colldef/tr_TR.UTF-8.src
  stable/12/share/colldef/uk_UA.UTF-8.src
  stable/12/share/colldef/zh_CN.GB18030.src
  stable/12/share/colldef/zh_CN.GB2312.src
  stable/12/share/colldef/zh_CN.GBK.src
  stable/12/share/colldef/zh_CN.UTF-8.src
  stable/12/share/colldef/zh_CN.eucCN.src
  stable/12/share/colldef/zh_TW.Big5.src
  stable/12/share/colldef/zh_TW.UTF-8.src
  stable/12/share/ctypedef/Makefile
  stable/12/share/ctypedef/ca_IT.ISO8859-1.src
  stable/12/share/ctypedef/en_US.ISO8859-1.src
  stable/12/share/ctypedef/hi_IN.ISCII-DEV.src
  stable/12/share/ctypedef/hy_AM.ARMSCII-8.src
  stable/12/share/ctypedef/ja_JP.eucJP.src
  stable/12/share/ctypedef/zh_CN.eucCN.src
  stable/12/share/monetdef/Makefile
  stable/12/share/monetdef/fr_CH.UTF-8.src
  stable/12/share/monetdef/hy_AM.ARMSCII-8.src
  stable/12/share/monetdef/hy_AM.UTF-8.src
  stable/12/share/monetdef/mn_MN.UTF-8.src
  stable/12/share/monetdef/nl_BE.ISO8859-15.src
  stable/12/share/monetdef/nl_BE.UTF-8.src
  stable/12/share/numericdef/Makefile
  stable/12/tools/tools/locale/Makefile
  stable/12/tools/tools/locale/etc/charmaps.xml
  stable/12/tools/tools/locale/etc/final-maps/map.UTF-8
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/share/colldef/af_ZA.UTF-8.src
==============================================================================
--- stable/12/share/colldef/af_ZA.UTF-8.src	Thu Dec  6 09:45:25 2018	(r341624)
+++ stable/12/share/colldef/af_ZA.UTF-8.src	Thu Dec  6 09:47:23 2018	(r341625)
@@ -60,6 +60,7 @@ collating-symbol <XCC>
 collating-symbol <XCE>
 collating-symbol <XD0>
 collating-symbol <XD2>
+collating-symbol <XD6>
 collating-symbol <XFB>
 collating-symbol <X0304>
 collating-symbol <X0306>
@@ -70,431 +71,433 @@ collating-symbol <X0400>
 collating-symbol <X050A>
 collating-symbol <X050E>
 collating-symbol <X0600>
-collating-symbol <X0722>
-collating-symbol <X072E>
-collating-symbol <X0752>
-collating-symbol <X075A>
+collating-symbol <X0726>
+collating-symbol <X0732>
+collating-symbol <X0756>
+collating-symbol <X075E>
 collating-symbol <X0800>
-collating-symbol <X0969>
-collating-symbol <X0977>
-collating-symbol <X098D>
-collating-symbol <X098F>
-collating-symbol <X0991>
-collating-symbol <X0993>
-collating-symbol <X0995>
-collating-symbol <X0997>
-collating-symbol <X0A7B>
-collating-symbol <X0A7D>
-collating-symbol <X0A87>
-collating-symbol <X0A89>
-collating-symbol <X0A8B>
-collating-symbol <X0A8F>
-collating-symbol <X0A91>
+collating-symbol <X096A>
+collating-symbol <X0978>
+collating-symbol <X098E>
+collating-symbol <X0990>
+collating-symbol <X0992>
+collating-symbol <X0994>
+collating-symbol <X0996>
+collating-symbol <X0998>
+collating-symbol <X0A7E>
+collating-symbol <X0A80>
+collating-symbol <X0A8A>
+collating-symbol <X0A8C>
+collating-symbol <X0A90>
+collating-symbol <X0A94>
+collating-symbol <X0A96>
 collating-symbol <X0C04>
 collating-symbol <X0C0A>
-collating-symbol <X0C76>
-collating-symbol <X0C7E>
+collating-symbol <X0C78>
 collating-symbol <X0C80>
 collating-symbol <X0C82>
-collating-symbol <X0C86>
-collating-symbol <X0C8A>
-collating-symbol <X0D76>
+collating-symbol <X0C84>
+collating-symbol <X0C88>
+collating-symbol <X0C8C>
+collating-symbol <X0D7C>
 collating-symbol <X1066>
 collating-symbol <X1068>
 collating-symbol <X106A>
 collating-symbol <X106C>
 collating-symbol <X106E>
 collating-symbol <X1070>
-collating-symbol <X1200>
-collating-symbol <X1400>
-collating-symbol <X1600>
-collating-symbol <X1800>
-collating-symbol <X1A00>
-collating-symbol <X1C00>
-collating-symbol <X1E00>
-collating-symbol <X2000>
-collating-symbol <X2200>
-collating-symbol <X2400>
-collating-symbol <X2900>
-collating-symbol <X2A06>
-collating-symbol <X2A08>
-collating-symbol <X2A0A>
-collating-symbol <X2A0C>
-collating-symbol <X2A0E>
-collating-symbol <X2A10>
-collating-symbol <X2A12>
-collating-symbol <X2A14>
-collating-symbol <X2A16>
-collating-symbol <X2A18>
-collating-symbol <X2A1A>
-collating-symbol <X2A1C>
-collating-symbol <X2B00>
-collating-symbol <X2C06>
-collating-symbol <X2C08>
-collating-symbol <X2C0A>
-collating-symbol <X2C0C>
-collating-symbol <X2C0E>
-collating-symbol <X2C10>
-collating-symbol <X2C12>
-collating-symbol <X2C14>
-collating-symbol <X2C16>
-collating-symbol <X2C18>
-collating-symbol <X2D00>
-collating-symbol <X2E06>
-collating-symbol <X2E08>
-collating-symbol <X2E0A>
-collating-symbol <X2E0C>
-collating-symbol <X2E0E>
-collating-symbol <X2E10>
-collating-symbol <X2E12>
-collating-symbol <X2E14>
-collating-symbol <X2F00>
-collating-symbol <X3006>
-collating-symbol <X3008>
-collating-symbol <X300A>
-collating-symbol <X300C>
-collating-symbol <X300E>
-collating-symbol <X3010>
-collating-symbol <X3012>
-collating-symbol <X3014>
-collating-symbol <X3016>
-collating-symbol <X3018>
-collating-symbol <X301A>
-collating-symbol <X3100>
-collating-symbol <X3206>
-collating-symbol <X3208>
-collating-symbol <X320A>
-collating-symbol <X320C>
-collating-symbol <X320E>
-collating-symbol <X3210>
-collating-symbol <X3212>
-collating-symbol <X3214>
-collating-symbol <X3216>
-collating-symbol <X3218>
-collating-symbol <X321A>
-collating-symbol <X321C>
-collating-symbol <X321E>
-collating-symbol <X3220>
-collating-symbol <X3222>
-collating-symbol <X3224>
-collating-symbol <X3226>
-collating-symbol <X3228>
-collating-symbol <X322A>
-collating-symbol <X322C>
-collating-symbol <X322E>
-collating-symbol <X3230>
-collating-symbol <X3300>
-collating-symbol <X3406>
-collating-symbol <X3408>
-collating-symbol <X340A>
-collating-symbol <X340C>
-collating-symbol <X340E>
-collating-symbol <X3410>
-collating-symbol <X3412>
-collating-symbol <X3414>
-collating-symbol <X3500>
-collating-symbol <X3606>
-collating-symbol <X3608>
-collating-symbol <X360A>
-collating-symbol <X360C>
-collating-symbol <X360E>
-collating-symbol <X3610>
-collating-symbol <X3612>
-collating-symbol <X3614>
-collating-symbol <X3616>
-collating-symbol <X3618>
-collating-symbol <X361A>
-collating-symbol <X3700>
-collating-symbol <X3806>
-collating-symbol <X3808>
-collating-symbol <X380A>
-collating-symbol <X380C>
-collating-symbol <X380E>
-collating-symbol <X3810>
-collating-symbol <X3812>
-collating-symbol <X3814>
-collating-symbol <X3900>
-collating-symbol <X3A06>
-collating-symbol <X3A08>
-collating-symbol <X3A0A>
-collating-symbol <X3A0C>
-collating-symbol <X3A0E>
-collating-symbol <X3A10>
-collating-symbol <X3A12>
-collating-symbol <X3A14>
-collating-symbol <X3A16>
-collating-symbol <X3A18>
-collating-symbol <X3B00>
-collating-symbol <X3C06>
-collating-symbol <X3C08>
-collating-symbol <X3C0A>
-collating-symbol <X3C0C>
-collating-symbol <X3C0E>
-collating-symbol <X3C10>
-collating-symbol <X3D00>
-collating-symbol <X3E06>
-collating-symbol <X3E08>
-collating-symbol <X3E0A>
-collating-symbol <X3E0C>
-collating-symbol <X3E0E>
-collating-symbol <X3E10>
-collating-symbol <X3E12>
-collating-symbol <X3E14>
-collating-symbol <X3F00>
-collating-symbol <X4006>
-collating-symbol <X4008>
-collating-symbol <X400A>
-collating-symbol <X400C>
-collating-symbol <X400E>
-collating-symbol <X4010>
-collating-symbol <X4012>
-collating-symbol <X4014>
-collating-symbol <X4016>
-collating-symbol <X4018>
-collating-symbol <X401A>
-collating-symbol <X401C>
-collating-symbol <X401E>
-collating-symbol <X4020>
-collating-symbol <X4022>
-collating-symbol <X4024>
-collating-symbol <X4026>
-collating-symbol <X4028>
-collating-symbol <X402A>
-collating-symbol <X402C>
-collating-symbol <X4100>
-collating-symbol <X4206>
-collating-symbol <X4208>
-collating-symbol <X420A>
-collating-symbol <X420C>
-collating-symbol <X420E>
-collating-symbol <X4210>
-collating-symbol <X4212>
-collating-symbol <X4214>
-collating-symbol <X4300>
-collating-symbol <X4406>
-collating-symbol <X4408>
-collating-symbol <X440A>
-collating-symbol <X440C>
-collating-symbol <X440E>
-collating-symbol <X4410>
-collating-symbol <X4412>
-collating-symbol <X4414>
-collating-symbol <X4416>
-collating-symbol <X4418>
-collating-symbol <X441A>
-collating-symbol <X441C>
-collating-symbol <X441E>
-collating-symbol <X4420>
-collating-symbol <X4500>
-collating-symbol <X4606>
-collating-symbol <X4608>
-collating-symbol <X460A>
-collating-symbol <X460C>
-collating-symbol <X460E>
-collating-symbol <X4610>
-collating-symbol <X4612>
-collating-symbol <X4614>
-collating-symbol <X4616>
-collating-symbol <X4618>
-collating-symbol <X461A>
-collating-symbol <X461C>
-collating-symbol <X461E>
-collating-symbol <X4620>
-collating-symbol <X4622>
-collating-symbol <X4624>
-collating-symbol <X4626>
-collating-symbol <X4628>
-collating-symbol <X462A>
-collating-symbol <X462C>
-collating-symbol <X462E>
-collating-symbol <X4630>
-collating-symbol <X4632>
-collating-symbol <X4634>
-collating-symbol <X4636>
-collating-symbol <X4638>
-collating-symbol <X463A>
-collating-symbol <X463C>
-collating-symbol <X4700>
-collating-symbol <X4806>
-collating-symbol <X4808>
-collating-symbol <X480A>
-collating-symbol <X480C>
-collating-symbol <X480E>
-collating-symbol <X4810>
-collating-symbol <X4812>
-collating-symbol <X4814>
-collating-symbol <X4816>
-collating-symbol <X4818>
-collating-symbol <X481A>
-collating-symbol <X4900>
-collating-symbol <X4A06>
-collating-symbol <X4A08>
-collating-symbol <X4A0A>
-collating-symbol <X4A0C>
-collating-symbol <X4A0E>
-collating-symbol <X4B00>
-collating-symbol <X4C06>
-collating-symbol <X4C08>
-collating-symbol <X4C0A>
-collating-symbol <X4C0C>
-collating-symbol <X4C0E>
-collating-symbol <X4C10>
-collating-symbol <X4C12>
-collating-symbol <X4C14>
-collating-symbol <X4C16>
-collating-symbol <X4C18>
-collating-symbol <X4C1A>
-collating-symbol <X4C1C>
-collating-symbol <X4C1E>
-collating-symbol <X4C20>
-collating-symbol <X4C22>
-collating-symbol <X4C24>
-collating-symbol <X4C26>
-collating-symbol <X4C28>
-collating-symbol <X4C2A>
-collating-symbol <X4C2C>
-collating-symbol <X4C2E>
-collating-symbol <X4C30>
-collating-symbol <X4C32>
-collating-symbol <X4C34>
-collating-symbol <X4C36>
-collating-symbol <X4C38>
-collating-symbol <X4C3A>
-collating-symbol <X4C3C>
-collating-symbol <X4D00>
-collating-symbol <X4E06>
-collating-symbol <X4E08>
-collating-symbol <X4E0A>
-collating-symbol <X4E0C>
-collating-symbol <X4E0E>
-collating-symbol <X4E10>
-collating-symbol <X4E12>
-collating-symbol <X4E14>
-collating-symbol <X4E16>
-collating-symbol <X4E18>
-collating-symbol <X4E1A>
-collating-symbol <X4E1C>
-collating-symbol <X4E1E>
-collating-symbol <X4E20>
-collating-symbol <X4F00>
-collating-symbol <X5006>
-collating-symbol <X5008>
-collating-symbol <X500A>
-collating-symbol <X500C>
-collating-symbol <X500E>
-collating-symbol <X5010>
-collating-symbol <X5012>
-collating-symbol <X5014>
-collating-symbol <X5016>
-collating-symbol <X5018>
-collating-symbol <X5100>
-collating-symbol <X5206>
-collating-symbol <X5208>
-collating-symbol <X520A>
-collating-symbol <X520C>
-collating-symbol <X520E>
-collating-symbol <X5210>
-collating-symbol <X5212>
-collating-symbol <X5214>
-collating-symbol <X5216>
-collating-symbol <X5218>
-collating-symbol <X521A>
-collating-symbol <X521C>
-collating-symbol <X521E>
-collating-symbol <X5220>
-collating-symbol <X5222>
-collating-symbol <X5224>
-collating-symbol <X5226>
-collating-symbol <X5228>
-collating-symbol <X522A>
-collating-symbol <X522C>
-collating-symbol <X522E>
-collating-symbol <X5300>
-collating-symbol <X5406>
-collating-symbol <X5408>
-collating-symbol <X540A>
-collating-symbol <X540C>
-collating-symbol <X540E>
-collating-symbol <X5410>
-collating-symbol <X5412>
-collating-symbol <X5414>
-collating-symbol <X5500>
-collating-symbol <X5606>
-collating-symbol <X5608>
-collating-symbol <X560A>
-collating-symbol <X5700>
-collating-symbol <X5806>
-collating-symbol <X5808>
-collating-symbol <X580A>
-collating-symbol <X580C>
-collating-symbol <X580E>
-collating-symbol <X5810>
-collating-symbol <X5812>
-collating-symbol <X5814>
-collating-symbol <X5900>
-collating-symbol <X5A06>
-collating-symbol <X5A08>
-collating-symbol <X5A0A>
-collating-symbol <X5A0C>
-collating-symbol <X5A0E>
-collating-symbol <X5A10>
-collating-symbol <X5B00>
-collating-symbol <X5C06>
-collating-symbol <X5C08>
-collating-symbol <X5C0A>
-collating-symbol <X5C0C>
-collating-symbol <X5C0E>
-collating-symbol <X5C10>
-collating-symbol <X5C12>
-collating-symbol <X5C14>
-collating-symbol <X5C16>
-collating-symbol <X5C18>
-collating-symbol <X5C1A>
-collating-symbol <X5C1C>
-collating-symbol <X5C1E>
-collating-symbol <X5C20>
-collating-symbol <X5C22>
-collating-symbol <X5C24>
-collating-symbol <X5C26>
-collating-symbol <X5C28>
-collating-symbol <X5C2A>
-collating-symbol <X5C2C>
-collating-symbol <X5C2E>
-collating-symbol <X5C30>
-collating-symbol <X5C32>
-collating-symbol <X5C34>
-collating-symbol <X5C36>
-collating-symbol <X5C38>
-collating-symbol <X5C3A>
-collating-symbol <X5C3C>
-collating-symbol <X5C3E>
-collating-symbol <X5C40>
-collating-symbol <X5C42>
-collating-symbol <X5C44>
-collating-symbol <X5C46>
-collating-symbol <X5C48>
-collating-symbol <X5C4A>
-collating-symbol <X5C4C>
-collating-symbol <X5C4E>
-collating-symbol <X5C56>
-collating-symbol <X5C58>
-collating-symbol <X5C5A>
-collating-symbol <X5C5C>
-collating-symbol <X5C5E>
-collating-symbol <X5C64>
-collating-symbol <X5C66>
-collating-symbol <X5C68>
-collating-symbol <X5C6A>
-collating-symbol <X5C6C>
-collating-symbol <X5C6E>
-collating-symbol <X5C70>
-collating-symbol <X5C72>
-collating-symbol <X5C74>
-collating-symbol <X5C76>
-collating-symbol <X5C78>
-collating-symbol <X5C7A>
-collating-symbol <X5C7C>
-collating-symbol <X5C7E>
+collating-symbol <X1300>
+collating-symbol <X1500>
+collating-symbol <X1700>
+collating-symbol <X1900>
+collating-symbol <X1B00>
+collating-symbol <X1D00>
+collating-symbol <X1F00>
+collating-symbol <X2100>
+collating-symbol <X2300>
+collating-symbol <X2500>
+collating-symbol <X2A00>
+collating-symbol <X2B06>
+collating-symbol <X2B08>
+collating-symbol <X2B0A>
+collating-symbol <X2B0C>
+collating-symbol <X2B0E>
+collating-symbol <X2B10>
+collating-symbol <X2B12>
+collating-symbol <X2B14>
+collating-symbol <X2B16>
+collating-symbol <X2B18>
+collating-symbol <X2B1A>
+collating-symbol <X2B1C>
+collating-symbol <X2C00>
+collating-symbol <X2D06>
+collating-symbol <X2D08>
+collating-symbol <X2D0A>
+collating-symbol <X2D0C>
+collating-symbol <X2D0E>
+collating-symbol <X2D10>
+collating-symbol <X2D12>
+collating-symbol <X2D14>
+collating-symbol <X2D16>
+collating-symbol <X2D18>
+collating-symbol <X2E00>
+collating-symbol <X2F06>
+collating-symbol <X2F08>
+collating-symbol <X2F0A>
+collating-symbol <X2F0C>
+collating-symbol <X2F0E>
+collating-symbol <X2F10>
+collating-symbol <X2F12>
+collating-symbol <X2F14>
+collating-symbol <X3000>
+collating-symbol <X3106>
+collating-symbol <X3108>
+collating-symbol <X310A>
+collating-symbol <X310C>
+collating-symbol <X310E>
+collating-symbol <X3110>
+collating-symbol <X3112>
+collating-symbol <X3114>
+collating-symbol <X3116>
+collating-symbol <X3118>
+collating-symbol <X311A>
+collating-symbol <X3200>
+collating-symbol <X3306>
+collating-symbol <X3308>
+collating-symbol <X330A>
+collating-symbol <X330C>
+collating-symbol <X330E>
+collating-symbol <X3310>
+collating-symbol <X3312>
+collating-symbol <X3314>
+collating-symbol <X3316>
+collating-symbol <X3318>
+collating-symbol <X331A>
+collating-symbol <X331C>
+collating-symbol <X331E>
+collating-symbol <X3320>
+collating-symbol <X3322>
+collating-symbol <X3324>
+collating-symbol <X3326>
+collating-symbol <X3328>
+collating-symbol <X332A>
+collating-symbol <X332C>
+collating-symbol <X332E>
+collating-symbol <X3330>
+collating-symbol <X3400>
+collating-symbol <X3506>
+collating-symbol <X3508>
+collating-symbol <X350A>
+collating-symbol <X350C>
+collating-symbol <X350E>
+collating-symbol <X3510>
+collating-symbol <X3512>
+collating-symbol <X3514>
+collating-symbol <X3600>
+collating-symbol <X3706>
+collating-symbol <X3708>
+collating-symbol <X370A>
+collating-symbol <X370C>
+collating-symbol <X370E>
+collating-symbol <X3710>
+collating-symbol <X3712>
+collating-symbol <X3714>
+collating-symbol <X3716>
+collating-symbol <X3718>
+collating-symbol <X371A>
+collating-symbol <X3800>
+collating-symbol <X3906>
+collating-symbol <X3908>
+collating-symbol <X390A>
+collating-symbol <X390C>
+collating-symbol <X390E>
+collating-symbol <X3910>
+collating-symbol <X3912>
+collating-symbol <X3914>
+collating-symbol <X3A00>
+collating-symbol <X3B06>
+collating-symbol <X3B08>
+collating-symbol <X3B0A>
+collating-symbol <X3B0C>
+collating-symbol <X3B0E>
+collating-symbol <X3B10>
+collating-symbol <X3B12>
+collating-symbol <X3B14>
+collating-symbol <X3B16>
+collating-symbol <X3B18>
+collating-symbol <X3C00>
+collating-symbol <X3D06>
+collating-symbol <X3D08>
+collating-symbol <X3D0A>
+collating-symbol <X3D0C>
+collating-symbol <X3D0E>
+collating-symbol <X3D10>
+collating-symbol <X3E00>
+collating-symbol <X3F06>
+collating-symbol <X3F08>
+collating-symbol <X3F0A>
+collating-symbol <X3F0C>
+collating-symbol <X3F0E>
+collating-symbol <X3F10>
+collating-symbol <X3F12>
+collating-symbol <X3F14>
+collating-symbol <X4000>
+collating-symbol <X4106>
+collating-symbol <X4108>
+collating-symbol <X410A>
+collating-symbol <X410C>
+collating-symbol <X410E>
+collating-symbol <X4110>
+collating-symbol <X4112>
+collating-symbol <X4114>
+collating-symbol <X4116>
+collating-symbol <X4118>
+collating-symbol <X411A>
+collating-symbol <X411C>
+collating-symbol <X411E>
+collating-symbol <X4120>
+collating-symbol <X4122>
+collating-symbol <X4124>
+collating-symbol <X4126>
+collating-symbol <X4128>
+collating-symbol <X412A>
+collating-symbol <X412C>
+collating-symbol <X4200>
+collating-symbol <X4306>
+collating-symbol <X4308>
+collating-symbol <X430A>
+collating-symbol <X430C>
+collating-symbol <X430E>
+collating-symbol <X4310>
+collating-symbol <X4312>
+collating-symbol <X4314>
+collating-symbol <X4400>
+collating-symbol <X4506>
+collating-symbol <X4508>
+collating-symbol <X450A>
+collating-symbol <X450C>
+collating-symbol <X450E>
+collating-symbol <X4510>
+collating-symbol <X4512>
+collating-symbol <X4514>
+collating-symbol <X4516>
+collating-symbol <X4518>
+collating-symbol <X451A>
+collating-symbol <X451C>
+collating-symbol <X451E>
+collating-symbol <X4520>
+collating-symbol <X4600>
+collating-symbol <X4706>
+collating-symbol <X4708>
+collating-symbol <X470A>
+collating-symbol <X470C>
+collating-symbol <X470E>
+collating-symbol <X4710>
+collating-symbol <X4712>
+collating-symbol <X4714>
+collating-symbol <X4716>
+collating-symbol <X4718>
+collating-symbol <X471A>
+collating-symbol <X471C>
+collating-symbol <X471E>
+collating-symbol <X4720>
+collating-symbol <X4722>
+collating-symbol <X4724>
+collating-symbol <X4726>
+collating-symbol <X4728>
+collating-symbol <X472A>
+collating-symbol <X472C>
+collating-symbol <X472E>
+collating-symbol <X4730>
+collating-symbol <X4732>
+collating-symbol <X4734>
+collating-symbol <X4736>
+collating-symbol <X4738>
+collating-symbol <X473A>
+collating-symbol <X473C>
+collating-symbol <X4800>
+collating-symbol <X4906>
+collating-symbol <X4908>
+collating-symbol <X490A>
+collating-symbol <X490C>
+collating-symbol <X490E>
+collating-symbol <X4910>
+collating-symbol <X4912>
+collating-symbol <X4914>
+collating-symbol <X4916>
+collating-symbol <X4918>
+collating-symbol <X491A>
+collating-symbol <X4A00>
+collating-symbol <X4B06>
+collating-symbol <X4B08>
+collating-symbol <X4B0A>
+collating-symbol <X4B0C>
+collating-symbol <X4B0E>
+collating-symbol <X4B10>
+collating-symbol <X4C00>
+collating-symbol <X4D06>
+collating-symbol <X4D08>
+collating-symbol <X4D0A>
+collating-symbol <X4D0C>
+collating-symbol <X4D0E>
+collating-symbol <X4D10>
+collating-symbol <X4D12>
+collating-symbol <X4D14>
+collating-symbol <X4D16>
+collating-symbol <X4D18>
+collating-symbol <X4D1A>
+collating-symbol <X4D1C>
+collating-symbol <X4D1E>
+collating-symbol <X4D20>
+collating-symbol <X4D22>
+collating-symbol <X4D24>
+collating-symbol <X4D26>
+collating-symbol <X4D28>
+collating-symbol <X4D2A>
+collating-symbol <X4D2C>
+collating-symbol <X4D2E>
+collating-symbol <X4D30>
+collating-symbol <X4D32>
+collating-symbol <X4D34>
+collating-symbol <X4D36>
+collating-symbol <X4D38>
+collating-symbol <X4D3A>
+collating-symbol <X4D3C>
+collating-symbol <X4E00>
+collating-symbol <X4F06>
+collating-symbol <X4F08>
+collating-symbol <X4F0A>
+collating-symbol <X4F0C>
+collating-symbol <X4F0E>
+collating-symbol <X4F10>
+collating-symbol <X4F12>
+collating-symbol <X4F14>
+collating-symbol <X4F16>
+collating-symbol <X4F18>
+collating-symbol <X4F1A>
+collating-symbol <X4F1C>
+collating-symbol <X4F1E>
+collating-symbol <X4F20>
+collating-symbol <X5000>
+collating-symbol <X5106>
+collating-symbol <X5108>
+collating-symbol <X510A>
+collating-symbol <X510C>
+collating-symbol <X510E>
+collating-symbol <X5110>
+collating-symbol <X5112>
+collating-symbol <X5114>
+collating-symbol <X5116>
+collating-symbol <X5118>
+collating-symbol <X5200>
+collating-symbol <X5306>
+collating-symbol <X5308>
+collating-symbol <X530A>
+collating-symbol <X530C>
+collating-symbol <X530E>
+collating-symbol <X5310>
+collating-symbol <X5312>
+collating-symbol <X5314>
+collating-symbol <X5316>
+collating-symbol <X5318>
+collating-symbol <X531A>
+collating-symbol <X531C>
+collating-symbol <X531E>
+collating-symbol <X5320>
+collating-symbol <X5322>
+collating-symbol <X5324>
+collating-symbol <X5326>
+collating-symbol <X5328>
+collating-symbol <X532A>
+collating-symbol <X532C>
+collating-symbol <X532E>
+collating-symbol <X5330>
+collating-symbol <X5400>
+collating-symbol <X5506>
+collating-symbol <X5508>
+collating-symbol <X550A>
+collating-symbol <X550C>
+collating-symbol <X550E>
+collating-symbol <X5510>
+collating-symbol <X5512>
+collating-symbol <X5514>
+collating-symbol <X5600>
+collating-symbol <X5706>
+collating-symbol <X5708>
+collating-symbol <X570A>
+collating-symbol <X5800>
+collating-symbol <X5906>
+collating-symbol <X5908>
+collating-symbol <X590A>
+collating-symbol <X590C>
+collating-symbol <X590E>
+collating-symbol <X5910>
+collating-symbol <X5912>
+collating-symbol <X5914>
+collating-symbol <X5A00>
+collating-symbol <X5B06>
+collating-symbol <X5B08>
+collating-symbol <X5B0A>
+collating-symbol <X5B0C>
+collating-symbol <X5B0E>
+collating-symbol <X5B10>
+collating-symbol <X5C00>
+collating-symbol <X5D06>
+collating-symbol <X5D08>
+collating-symbol <X5D0A>
+collating-symbol <X5D0C>
+collating-symbol <X5D0E>
+collating-symbol <X5D10>
+collating-symbol <X5D12>
+collating-symbol <X5D14>
+collating-symbol <X5D16>
+collating-symbol <X5D18>
+collating-symbol <X5D1A>
+collating-symbol <X5D1C>
+collating-symbol <X5D1E>
+collating-symbol <X5D20>
+collating-symbol <X5D22>
+collating-symbol <X5D24>
+collating-symbol <X5D26>
+collating-symbol <X5D28>
+collating-symbol <X5D2A>
+collating-symbol <X5D2C>
+collating-symbol <X5D2E>
+collating-symbol <X5D30>
+collating-symbol <X5D32>
+collating-symbol <X5D34>
+collating-symbol <X5D36>
+collating-symbol <X5D38>
+collating-symbol <X5D3A>
+collating-symbol <X5D3C>
+collating-symbol <X5D3E>
+collating-symbol <X5D40>
+collating-symbol <X5D42>
+collating-symbol <X5D44>
+collating-symbol <X5D46>
+collating-symbol <X5D48>
+collating-symbol <X5D4A>
+collating-symbol <X5D4C>
+collating-symbol <X5D4E>
+collating-symbol <X5D56>
+collating-symbol <X5D58>
+collating-symbol <X5D5A>
+collating-symbol <X5D5C>
+collating-symbol <X5D5E>
+collating-symbol <X5D64>
+collating-symbol <X5D66>
+collating-symbol <X5D68>
+collating-symbol <X5D6A>
+collating-symbol <X5D6C>
+collating-symbol <X5D6E>
+collating-symbol <X5D70>
+collating-symbol <X5D72>
+collating-symbol <X5D74>
+collating-symbol <X5D76>
+collating-symbol <X5D78>
+collating-symbol <X5D7A>
+collating-symbol <X5D7C>
+collating-symbol <X5D7E>
 
 order_start forward;forward;forward;forward
 
@@ -550,6 +553,7 @@ order_start forward;forward;forward;forward
 <XCE>
 <XD0>
 <XD2>
+<XD6>
 <XFB>
 <X0304>
 <X0306>
@@ -560,431 +564,433 @@ order_start forward;forward;forward;forward
 <X050A>
 <X050E>
 <X0600>
-<X0722>
-<X072E>
-<X0752>
-<X075A>
+<X0726>
+<X0732>
+<X0756>
+<X075E>
 <X0800>
-<X0969>
-<X0977>
-<X098D>
-<X098F>
-<X0991>
-<X0993>
-<X0995>
-<X0997>
-<X0A7B>
-<X0A7D>
-<X0A87>
-<X0A89>
-<X0A8B>
-<X0A8F>
-<X0A91>
+<X096A>
+<X0978>
+<X098E>
+<X0990>
+<X0992>
+<X0994>
+<X0996>
+<X0998>
+<X0A7E>
+<X0A80>
+<X0A8A>
+<X0A8C>
+<X0A90>
+<X0A94>
+<X0A96>
 <X0C04>
 <X0C0A>
-<X0C76>
-<X0C7E>
+<X0C78>
 <X0C80>
 <X0C82>
-<X0C86>
-<X0C8A>
-<X0D76>
+<X0C84>
+<X0C88>
+<X0C8C>
+<X0D7C>
 <X1066>
 <X1068>
 <X106A>
 <X106C>
 <X106E>
 <X1070>
-<X1200>
-<X1400>
-<X1600>
-<X1800>
-<X1A00>
-<X1C00>
-<X1E00>
-<X2000>
-<X2200>
-<X2400>
-<X2900>
-<X2A06>
-<X2A08>
-<X2A0A>
-<X2A0C>
-<X2A0E>
-<X2A10>
-<X2A12>
-<X2A14>
-<X2A16>
-<X2A18>
-<X2A1A>
-<X2A1C>
-<X2B00>
-<X2C06>
-<X2C08>
-<X2C0A>
-<X2C0C>
-<X2C0E>
-<X2C10>
-<X2C12>
-<X2C14>
-<X2C16>
-<X2C18>
-<X2D00>
-<X2E06>
-<X2E08>
-<X2E0A>
-<X2E0C>
-<X2E0E>
-<X2E10>
-<X2E12>
-<X2E14>
-<X2F00>
-<X3006>
-<X3008>
-<X300A>
-<X300C>
-<X300E>
-<X3010>
-<X3012>
-<X3014>
-<X3016>
-<X3018>
-<X301A>
-<X3100>
-<X3206>
-<X3208>
-<X320A>
-<X320C>
-<X320E>
-<X3210>
-<X3212>
-<X3214>
-<X3216>
-<X3218>
-<X321A>
-<X321C>
-<X321E>
-<X3220>
-<X3222>

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-stable@freebsd.org  Thu Dec  6 09:51:52 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5E951325D57;
 Thu,  6 Dec 2018 09:51:52 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4C9E089938;
 Thu,  6 Dec 2018 09:51:52 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2F2C621D79;
 Thu,  6 Dec 2018 09:51:52 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB69pqg7013673;
 Thu, 6 Dec 2018 09:51:52 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB69pqLq013672;
 Thu, 6 Dec 2018 09:51:52 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812060951.wB69pqLq013672@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 09:51:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341626 - stable/12/usr.bin/man
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: stable/12/usr.bin/man
X-SVN-Commit-Revision: 341626
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4C9E089938
X-Spamd-Result: default: False [-0.90 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_SHORT(-0.33)[-0.326,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 09:51:52 -0000

Author: yuripv
Date: Thu Dec  6 09:51:51 2018
New Revision: 341626
URL: https://svnweb.freebsd.org/changeset/base/341626

Log:
  MFC r340128:
  Teach man(1) about C.UTF-8.
  
  While here, use LANG as the proper source to select man pages language/encoding,
  falling back to LC_CTYPE.
  
  Reviewed by:	bapt
  Differential Revision:	https://reviews.freebsd.org/D17835

Modified:
  stable/12/usr.bin/man/man.sh
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.bin/man/man.sh
==============================================================================
--- stable/12/usr.bin/man/man.sh	Thu Dec  6 09:47:23 2018	(r341625)
+++ stable/12/usr.bin/man/man.sh	Thu Dec  6 09:51:51 2018	(r341626)
@@ -662,6 +662,7 @@ man_setup_width() {
 # Setup necessary locale variables.
 man_setup_locale() {
 	local lang_cc
+	local locstr
 
 	locpaths='.'
 	man_charset='US-ASCII'
@@ -670,18 +671,25 @@ man_setup_locale() {
 	if [ -n "$oflag" ]; then
 		decho 'Using non-localized manpages'
 	else
-		# Use the locale tool to give us the proper LC_CTYPE
+		# Use the locale tool to give us proper locale information
 		eval $( $LOCALE )
 
-		case "$LC_CTYPE" in
+		if [ -n "$LANG" ]; then
+			locstr=$LANG
+		else
+			locstr=$LC_CTYPE
+		fi
+
+		case "$locstr" in
 		C)		;;
+		C.UTF-8)	;;
 		POSIX)		;;
 		[a-z][a-z]_[A-Z][A-Z]\.*)
-				lang_cc="${LC_CTYPE%.*}"
-				man_lang="${LC_CTYPE%_*}"
+				lang_cc="${locstr%.*}"
+				man_lang="${locstr%_*}"
 				man_country="${lang_cc#*_}"
-				man_charset="${LC_CTYPE#*.}"
-				locpaths="$LC_CTYPE"
+				man_charset="${locstr#*.}"
+				locpaths="$locstr"
 				locpaths="$locpaths:$man_lang.$man_charset"
 				if [ "$man_lang" != "en" ]; then
 					locpaths="$locpaths:en.$man_charset"

From owner-svn-src-stable@freebsd.org  Thu Dec  6 10:41:24 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C720F1326F99;
 Thu,  6 Dec 2018 10:41:23 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 796A28AFBC;
 Thu,  6 Dec 2018 10:41:23 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5A3E52266D;
 Thu,  6 Dec 2018 10:41:23 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6AfNEo036823;
 Thu, 6 Dec 2018 10:41:23 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6AfMVn036819;
 Thu, 6 Dec 2018 10:41:22 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812061041.wB6AfMVn036819@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 10:41:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341627 - in stable/12: lib/libc/locale share/ctypedef
 tools/tools/locale tools/tools/locale/tools
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: in stable/12: lib/libc/locale share/ctypedef
 tools/tools/locale tools/tools/locale/tools
X-SVN-Commit-Revision: 341627
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 796A28AFBC
X-Spamd-Result: default: False [-0.92 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.39)[-0.385,0];
 NEURAL_SPAM_LONG(0.02)[0.020,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.55)[-0.552,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 10:41:24 -0000

Author: yuripv
Date: Thu Dec  6 10:41:22 2018
New Revision: 341627
URL: https://svnweb.freebsd.org/changeset/base/341627

Log:
  MFC r340144:
  Add hybrid C.UTF-8 locale being identical to default C locale except
  that it uses the same ctype maps and functions as other UTF-8 locales.
  
  Reviewed by:	bapt, cem, eadler
  Differential Revision:	https://reviews.freebsd.org/D17833

Added:
  stable/12/share/ctypedef/C.UTF-8.src
     - copied unchanged from r340144, head/share/ctypedef/C.UTF-8.src
Deleted:
  stable/12/share/ctypedef/en_US.UTF-8.src
Modified:
  stable/12/lib/libc/locale/collate.c
  stable/12/lib/libc/locale/ldpart.c
  stable/12/share/ctypedef/Makefile
  stable/12/tools/tools/locale/Makefile
  stable/12/tools/tools/locale/tools/cldr2def.pl
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/libc/locale/collate.c
==============================================================================
--- stable/12/lib/libc/locale/collate.c	Thu Dec  6 09:51:51 2018	(r341626)
+++ stable/12/lib/libc/locale/collate.c	Thu Dec  6 10:41:22 2018	(r341627)
@@ -84,7 +84,8 @@ destruct_collate(void *t)
 void *
 __collate_load(const char *encoding, __unused locale_t unused)
 {
-	if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) {
+	if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0 ||
+	    strncmp(encoding, "C.", 2) == 0) {
 		return &__xlocale_C_collate;
 	}
 	struct xlocale_collate *table = calloc(sizeof(struct xlocale_collate), 1);
@@ -122,7 +123,8 @@ __collate_load_tables_l(const char *encoding, struct x
 	table->__collate_load_error = 1;
 
 	/* 'encoding' must be already checked. */
-	if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) {
+	if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0 ||
+	    strncmp(encoding, "C.", 2) == 0) {
 		return (_LDP_CACHE);
 	}
 

Modified: stable/12/lib/libc/locale/ldpart.c
==============================================================================
--- stable/12/lib/libc/locale/ldpart.c	Thu Dec  6 09:51:51 2018	(r341626)
+++ stable/12/lib/libc/locale/ldpart.c	Thu Dec  6 10:41:22 2018	(r341627)
@@ -63,7 +63,8 @@ __part_load_locale(const char *name,
 	size_t		namesize, bufsize;
 
 	/* 'name' must be already checked. */
-	if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0) {
+	if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0 ||
+	    strncmp(name, "C.", 2) == 0) {
 		*using_locale = 0;
 		return (_LDP_CACHE);
 	}

Copied: stable/12/share/ctypedef/C.UTF-8.src (from r340144, head/share/ctypedef/C.UTF-8.src)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/12/share/ctypedef/C.UTF-8.src	Thu Dec  6 10:41:22 2018	(r341627, copy of r340144, head/share/ctypedef/C.UTF-8.src)
@@ -0,0 +1,6372 @@
+# Warning: Do not edit. This file is automatically generated from the
+# tools in /usr/src/tools/tools/locale. The data is obtained from the
+# CLDR project, obtained from http://cldr.unicode.org/
+# -----------------------------------------------------------------------------
+
+comment_char *
+escape_char /
+
+LC_CTYPE
+
+**********************************************************************
+* 0x0000 - 0x007F Basic Latin
+* 0x0080 - 0x00FF Latin-1 Supplement
+* 0x0100 - 0x017F Latin Extended-A
+* 0x0180 - 0x024F Latin Extended-B
+* 0x0250 - 0x02AF IPA Extensions
+* 0x1D00 - 0x1D7F Phonetic Extensions
+* 0x1D80 - 0x1DBF Phonetic Extensions Supplement
+* 0x1E00 - 0x1EFF Latin Extended Additional
+* 0x2150 - 0x218F Number Forms (partial - Roman Numerals)
+* 0x2C60 - 0x2C7F Latin Extended-C
+* 0xA720 - 0xA7FF Latin Extended-D
+* 0xAB30 - 0xAB6F Latin Extended-E
+* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial)
+* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial)
+**********************************************************************
+upper	<A>;...;<Z>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_GRAVE>;...;<LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_STROKE>;...;<LATIN_CAPITAL_LETTER_THORN>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_BREVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_OGONEK>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_BREVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_OGONEK>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_BREVE>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_TILDE>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_BREVE>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_OGONEK>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LIGATURE_IJ>;/
+	<LATIN_CAPITAL_LETTER_J_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_DOT>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_ENG>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_BREVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_DOUBLE_ACUTE>;/
+	<LATIN_CAPITAL_LIGATURE_OE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_TILDE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_BREVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_RING_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DOUBLE_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_OGONEK>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_TOPBAR>;/
+	<LATIN_CAPITAL_LETTER_TONE_SIX>;/
+	<LATIN_CAPITAL_LETTER_OPEN_O>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_AFRICAN_D>;...;<LATIN_CAPITAL_LETTER_D_WITH_TOPBAR>;/
+	<LATIN_CAPITAL_LETTER_REVERSED_E>;...;<LATIN_CAPITAL_LETTER_F_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_GAMMA>;/
+	<LATIN_CAPITAL_LETTER_IOTA>;...;<LATIN_CAPITAL_LETTER_K_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_TURNED_M>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_LEFT_HOOK>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_MIDDLE_TILDE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HORN>;/
+	<LATIN_CAPITAL_LETTER_OI>;/
+	<LATIN_CAPITAL_LETTER_P_WITH_HOOK>;/
+	<LATIN_LETTER_YR>;/
+	<LATIN_CAPITAL_LETTER_TONE_TWO>;/
+	<LATIN_CAPITAL_LETTER_ESH>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_RETROFLEX_HOOK>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HORN>;/
+	<LATIN_CAPITAL_LETTER_UPSILON>;...;<LATIN_CAPITAL_LETTER_Y_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_EZH>;/
+	<LATIN_CAPITAL_LETTER_EZH_REVERSED>;/
+	<LATIN_CAPITAL_LETTER_TONE_FIVE>;/
+	<LATIN_CAPITAL_LETTER_DZ_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_LJ>;/
+	<LATIN_CAPITAL_LETTER_NJ>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_CARON>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_DIAERESIS_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_DOT_ABOVE_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_AE_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_OGONEK>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_OGONEK_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_EZH_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_DZ>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_HWAIR>;...;<LATIN_CAPITAL_LETTER_N_WITH_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_AE_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_STROKE_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_DOUBLE_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_INVERTED_BREVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_DOUBLE_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_INVERTED_BREVE>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_DOUBLE_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_INVERTED_BREVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_DOUBLE_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_INVERTED_BREVE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_DOUBLE_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_INVERTED_BREVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DOUBLE_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_INVERTED_BREVE>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_COMMA_BELOW>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_COMMA_BELOW>;/
+	<LATIN_CAPITAL_LETTER_YOGH>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_LONG_RIGHT_LEG>;/
+	<LATIN_CAPITAL_LETTER_OU>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_TILDE_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_DOT_ABOVE_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_BAR>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_DIAGONAL_STROKE>;/
+	<LATIN_CAPITAL_LETTER_GLOTTAL_STOP>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_STROKE>;...;<LATIN_CAPITAL_LETTER_E_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_J_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_SMALL_Q_WITH_HOOK_TAIL>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_RING_BELOW>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_CEDILLA_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_MACRON_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_MACRON_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_TILDE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CEDILLA_AND_BREVE>;/
+	<LATIN_CAPITAL_LETTER_F_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_MACRON>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_CEDILLA>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_BREVE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_TILDE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_DIAERESIS_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_DOT_BELOW_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_CAPITAL_LETTER_M_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_M_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_M_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_TILDE_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_TILDE_AND_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_MACRON_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_MACRON_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_P_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_P_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_DOT_BELOW_AND_MACRON>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_ACUTE_AND_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_CARON_AND_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_DOT_BELOW_AND_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_T_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_BELOW>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_TILDE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_TILDE_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_MACRON_AND_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_V_WITH_TILDE>;/
+	<LATIN_CAPITAL_LETTER_V_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_X_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_X_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_DOT_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_CIRCUMFLEX>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_LINE_BELOW>;/
+	<LATIN_CAPITAL_LETTER_SHARP_S>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_TILDE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_TILDE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_TILDE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_TILDE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_I_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_TILDE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_TILDE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_TILDE>;/
+	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_GRAVE>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_HOOK_ABOVE>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_TILDE>;/
+	<LATIN_CAPITAL_LETTER_MIDDLE-WELSH_LL>;/
+	<LATIN_CAPITAL_LETTER_MIDDLE-WELSH_V>;/
+	<LATIN_CAPITAL_LETTER_Y_WITH_LOOP>;/
+	<KELVIN_SIGN>;/
+	<ANGSTROM_SIGN>;/
+	<TURNED_CAPITAL_F>;/
+	<ROMAN_NUMERAL_ONE>;...;<ROMAN_NUMERAL_ONE_THOUSAND>;/
+	<ROMAN_NUMERAL_REVERSED_ONE_HUNDRED>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_TILDE>;...;<LATIN_CAPITAL_LETTER_R_WITH_TAIL>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_ALPHA>;...;<LATIN_CAPITAL_LETTER_TURNED_ALPHA>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_HOOK>;/
+	<LATIN_CAPITAL_LETTER_HALF_H>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_SWASH_TAIL>;/
+	<LATIN_CAPITAL_LETTER_Z_WITH_SWASH_TAIL>;/
+	<LATIN_CAPITAL_LETTER_EGYPTOLOGICAL_ALEF>;/
+	<LATIN_CAPITAL_LETTER_EGYPTOLOGICAL_AIN>;/
+	<LATIN_CAPITAL_LETTER_HENG>;/
+	<LATIN_CAPITAL_LETTER_TZ>;/
+	<LATIN_CAPITAL_LETTER_TRESILLO>;/
+	<LATIN_CAPITAL_LETTER_CUATRILLO>;/
+	<LATIN_CAPITAL_LETTER_CUATRILLO_WITH_COMMA>;/
+	<LATIN_CAPITAL_LETTER_AA>;/
+	<LATIN_CAPITAL_LETTER_AO>;/
+	<LATIN_CAPITAL_LETTER_AU>;/
+	<LATIN_CAPITAL_LETTER_AV>;/
+	<LATIN_CAPITAL_LETTER_AV_WITH_HORIZONTAL_BAR>;/
+	<LATIN_CAPITAL_LETTER_AY>;/
+	<LATIN_CAPITAL_LETTER_REVERSED_C_WITH_DOT>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_DIAGONAL_STROKE>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_STROKE_AND_DIAGONAL_STROKE>;/
+	<LATIN_CAPITAL_LETTER_BROKEN_L>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_HIGH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_LONG_STROKE_OVERLAY>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_LOOP>;/
+	<LATIN_CAPITAL_LETTER_OO>;/
+	<LATIN_CAPITAL_LETTER_P_WITH_STROKE_THROUGH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_P_WITH_FLOURISH>;/
+	<LATIN_CAPITAL_LETTER_P_WITH_SQUIRREL_TAIL>;/
+	<LATIN_CAPITAL_LETTER_Q_WITH_STROKE_THROUGH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_Q_WITH_DIAGONAL_STROKE>;/
+	<LATIN_CAPITAL_LETTER_R_ROTUNDA>;/
+	<LATIN_CAPITAL_LETTER_RUM_ROTUNDA>;/
+	<LATIN_CAPITAL_LETTER_V_WITH_DIAGONAL_STROKE>;/
+	<LATIN_CAPITAL_LETTER_VY>;/
+	<LATIN_CAPITAL_LETTER_VISIGOTHIC_Z>;/
+	<LATIN_CAPITAL_LETTER_THORN_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_THORN_WITH_STROKE_THROUGH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_VEND>;/
+	<LATIN_CAPITAL_LETTER_ET>;/
+	<LATIN_CAPITAL_LETTER_IS>;/
+	<LATIN_CAPITAL_LETTER_CON>;/
+	<LATIN_CAPITAL_LETTER_INSULAR_D>;/
+	<LATIN_CAPITAL_LETTER_INSULAR_F>;/
+	<LATIN_CAPITAL_LETTER_INSULAR_G>;/
+	<LATIN_CAPITAL_LETTER_TURNED_INSULAR_G>;/
+	<LATIN_CAPITAL_LETTER_TURNED_L>;/
+	<LATIN_CAPITAL_LETTER_INSULAR_R>;/
+	<LATIN_CAPITAL_LETTER_INSULAR_S>;/
+	<LATIN_CAPITAL_LETTER_INSULAR_T>;/
+	<LATIN_CAPITAL_LETTER_SALTILLO>;/
+	<LATIN_CAPITAL_LETTER_TURNED_H>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_DESCENDER>;/
+	<LATIN_CAPITAL_LETTER_C_WITH_BAR>;/
+	<LATIN_CAPITAL_LETTER_B_WITH_FLOURISH>;/
+	<LATIN_CAPITAL_LETTER_F_WITH_STROKE>;/
+	<LATIN_CAPITAL_LETTER_VOLAPUK_AE>;/
+	<LATIN_CAPITAL_LETTER_VOLAPUK_OE>;/
+	<LATIN_CAPITAL_LETTER_VOLAPUK_UE>;/
+	<LATIN_CAPITAL_LETTER_G_WITH_OBLIQUE_STROKE>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_OBLIQUE_STROKE>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_OBLIQUE_STROKE>;/
+	<LATIN_CAPITAL_LETTER_R_WITH_OBLIQUE_STROKE>;/
+	<LATIN_CAPITAL_LETTER_S_WITH_OBLIQUE_STROKE>;/
+	<LATIN_CAPITAL_LETTER_H_WITH_HOOK>;...;<LATIN_CAPITAL_LETTER_SMALL_CAPITAL_I>;/
+	<LATIN_CAPITAL_LETTER_TURNED_K>;...;<LATIN_CAPITAL_LETTER_BETA>;/
+	<LATIN_CAPITAL_LETTER_OMEGA>;/
+	<FULLWIDTH_LATIN_CAPITAL_LETTER_A>;...;<FULLWIDTH_LATIN_CAPITAL_LETTER_Z>
+lower	<a>;...;<z>;/
+	<FEMININE_ORDINAL_INDICATOR>;/
+	<MASCULINE_ORDINAL_INDICATOR>;/
+	<LATIN_SMALL_LETTER_SHARP_S>;...;<LATIN_SMALL_LETTER_O_WITH_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_O_WITH_STROKE>;...;<LATIN_SMALL_LETTER_Y_WITH_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_A_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_A_WITH_BREVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_OGONEK>;/
+	<LATIN_SMALL_LETTER_C_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_C_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_C_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_C_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_D_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_D_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_E_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_E_WITH_BREVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_OGONEK>;/
+	<LATIN_SMALL_LETTER_E_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_G_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_G_WITH_BREVE>;/
+	<LATIN_SMALL_LETTER_G_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_G_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_H_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_H_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_I_WITH_TILDE>;/
+	<LATIN_SMALL_LETTER_I_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_I_WITH_BREVE>;/
+	<LATIN_SMALL_LETTER_I_WITH_OGONEK>;/
+	<LATIN_SMALL_LETTER_DOTLESS_I>;/
+	<LATIN_SMALL_LIGATURE_IJ>;/
+	<LATIN_SMALL_LETTER_J_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_K_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_KRA>;/
+	<LATIN_SMALL_LETTER_L_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_L_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_L_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_L_WITH_MIDDLE_DOT>;/
+	<LATIN_SMALL_LETTER_L_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_N_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_N_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_N_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_N_PRECEDED_BY_APOSTROPHE>;/
+	<LATIN_SMALL_LETTER_ENG>;/
+	<LATIN_SMALL_LETTER_O_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_O_WITH_BREVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_DOUBLE_ACUTE>;/
+	<LATIN_SMALL_LIGATURE_OE>;/
+	<LATIN_SMALL_LETTER_R_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_R_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_R_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_S_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_S_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_S_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_S_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_T_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_T_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_T_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_U_WITH_TILDE>;/
+	<LATIN_SMALL_LETTER_U_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_U_WITH_BREVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_RING_ABOVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_DOUBLE_ACUTE>;/
+	<LATIN_SMALL_LETTER_U_WITH_OGONEK>;/
+	<LATIN_SMALL_LETTER_W_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_Y_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_Z_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_Z_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_Z_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_LONG_S>;/
+	<LATIN_SMALL_LETTER_B_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_B_WITH_TOPBAR>;/
+	<LATIN_SMALL_LETTER_TONE_SIX>;/
+	<LATIN_SMALL_LETTER_C_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_D_WITH_TOPBAR>;/
+	<LATIN_SMALL_LETTER_TURNED_DELTA>;/
+	<LATIN_SMALL_LETTER_F_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_HV>;/
+	<LATIN_SMALL_LETTER_K_WITH_HOOK>;...;<LATIN_SMALL_LETTER_LAMBDA_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_N_WITH_LONG_RIGHT_LEG>;/
+	<LATIN_SMALL_LETTER_O_WITH_HORN>;/
+	<LATIN_SMALL_LETTER_OI>;/
+	<LATIN_SMALL_LETTER_P_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_TONE_TWO>;/
+	<LATIN_LETTER_REVERSED_ESH_LOOP>;/
+	<LATIN_SMALL_LETTER_T_WITH_PALATAL_HOOK>;/
+	<LATIN_SMALL_LETTER_T_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_U_WITH_HORN>;/
+	<LATIN_SMALL_LETTER_Y_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_Z_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_EZH_REVERSED>;/
+	<LATIN_SMALL_LETTER_EZH_WITH_TAIL>;/
+	<LATIN_SMALL_LETTER_TONE_FIVE>;...;<LATIN_LETTER_WYNN>;/
+	<LATIN_SMALL_LETTER_DZ_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_LJ>;/
+	<LATIN_SMALL_LETTER_NJ>;/
+	<LATIN_SMALL_LETTER_A_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_I_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_O_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_U_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_U_WITH_DIAERESIS_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_U_WITH_DIAERESIS_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_U_WITH_DIAERESIS_AND_CARON>;/
+	<LATIN_SMALL_LETTER_U_WITH_DIAERESIS_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_TURNED_E>;/
+	<LATIN_SMALL_LETTER_A_WITH_DIAERESIS_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_A_WITH_DOT_ABOVE_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_AE_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_G_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_G_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_K_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_O_WITH_OGONEK>;/
+	<LATIN_SMALL_LETTER_O_WITH_OGONEK_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_EZH_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_J_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_DZ>;/
+	<LATIN_SMALL_LETTER_G_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_N_WITH_GRAVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_AE_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_O_WITH_STROKE_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_A_WITH_DOUBLE_GRAVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_INVERTED_BREVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_DOUBLE_GRAVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_INVERTED_BREVE>;/
+	<LATIN_SMALL_LETTER_I_WITH_DOUBLE_GRAVE>;/
+	<LATIN_SMALL_LETTER_I_WITH_INVERTED_BREVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_DOUBLE_GRAVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_INVERTED_BREVE>;/
+	<LATIN_SMALL_LETTER_R_WITH_DOUBLE_GRAVE>;/
+	<LATIN_SMALL_LETTER_R_WITH_INVERTED_BREVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_DOUBLE_GRAVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_INVERTED_BREVE>;/
+	<LATIN_SMALL_LETTER_S_WITH_COMMA_BELOW>;/
+	<LATIN_SMALL_LETTER_T_WITH_COMMA_BELOW>;/
+	<LATIN_SMALL_LETTER_YOGH>;/
+	<LATIN_SMALL_LETTER_H_WITH_CARON>;/
+	<LATIN_SMALL_LETTER_D_WITH_CURL>;/
+	<LATIN_SMALL_LETTER_OU>;/
+	<LATIN_SMALL_LETTER_Z_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_A_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_O_WITH_DIAERESIS_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_O_WITH_TILDE_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_O_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_DOT_ABOVE_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_Y_WITH_MACRON>;...;<LATIN_SMALL_LETTER_QP_DIGRAPH>;/
+	<LATIN_SMALL_LETTER_C_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_S_WITH_SWASH_TAIL>;/
+	<LATIN_SMALL_LETTER_Z_WITH_SWASH_TAIL>;/
+	<LATIN_SMALL_LETTER_GLOTTAL_STOP>;/
+	<LATIN_SMALL_LETTER_E_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_J_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_Q_WITH_HOOK_TAIL>;/
+	<LATIN_SMALL_LETTER_R_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_Y_WITH_STROKE>;...;<LATIN_SMALL_LETTER_REVERSED_R_WITH_FISHHOOK>;/
+	<LATIN_LETTER_SMALL_CAPITAL_R>;...;<LATIN_SMALL_LETTER_EZH_WITH_CURL>;/
+	<LATIN_LETTER_PHARYNGEAL_VOICED_FRICATIVE>;...;<MODIFIER_LETTER_SMALL_Y>;/
+	<MODIFIER_LETTER_SMALL_GAMMA>;...;<MODIFIER_LETTER_SMALL_REVERSED_GLOTTAL_STOP>;/
+	<LATIN_LETTER_SMALL_CAPITAL_A>;...;<LATIN_LETTER_AIN>;/
+	<MODIFIER_LETTER_CAPITAL_A>;...;<MODIFIER_LETTER_CAPITAL_R>;/
+	<MODIFIER_LETTER_CAPITAL_T>;...;<MODIFIER_LETTER_SMALL_AIN>;/
+	<LATIN_SUBSCRIPT_SMALL_LETTER_I>;...;<LATIN_SUBSCRIPT_SMALL_LETTER_V>;/
+	<LATIN_SMALL_LETTER_UE>;...;<LATIN_SMALL_LETTER_TURNED_G>;/
+	<LATIN_SMALL_LETTER_INSULAR_G>;...;<LATIN_SMALL_LETTER_UPSILON_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_B_WITH_PALATAL_HOOK>;...;<MODIFIER_LETTER_SMALL_EZH>;/
+	<LATIN_SMALL_LETTER_A_WITH_RING_BELOW>;/
+	<LATIN_SMALL_LETTER_B_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_B_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_B_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_C_WITH_CEDILLA_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_D_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_D_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_D_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_D_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_D_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_SMALL_LETTER_E_WITH_MACRON_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_MACRON_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_SMALL_LETTER_E_WITH_TILDE_BELOW>;/
+	<LATIN_SMALL_LETTER_E_WITH_CEDILLA_AND_BREVE>;/
+	<LATIN_SMALL_LETTER_F_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_G_WITH_MACRON>;/
+	<LATIN_SMALL_LETTER_H_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_H_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_H_WITH_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_H_WITH_CEDILLA>;/
+	<LATIN_SMALL_LETTER_H_WITH_BREVE_BELOW>;/
+	<LATIN_SMALL_LETTER_I_WITH_TILDE_BELOW>;/
+	<LATIN_SMALL_LETTER_I_WITH_DIAERESIS_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_K_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_K_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_K_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_L_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_L_WITH_DOT_BELOW_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_L_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_L_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_SMALL_LETTER_M_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_M_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_M_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_N_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_N_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_N_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_N_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_SMALL_LETTER_O_WITH_TILDE_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_O_WITH_TILDE_AND_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_O_WITH_MACRON_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_MACRON_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_P_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_P_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_R_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_R_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_R_WITH_DOT_BELOW_AND_MACRON>;/
+	<LATIN_SMALL_LETTER_R_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_S_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_S_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_S_WITH_ACUTE_AND_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_S_WITH_CARON_AND_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_S_WITH_DOT_BELOW_AND_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_T_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_T_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_T_WITH_LINE_BELOW>;/
+	<LATIN_SMALL_LETTER_T_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_SMALL_LETTER_U_WITH_DIAERESIS_BELOW>;/
+	<LATIN_SMALL_LETTER_U_WITH_TILDE_BELOW>;/
+	<LATIN_SMALL_LETTER_U_WITH_CIRCUMFLEX_BELOW>;/
+	<LATIN_SMALL_LETTER_U_WITH_TILDE_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_U_WITH_MACRON_AND_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_V_WITH_TILDE>;/
+	<LATIN_SMALL_LETTER_V_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_W_WITH_GRAVE>;/
+	<LATIN_SMALL_LETTER_W_WITH_ACUTE>;/
+	<LATIN_SMALL_LETTER_W_WITH_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_W_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_W_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_X_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_X_WITH_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_Y_WITH_DOT_ABOVE>;/
+	<LATIN_SMALL_LETTER_Z_WITH_CIRCUMFLEX>;/
+	<LATIN_SMALL_LETTER_Z_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_Z_WITH_LINE_BELOW>;...;<LATIN_SMALL_LETTER_LONG_S_WITH_HIGH_STROKE>;/
+	<LATIN_SMALL_LETTER_DELTA>;/
+	<LATIN_SMALL_LETTER_A_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_A_WITH_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX_AND_TILDE>;/
+	<LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_A_WITH_BREVE_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_A_WITH_BREVE_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_BREVE_AND_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_A_WITH_BREVE_AND_TILDE>;/
+	<LATIN_SMALL_LETTER_A_WITH_BREVE_AND_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_E_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_E_WITH_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_TILDE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_AND_TILDE>;/
+	<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_I_WITH_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_I_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_O_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_O_WITH_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX_AND_TILDE>;/
+	<LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_O_WITH_HORN_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_O_WITH_HORN_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_HORN_AND_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_O_WITH_HORN_AND_TILDE>;/
+	<LATIN_SMALL_LETTER_O_WITH_HORN_AND_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_U_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_U_WITH_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_HORN_AND_ACUTE>;/
+	<LATIN_SMALL_LETTER_U_WITH_HORN_AND_GRAVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_HORN_AND_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_U_WITH_HORN_AND_TILDE>;/
+	<LATIN_SMALL_LETTER_U_WITH_HORN_AND_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_Y_WITH_GRAVE>;/
+	<LATIN_SMALL_LETTER_Y_WITH_DOT_BELOW>;/
+	<LATIN_SMALL_LETTER_Y_WITH_HOOK_ABOVE>;/
+	<LATIN_SMALL_LETTER_Y_WITH_TILDE>;/
+	<LATIN_SMALL_LETTER_MIDDLE-WELSH_LL>;/
+	<LATIN_SMALL_LETTER_MIDDLE-WELSH_V>;/
+	<LATIN_SMALL_LETTER_Y_WITH_LOOP>;/
+	<SUPERSCRIPT_LATIN_SMALL_LETTER_I>;/
+	<SUPERSCRIPT_LATIN_SMALL_LETTER_N>;/
+	<LATIN_SUBSCRIPT_SMALL_LETTER_A>;...;<LATIN_SUBSCRIPT_SMALL_LETTER_T>;/
+	<TURNED_SMALL_F>;/
+	<SMALL_ROMAN_NUMERAL_ONE>;...;<SMALL_ROMAN_NUMERAL_ONE_THOUSAND>;/
+	<LATIN_SMALL_LETTER_REVERSED_C>;/
+	<LATIN_SMALL_LETTER_L_WITH_DOUBLE_BAR>;/
+	<LATIN_SMALL_LETTER_A_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_T_WITH_DIAGONAL_STROKE>;/
+	<LATIN_SMALL_LETTER_H_WITH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_K_WITH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_Z_WITH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_V_WITH_RIGHT_HOOK>;/
+	<LATIN_SMALL_LETTER_W_WITH_HOOK>;/
+	<LATIN_SMALL_LETTER_V_WITH_CURL>;/
+	<LATIN_SMALL_LETTER_HALF_H>;...;<MODIFIER_LETTER_CAPITAL_V>;/
+	<LATIN_SMALL_LETTER_EGYPTOLOGICAL_ALEF>;/
+	<LATIN_SMALL_LETTER_EGYPTOLOGICAL_AIN>;/
+	<LATIN_SMALL_LETTER_HENG>;/
+	<LATIN_SMALL_LETTER_TZ>;/
+	<LATIN_SMALL_LETTER_TRESILLO>;/
+	<LATIN_SMALL_LETTER_CUATRILLO>;/
+	<LATIN_SMALL_LETTER_CUATRILLO_WITH_COMMA>;...;<LATIN_LETTER_SMALL_CAPITAL_S>;/
+	<LATIN_SMALL_LETTER_AA>;/
+	<LATIN_SMALL_LETTER_AO>;/
+	<LATIN_SMALL_LETTER_AU>;/
+	<LATIN_SMALL_LETTER_AV>;/
+	<LATIN_SMALL_LETTER_AV_WITH_HORIZONTAL_BAR>;/
+	<LATIN_SMALL_LETTER_AY>;/
+	<LATIN_SMALL_LETTER_REVERSED_C_WITH_DOT>;/
+	<LATIN_SMALL_LETTER_K_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_K_WITH_DIAGONAL_STROKE>;/
+	<LATIN_SMALL_LETTER_K_WITH_STROKE_AND_DIAGONAL_STROKE>;/
+	<LATIN_SMALL_LETTER_BROKEN_L>;/
+	<LATIN_SMALL_LETTER_L_WITH_HIGH_STROKE>;/
+	<LATIN_SMALL_LETTER_O_WITH_LONG_STROKE_OVERLAY>;/
+	<LATIN_SMALL_LETTER_O_WITH_LOOP>;/
+	<LATIN_SMALL_LETTER_OO>;/
+	<LATIN_SMALL_LETTER_P_WITH_STROKE_THROUGH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_P_WITH_FLOURISH>;/
+	<LATIN_SMALL_LETTER_P_WITH_SQUIRREL_TAIL>;/
+	<LATIN_SMALL_LETTER_Q_WITH_STROKE_THROUGH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_Q_WITH_DIAGONAL_STROKE>;/
+	<LATIN_SMALL_LETTER_R_ROTUNDA>;/
+	<LATIN_SMALL_LETTER_RUM_ROTUNDA>;/
+	<LATIN_SMALL_LETTER_V_WITH_DIAGONAL_STROKE>;/
+	<LATIN_SMALL_LETTER_VY>;/
+	<LATIN_SMALL_LETTER_VISIGOTHIC_Z>;/
+	<LATIN_SMALL_LETTER_THORN_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_THORN_WITH_STROKE_THROUGH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_VEND>;/
+	<LATIN_SMALL_LETTER_ET>;/
+	<LATIN_SMALL_LETTER_IS>;/
+	<LATIN_SMALL_LETTER_CON>;...;<LATIN_SMALL_LETTER_UM>;/
+	<LATIN_SMALL_LETTER_INSULAR_D>;/
+	<LATIN_SMALL_LETTER_INSULAR_F>;/
+	<LATIN_SMALL_LETTER_TURNED_INSULAR_G>;/
+	<LATIN_SMALL_LETTER_TURNED_L>;/
+	<LATIN_SMALL_LETTER_INSULAR_R>;/
+	<LATIN_SMALL_LETTER_INSULAR_S>;/
+	<LATIN_SMALL_LETTER_INSULAR_T>;/
+	<LATIN_SMALL_LETTER_SALTILLO>;/
+	<LATIN_SMALL_LETTER_L_WITH_RETROFLEX_HOOK_AND_BELT>;/
+	<LATIN_SMALL_LETTER_N_WITH_DESCENDER>;/
+	<LATIN_SMALL_LETTER_C_WITH_BAR>;...;<LATIN_SMALL_LETTER_H_WITH_PALATAL_HOOK>;/
+	<LATIN_SMALL_LETTER_B_WITH_FLOURISH>;/
+	<LATIN_SMALL_LETTER_F_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_VOLAPUK_AE>;/
+	<LATIN_SMALL_LETTER_VOLAPUK_OE>;/
+	<LATIN_SMALL_LETTER_VOLAPUK_UE>;/
+	<LATIN_SMALL_LETTER_G_WITH_OBLIQUE_STROKE>;/
+	<LATIN_SMALL_LETTER_K_WITH_OBLIQUE_STROKE>;/
+	<LATIN_SMALL_LETTER_N_WITH_OBLIQUE_STROKE>;/
+	<LATIN_SMALL_LETTER_R_WITH_OBLIQUE_STROKE>;/
+	<LATIN_SMALL_LETTER_S_WITH_OBLIQUE_STROKE>;/
+	<LATIN_SMALL_LETTER_BETA>;/
+	<LATIN_SMALL_LETTER_OMEGA>;/
+	<MODIFIER_LETTER_CAPITAL_H_WITH_STROKE>;...;<LATIN_LETTER_SMALL_CAPITAL_TURNED_M>;/
+	<LATIN_SMALL_LETTER_BARRED_ALPHA>;...;<LATIN_SMALL_LETTER_OPEN_O_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_INVERTED_OE>;...;<LATIN_SMALL_LETTER_Y_WITH_SHORT_RIGHT_LEG>;/
+	<MODIFIER_LETTER_SMALL_HENG>;...;<LATIN_SMALL_LETTER_INVERTED_ALPHA>;/
+	<LATIN_SMALL_LIGATURE_FF>;...;<LATIN_SMALL_LIGATURE_ST>;/
+	<FULLWIDTH_LATIN_SMALL_LETTER_A>;...;<FULLWIDTH_LATIN_SMALL_LETTER_Z>
+alpha	<LATIN_LETTER_TWO_WITH_STROKE>;/
+	<LATIN_LETTER_DENTAL_CLICK>;...;<LATIN_LETTER_RETROFLEX_CLICK>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_SMALL_LETTER_Z_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_SMALL_LETTER_J>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_SMALL_LETTER_J>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_SMALL_LETTER_Z>;/
+	<LATIN_LETTER_GLOTTAL_STOP>;/
+	<ROMAN_NUMERAL_ONE_THOUSAND_C_D>;...;<ROMAN_NUMERAL_TEN_THOUSAND>;/
+	<ROMAN_NUMERAL_SIX_LATE_FORM>;...;<ROMAN_NUMERAL_ONE_HUNDRED_THOUSAND>;/
+	<LATIN_LETTER_SINOLOGICAL_DOT>;/
+	<LATIN_EPIGRAPHIC_LETTER_SIDEWAYS_I>;/
+	<LATIN_EPIGRAPHIC_LETTER_REVERSED_F>;...;<LATIN_EPIGRAPHIC_LETTER_ARCHAIC_M>
+space	<tab>;...;<carriage-return>;/
+	<space>
+cntrl	<NULL>;...;<INFORMATION_SEPARATOR_ONE>;/
+	<DELETE>
+graph	<EXCLAMATION_MARK>;...;<TILDE>;/
+	<FEMININE_ORDINAL_INDICATOR>;/
+	<MASCULINE_ORDINAL_INDICATOR>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_GRAVE>;...;<LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_O_WITH_STROKE>;...;<LATIN_SMALL_LETTER_O_WITH_DIAERESIS>;/
+	<LATIN_SMALL_LETTER_O_WITH_STROKE>;...;<LATIN_SMALL_LETTER_Y_WITH_DIAERESIS>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_MACRON>;...;<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_DOT>;/
+	<LATIN_SMALL_LETTER_L_WITH_MIDDLE_DOT>;...;<LATIN_SMALL_LETTER_LONG_S>;/
+	<LATIN_SMALL_LETTER_B_WITH_STROKE>;...;<LATIN_LETTER_WYNN>;/
+	<LATIN_LETTER_DENTAL_CLICK>;...;<LATIN_SMALL_LETTER_O_WITH_STROKE_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_DOUBLE_GRAVE>;...;<LATIN_SMALL_LETTER_S_WITH_SWASH_TAIL>;/
+	<LATIN_SMALL_LETTER_Z_WITH_SWASH_TAIL>;...;<LATIN_SMALL_LETTER_REVERSED_R_WITH_FISHHOOK>;/
+	<LATIN_LETTER_SMALL_CAPITAL_R>;...;<MODIFIER_LETTER_SMALL_Y>;/
+	<MODIFIER_LETTER_SMALL_GAMMA>;...;<MODIFIER_LETTER_SMALL_REVERSED_GLOTTAL_STOP>;/
+	<LATIN_LETTER_SMALL_CAPITAL_A>;...;<LATIN_LETTER_AIN>;/
+	<MODIFIER_LETTER_CAPITAL_A>;...;<MODIFIER_LETTER_CAPITAL_R>;/
+	<MODIFIER_LETTER_CAPITAL_T>;...;<MODIFIER_LETTER_SMALL_AIN>;/
+	<LATIN_SUBSCRIPT_SMALL_LETTER_I>;...;<LATIN_SUBSCRIPT_SMALL_LETTER_V>;/
+	<LATIN_SMALL_LETTER_UE>;...;<LATIN_SMALL_LETTER_TURNED_G>;/
+	<LATIN_SMALL_LETTER_INSULAR_G>;...;<LATIN_SMALL_LETTER_UPSILON_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_B_WITH_PALATAL_HOOK>;...;<MODIFIER_LETTER_SMALL_EZH>;/
+	<LATIN_CAPITAL_LETTER_A_WITH_RING_BELOW>;...;<LATIN_SMALL_LETTER_M_WITH_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_M_WITH_DOT_ABOVE>;...;<LATIN_SMALL_LETTER_V_WITH_DOT_BELOW>;/
+	<LATIN_CAPITAL_LETTER_W_WITH_GRAVE>;...;<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX_AND_ACUTE>;/
+	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_GRAVE>;...;<LATIN_SMALL_LETTER_Y_WITH_LOOP>;/
+	<SUPERSCRIPT_LATIN_SMALL_LETTER_I>;/
+	<SUPERSCRIPT_LATIN_SMALL_LETTER_N>;/
+	<LATIN_SUBSCRIPT_SMALL_LETTER_A>;...;<LATIN_SUBSCRIPT_SMALL_LETTER_T>;/
+	<KELVIN_SIGN>;/
+	<ANGSTROM_SIGN>;/
+	<TURNED_CAPITAL_F>;/
+	<TURNED_SMALL_F>;/
+	<ROMAN_NUMERAL_ONE>;...;<SMALL_ROMAN_NUMERAL_ONE_THOUSAND>;/
+	<ROMAN_NUMERAL_ONE_THOUSAND_C_D>;...;<ROMAN_NUMERAL_ONE_HUNDRED_THOUSAND>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR>;...;<LATIN_CAPITAL_LETTER_Z_WITH_SWASH_TAIL>;/
+	<LATIN_CAPITAL_LETTER_EGYPTOLOGICAL_ALEF>;...;<LATIN_SMALL_LETTER_REVERSED_C_WITH_DOT>;/
+	<LATIN_CAPITAL_LETTER_K_WITH_STROKE>;...;<LATIN_SMALL_LETTER_TURNED_INSULAR_G>;/
+	<LATIN_CAPITAL_LETTER_TURNED_L>;...;<LATIN_SMALL_LETTER_INSULAR_T>;/
+	<LATIN_CAPITAL_LETTER_SALTILLO>;...;<LATIN_CAPITAL_LETTER_SMALL_CAPITAL_I>;/
+	<LATIN_CAPITAL_LETTER_TURNED_K>;...;<LATIN_SMALL_LETTER_OMEGA>;/
+	<LATIN_EPIGRAPHIC_LETTER_SIDEWAYS_I>;...;<LATIN_EPIGRAPHIC_LETTER_ARCHAIC_M>;/
+	<LATIN_SMALL_LETTER_BARRED_ALPHA>;...;<LATIN_SMALL_LETTER_OPEN_O_WITH_STROKE>;/
+	<LATIN_SMALL_LETTER_INVERTED_OE>;...;<LATIN_SMALL_LETTER_Y_WITH_SHORT_RIGHT_LEG>;/
+	<MODIFIER_LETTER_SMALL_HENG>;...;<LATIN_SMALL_LETTER_INVERTED_ALPHA>;/
+	<LATIN_SMALL_LIGATURE_FF>;...;<LATIN_SMALL_LIGATURE_ST>;/
+	<FULLWIDTH_LATIN_CAPITAL_LETTER_A>;...;<FULLWIDTH_LATIN_CAPITAL_LETTER_Z>;/
+	<FULLWIDTH_LATIN_SMALL_LETTER_A>;...;<FULLWIDTH_LATIN_SMALL_LETTER_Z>
+punct	<EXCLAMATION_MARK>;...;<NUMBER_SIGN>;/
+	<PERCENT_SIGN>;...;<ASTERISK>;/
+	<COMMA>;...;<SOLIDUS>;/
+	<COLON>;/
+	<SEMICOLON>;/
+	<QUESTION_MARK>;/
+	<COMMERCIAL_AT>;/
+	<LEFT_SQUARE_BRACKET>;...;<RIGHT_SQUARE_BRACKET>;/
+	<LOW_LINE>;/
+	<LEFT_CURLY_BRACKET>;/
+	<RIGHT_CURLY_BRACKET>
+digit	<zero>;...;<nine>
+xdigit	<zero>;...;<nine>;/
+	<A>;...;<F>;/
+	<a>;...;<f>
+blank	<tab>;/
+	<space>
+toupper	(<a>,<A>);/
+	(<b>,<B>);/
+	(<c>,<C>);/
+	(<d>,<D>);/
+	(<e>,<E>);/
+	(<f>,<F>);/
+	(<g>,<G>);/
+	(<h>,<H>);/
+	(<i>,<I>);/
+	(<j>,<J>);/
+	(<k>,<K>);/
+	(<l>,<L>);/
+	(<m>,<M>);/
+	(<n>,<N>);/
+	(<o>,<O>);/
+	(<p>,<P>);/
+	(<q>,<Q>);/
+	(<r>,<R>);/
+	(<s>,<S>);/
+	(<t>,<T>);/
+	(<u>,<U>);/
+	(<v>,<V>);/
+	(<w>,<W>);/
+	(<x>,<X>);/
+	(<y>,<Y>);/
+	(<z>,<Z>);/
+	(<LATIN_SMALL_LETTER_A_WITH_GRAVE>,<LATIN_CAPITAL_LETTER_A_WITH_GRAVE>);/
+	(<LATIN_SMALL_LETTER_A_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_A_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_A_WITH_TILDE>,<LATIN_CAPITAL_LETTER_A_WITH_TILDE>);/
+	(<LATIN_SMALL_LETTER_A_WITH_DIAERESIS>,<LATIN_CAPITAL_LETTER_A_WITH_DIAERESIS>);/
+	(<LATIN_SMALL_LETTER_A_WITH_RING_ABOVE>,<LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE>);/
+	(<LATIN_SMALL_LETTER_AE>,<LATIN_CAPITAL_LETTER_AE>);/
+	(<LATIN_SMALL_LETTER_C_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_C_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_E_WITH_GRAVE>,<LATIN_CAPITAL_LETTER_E_WITH_GRAVE>);/
+	(<LATIN_SMALL_LETTER_E_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_E_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_E_WITH_DIAERESIS>,<LATIN_CAPITAL_LETTER_E_WITH_DIAERESIS>);/
+	(<LATIN_SMALL_LETTER_I_WITH_GRAVE>,<LATIN_CAPITAL_LETTER_I_WITH_GRAVE>);/
+	(<LATIN_SMALL_LETTER_I_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_I_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_I_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_I_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_I_WITH_DIAERESIS>,<LATIN_CAPITAL_LETTER_I_WITH_DIAERESIS>);/
+	(<LATIN_SMALL_LETTER_ETH>,<LATIN_CAPITAL_LETTER_ETH>);/
+	(<LATIN_SMALL_LETTER_N_WITH_TILDE>,<LATIN_CAPITAL_LETTER_N_WITH_TILDE>);/
+	(<LATIN_SMALL_LETTER_O_WITH_GRAVE>,<LATIN_CAPITAL_LETTER_O_WITH_GRAVE>);/
+	(<LATIN_SMALL_LETTER_O_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_O_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_O_WITH_TILDE>,<LATIN_CAPITAL_LETTER_O_WITH_TILDE>);/
+	(<LATIN_SMALL_LETTER_O_WITH_DIAERESIS>,<LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS>);/
+	(<LATIN_SMALL_LETTER_O_WITH_STROKE>,<LATIN_CAPITAL_LETTER_O_WITH_STROKE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_GRAVE>,<LATIN_CAPITAL_LETTER_U_WITH_GRAVE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_U_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_U_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_U_WITH_DIAERESIS>,<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS>);/
+	(<LATIN_SMALL_LETTER_Y_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_Y_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_THORN>,<LATIN_CAPITAL_LETTER_THORN>);/
+	(<LATIN_SMALL_LETTER_Y_WITH_DIAERESIS>,<LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS>);/
+	(<LATIN_SMALL_LETTER_A_WITH_MACRON>,<LATIN_CAPITAL_LETTER_A_WITH_MACRON>);/
+	(<LATIN_SMALL_LETTER_A_WITH_BREVE>,<LATIN_CAPITAL_LETTER_A_WITH_BREVE>);/
+	(<LATIN_SMALL_LETTER_A_WITH_OGONEK>,<LATIN_CAPITAL_LETTER_A_WITH_OGONEK>);/
+	(<LATIN_SMALL_LETTER_C_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_C_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_C_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_C_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_C_WITH_DOT_ABOVE>,<LATIN_CAPITAL_LETTER_C_WITH_DOT_ABOVE>);/
+	(<LATIN_SMALL_LETTER_C_WITH_CARON>,<LATIN_CAPITAL_LETTER_C_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_D_WITH_CARON>,<LATIN_CAPITAL_LETTER_D_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_D_WITH_STROKE>,<LATIN_CAPITAL_LETTER_D_WITH_STROKE>);/
+	(<LATIN_SMALL_LETTER_E_WITH_MACRON>,<LATIN_CAPITAL_LETTER_E_WITH_MACRON>);/
+	(<LATIN_SMALL_LETTER_E_WITH_BREVE>,<LATIN_CAPITAL_LETTER_E_WITH_BREVE>);/
+	(<LATIN_SMALL_LETTER_E_WITH_DOT_ABOVE>,<LATIN_CAPITAL_LETTER_E_WITH_DOT_ABOVE>);/
+	(<LATIN_SMALL_LETTER_E_WITH_OGONEK>,<LATIN_CAPITAL_LETTER_E_WITH_OGONEK>);/
+	(<LATIN_SMALL_LETTER_E_WITH_CARON>,<LATIN_CAPITAL_LETTER_E_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_G_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_G_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_G_WITH_BREVE>,<LATIN_CAPITAL_LETTER_G_WITH_BREVE>);/
+	(<LATIN_SMALL_LETTER_G_WITH_DOT_ABOVE>,<LATIN_CAPITAL_LETTER_G_WITH_DOT_ABOVE>);/
+	(<LATIN_SMALL_LETTER_G_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_G_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_H_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_H_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_H_WITH_STROKE>,<LATIN_CAPITAL_LETTER_H_WITH_STROKE>);/
+	(<LATIN_SMALL_LETTER_I_WITH_TILDE>,<LATIN_CAPITAL_LETTER_I_WITH_TILDE>);/
+	(<LATIN_SMALL_LETTER_I_WITH_MACRON>,<LATIN_CAPITAL_LETTER_I_WITH_MACRON>);/
+	(<LATIN_SMALL_LETTER_I_WITH_BREVE>,<LATIN_CAPITAL_LETTER_I_WITH_BREVE>);/
+	(<LATIN_SMALL_LETTER_I_WITH_OGONEK>,<LATIN_CAPITAL_LETTER_I_WITH_OGONEK>);/
+	(<LATIN_SMALL_LETTER_DOTLESS_I>,<I>);/
+	(<LATIN_SMALL_LIGATURE_IJ>,<LATIN_CAPITAL_LIGATURE_IJ>);/
+	(<LATIN_SMALL_LETTER_J_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_J_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_K_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_K_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_L_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_L_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_L_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_L_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_L_WITH_CARON>,<LATIN_CAPITAL_LETTER_L_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_L_WITH_MIDDLE_DOT>,<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_DOT>);/
+	(<LATIN_SMALL_LETTER_L_WITH_STROKE>,<LATIN_CAPITAL_LETTER_L_WITH_STROKE>);/
+	(<LATIN_SMALL_LETTER_N_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_N_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_N_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_N_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_N_WITH_CARON>,<LATIN_CAPITAL_LETTER_N_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_ENG>,<LATIN_CAPITAL_LETTER_ENG>);/
+	(<LATIN_SMALL_LETTER_O_WITH_MACRON>,<LATIN_CAPITAL_LETTER_O_WITH_MACRON>);/
+	(<LATIN_SMALL_LETTER_O_WITH_BREVE>,<LATIN_CAPITAL_LETTER_O_WITH_BREVE>);/
+	(<LATIN_SMALL_LETTER_O_WITH_DOUBLE_ACUTE>,<LATIN_CAPITAL_LETTER_O_WITH_DOUBLE_ACUTE>);/
+	(<LATIN_SMALL_LIGATURE_OE>,<LATIN_CAPITAL_LIGATURE_OE>);/
+	(<LATIN_SMALL_LETTER_R_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_R_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_R_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_R_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_R_WITH_CARON>,<LATIN_CAPITAL_LETTER_R_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_S_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_S_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_S_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_S_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_S_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_S_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_S_WITH_CARON>,<LATIN_CAPITAL_LETTER_S_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_T_WITH_CEDILLA>,<LATIN_CAPITAL_LETTER_T_WITH_CEDILLA>);/
+	(<LATIN_SMALL_LETTER_T_WITH_CARON>,<LATIN_CAPITAL_LETTER_T_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_T_WITH_STROKE>,<LATIN_CAPITAL_LETTER_T_WITH_STROKE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_TILDE>,<LATIN_CAPITAL_LETTER_U_WITH_TILDE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_MACRON>,<LATIN_CAPITAL_LETTER_U_WITH_MACRON>);/
+	(<LATIN_SMALL_LETTER_U_WITH_BREVE>,<LATIN_CAPITAL_LETTER_U_WITH_BREVE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_RING_ABOVE>,<LATIN_CAPITAL_LETTER_U_WITH_RING_ABOVE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_DOUBLE_ACUTE>,<LATIN_CAPITAL_LETTER_U_WITH_DOUBLE_ACUTE>);/
+	(<LATIN_SMALL_LETTER_U_WITH_OGONEK>,<LATIN_CAPITAL_LETTER_U_WITH_OGONEK>);/
+	(<LATIN_SMALL_LETTER_W_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_W_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_Y_WITH_CIRCUMFLEX>,<LATIN_CAPITAL_LETTER_Y_WITH_CIRCUMFLEX>);/
+	(<LATIN_SMALL_LETTER_Z_WITH_ACUTE>,<LATIN_CAPITAL_LETTER_Z_WITH_ACUTE>);/
+	(<LATIN_SMALL_LETTER_Z_WITH_DOT_ABOVE>,<LATIN_CAPITAL_LETTER_Z_WITH_DOT_ABOVE>);/
+	(<LATIN_SMALL_LETTER_Z_WITH_CARON>,<LATIN_CAPITAL_LETTER_Z_WITH_CARON>);/
+	(<LATIN_SMALL_LETTER_LONG_S>,<S>);/
+	(<LATIN_SMALL_LETTER_B_WITH_STROKE>,<LATIN_CAPITAL_LETTER_B_WITH_STROKE>);/
+	(<LATIN_SMALL_LETTER_B_WITH_TOPBAR>,<LATIN_CAPITAL_LETTER_B_WITH_TOPBAR>);/
+	(<LATIN_SMALL_LETTER_TONE_SIX>,<LATIN_CAPITAL_LETTER_TONE_SIX>);/
+	(<LATIN_SMALL_LETTER_C_WITH_HOOK>,<LATIN_CAPITAL_LETTER_C_WITH_HOOK>);/
+	(<LATIN_SMALL_LETTER_D_WITH_TOPBAR>,<LATIN_CAPITAL_LETTER_D_WITH_TOPBAR>);/
+	(<LATIN_SMALL_LETTER_F_WITH_HOOK>,<LATIN_CAPITAL_LETTER_F_WITH_HOOK>);/

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-stable@freebsd.org  Thu Dec  6 10:48:48 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id EE3361327294;
 Thu,  6 Dec 2018 10:48:47 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 9E6958B2E1;
 Thu,  6 Dec 2018 10:48:47 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7F5EB226CC;
 Thu,  6 Dec 2018 10:48:47 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6Aml5T040412;
 Thu, 6 Dec 2018 10:48:47 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6Amkj8040387;
 Thu, 6 Dec 2018 10:48:46 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812061048.wB6Amkj8040387@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 10:48:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341628 - in stable/12/tools/tools/locale: . etc tools
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: in stable/12/tools/tools/locale: . etc tools
X-SVN-Commit-Revision: 341628
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 9E6958B2E1
X-Spamd-Result: default: False [-1.02 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.43)[-0.433,0];
 NEURAL_HAM_SHORT(-0.54)[-0.542,0];
 NEURAL_HAM_LONG(-0.04)[-0.040,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 10:48:48 -0000

Author: yuripv
Date: Thu Dec  6 10:48:46 2018
New Revision: 341628
URL: https://svnweb.freebsd.org/changeset/base/341628

Log:
  MFC r340204:
  Cleanup locale tools:
  
  - Simplify the source dir specification, and update README
    appropriately
  - Drop the LC (doonly) processing, it's broken, and even if fixed, not
    really useful
  - Don't remove the target directories while installing new data as it
    removes Makefile.depend which we don't manage; only rm the files we
    are going to add/replace/delete instead
  - Restrict adding bsd.endian.mk to colldef and ctypedef Makefiles, it's
    not needed in other (text-only) categories
  - GC unused scripts; they don't seem to be particularly helpful standalone
    as well
  
  Reviewed by:	bapt
  Differential Revision:	https://reviews.freebsd.org/D17858

Deleted:
  stable/12/tools/tools/locale/etc/unicode.conf
  stable/12/tools/tools/locale/tools/UTF82encoding.pl
  stable/12/tools/tools/locale/tools/changeoffset.pl
  stable/12/tools/tools/locale/tools/unicode2src.pl
  stable/12/tools/tools/locale/tools/whatis.pl
Modified:
  stable/12/tools/tools/locale/Makefile
  stable/12/tools/tools/locale/README
  stable/12/tools/tools/locale/tools/cldr2def.pl
  stable/12/tools/tools/locale/tools/finalize
  stable/12/tools/tools/locale/tools/utf8-rollup.pl
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/tools/tools/locale/Makefile
==============================================================================
--- stable/12/tools/tools/locale/Makefile	Thu Dec  6 10:41:22 2018	(r341627)
+++ stable/12/tools/tools/locale/Makefile	Thu Dec  6 10:48:46 2018	(r341628)
@@ -10,13 +10,10 @@
 
 .OBJDIR:	.
 
-.if !defined(CLDRDIR)
-CLDRDIR!=	grep ^cldr etc/unicode.conf | cut -f 2 -d " "
+.if !defined(UNIDIR)
+.error UNIDIR is not set
 .endif
-.if !defined(UNIDATADIR)
-UNIDATADIR!=	grep ^unidata etc/unicode.conf | cut -f 2 -d " "
-.endif
-PASSON=		CLDRDIR="${CLDRDIR}" UNIDATADIR="${UNIDATADIR}"
+PASSON=		UNIDIR="${UNIDIR}"
 
 ETCDIR=		${.CURDIR}/etc
 
@@ -49,12 +46,8 @@ COLLATIONS_SPECIAL_ENV+=	${area}.${enc}
 .endfor
 PASSON+=	COLLATIONS_SPECIAL="${COLLATIONS_SPECIAL_ENV}"
 
-.if defined(LC)
-LC:=	--lc=${LC}
-.endif
-
 all:
-	cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_C.UTF-8.src
+	cp ${ETCDIR}/common.UTF-8.src ${UNIDIR}/posix/xx_Comm_C.UTF-8.src
 .for t in ${TYPES}
 .  if ${KNOWN:M${t}}
 	test -d ${t} || mkdir ${t}
@@ -69,8 +62,9 @@ install: install-${t}
 install-${t}:
 .  if ${KNOWN:M${t}}
 	rm -rf ${.CURDIR}/${t}.draft
-	rm -rf ${.CURDIR}/../../../share/${t}
-	mv ${.CURDIR}/${t} ${.CURDIR}/../../../share/${t}
+	rm -f ${.CURDIR}/../../../share/${t}/Makefile
+	rm -f ${.CURDIR}/../../../share/${t}/*.src
+	mv ${.CURDIR}/${t}/* ${.CURDIR}/../../../share/${t}/
 .  endif
 .endfor
 
@@ -86,10 +80,9 @@ post-install:
 gen-${t}:
 	mkdir -p ${t} ${t}.draft
 	perl -I tools tools/cldr2def.pl \
-		--cldr=$$(realpath ${CLDRDIR}) \
-		--unidata=$$(realpath ${UNIDATADIR}) \
+		--unidir=$$(realpath ${UNIDIR}) \
 		--etc=$$(realpath ${ETCDIR}) \
-		--type=${t} ${LC}
+		--type=${t}
 
 build-${t}: gen-${t}
 	env ${PASSON} tools/finalize ${t}
@@ -101,15 +94,16 @@ build-colldef:	static-colldef
 
 static-colldef:
 .for area enc in ${COLLATION_SPECIAL}
-	awk -f tools/extract-colldef.awk ${CLDRDIR}/posix/${area}.${enc}.src > colldef.draft/${area}.${enc}.src
+	awk -f tools/extract-colldef.awk ${UNIDIR}/posix/${area}.${enc}.src > \
+	    colldef.draft/${area}.${enc}.src
 .endfor
 
 transfer-rollup:
-	cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_C.UTF-8.src
+	cp ${ETCDIR}/common.UTF-8.src ${UNIDIR}/posix/xx_Comm_C.UTF-8.src
 
 rollup:
 	perl -I tools tools/utf8-rollup.pl \
-		--cldr=$$(realpath ${CLDRDIR}) \
+		--unidir=$$(realpath ${UNIDIR}) \
 		--etc=$$(realpath ${ETCDIR})
 
 clean:
@@ -159,33 +153,33 @@ ENCODINGS=	Big5 \
 
 
 POSIX:
-.if exists (${CLDRDIR}/tools/java/cldr.jar)
-	mkdir -p ${CLDRDIR}/posix
+.if exists (${UNIDIR}/tools/java/cldr.jar)
+	mkdir -p ${UNIDIR}/posix
 .  for area in ${BASE_LOCALES_OF_INTEREST}
-.    if !exists(${CLDRDIR}/posix/${area}.UTF-8.src)
-	java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \
+.    if !exists(${UNIDIR}/posix/${area}.UTF-8.src)
+	java -DCLDR_DIR=${UNIDIR:Q} -jar ${UNIDIR}/tools/java/cldr.jar \
 		org.unicode.cldr.posix.GeneratePOSIX \
-		-d ${CLDRDIR}/posix -m ${area} -c UTF-8
+		-d ${UNIDIR}/posix -m ${area} -c UTF-8
 .    endif
 .  endfor
 .  for area encoding in ${COLLATION_SPECIAL}
-.    if !exists(${CLDRDIR}/posix/${area}.${encoding}.src)
-	java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \
+.    if !exists(${UNIDIR}/posix/${area}.${encoding}.src)
+	java -DCLDR_DIR=${UNIDIR:Q} -jar ${UNIDIR}/tools/java/cldr.jar \
 		org.unicode.cldr.posix.GeneratePOSIX \
-		-d ${CLDRDIR}/posix -m ${area} -c ${encoding}
+		-d ${UNIDIR}/posix -m ${area} -c ${encoding}
 .    endif
 .  endfor
 .  for enc in ${ENCODINGS}
-.  if !exists(${CLDRDIR}/posix/${enc}.cm)
-	java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \
+.  if !exists(${UNIDIR}/posix/${enc}.cm)
+	java -DCLDR_DIR=${UNIDIR:Q} -jar ${UNIDIR}/tools/java/cldr.jar \
 		org.unicode.cldr.posix.GenerateCharmap \
-		-d ${CLDRDIR}/posix -c ${enc}
+		-d ${UNIDIR}/posix -c ${enc}
 .  endif
 .  endfor
 .else
 	@echo "Please install CLDR toolset for the desired release"
-	@echo "It should go at ${CLDRDIR}/tools"
+	@echo "It should go at ${UNIDIR}/tools"
 .endif
 
 clean-POSIX:
-	rm -f ${CLDRDIR}/posix/*
+	rm -f ${UNIDIR}/posix/*

Modified: stable/12/tools/tools/locale/README
==============================================================================
--- stable/12/tools/tools/locale/README	Thu Dec  6 10:41:22 2018	(r341627)
+++ stable/12/tools/tools/locale/README	Thu Dec  6 10:48:46 2018	(r341628)
@@ -9,30 +9,23 @@ Tools needed:
 	devel/p5-Tie-IxHash
 	textproc/p5-XML-Parser
 
-Fetch CLDR data from: http://unicode.org/Public/cldr/.  You need all of the
+1. Fetch CLDR data from: http://unicode.org/Public/cldr/.  You need all of the
 core.zip, keyboards.zip, and tools.zip.
-
-Extract:
-	mkdir -p ~/unicode/cldr/v33.0
-	cd ~/unicode/cldr/v33.0
-	unzip ~/core.zip ~/keyboards.zip ~/tools.zip
-
-Fetch unidata (UCD.zip) from http://www.unicode.org/Public/zipped/latest.
-
-Extract:
-	mkdir -p ~/unicode/UNIDATA/11.0.0
-	cd ~/unicode/UNIDATA/11.0.0
+2. Fetch unidata (UCD.zip) from http://www.unicode.org/Public/zipped/latest.
+3. Extract:
+	mkdir -p ~/unicode
+	cd ~/unicode
+	unzip ~/core.zip
+	unzip ~/keyboards.zip
+	unzip ~/tools.zip
 	unzip ~/UCD.zip
-
-Either modify tools/tools/locales/etc/unicode.conf or export variables:
-	CLDRDIR=~/unicode/cldr/v33.0; export CLDRDIR
-	UNIDATADIR=~/unicode/UNIDATA/9.0.0; export UNIDATADIR
-
-Build the CLDR tools:
-	cd $CLDRDIR/tools/java
+4. Export variable:
+	UNIDIR=~/unicode; export UNIDIR
+5. Build the CLDR tools:
+	cd $UNIDIR/tools/java
 	ant jar
-
-Run:
+6. Build POSIX data files from CLDR data:
 	make POSIX
+7. Build and install new locale data:
 	make
 	make install

Modified: stable/12/tools/tools/locale/tools/cldr2def.pl
==============================================================================
--- stable/12/tools/tools/locale/tools/cldr2def.pl	Thu Dec  6 10:41:22 2018	(r341627)
+++ stable/12/tools/tools/locale/tools/cldr2def.pl	Thu Dec  6 10:48:46 2018	(r341628)
@@ -6,32 +6,27 @@ use File::Copy;
 use XML::Parser;
 use Tie::IxHash;
 use Text::Iconv;
-use Data::Dumper;
+#use Data::Dumper;
 use Getopt::Long;
 use Digest::SHA qw(sha1_hex);
 require "charmaps.pm";
 
 
 if ($#ARGV < 2) {
-	print "Usage: $0 --cldr=<cldrdir> --unidata=<unidatadir> --etc=<etcdir> --type=<type> [--lc=<la_CC>]\n";
+	print "Usage: $0 --unidir=<unidir> --etc=<etcdir> --type=<type>\n";
 	exit(1);
 }
 
 my $DEFENCODING = "UTF-8";
-my @filter = ();
 
-my $CLDRDIR = undef;
-my $UNIDATADIR = undef;
+my $UNIDIR = undef;
 my $ETCDIR = undef;
 my $TYPE = undef;
-my $doonly = undef;
 
 my $result = GetOptions (
-		"cldr=s"	=> \$CLDRDIR,
-		"unidata=s"	=> \$UNIDATADIR,
+		"unidir=s"	=> \$UNIDIR,
 		"etc=s"		=> \$ETCDIR,
 		"type=s"	=> \$TYPE,
-		"lc=s"		=> \$doonly
 	    );
 
 my %convertors = ();
@@ -47,8 +42,8 @@ get_languages();
 
 my %utf8map = ();
 my %utf8aliases = ();
-get_unidata($UNIDATADIR);
-get_utf8map("$CLDRDIR/posix/$DEFENCODING.cm");
+get_unidata($UNIDIR);
+get_utf8map("$UNIDIR/posix/$DEFENCODING.cm");
 get_encodings("$ETCDIR/charmaps");
 
 my %keys = ();
@@ -397,22 +392,6 @@ sub get_languages {
 	%translations = %{$data{T}}; 
 	%alternativemonths = %{$data{AM}}; 
 	%encodings = %{$data{E}}; 
-
-	return if (!defined $doonly);
-
-	my @a = split(/_/, $doonly);
-	if ($#a == 1) {
-		$filter[0] = $a[0];
-		$filter[1] = "x";
-		$filter[2] = $a[1];
-	} elsif ($#a == 2) {
-		$filter[0] = $a[0];
-		$filter[1] = $a[1];
-		$filter[2] = $a[2];
-	}
-
-	print Dumper(@filter);
-	return;
 }
 
 sub transform_ctypes {
@@ -422,8 +401,6 @@ sub transform_ctypes {
 	foreach my $l (sort keys(%languages)) {
 	foreach my $f (sort keys(%{$languages{$l}})) {
 	foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) {
-		next if ($#filter == 2 && ($filter[0] ne $l
-		    || $filter[1] ne $f || $filter[2] ne $c));
 		next if (defined $languages{$l}{$f}{definitions}
 		    && $languages{$l}{$f}{definitions} !~ /$TYPE/);
 		$languages{$l}{$f}{data}{$c}{$DEFENCODING} = 0;	# unread
@@ -432,7 +409,7 @@ sub transform_ctypes {
 		$file .= "_" . $c if ($c ne "x");
 		my $actfile = $file;
 
-		my $filename = "$CLDRDIR/posix/xx_Comm_C.UTF-8.src";
+		my $filename = "$UNIDIR/posix/xx_Comm_C.UTF-8.src";
 		if (! -f $filename) {
 			print STDERR "Cannot open $filename\n";
 			next;
@@ -455,7 +432,7 @@ sub transform_ctypes {
 		close(FOUT);
 		foreach my $enc (sort keys(%{$languages{$l}{$f}{data}{$c}})) {
 			next if ($enc eq $DEFENCODING);
-			$filename = "$CLDRDIR/posix/$file.$DEFENCODING.src";
+			$filename = "$UNIDIR/posix/$file.$DEFENCODING.src";
 			if (! -f $filename) {
 				print STDERR "Cannot open $filename\n";
 				next;
@@ -494,8 +471,6 @@ sub transform_collation {
 	foreach my $l (sort keys(%languages)) {
 	foreach my $f (sort keys(%{$languages{$l}})) {
 	foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) {
-		next if ($#filter == 2 && ($filter[0] ne $l
-		    || $filter[1] ne $f || $filter[2] ne $c));
 		next if (defined $languages{$l}{$f}{definitions}
 		    && $languages{$l}{$f}{definitions} !~ /$TYPE/);
 		$languages{$l}{$f}{data}{$c}{$DEFENCODING} = 0;	# unread
@@ -505,15 +480,15 @@ sub transform_collation {
 		$file .= $c;
 		my $actfile = $file;
 
-		my $filename = "$CLDRDIR/posix/$file.$DEFENCODING.src";
+		my $filename = "$UNIDIR/posix/$file.$DEFENCODING.src";
 		$filename = "$ETCDIR/$file.$DEFENCODING.src"
 		    if (! -f $filename);
 		if (! -f $filename
 		 && defined $languages{$l}{$f}{fallback}) {
 			$file = $languages{$l}{$f}{fallback};
-			$filename = "$CLDRDIR/posix/$file.$DEFENCODING.src";
+			$filename = "$UNIDIR/posix/$file.$DEFENCODING.src";
 		}
-		$filename = "$CLDRDIR/posix/$file.$DEFENCODING.src"
+		$filename = "$UNIDIR/posix/$file.$DEFENCODING.src"
 		    if (! -f $filename);
 		if (! -f $filename) {
 			print STDERR
@@ -564,8 +539,6 @@ sub get_fields {
 	foreach my $l (sort keys(%languages)) {
 	foreach my $f (sort keys(%{$languages{$l}})) {
 	foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) {
-		next if ($#filter == 2 && ($filter[0] ne $l
-		    || $filter[1] ne $f || $filter[2] ne $c));
 		next if (defined $languages{$l}{$f}{definitions}
 		    && $languages{$l}{$f}{definitions} !~ /$TYPE/);
 
@@ -575,15 +548,15 @@ sub get_fields {
 		$file .= $f . "_" if ($f ne "x");
 		$file .= $c;
 
-		my $filename = "$CLDRDIR/posix/$file.$DEFENCODING.src";
+		my $filename = "$UNIDIR/posix/$file.$DEFENCODING.src";
 		$filename = "$ETCDIR/$file.$DEFENCODING.src"
 		    if (! -f $filename);
 		if (! -f $filename
 		 && defined $languages{$l}{$f}{fallback}) {
 			$file = $languages{$l}{$f}{fallback};
-			$filename = "$CLDRDIR/posix/$file.$DEFENCODING.src";
+			$filename = "$UNIDIR/posix/$file.$DEFENCODING.src";
 		}
-		$filename = "$CLDRDIR/posix/$file.$DEFENCODING.src"
+		$filename = "$UNIDIR/posix/$file.$DEFENCODING.src"
 		    if (! -f $filename);
 		if (! -f $filename) {
 			print STDERR
@@ -703,8 +676,6 @@ sub print_fields {
 	foreach my $l (sort keys(%languages)) {
 	foreach my $f (sort keys(%{$languages{$l}})) {
 	foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) {
-		next if ($#filter == 2 && ($filter[0] ne $l
-		    || $filter[1] ne $f || $filter[2] ne $c));
 		next if (defined $languages{$l}{$f}{definitions}
 		    && $languages{$l}{$f}{definitions} !~ /$TYPE/);
 		foreach my $enc (sort keys(%{$languages{$l}{$f}{data}{$c}})) {
@@ -851,7 +822,6 @@ EOF
 }
 
 sub make_makefile {
-	return if ($#filter > -1);
 	print "Creating Makefile for $TYPE\n";
 	my $SRCOUT;
 	my $SRCOUT2;
@@ -913,8 +883,16 @@ LOCALEDIR=	\${SHAREDIR}/locale
 FILESNAME=	$FILESNAMES{$TYPE}
 .SUFFIXES:	.src .${SRCOUT2}
 ${MAPLOC}
+EOF
+
+	if ($TYPE eq "colldef" || $TYPE eq "ctypedef") {
+		print FOUT <<EOF;
 .include <bsd.endian.mk>
 
+EOF
+	}
+
+	print FOUT <<EOF;
 .src.${SRCOUT2}:
 	$SRCOUT
 
@@ -979,8 +957,6 @@ EOF
 	foreach my $l (sort keys(%languages)) {
 	foreach my $f (sort keys(%{$languages{$l}})) {
 	foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) {
-		next if ($#filter == 2 && ($filter[0] ne $l
-		    || $filter[1] ne $f || $filter[2] ne $c));
 		next if (defined $languages{$l}{$f}{definitions}
 		    && $languages{$l}{$f}{definitions} !~ /$TYPE/);
 		if (defined $languages{$l}{$f}{data}{$c}{$DEFENCODING}

Modified: stable/12/tools/tools/locale/tools/finalize
==============================================================================
--- stable/12/tools/tools/locale/tools/finalize	Thu Dec  6 10:41:22 2018	(r341627)
+++ stable/12/tools/tools/locale/tools/finalize	Thu Dec  6 10:48:46 2018	(r341628)
@@ -116,13 +116,13 @@ then
 	else {last1 = $1; last2 = $2}}' ${TEMP2} > ${TEMP3}
 	rm -f ${TEMP2}
 	/usr/bin/sed -E -e 's/[ ]+/ /g' \
-		${CLDRDIR}/posix/UTF-8.cm \
+		${UNIDIR}/posix/UTF-8.cm \
 		> ${base}/../etc/final-maps/map.UTF-8
 	/usr/bin/sed -E -e 's/[ ]+/ /g' \
-		${CLDRDIR}/posix/eucCN.cm \
+		${UNIDIR}/posix/eucCN.cm \
 		> ${base}/../etc/final-maps/map.eucCN
 	/usr/bin/sed -E -e 's/[ ]+/ /g' \
-		${CLDRDIR}/posix/eucCN.cm \
+		${UNIDIR}/posix/eucCN.cm \
 		> ${base}/../etc/final-maps/map.GB2312
 	CHARMAPS="ARMSCII-8 Big5 CP1131 CP1251 \
 		CP866 GBK ISCII-DEV ISO8859-1 \

Modified: stable/12/tools/tools/locale/tools/utf8-rollup.pl
==============================================================================
--- stable/12/tools/tools/locale/tools/utf8-rollup.pl	Thu Dec  6 10:41:22 2018	(r341627)
+++ stable/12/tools/tools/locale/tools/utf8-rollup.pl	Thu Dec  6 10:48:46 2018	(r341628)
@@ -1,4 +1,5 @@
 #!/usr/local/bin/perl -wC
+# $FreeBSD$
 
 use strict;
 #use File::Copy;
@@ -11,15 +12,15 @@ use Getopt::Long;
 
 
 if ($#ARGV != 1) {
-	print "Usage: $0 --cldr=<cldrdir> --etc=<etcdir>\n";
+	print "Usage: $0 --unidir=<unidir> --etc=<etcdir>\n";
 	exit(1);
 }
 
-my $CLDRDIR = undef;
+my $UNIDIR = undef;
 my $ETCDIR = undef;
 
 my $result = GetOptions (
-		"cldr=s"	=> \$CLDRDIR,
+		"unidir=s"	=> \$UNIDIR,
 		"etc=s"		=> \$ETCDIR,
 	    );
 
@@ -118,7 +119,7 @@ my $outfilename = "$ETCDIR/common.UTF-8.src";
 my $manual_file = "$ETCDIR/manual-input.UTF-8";
 my $stars = "**********************************************************************\n";
 
-get_utf8map("$CLDRDIR/posix/UTF-8.cm");
+get_utf8map("$UNIDIR/posix/UTF-8.cm");
 generate_header ();
 generate_sections ();
 generate_footer ();
@@ -252,7 +253,7 @@ sub compress_ctype {
 
 	my @lines = initialize_lines ($territory);
 
-	my $filename = "$CLDRDIR/posix/$territory.UTF-8.src";
+	my $filename = "$UNIDIR/posix/$territory.UTF-8.src";
 	if (! -f $filename) {
 		print STDERR "Cannot open $filename\n";
 		return;

From owner-svn-src-stable@freebsd.org  Thu Dec  6 10:53:13 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id D0A5613275B0;
 Thu,  6 Dec 2018 10:53:12 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 80E698B8F5;
 Thu,  6 Dec 2018 10:53:12 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 61ABF2287E;
 Thu,  6 Dec 2018 10:53:12 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6ArCKw045635;
 Thu, 6 Dec 2018 10:53:12 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6ArCvU045632;
 Thu, 6 Dec 2018 10:53:12 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812061053.wB6ArCvU045632@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 10:53:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341629 - in stable/12:
 contrib/netbsd-tests/lib/libc/locale share/ctypedef tools/tools/locale
 tools/tools/locale/etc tools/tools/locale/tools
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: in stable/12: contrib/netbsd-tests/lib/libc/locale
 share/ctypedef tools/tools/locale tools/tools/locale/etc
 tools/tools/locale/tools
X-SVN-Commit-Revision: 341629
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 80E698B8F5
X-Spamd-Result: default: False [-0.79 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.39)[-0.385,0];
 NEURAL_SPAM_LONG(0.02)[0.020,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_SHORT(-0.43)[-0.429,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 10:53:13 -0000

Author: yuripv
Date: Thu Dec  6 10:53:11 2018
New Revision: 341629
URL: https://svnweb.freebsd.org/changeset/base/341629

Log:
  MFC r340491, r340492:
  Use UnicodeData.txt to create UTF-8 ctype map.
  
  This should provide more complete coverage of currently defined Unicode
  characters as compared to manually assembled one we use currently.
  
  Comparison of original and new UTF-8 ctype maps by character class:
  
  TYPE    ORIG    NEW
  alnum   94229   126029
  alpha   93557   125419
  blank   4       2
  cntrl   73      137685
  digit   469     622
  graph   109615  137203
  lower   1478    2145
  print   109641  137222
  punct   3428    797
  rune    110481  274907
  space   33      24
  upper   983     1781
  xdigit  469     622
  
  Large number of added cntrl definitions is due to the fact that private-use
  planes are currently defined as such, this can change in the future.
  
  Discussed with:	bapt
  Differential revision:	https://reviews.freebsd.org/D17842

Deleted:
  stable/12/tools/tools/locale/etc/common.UTF-8.src
  stable/12/tools/tools/locale/etc/manual-input.UTF-8
Modified:
  stable/12/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c
  stable/12/share/ctypedef/C.UTF-8.src
  stable/12/tools/tools/locale/Makefile
  stable/12/tools/tools/locale/tools/utf8-rollup.pl
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c
==============================================================================
--- stable/12/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c	Thu Dec  6 10:48:46 2018	(r341628)
+++ stable/12/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c	Thu Dec  6 10:53:11 2018	(r341629)
@@ -88,7 +88,7 @@ static struct test {
 		0xFFFF, 0x5D, 0x5B, 0x10000, 0x10FFFF, 0x5D, 0x0A
 	},
 #ifdef __FreeBSD__
-	{	 1, -1, -1,  1,  1, -1, -1,  1,  1, 1, -1,  1,  1, -1, -1,
+	{	 1, -1, -1,  1,  1, -1,  1,  1,  1,  1, -1,  1,  1,  1, -1,
 #else
 	{	 1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,
 #endif

Modified: stable/12/share/ctypedef/C.UTF-8.src
==============================================================================
--- stable/12/share/ctypedef/C.UTF-8.src	Thu Dec  6 10:48:46 2018	(r341628)
+++ stable/12/share/ctypedef/C.UTF-8.src	Thu Dec  6 10:53:11 2018	(r341629)
@@ -7,386 +7,27606 @@ comment_char *
 escape_char /
 
 LC_CTYPE
-
-**********************************************************************
-* 0x0000 - 0x007F Basic Latin
-* 0x0080 - 0x00FF Latin-1 Supplement
-* 0x0100 - 0x017F Latin Extended-A
-* 0x0180 - 0x024F Latin Extended-B
-* 0x0250 - 0x02AF IPA Extensions
-* 0x1D00 - 0x1D7F Phonetic Extensions
-* 0x1D80 - 0x1DBF Phonetic Extensions Supplement
-* 0x1E00 - 0x1EFF Latin Extended Additional
-* 0x2150 - 0x218F Number Forms (partial - Roman Numerals)
-* 0x2C60 - 0x2C7F Latin Extended-C
-* 0xA720 - 0xA7FF Latin Extended-D
-* 0xAB30 - 0xAB6F Latin Extended-E
-* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial)
-* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial)
-**********************************************************************
-upper	<A>;...;<Z>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_GRAVE>;...;<LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_STROKE>;...;<LATIN_CAPITAL_LETTER_THORN>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_BREVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_OGONEK>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_BREVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_OGONEK>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_BREVE>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_TILDE>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_BREVE>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_OGONEK>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LIGATURE_IJ>;/
-	<LATIN_CAPITAL_LETTER_J_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_DOT>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_ENG>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_BREVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_DOUBLE_ACUTE>;/
-	<LATIN_CAPITAL_LIGATURE_OE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_TILDE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_BREVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_RING_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DOUBLE_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_OGONEK>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_TOPBAR>;/
-	<LATIN_CAPITAL_LETTER_TONE_SIX>;/
-	<LATIN_CAPITAL_LETTER_OPEN_O>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_AFRICAN_D>;...;<LATIN_CAPITAL_LETTER_D_WITH_TOPBAR>;/
-	<LATIN_CAPITAL_LETTER_REVERSED_E>;...;<LATIN_CAPITAL_LETTER_F_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_GAMMA>;/
-	<LATIN_CAPITAL_LETTER_IOTA>;...;<LATIN_CAPITAL_LETTER_K_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_TURNED_M>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_LEFT_HOOK>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_MIDDLE_TILDE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HORN>;/
-	<LATIN_CAPITAL_LETTER_OI>;/
-	<LATIN_CAPITAL_LETTER_P_WITH_HOOK>;/
-	<LATIN_LETTER_YR>;/
-	<LATIN_CAPITAL_LETTER_TONE_TWO>;/
-	<LATIN_CAPITAL_LETTER_ESH>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_RETROFLEX_HOOK>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HORN>;/
-	<LATIN_CAPITAL_LETTER_UPSILON>;...;<LATIN_CAPITAL_LETTER_Y_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_EZH>;/
-	<LATIN_CAPITAL_LETTER_EZH_REVERSED>;/
-	<LATIN_CAPITAL_LETTER_TONE_FIVE>;/
-	<LATIN_CAPITAL_LETTER_DZ_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_LJ>;/
-	<LATIN_CAPITAL_LETTER_NJ>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_CARON>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_DIAERESIS_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_DOT_ABOVE_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_AE_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_OGONEK>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_OGONEK_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_EZH_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_DZ>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_HWAIR>;...;<LATIN_CAPITAL_LETTER_N_WITH_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_AE_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_STROKE_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_DOUBLE_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_INVERTED_BREVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_DOUBLE_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_INVERTED_BREVE>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_DOUBLE_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_INVERTED_BREVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_DOUBLE_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_INVERTED_BREVE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_DOUBLE_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_INVERTED_BREVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DOUBLE_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_INVERTED_BREVE>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_COMMA_BELOW>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_COMMA_BELOW>;/
-	<LATIN_CAPITAL_LETTER_YOGH>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_CARON>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_LONG_RIGHT_LEG>;/
-	<LATIN_CAPITAL_LETTER_OU>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_TILDE_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_DOT_ABOVE_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_BAR>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_DIAGONAL_STROKE>;/
-	<LATIN_CAPITAL_LETTER_GLOTTAL_STOP>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_STROKE>;...;<LATIN_CAPITAL_LETTER_E_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_J_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_SMALL_Q_WITH_HOOK_TAIL>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_RING_BELOW>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_CEDILLA_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_D_WITH_CIRCUMFLEX_BELOW>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_MACRON_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_MACRON_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_BELOW>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_TILDE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CEDILLA_AND_BREVE>;/
-	<LATIN_CAPITAL_LETTER_F_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_MACRON>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_CEDILLA>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_BREVE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_TILDE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_DIAERESIS_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_DOT_BELOW_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_CIRCUMFLEX_BELOW>;/
-	<LATIN_CAPITAL_LETTER_M_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_M_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_M_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_CIRCUMFLEX_BELOW>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_TILDE_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_TILDE_AND_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_MACRON_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_MACRON_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_P_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_P_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_DOT_BELOW_AND_MACRON>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_ACUTE_AND_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_CARON_AND_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_DOT_BELOW_AND_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_T_WITH_CIRCUMFLEX_BELOW>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS_BELOW>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_TILDE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_CIRCUMFLEX_BELOW>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_TILDE_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_MACRON_AND_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_V_WITH_TILDE>;/
-	<LATIN_CAPITAL_LETTER_V_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_X_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_X_WITH_DIAERESIS>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_DOT_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_CIRCUMFLEX>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_LINE_BELOW>;/
-	<LATIN_CAPITAL_LETTER_SHARP_S>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_TILDE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_TILDE>;/
-	<LATIN_CAPITAL_LETTER_A_WITH_BREVE_AND_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_TILDE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_TILDE>;/
-	<LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_I_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_TILDE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX_AND_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_TILDE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_HORN_AND_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_ACUTE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_TILDE>;/
-	<LATIN_CAPITAL_LETTER_U_WITH_HORN_AND_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_GRAVE>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_DOT_BELOW>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_HOOK_ABOVE>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_TILDE>;/
-	<LATIN_CAPITAL_LETTER_MIDDLE-WELSH_LL>;/
-	<LATIN_CAPITAL_LETTER_MIDDLE-WELSH_V>;/
-	<LATIN_CAPITAL_LETTER_Y_WITH_LOOP>;/
-	<KELVIN_SIGN>;/
-	<ANGSTROM_SIGN>;/
-	<TURNED_CAPITAL_F>;/
-	<ROMAN_NUMERAL_ONE>;...;<ROMAN_NUMERAL_ONE_THOUSAND>;/
-	<ROMAN_NUMERAL_REVERSED_ONE_HUNDRED>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_TILDE>;...;<LATIN_CAPITAL_LETTER_R_WITH_TAIL>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_ALPHA>;...;<LATIN_CAPITAL_LETTER_TURNED_ALPHA>;/
-	<LATIN_CAPITAL_LETTER_W_WITH_HOOK>;/
-	<LATIN_CAPITAL_LETTER_HALF_H>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_SWASH_TAIL>;/
-	<LATIN_CAPITAL_LETTER_Z_WITH_SWASH_TAIL>;/
-	<LATIN_CAPITAL_LETTER_EGYPTOLOGICAL_ALEF>;/
-	<LATIN_CAPITAL_LETTER_EGYPTOLOGICAL_AIN>;/
-	<LATIN_CAPITAL_LETTER_HENG>;/
-	<LATIN_CAPITAL_LETTER_TZ>;/
-	<LATIN_CAPITAL_LETTER_TRESILLO>;/
-	<LATIN_CAPITAL_LETTER_CUATRILLO>;/
-	<LATIN_CAPITAL_LETTER_CUATRILLO_WITH_COMMA>;/
-	<LATIN_CAPITAL_LETTER_AA>;/
-	<LATIN_CAPITAL_LETTER_AO>;/
-	<LATIN_CAPITAL_LETTER_AU>;/
-	<LATIN_CAPITAL_LETTER_AV>;/
-	<LATIN_CAPITAL_LETTER_AV_WITH_HORIZONTAL_BAR>;/
-	<LATIN_CAPITAL_LETTER_AY>;/
-	<LATIN_CAPITAL_LETTER_REVERSED_C_WITH_DOT>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_DIAGONAL_STROKE>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_STROKE_AND_DIAGONAL_STROKE>;/
-	<LATIN_CAPITAL_LETTER_BROKEN_L>;/
-	<LATIN_CAPITAL_LETTER_L_WITH_HIGH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_LONG_STROKE_OVERLAY>;/
-	<LATIN_CAPITAL_LETTER_O_WITH_LOOP>;/
-	<LATIN_CAPITAL_LETTER_OO>;/
-	<LATIN_CAPITAL_LETTER_P_WITH_STROKE_THROUGH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_P_WITH_FLOURISH>;/
-	<LATIN_CAPITAL_LETTER_P_WITH_SQUIRREL_TAIL>;/
-	<LATIN_CAPITAL_LETTER_Q_WITH_STROKE_THROUGH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_Q_WITH_DIAGONAL_STROKE>;/
-	<LATIN_CAPITAL_LETTER_R_ROTUNDA>;/
-	<LATIN_CAPITAL_LETTER_RUM_ROTUNDA>;/
-	<LATIN_CAPITAL_LETTER_V_WITH_DIAGONAL_STROKE>;/
-	<LATIN_CAPITAL_LETTER_VY>;/
-	<LATIN_CAPITAL_LETTER_VISIGOTHIC_Z>;/
-	<LATIN_CAPITAL_LETTER_THORN_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_THORN_WITH_STROKE_THROUGH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_VEND>;/
-	<LATIN_CAPITAL_LETTER_ET>;/
-	<LATIN_CAPITAL_LETTER_IS>;/
-	<LATIN_CAPITAL_LETTER_CON>;/
-	<LATIN_CAPITAL_LETTER_INSULAR_D>;/
-	<LATIN_CAPITAL_LETTER_INSULAR_F>;/
-	<LATIN_CAPITAL_LETTER_INSULAR_G>;/
-	<LATIN_CAPITAL_LETTER_TURNED_INSULAR_G>;/
-	<LATIN_CAPITAL_LETTER_TURNED_L>;/
-	<LATIN_CAPITAL_LETTER_INSULAR_R>;/
-	<LATIN_CAPITAL_LETTER_INSULAR_S>;/
-	<LATIN_CAPITAL_LETTER_INSULAR_T>;/
-	<LATIN_CAPITAL_LETTER_SALTILLO>;/
-	<LATIN_CAPITAL_LETTER_TURNED_H>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_DESCENDER>;/
-	<LATIN_CAPITAL_LETTER_C_WITH_BAR>;/
-	<LATIN_CAPITAL_LETTER_B_WITH_FLOURISH>;/
-	<LATIN_CAPITAL_LETTER_F_WITH_STROKE>;/
-	<LATIN_CAPITAL_LETTER_VOLAPUK_AE>;/
-	<LATIN_CAPITAL_LETTER_VOLAPUK_OE>;/
-	<LATIN_CAPITAL_LETTER_VOLAPUK_UE>;/
-	<LATIN_CAPITAL_LETTER_G_WITH_OBLIQUE_STROKE>;/
-	<LATIN_CAPITAL_LETTER_K_WITH_OBLIQUE_STROKE>;/
-	<LATIN_CAPITAL_LETTER_N_WITH_OBLIQUE_STROKE>;/
-	<LATIN_CAPITAL_LETTER_R_WITH_OBLIQUE_STROKE>;/
-	<LATIN_CAPITAL_LETTER_S_WITH_OBLIQUE_STROKE>;/
-	<LATIN_CAPITAL_LETTER_H_WITH_HOOK>;...;<LATIN_CAPITAL_LETTER_SMALL_CAPITAL_I>;/
-	<LATIN_CAPITAL_LETTER_TURNED_K>;...;<LATIN_CAPITAL_LETTER_BETA>;/
-	<LATIN_CAPITAL_LETTER_OMEGA>;/
-	<FULLWIDTH_LATIN_CAPITAL_LETTER_A>;...;<FULLWIDTH_LATIN_CAPITAL_LETTER_Z>
-lower	<a>;...;<z>;/
-	<FEMININE_ORDINAL_INDICATOR>;/
+alpha	<FEMININE_ORDINAL_INDICATOR>;/
 	<MASCULINE_ORDINAL_INDICATOR>;/
-	<LATIN_SMALL_LETTER_SHARP_S>;...;<LATIN_SMALL_LETTER_O_WITH_DIAERESIS>;/
-	<LATIN_SMALL_LETTER_O_WITH_STROKE>;...;<LATIN_SMALL_LETTER_Y_WITH_DIAERESIS>;/
+	<LATIN_LETTER_TWO_WITH_STROKE>;/
+	<LATIN_LETTER_DENTAL_CLICK>;/
+	<LATIN_LETTER_LATERAL_CLICK>;/
+	<LATIN_LETTER_ALVEOLAR_CLICK>;/
+	<LATIN_LETTER_RETROFLEX_CLICK>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_SMALL_LETTER_Z_WITH_CARON>;/
+	<LATIN_CAPITAL_LETTER_L_WITH_SMALL_LETTER_J>;/
+	<LATIN_CAPITAL_LETTER_N_WITH_SMALL_LETTER_J>;/
+	<LATIN_CAPITAL_LETTER_D_WITH_SMALL_LETTER_Z>;/
+	<LATIN_LETTER_GLOTTAL_STOP>;/
+	<MODIFIER_LETTER_SMALL_H>;/
+	<MODIFIER_LETTER_SMALL_H_WITH_HOOK>;/
+	<MODIFIER_LETTER_SMALL_J>;/
+	<MODIFIER_LETTER_SMALL_R>;/
+	<MODIFIER_LETTER_SMALL_TURNED_R>;/
+	<MODIFIER_LETTER_SMALL_TURNED_R_WITH_HOOK>;/
+	<MODIFIER_LETTER_SMALL_CAPITAL_INVERTED_R>;/
+	<MODIFIER_LETTER_SMALL_W>;/
+	<MODIFIER_LETTER_SMALL_Y>;/
+	<MODIFIER_LETTER_PRIME>;/
+	<MODIFIER_LETTER_DOUBLE_PRIME>;/
+	<MODIFIER_LETTER_TURNED_COMMA>;/
+	<MODIFIER_LETTER_APOSTROPHE>;/
+	<MODIFIER_LETTER_REVERSED_COMMA>;/
+	<MODIFIER_LETTER_RIGHT_HALF_RING>;/
+	<MODIFIER_LETTER_LEFT_HALF_RING>;/
+	<MODIFIER_LETTER_GLOTTAL_STOP>;/
+	<MODIFIER_LETTER_REVERSED_GLOTTAL_STOP>;/
+	<MODIFIER_LETTER_CIRCUMFLEX_ACCENT>;/
+	<CARON>;/
+	<MODIFIER_LETTER_VERTICAL_LINE>;/
+	<MODIFIER_LETTER_MACRON>;/
+	<MODIFIER_LETTER_ACUTE_ACCENT>;/
+	<MODIFIER_LETTER_GRAVE_ACCENT>;/
+	<MODIFIER_LETTER_LOW_VERTICAL_LINE>;/
+	<MODIFIER_LETTER_LOW_MACRON>;/
+	<MODIFIER_LETTER_LOW_GRAVE_ACCENT>;/
+	<MODIFIER_LETTER_LOW_ACUTE_ACCENT>;/
+	<MODIFIER_LETTER_TRIANGULAR_COLON>;/
+	<MODIFIER_LETTER_HALF_TRIANGULAR_COLON>;/
+	<MODIFIER_LETTER_SMALL_GAMMA>;/
+	<MODIFIER_LETTER_SMALL_L>;/
+	<MODIFIER_LETTER_SMALL_S>;/
+	<MODIFIER_LETTER_SMALL_X>;/
+	<MODIFIER_LETTER_SMALL_REVERSED_GLOTTAL_STOP>;/
+	<MODIFIER_LETTER_VOICING>;/
+	<MODIFIER_LETTER_DOUBLE_APOSTROPHE>;/
+	<GREEK_NUMERAL_SIGN>;/
+	<GREEK_YPOGEGRAMMENI>;/
+	<ARMENIAN_MODIFIER_LETTER_LEFT_HALF_RING>;/
+	<HEBREW_LETTER_ALEF>;/
+	<HEBREW_LETTER_BET>;/
+	<HEBREW_LETTER_GIMEL>;/
+	<HEBREW_LETTER_DALET>;/
+	<HEBREW_LETTER_HE>;/
+	<HEBREW_LETTER_VAV>;/
+	<HEBREW_LETTER_ZAYIN>;/
+	<HEBREW_LETTER_HET>;/
+	<HEBREW_LETTER_TET>;/
+	<HEBREW_LETTER_YOD>;/
+	<HEBREW_LETTER_FINAL_KAF>;/
+	<HEBREW_LETTER_KAF>;/
+	<HEBREW_LETTER_LAMED>;/
+	<HEBREW_LETTER_FINAL_MEM>;/
+	<HEBREW_LETTER_MEM>;/
+	<HEBREW_LETTER_FINAL_NUN>;/
+	<HEBREW_LETTER_NUN>;/
+	<HEBREW_LETTER_SAMEKH>;/
+	<HEBREW_LETTER_AYIN>;/
+	<HEBREW_LETTER_FINAL_PE>;/
+	<HEBREW_LETTER_PE>;/
+	<HEBREW_LETTER_FINAL_TSADI>;/
+	<HEBREW_LETTER_TSADI>;/
+	<HEBREW_LETTER_QOF>;/
+	<HEBREW_LETTER_RESH>;/
+	<HEBREW_LETTER_SHIN>;/
+	<HEBREW_LETTER_TAV>;/
+	<HEBREW_YOD_TRIANGLE>;/
+	<HEBREW_LIGATURE_YIDDISH_DOUBLE_VAV>;/
+	<HEBREW_LIGATURE_YIDDISH_VAV_YOD>;/
+	<HEBREW_LIGATURE_YIDDISH_DOUBLE_YOD>;/
+	<ARABIC_LETTER_KASHMIRI_YEH>;/
+	<ARABIC_LETTER_HAMZA>;/
+	<ARABIC_LETTER_ALEF_WITH_MADDA_ABOVE>;/
+	<ARABIC_LETTER_ALEF_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_WAW_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_ALEF_WITH_HAMZA_BELOW>;/
+	<ARABIC_LETTER_YEH_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_ALEF>;/
+	<ARABIC_LETTER_BEH>;/
+	<ARABIC_LETTER_TEH_MARBUTA>;/
+	<ARABIC_LETTER_TEH>;/
+	<ARABIC_LETTER_THEH>;/
+	<ARABIC_LETTER_JEEM>;/
+	<ARABIC_LETTER_HAH>;/
+	<ARABIC_LETTER_KHAH>;/
+	<ARABIC_LETTER_DAL>;/
+	<ARABIC_LETTER_THAL>;/
+	<ARABIC_LETTER_REH>;/
+	<ARABIC_LETTER_ZAIN>;/
+	<ARABIC_LETTER_SEEN>;/
+	<ARABIC_LETTER_SHEEN>;/
+	<ARABIC_LETTER_SAD>;/
+	<ARABIC_LETTER_DAD>;/
+	<ARABIC_LETTER_TAH>;/
+	<ARABIC_LETTER_ZAH>;/
+	<ARABIC_LETTER_AIN>;/
+	<ARABIC_LETTER_GHAIN>;/
+	<ARABIC_LETTER_KEHEH_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_KEHEH_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_FARSI_YEH_WITH_INVERTED_V>;/
+	<ARABIC_LETTER_FARSI_YEH_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_FARSI_YEH_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_TATWEEL>;/
+	<ARABIC_LETTER_FEH>;/
+	<ARABIC_LETTER_QAF>;/
+	<ARABIC_LETTER_KAF>;/
+	<ARABIC_LETTER_LAM>;/
+	<ARABIC_LETTER_MEEM>;/
+	<ARABIC_LETTER_NOON>;/
+	<ARABIC_LETTER_HEH>;/
+	<ARABIC_LETTER_WAW>;/
+	<ARABIC_LETTER_ALEF_MAKSURA>;/
+	<ARABIC_LETTER_YEH>;/
+	<ARABIC_LETTER_DOTLESS_BEH>;/
+	<ARABIC_LETTER_DOTLESS_QAF>;/
+	<ARABIC_LETTER_ALEF_WASLA>;/
+	<ARABIC_LETTER_ALEF_WITH_WAVY_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_ALEF_WITH_WAVY_HAMZA_BELOW>;/
+	<ARABIC_LETTER_HIGH_HAMZA>;/
+	<ARABIC_LETTER_HIGH_HAMZA_ALEF>;/
+	<ARABIC_LETTER_HIGH_HAMZA_WAW>;/
+	<ARABIC_LETTER_U_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_HIGH_HAMZA_YEH>;/
+	<ARABIC_LETTER_TTEH>;/
+	<ARABIC_LETTER_TTEHEH>;/
+	<ARABIC_LETTER_BEEH>;/
+	<ARABIC_LETTER_TEH_WITH_RING>;/
+	<ARABIC_LETTER_TEH_WITH_THREE_DOTS_ABOVE_DOWNWARDS>;/
+	<ARABIC_LETTER_PEH>;/
+	<ARABIC_LETTER_TEHEH>;/
+	<ARABIC_LETTER_BEHEH>;/
+	<ARABIC_LETTER_HAH_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_HAH_WITH_TWO_DOTS_VERTICAL_ABOVE>;/
+	<ARABIC_LETTER_NYEH>;/
+	<ARABIC_LETTER_DYEH>;/
+	<ARABIC_LETTER_HAH_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_TCHEH>;/
+	<ARABIC_LETTER_TCHEHEH>;/
+	<ARABIC_LETTER_DDAL>;/
+	<ARABIC_LETTER_DAL_WITH_RING>;/
+	<ARABIC_LETTER_DAL_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_DAL_WITH_DOT_BELOW_AND_SMALL_TAH>;/
+	<ARABIC_LETTER_DAHAL>;/
+	<ARABIC_LETTER_DDAHAL>;/
+	<ARABIC_LETTER_DUL>;/
+	<ARABIC_LETTER_DAL_WITH_THREE_DOTS_ABOVE_DOWNWARDS>;/
+	<ARABIC_LETTER_DAL_WITH_FOUR_DOTS_ABOVE>;/
+	<ARABIC_LETTER_RREH>;/
+	<ARABIC_LETTER_REH_WITH_SMALL_V>;/
+	<ARABIC_LETTER_REH_WITH_RING>;/
+	<ARABIC_LETTER_REH_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_REH_WITH_SMALL_V_BELOW>;/
+	<ARABIC_LETTER_REH_WITH_DOT_BELOW_AND_DOT_ABOVE>;/
+	<ARABIC_LETTER_REH_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_JEH>;/
+	<ARABIC_LETTER_REH_WITH_FOUR_DOTS_ABOVE>;/
+	<ARABIC_LETTER_SEEN_WITH_DOT_BELOW_AND_DOT_ABOVE>;/
+	<ARABIC_LETTER_SEEN_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_SEEN_WITH_THREE_DOTS_BELOW_AND_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_SAD_WITH_TWO_DOTS_BELOW>;/
+	<ARABIC_LETTER_SAD_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_TAH_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_AIN_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_DOTLESS_FEH>;/
+	<ARABIC_LETTER_FEH_WITH_DOT_MOVED_BELOW>;/
+	<ARABIC_LETTER_FEH_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_VEH>;/
+	<ARABIC_LETTER_FEH_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_PEHEH>;/
+	<ARABIC_LETTER_QAF_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_QAF_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_KEHEH>;/
+	<ARABIC_LETTER_SWASH_KAF>;/
+	<ARABIC_LETTER_KAF_WITH_RING>;/
+	<ARABIC_LETTER_KAF_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_NG>;/
+	<ARABIC_LETTER_KAF_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_GAF>;/
+	<ARABIC_LETTER_GAF_WITH_RING>;/
+	<ARABIC_LETTER_NGOEH>;/
+	<ARABIC_LETTER_GAF_WITH_TWO_DOTS_BELOW>;/
+	<ARABIC_LETTER_GUEH>;/
+	<ARABIC_LETTER_GAF_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_LAM_WITH_SMALL_V>;/
+	<ARABIC_LETTER_LAM_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_LAM_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_LAM_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_NOON_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_NOON_GHUNNA>;/
+	<ARABIC_LETTER_RNOON>;/
+	<ARABIC_LETTER_NOON_WITH_RING>;/
+	<ARABIC_LETTER_NOON_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_HEH_DOACHASHMEE>;/
+	<ARABIC_LETTER_TCHEH_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_HEH_WITH_YEH_ABOVE>;/
+	<ARABIC_LETTER_HEH_GOAL>;/
+	<ARABIC_LETTER_HEH_GOAL_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_TEH_MARBUTA_GOAL>;/
+	<ARABIC_LETTER_WAW_WITH_RING>;/
+	<ARABIC_LETTER_KIRGHIZ_OE>;/
+	<ARABIC_LETTER_OE>;/
+	<ARABIC_LETTER_U>;/
+	<ARABIC_LETTER_YU>;/
+	<ARABIC_LETTER_KIRGHIZ_YU>;/
+	<ARABIC_LETTER_WAW_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_VE>;/
+	<ARABIC_LETTER_FARSI_YEH>;/
+	<ARABIC_LETTER_YEH_WITH_TAIL>;/
+	<ARABIC_LETTER_YEH_WITH_SMALL_V>;/
+	<ARABIC_LETTER_WAW_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_E>;/
+	<ARABIC_LETTER_YEH_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_YEH_BARREE>;/
+	<ARABIC_LETTER_YEH_BARREE_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_AE>;/
+	<ARABIC_SMALL_WAW>;/
+	<ARABIC_SMALL_YEH>;/
+	<ARABIC_LETTER_DAL_WITH_INVERTED_V>;/
+	<ARABIC_LETTER_REH_WITH_INVERTED_V>;/
+	<ARABIC_LETTER_SHEEN_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_DAD_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_GHAIN_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_HEH_WITH_INVERTED_V>;/
+	<SYRIAC_LETTER_ALAPH>;/
+	<SYRIAC_LETTER_BETH>;/
+	<SYRIAC_LETTER_GAMAL>;/
+	<SYRIAC_LETTER_GAMAL_GARSHUNI>;/
+	<SYRIAC_LETTER_DALATH>;/
+	<SYRIAC_LETTER_DOTLESS_DALATH_RISH>;/
+	<SYRIAC_LETTER_HE>;/
+	<SYRIAC_LETTER_WAW>;/
+	<SYRIAC_LETTER_ZAIN>;/
+	<SYRIAC_LETTER_HETH>;/
+	<SYRIAC_LETTER_TETH>;/
+	<SYRIAC_LETTER_TETH_GARSHUNI>;/
+	<SYRIAC_LETTER_YUDH>;/
+	<SYRIAC_LETTER_YUDH_HE>;/
+	<SYRIAC_LETTER_KAPH>;/
+	<SYRIAC_LETTER_LAMADH>;/
+	<SYRIAC_LETTER_MIM>;/
+	<SYRIAC_LETTER_NUN>;/
+	<SYRIAC_LETTER_SEMKATH>;/
+	<SYRIAC_LETTER_FINAL_SEMKATH>;/
+	<SYRIAC_LETTER_E>;/
+	<SYRIAC_LETTER_PE>;/
+	<SYRIAC_LETTER_REVERSED_PE>;/
+	<SYRIAC_LETTER_SADHE>;/
+	<SYRIAC_LETTER_QAPH>;/
+	<SYRIAC_LETTER_RISH>;/
+	<SYRIAC_LETTER_SHIN>;/
+	<SYRIAC_LETTER_TAW>;/
+	<SYRIAC_LETTER_PERSIAN_BHETH>;/
+	<SYRIAC_LETTER_PERSIAN_GHAMAL>;/
+	<SYRIAC_LETTER_PERSIAN_DHALATH>;/
+	<SYRIAC_LETTER_SOGDIAN_ZHAIN>;/
+	<SYRIAC_LETTER_SOGDIAN_KHAPH>;/
+	<SYRIAC_LETTER_SOGDIAN_FE>;/
+	<ARABIC_LETTER_BEH_WITH_THREE_DOTS_HORIZONTALLY_BELOW>;/
+	<ARABIC_LETTER_BEH_WITH_DOT_BELOW_AND_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_BEH_WITH_THREE_DOTS_POINTING_UPWARDS_BELOW>;/
+	<ARABIC_LETTER_BEH_WITH_THREE_DOTS_POINTING_UPWARDS_BELOW_AND_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_BEH_WITH_TWO_DOTS_BELOW_AND_DOT_ABOVE>;/
+	<ARABIC_LETTER_BEH_WITH_INVERTED_SMALL_V_BELOW>;/
+	<ARABIC_LETTER_BEH_WITH_SMALL_V>;/
+	<ARABIC_LETTER_HAH_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_HAH_WITH_THREE_DOTS_POINTING_UPWARDS_BELOW>;/
+	<ARABIC_LETTER_DAL_WITH_TWO_DOTS_VERTICALLY_BELOW_AND_SMALL_TAH>;/
+	<ARABIC_LETTER_DAL_WITH_INVERTED_SMALL_V_BELOW>;/
+	<ARABIC_LETTER_REH_WITH_STROKE>;/
+	<ARABIC_LETTER_SEEN_WITH_FOUR_DOTS_ABOVE>;/
+	<ARABIC_LETTER_AIN_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_AIN_WITH_THREE_DOTS_POINTING_DOWNWARDS_ABOVE>;/
+	<ARABIC_LETTER_AIN_WITH_TWO_DOTS_VERTICALLY_ABOVE>;/
+	<ARABIC_LETTER_FEH_WITH_TWO_DOTS_BELOW>;/
+	<ARABIC_LETTER_FEH_WITH_THREE_DOTS_POINTING_UPWARDS_BELOW>;/
+	<ARABIC_LETTER_KEHEH_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_KEHEH_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_KEHEH_WITH_THREE_DOTS_POINTING_UPWARDS_BELOW>;/
+	<ARABIC_LETTER_MEEM_WITH_DOT_ABOVE>;/
+	<ARABIC_LETTER_MEEM_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_NOON_WITH_TWO_DOTS_BELOW>;/
+	<ARABIC_LETTER_NOON_WITH_SMALL_TAH>;/
+	<ARABIC_LETTER_NOON_WITH_SMALL_V>;/
+	<ARABIC_LETTER_LAM_WITH_BAR>;/
+	<ARABIC_LETTER_REH_WITH_TWO_DOTS_VERTICALLY_ABOVE>;/
+	<ARABIC_LETTER_REH_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_SEEN_WITH_TWO_DOTS_VERTICALLY_ABOVE>;/
+	<ARABIC_LETTER_HAH_WITH_SMALL_ARABIC_LETTER_TAH_BELOW>;/
+	<ARABIC_LETTER_HAH_WITH_SMALL_ARABIC_LETTER_TAH_AND_TWO_DOTS>;/
+	<ARABIC_LETTER_SEEN_WITH_SMALL_ARABIC_LETTER_TAH_AND_TWO_DOTS>;/
+	<ARABIC_LETTER_REH_WITH_SMALL_ARABIC_LETTER_TAH_AND_TWO_DOTS>;/
+	<ARABIC_LETTER_HAH_WITH_SMALL_ARABIC_LETTER_TAH_ABOVE>;/
+	<ARABIC_LETTER_ALEF_WITH_EXTENDED_ARABIC-INDIC_DIGIT_TWO_ABOVE>;/
+	<ARABIC_LETTER_ALEF_WITH_EXTENDED_ARABIC-INDIC_DIGIT_THREE_ABOVE>;/
+	<ARABIC_LETTER_FARSI_YEH_WITH_EXTENDED_ARABIC-INDIC_DIGIT_TWO_ABOVE>;/
+	<ARABIC_LETTER_FARSI_YEH_WITH_EXTENDED_ARABIC-INDIC_DIGIT_THREE_ABOVE>;/
+	<ARABIC_LETTER_FARSI_YEH_WITH_EXTENDED_ARABIC-INDIC_DIGIT_FOUR_BELOW>;/
+	<ARABIC_LETTER_WAW_WITH_EXTENDED_ARABIC-INDIC_DIGIT_TWO_ABOVE>;/
+	<ARABIC_LETTER_WAW_WITH_EXTENDED_ARABIC-INDIC_DIGIT_THREE_ABOVE>;/
+	<ARABIC_LETTER_YEH_BARREE_WITH_EXTENDED_ARABIC-INDIC_DIGIT_TWO_ABOVE>;/
+	<ARABIC_LETTER_YEH_BARREE_WITH_EXTENDED_ARABIC-INDIC_DIGIT_THREE_ABOVE>;/
+	<ARABIC_LETTER_HAH_WITH_EXTENDED_ARABIC-INDIC_DIGIT_FOUR_BELOW>;/
+	<ARABIC_LETTER_SEEN_WITH_EXTENDED_ARABIC-INDIC_DIGIT_FOUR_ABOVE>;/
+	<ARABIC_LETTER_SEEN_WITH_INVERTED_V>;/
+	<ARABIC_LETTER_KAF_WITH_TWO_DOTS_ABOVE>;/
+	<THAANA_LETTER_HAA>;/
+	<THAANA_LETTER_SHAVIYANI>;/
+	<THAANA_LETTER_NOONU>;/
+	<THAANA_LETTER_RAA>;/
+	<THAANA_LETTER_BAA>;/
+	<THAANA_LETTER_LHAVIYANI>;/
+	<THAANA_LETTER_KAAFU>;/
+	<THAANA_LETTER_ALIFU>;/
+	<THAANA_LETTER_VAAVU>;/
+	<THAANA_LETTER_MEEMU>;/
+	<THAANA_LETTER_FAAFU>;/
+	<THAANA_LETTER_DHAALU>;/
+	<THAANA_LETTER_THAA>;/
+	<THAANA_LETTER_LAAMU>;/
+	<THAANA_LETTER_GAAFU>;/
+	<THAANA_LETTER_GNAVIYANI>;/
+	<THAANA_LETTER_SEENU>;/
+	<THAANA_LETTER_DAVIYANI>;/
+	<THAANA_LETTER_ZAVIYANI>;/
+	<THAANA_LETTER_TAVIYANI>;/
+	<THAANA_LETTER_YAA>;/
+	<THAANA_LETTER_PAVIYANI>;/
+	<THAANA_LETTER_JAVIYANI>;/
+	<THAANA_LETTER_CHAVIYANI>;/
+	<THAANA_LETTER_TTAA>;/
+	<THAANA_LETTER_HHAA>;/
+	<THAANA_LETTER_KHAA>;/
+	<THAANA_LETTER_THAALU>;/
+	<THAANA_LETTER_ZAA>;/
+	<THAANA_LETTER_SHEENU>;/
+	<THAANA_LETTER_SAADHU>;/
+	<THAANA_LETTER_DAADHU>;/
+	<THAANA_LETTER_TO>;/
+	<THAANA_LETTER_ZO>;/
+	<THAANA_LETTER_AINU>;/
+	<THAANA_LETTER_GHAINU>;/
+	<THAANA_LETTER_QAAFU>;/
+	<THAANA_LETTER_WAAVU>;/
+	<THAANA_LETTER_NAA>;/
+	<NKO_LETTER_A>;/
+	<NKO_LETTER_EE>;/
+	<NKO_LETTER_I>;/
+	<NKO_LETTER_E>;/
+	<NKO_LETTER_U>;/
+	<NKO_LETTER_OO>;/
+	<NKO_LETTER_O>;/
+	<NKO_LETTER_DAGBASINNA>;/
+	<NKO_LETTER_N>;/
+	<NKO_LETTER_BA>;/
+	<NKO_LETTER_PA>;/
+	<NKO_LETTER_TA>;/
+	<NKO_LETTER_JA>;/
+	<NKO_LETTER_CHA>;/
+	<NKO_LETTER_DA>;/
+	<NKO_LETTER_RA>;/
+	<NKO_LETTER_RRA>;/
+	<NKO_LETTER_SA>;/
+	<NKO_LETTER_GBA>;/
+	<NKO_LETTER_FA>;/
+	<NKO_LETTER_KA>;/
+	<NKO_LETTER_LA>;/
+	<NKO_LETTER_NA_WOLOSO>;/
+	<NKO_LETTER_MA>;/
+	<NKO_LETTER_NYA>;/
+	<NKO_LETTER_NA>;/
+	<NKO_LETTER_HA>;/
+	<NKO_LETTER_WA>;/
+	<NKO_LETTER_YA>;/
+	<NKO_LETTER_NYA_WOLOSO>;/
+	<NKO_LETTER_JONA_JA>;/
+	<NKO_LETTER_JONA_CHA>;/
+	<NKO_LETTER_JONA_RA>;/
+	<NKO_HIGH_TONE_APOSTROPHE>;/
+	<NKO_LOW_TONE_APOSTROPHE>;/
+	<NKO_LAJANYALAN>;/
+	<SAMARITAN_LETTER_ALAF>;/
+	<SAMARITAN_LETTER_BIT>;/
+	<SAMARITAN_LETTER_GAMAN>;/
+	<SAMARITAN_LETTER_DALAT>;/
+	<SAMARITAN_LETTER_IY>;/
+	<SAMARITAN_LETTER_BAA>;/
+	<SAMARITAN_LETTER_ZEN>;/
+	<SAMARITAN_LETTER_IT>;/
+	<SAMARITAN_LETTER_TIT>;/
+	<SAMARITAN_LETTER_YUT>;/
+	<SAMARITAN_LETTER_KAAF>;/
+	<SAMARITAN_LETTER_LABAT>;/
+	<SAMARITAN_LETTER_MIM>;/
+	<SAMARITAN_LETTER_NUN>;/
+	<SAMARITAN_LETTER_SINGAAT>;/
+	<SAMARITAN_LETTER_IN>;/
+	<SAMARITAN_LETTER_FI>;/
+	<SAMARITAN_LETTER_TSAADIY>;/
+	<SAMARITAN_LETTER_QUF>;/
+	<SAMARITAN_LETTER_RISH>;/
+	<SAMARITAN_LETTER_SHAN>;/
+	<SAMARITAN_LETTER_TAAF>;/
+	<SAMARITAN_MODIFIER_LETTER_EPENTHETIC_YUT>;/
+	<SAMARITAN_MODIFIER_LETTER_SHORT_A>;/
+	<SAMARITAN_MODIFIER_LETTER_I>;/
+	<MANDAIC_LETTER_HALQA>;/
+	<MANDAIC_LETTER_AB>;/
+	<MANDAIC_LETTER_AG>;/
+	<MANDAIC_LETTER_AD>;/
+	<MANDAIC_LETTER_AH>;/
+	<MANDAIC_LETTER_USHENNA>;/
+	<MANDAIC_LETTER_AZ>;/
+	<MANDAIC_LETTER_IT>;/
+	<MANDAIC_LETTER_ATT>;/
+	<MANDAIC_LETTER_AKSA>;/
+	<MANDAIC_LETTER_AK>;/
+	<MANDAIC_LETTER_AL>;/
+	<MANDAIC_LETTER_AM>;/
+	<MANDAIC_LETTER_AN>;/
+	<MANDAIC_LETTER_AS>;/
+	<MANDAIC_LETTER_IN>;/
+	<MANDAIC_LETTER_AP>;/
+	<MANDAIC_LETTER_ASZ>;/
+	<MANDAIC_LETTER_AQ>;/
+	<MANDAIC_LETTER_AR>;/
+	<MANDAIC_LETTER_ASH>;/
+	<MANDAIC_LETTER_AT>;/
+	<MANDAIC_LETTER_DUSHENNA>;/
+	<MANDAIC_LETTER_KAD>;/
+	<MANDAIC_LETTER_AIN>;/
+	<SYRIAC_LETTER_MALAYALAM_NGA>;/
+	<SYRIAC_LETTER_MALAYALAM_JA>;/
+	<SYRIAC_LETTER_MALAYALAM_NYA>;/
+	<SYRIAC_LETTER_MALAYALAM_TTA>;/
+	<SYRIAC_LETTER_MALAYALAM_NNA>;/
+	<SYRIAC_LETTER_MALAYALAM_NNNA>;/
+	<SYRIAC_LETTER_MALAYALAM_BHA>;/
+	<SYRIAC_LETTER_MALAYALAM_RA>;/
+	<SYRIAC_LETTER_MALAYALAM_LLA>;/
+	<SYRIAC_LETTER_MALAYALAM_LLLA>;/
+	<SYRIAC_LETTER_MALAYALAM_SSA>;/
+	<ARABIC_LETTER_BEH_WITH_SMALL_V_BELOW>;/
+	<ARABIC_LETTER_BEH_WITH_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_JEEM_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_TAH_WITH_TWO_DOTS_ABOVE>;/
+	<ARABIC_LETTER_FEH_WITH_DOT_BELOW_AND_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_QAF_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_LAM_WITH_DOUBLE_BAR>;/
+	<ARABIC_LETTER_MEEM_WITH_THREE_DOTS_ABOVE>;/
+	<ARABIC_LETTER_YEH_WITH_TWO_DOTS_BELOW_AND_HAMZA_ABOVE>;/
+	<ARABIC_LETTER_YEH_WITH_TWO_DOTS_BELOW_AND_DOT_ABOVE>;/
+	<ARABIC_LETTER_REH_WITH_LOOP>;/
+	<ARABIC_LETTER_WAW_WITH_DOT_WITHIN>;/
+	<ARABIC_LETTER_ROHINGYA_YEH>;/
+	<ARABIC_LETTER_LOW_ALEF>;/
+	<ARABIC_LETTER_DAL_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_SAD_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_GAF_WITH_INVERTED_STROKE>;/
+	<ARABIC_LETTER_STRAIGHT_WAW>;/
+	<ARABIC_LETTER_ZAIN_WITH_INVERTED_V_ABOVE>;/
+	<ARABIC_LETTER_AIN_WITH_THREE_DOTS_BELOW>;/
+	<ARABIC_LETTER_KAF_WITH_DOT_BELOW>;/
+	<ARABIC_LETTER_BEH_WITH_SMALL_MEEM_ABOVE>;/
+	<ARABIC_LETTER_PEH_WITH_SMALL_MEEM_ABOVE>;/
+	<ARABIC_LETTER_TEH_WITH_SMALL_TEH_ABOVE>;/
+	<ARABIC_LETTER_REH_WITH_SMALL_NOON_ABOVE>;/
+	<ARABIC_LETTER_YEH_WITH_TWO_DOTS_BELOW_AND_SMALL_NOON_ABOVE>;/
+	<ARABIC_LETTER_AFRICAN_FEH>;/
+	<ARABIC_LETTER_AFRICAN_QAF>;/
+	<ARABIC_LETTER_AFRICAN_NOON>;/
+	<DEVANAGARI_LETTER_SHORT_A>;/
+	<DEVANAGARI_LETTER_A>;/
+	<DEVANAGARI_LETTER_AA>;/
+	<DEVANAGARI_LETTER_I>;/
+	<DEVANAGARI_LETTER_II>;/
+	<DEVANAGARI_LETTER_U>;/
+	<DEVANAGARI_LETTER_UU>;/
+	<DEVANAGARI_LETTER_VOCALIC_R>;/
+	<DEVANAGARI_LETTER_VOCALIC_L>;/
+	<DEVANAGARI_LETTER_CANDRA_E>;/
+	<DEVANAGARI_LETTER_SHORT_E>;/
+	<DEVANAGARI_LETTER_E>;/
+	<DEVANAGARI_LETTER_AI>;/
+	<DEVANAGARI_LETTER_CANDRA_O>;/
+	<DEVANAGARI_LETTER_SHORT_O>;/
+	<DEVANAGARI_LETTER_O>;/
+	<DEVANAGARI_LETTER_AU>;/
+	<DEVANAGARI_LETTER_KA>;/
+	<DEVANAGARI_LETTER_KHA>;/
+	<DEVANAGARI_LETTER_GA>;/
+	<DEVANAGARI_LETTER_GHA>;/
+	<DEVANAGARI_LETTER_NGA>;/
+	<DEVANAGARI_LETTER_CA>;/
+	<DEVANAGARI_LETTER_CHA>;/
+	<DEVANAGARI_LETTER_JA>;/
+	<DEVANAGARI_LETTER_JHA>;/
+	<DEVANAGARI_LETTER_NYA>;/
+	<DEVANAGARI_LETTER_TTA>;/
+	<DEVANAGARI_LETTER_TTHA>;/
+	<DEVANAGARI_LETTER_DDA>;/
+	<DEVANAGARI_LETTER_DDHA>;/
+	<DEVANAGARI_LETTER_NNA>;/
+	<DEVANAGARI_LETTER_TA>;/
+	<DEVANAGARI_LETTER_THA>;/
+	<DEVANAGARI_LETTER_DA>;/
+	<DEVANAGARI_LETTER_DHA>;/
+	<DEVANAGARI_LETTER_NA>;/
+	<DEVANAGARI_LETTER_NNNA>;/
+	<DEVANAGARI_LETTER_PA>;/
+	<DEVANAGARI_LETTER_PHA>;/
+	<DEVANAGARI_LETTER_BA>;/
+	<DEVANAGARI_LETTER_BHA>;/
+	<DEVANAGARI_LETTER_MA>;/
+	<DEVANAGARI_LETTER_YA>;/
+	<DEVANAGARI_LETTER_RA>;/
+	<DEVANAGARI_LETTER_RRA>;/
+	<DEVANAGARI_LETTER_LA>;/
+	<DEVANAGARI_LETTER_LLA>;/
+	<DEVANAGARI_LETTER_LLLA>;/
+	<DEVANAGARI_LETTER_VA>;/
+	<DEVANAGARI_LETTER_SHA>;/
+	<DEVANAGARI_LETTER_SSA>;/
+	<DEVANAGARI_LETTER_SA>;/
+	<DEVANAGARI_LETTER_HA>;/
+	<DEVANAGARI_SIGN_AVAGRAHA>;/
+	<DEVANAGARI_OM>;/
+	<DEVANAGARI_LETTER_QA>;/
+	<DEVANAGARI_LETTER_KHHA>;/
+	<DEVANAGARI_LETTER_GHHA>;/
+	<DEVANAGARI_LETTER_ZA>;/
+	<DEVANAGARI_LETTER_DDDHA>;/
+	<DEVANAGARI_LETTER_RHA>;/
+	<DEVANAGARI_LETTER_FA>;/
+	<DEVANAGARI_LETTER_YYA>;/
+	<DEVANAGARI_LETTER_VOCALIC_RR>;/
+	<DEVANAGARI_LETTER_VOCALIC_LL>;/
+	<DEVANAGARI_SIGN_HIGH_SPACING_DOT>;/
+	<DEVANAGARI_LETTER_CANDRA_A>;/
+	<DEVANAGARI_LETTER_OE>;/
+	<DEVANAGARI_LETTER_OOE>;/
+	<DEVANAGARI_LETTER_AW>;/
+	<DEVANAGARI_LETTER_UE>;/
+	<DEVANAGARI_LETTER_UUE>;/
+	<DEVANAGARI_LETTER_MARWARI_DDA>;/
+	<DEVANAGARI_LETTER_ZHA>;/
+	<DEVANAGARI_LETTER_HEAVY_YA>;/
+	<DEVANAGARI_LETTER_GGA>;/
+	<DEVANAGARI_LETTER_JJA>;/
+	<DEVANAGARI_LETTER_GLOTTAL_STOP>;/
+	<DEVANAGARI_LETTER_DDDA>;/
+	<DEVANAGARI_LETTER_BBA>;/
+	<BENGALI_ANJI>;/
+	<BENGALI_LETTER_A>;/
+	<BENGALI_LETTER_AA>;/
+	<BENGALI_LETTER_I>;/
+	<BENGALI_LETTER_II>;/
+	<BENGALI_LETTER_U>;/
+	<BENGALI_LETTER_UU>;/
+	<BENGALI_LETTER_VOCALIC_R>;/
+	<BENGALI_LETTER_VOCALIC_L>;/
+	<BENGALI_LETTER_E>;/
+	<BENGALI_LETTER_AI>;/
+	<BENGALI_LETTER_O>;/
+	<BENGALI_LETTER_AU>;/
+	<BENGALI_LETTER_KA>;/
+	<BENGALI_LETTER_KHA>;/
+	<BENGALI_LETTER_GA>;/
+	<BENGALI_LETTER_GHA>;/
+	<BENGALI_LETTER_NGA>;/
+	<BENGALI_LETTER_CA>;/
+	<BENGALI_LETTER_CHA>;/
+	<BENGALI_LETTER_JA>;/
+	<BENGALI_LETTER_JHA>;/
+	<BENGALI_LETTER_NYA>;/
+	<BENGALI_LETTER_TTA>;/
+	<BENGALI_LETTER_TTHA>;/
+	<BENGALI_LETTER_DDA>;/
+	<BENGALI_LETTER_DDHA>;/
+	<BENGALI_LETTER_NNA>;/
+	<BENGALI_LETTER_TA>;/
+	<BENGALI_LETTER_THA>;/
+	<BENGALI_LETTER_DA>;/
+	<BENGALI_LETTER_DHA>;/
+	<BENGALI_LETTER_NA>;/
+	<BENGALI_LETTER_PA>;/
+	<BENGALI_LETTER_PHA>;/
+	<BENGALI_LETTER_BA>;/
+	<BENGALI_LETTER_BHA>;/
+	<BENGALI_LETTER_MA>;/
+	<BENGALI_LETTER_YA>;/
+	<BENGALI_LETTER_RA>;/

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-stable@freebsd.org  Thu Dec  6 11:49:54 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 19DAD1329015;
 Thu,  6 Dec 2018 11:49:54 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id B41648D625;
 Thu,  6 Dec 2018 11:49:53 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 95858230D9;
 Thu,  6 Dec 2018 11:49:53 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6Bnr8Y074996;
 Thu, 6 Dec 2018 11:49:53 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6BnqDW074992;
 Thu, 6 Dec 2018 11:49:52 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812061149.wB6BnqDW074992@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 11:49:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341630 - in stable/11: share/ctypedef tools/tools/locale
 tools/tools/locale/etc
X-SVN-Group: stable-11
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: in stable/11: share/ctypedef tools/tools/locale
 tools/tools/locale/etc
X-SVN-Commit-Revision: 341630
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: B41648D625
X-Spamd-Result: default: False [-1.13 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.46)[-0.456,0];
 NEURAL_HAM_SHORT(-0.61)[-0.609,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.07)[-0.070,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 11:49:54 -0000

Author: yuripv
Date: Thu Dec  6 11:49:52 2018
New Revision: 341630
URL: https://svnweb.freebsd.org/changeset/base/341630

Log:
  MFC r339311, r339313:
  Restore some of the ctype definitions reported in the PR from pre-CLDR
  data, namely 0xE000-0xF8FF private use area, and 0xFF00-0xFFF half- and
  fullwidth punctuation.
  
  While here, update tools/tools/locale/README based on my experience
  rebuilding the locale data.
  
  PR:		225692
  Reviewed by:	bapt, cem (previous version)
  Differential Revision:	https://reviews.freebsd.org/D17471

Modified:
  stable/11/share/ctypedef/en_US.UTF-8.src
  stable/11/tools/tools/locale/README
  stable/11/tools/tools/locale/etc/common.UTF-8.src
  stable/11/tools/tools/locale/etc/manual-input.UTF-8   (contents, props changed)
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/ctypedef/en_US.UTF-8.src
==============================================================================
--- stable/11/share/ctypedef/en_US.UTF-8.src	Thu Dec  6 10:53:11 2018	(r341629)
+++ stable/11/share/ctypedef/en_US.UTF-8.src	Thu Dec  6 11:49:52 2018	(r341630)
@@ -6241,6 +6241,12 @@ graph	<MEETEI_MAYEK_LETTER_KOK>;...;<MEETEI_MAYEK_APUN
 digit	<MEETEI_MAYEK_DIGIT_ZERO>;...;<MEETEI_MAYEK_DIGIT_NINE>
 
 **********************************************************************
+* 0xE000 - 0xF8FF Private Use Area (from pre-CLDR data)
+**********************************************************************
+
+graph	<PRIVATE_USE_AREA-E000>;...;<PRIVATE_USE_AREA-F8FF>
+
+**********************************************************************
 * 0xFB50 - 0xFDFF Arabic Presentation Forms (differential)
 **********************************************************************
 
@@ -6277,6 +6283,17 @@ punct	<SMALL_COMMA>;...;<SMALL_COMMERCIAL_AT>
 **********************************************************************
 
 blank	<ZERO_WIDTH_NO-BREAK_SPACE>
+
+**********************************************************************
+* 0xFF00 - 0xFFFF Half- and Fullwidth Punctuation (from pre-CLDR data)
+**********************************************************************
+
+punct	<FULLWIDTH_EXCLAMATION_MARK>;...;<FULLWIDTH_SOLIDUS>;/
+	<FULLWIDTH_COLON>;...;<FULLWIDTH_COMMERCIAL_AT>;/
+	<FULLWIDTH_LEFT_SQUARE_BRACKET>;...;<FULLWIDTH_GRAVE_ACCENT>;/
+	<FULLWIDTH_LEFT_CURLY_BRACKET>;...;<HALFWIDTH_KATAKANA_MIDDLE_DOT>;/
+	<FULLWIDTH_CENT_SIGN>;...;<FULLWIDTH_WON_SIGN>;/
+	<HALFWIDTH_FORMS_LIGHT_VERTICAL>;...;<HALFWIDTH_WHITE_CIRCLE>
 
 **********************************************************************
 * 0x10300 - 0x1032F Old Italic

Modified: stable/11/tools/tools/locale/README
==============================================================================
--- stable/11/tools/tools/locale/README	Thu Dec  6 10:53:11 2018	(r341629)
+++ stable/11/tools/tools/locale/README	Thu Dec  6 11:49:52 2018	(r341630)
@@ -2,17 +2,37 @@
 
 To generate the locales:
 
-Tools needed: java, perl and devel/p5-Tie-IxHash
+Tools needed:
+	java (openjdk >= 8)
+	perl
+	converters/p5-Text-Iconv
+	devel/p5-Tie-IxHash
+	textproc/p5-XML-Parser
 
-fetch cldr data from: http://cldr.unicode.org
-extract in a directory ~/unicode/cldr/v27.0.1 for example
-fetch unidata from http://www.unicode.org/Public/zipped/ (latest version)
-extract in a directory ~/unicode/UNIDATA/8.0.0 for example
+Fetch CLDR data from: http://unicode.org/Public/cldr/.  You need all of the
+core.zip, keyboards.zip, and tools.zip.
 
-either modify tools/tools/locales/etc/unicode.conf or export variables:
-CLDRDIR="~/unicode/cldr/v27.0.1"
-UNIDATADIR="~/unicode/UNIDATA/8.0.0"
+Extract:
+	mkdir -p ~/unicode/cldr/v33.0
+	cd ~/unicode/cldr/v33.0
+	unzip ~/core.zip ~/keyboards.zip ~/tools.zip
 
-run:
-make POSIX
-make install
+Fetch unidata (UCD.zip) from http://www.unicode.org/Public/zipped/latest.
+
+Extract:
+	mkdir -p ~/unicode/UNIDATA/11.0.0
+	cd ~/unicode/UNIDATA/11.0.0
+	unzip ~/UCD.zip
+
+Either modify tools/tools/locales/etc/unicode.conf or export variables:
+	CLDRDIR=~/unicode/cldr/v33.0; export CLDRDIR
+	UNIDATADIR=~/unicode/UNIDATA/9.0.0; export UNIDATADIR
+
+Build the CLDR tools:
+	cd $CLDRDIR/tools/java
+	ant jar
+
+Run:
+	make POSIX
+	make
+	make install

Modified: stable/11/tools/tools/locale/etc/common.UTF-8.src
==============================================================================
--- stable/11/tools/tools/locale/etc/common.UTF-8.src	Thu Dec  6 10:53:11 2018	(r341629)
+++ stable/11/tools/tools/locale/etc/common.UTF-8.src	Thu Dec  6 11:49:52 2018	(r341630)
@@ -6241,6 +6241,12 @@ graph	<MEETEI_MAYEK_LETTER_KOK>;...;<MEETEI_MAYEK_APUN
 digit	<MEETEI_MAYEK_DIGIT_ZERO>;...;<MEETEI_MAYEK_DIGIT_NINE>
 
 **********************************************************************
+* 0xE000 - 0xF8FF Private Use Area (from pre-CLDR data)
+**********************************************************************
+
+graph	<PRIVATE_USE_AREA-E000>;...;<PRIVATE_USE_AREA-F8FF>
+
+**********************************************************************
 * 0xFB50 - 0xFDFF Arabic Presentation Forms (differential)
 **********************************************************************
 
@@ -6277,6 +6283,17 @@ punct	<SMALL_COMMA>;...;<SMALL_COMMERCIAL_AT>
 **********************************************************************
 
 blank	<ZERO_WIDTH_NO-BREAK_SPACE>
+
+**********************************************************************
+* 0xFF00 - 0xFFFF Half- and Fullwidth Punctuation (from pre-CLDR data)
+**********************************************************************
+
+punct	<FULLWIDTH_EXCLAMATION_MARK>;...;<FULLWIDTH_SOLIDUS>;/
+	<FULLWIDTH_COLON>;...;<FULLWIDTH_COMMERCIAL_AT>;/
+	<FULLWIDTH_LEFT_SQUARE_BRACKET>;...;<FULLWIDTH_GRAVE_ACCENT>;/
+	<FULLWIDTH_LEFT_CURLY_BRACKET>;...;<HALFWIDTH_KATAKANA_MIDDLE_DOT>;/
+	<FULLWIDTH_CENT_SIGN>;...;<FULLWIDTH_WON_SIGN>;/
+	<HALFWIDTH_FORMS_LIGHT_VERTICAL>;...;<HALFWIDTH_WHITE_CIRCLE>
 
 **********************************************************************
 * 0x10300 - 0x1032F Old Italic

Modified: stable/11/tools/tools/locale/etc/manual-input.UTF-8
==============================================================================
--- stable/11/tools/tools/locale/etc/manual-input.UTF-8	Thu Dec  6 10:53:11 2018	(r341629)
+++ stable/11/tools/tools/locale/etc/manual-input.UTF-8	Thu Dec  6 11:49:52 2018	(r341630)
@@ -877,6 +877,12 @@ graph	<MEETEI_MAYEK_LETTER_KOK>;...;<MEETEI_MAYEK_APUN
 digit	<MEETEI_MAYEK_DIGIT_ZERO>;...;<MEETEI_MAYEK_DIGIT_NINE>
 
 **********************************************************************
+* 0xE000 - 0xF8FF Private Use Area (from pre-CLDR data)
+**********************************************************************
+
+graph	<PRIVATE_USE_AREA-E000>;...;<PRIVATE_USE_AREA-F8FF>
+
+**********************************************************************
 * 0xFB50 - 0xFDFF Arabic Presentation Forms (differential)
 **********************************************************************
 
@@ -913,6 +919,17 @@ punct	<SMALL_COMMA>;...;<SMALL_COMMERCIAL_AT>
 **********************************************************************
 
 blank	<ZERO_WIDTH_NO-BREAK_SPACE>
+
+**********************************************************************
+* 0xFF00 - 0xFFFF Half- and Fullwidth Punctuation (from pre-CLDR data)
+**********************************************************************
+
+punct	<FULLWIDTH_EXCLAMATION_MARK>;...;<FULLWIDTH_SOLIDUS>;/
+	<FULLWIDTH_COLON>;...;<FULLWIDTH_COMMERCIAL_AT>;/
+	<FULLWIDTH_LEFT_SQUARE_BRACKET>;...;<FULLWIDTH_GRAVE_ACCENT>;/
+	<FULLWIDTH_LEFT_CURLY_BRACKET>;...;<HALFWIDTH_KATAKANA_MIDDLE_DOT>;/
+	<FULLWIDTH_CENT_SIGN>;...;<FULLWIDTH_WON_SIGN>;/
+	<HALFWIDTH_FORMS_LIGHT_VERTICAL>;...;<HALFWIDTH_WHITE_CIRCLE>
 
 **********************************************************************
 * 0x10300 - 0x1032F Old Italic

From owner-svn-src-stable@freebsd.org  Thu Dec  6 11:52:08 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id CBB1C1329369;
 Thu,  6 Dec 2018 11:52:08 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 737828DAB6;
 Thu,  6 Dec 2018 11:52:08 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 55BE023249;
 Thu,  6 Dec 2018 11:52:08 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6Bq8iV077397;
 Thu, 6 Dec 2018 11:52:08 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6Bq8fu077396;
 Thu, 6 Dec 2018 11:52:08 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812061152.wB6Bq8fu077396@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Thu, 6 Dec 2018 11:52:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341631 - stable/11/usr.bin/localedef
X-SVN-Group: stable-11
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: stable/11/usr.bin/localedef
X-SVN-Commit-Revision: 341631
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 737828DAB6
X-Spamd-Result: default: False [-1.18 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.48)[-0.477,0];
 NEURAL_HAM_SHORT(-0.60)[-0.599,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 11:52:09 -0000

Author: yuripv
Date: Thu Dec  6 11:52:07 2018
New Revision: 341631
URL: https://svnweb.freebsd.org/changeset/base/341631

Log:
  MFC r339827:
  localedef: define characters in "space" class also as "print", except
  for the known conflicts ("control" characters can't be "print"able).
  POSIX doesn't explicitly forbid this, and actually includes <space>
  character in "print".
  
  PR:		225692
  Reviewed by:	bapt, cem (previous version), pfg (previous version)
  Differential Revision:	https://reviews.freebsd.org/D17467

Modified:
  stable/11/usr.bin/localedef/ctype.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.bin/localedef/ctype.c
==============================================================================
--- stable/11/usr.bin/localedef/ctype.c	Thu Dec  6 11:49:52 2018	(r341630)
+++ stable/11/usr.bin/localedef/ctype.c	Thu Dec  6 11:52:07 2018	(r341631)
@@ -120,7 +120,13 @@ add_ctype_impl(ctype_node_t *ctn)
 		ctn->ctype |= (_ISDIGIT | _ISGRAPH | _ISPRINT | _ISXDIGIT | _E4);
 		break;
 	case T_ISSPACE:
-		ctn->ctype |= _ISSPACE;
+		/*
+		 * This can be troublesome as <form-feed>, <newline>,
+		 * <carriage-return>, <tab>, and <vertical-tab> are defined both
+		 * as space and cntrl, and POSIX doesn't allow cntrl/print
+		 * combination.  We will take care of this in dump_ctype().
+		 */
+		ctn->ctype |= (_ISSPACE | _ISPRINT);
 		break;
 	case T_ISCNTRL:
 		ctn->ctype |= _ISCNTRL;
@@ -372,9 +378,15 @@ dump_ctype(void)
 			ctn->ctype |= _ISPRINT;
 
 		/*
-		 * Finally, POSIX requires that certain combinations
-		 * are invalid.  We don't flag this as a fatal error,
-		 * but we will warn about.
+		 * POSIX requires that certain combinations are invalid.
+		 * Try fixing the cases we know about (see add_ctype_impl()).
+		 */
+		if ((ctn->ctype & (_ISSPACE|_ISCNTRL)) == (_ISSPACE|_ISCNTRL))
+			ctn->ctype &= ~_ISPRINT;
+
+		/*
+		 * Finally, don't flag remaining cases as a fatal error,
+		 * and just warn about them.
 		 */
 		if ((ctn->ctype & _ISALPHA) &&
 		    (ctn->ctype & (_ISPUNCT|_ISDIGIT)))

From owner-svn-src-stable@freebsd.org  Thu Dec  6 13:32:52 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 948B2132D66C;
 Thu,  6 Dec 2018 13:32:52 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 3730C6B8F2;
 Thu,  6 Dec 2018 13:32:52 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 182F52435D;
 Thu,  6 Dec 2018 13:32:52 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6DWppe031485;
 Thu, 6 Dec 2018 13:32:51 GMT (envelope-from avg@FreeBSD.org)
Received: (from avg@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6DWphp031484;
 Thu, 6 Dec 2018 13:32:51 GMT (envelope-from avg@FreeBSD.org)
Message-Id: <201812061332.wB6DWphp031484@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org
 using -f
From: Andriy Gapon <avg@FreeBSD.org>
Date: Thu, 6 Dec 2018 13:32:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341633 - stable/10/sys/security/audit
X-SVN-Group: stable-10
X-SVN-Commit-Author: avg
X-SVN-Commit-Paths: stable/10/sys/security/audit
X-SVN-Commit-Revision: 341633
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 3730C6B8F2
X-Spamd-Result: default: False [-1.81 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.866,0];
 NEURAL_HAM_SHORT(-0.84)[-0.844,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 13:32:52 -0000

Author: avg
Date: Thu Dec  6 13:32:51 2018
New Revision: 341633
URL: https://svnweb.freebsd.org/changeset/base/341633

Log:
  MFC r336641: fix incorrect operator in the AUDITPIPE_SET_QLIMIT bounds check
  
  PR:		229983

Modified:
  stable/10/sys/security/audit/audit_pipe.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/security/audit/audit_pipe.c
==============================================================================
--- stable/10/sys/security/audit/audit_pipe.c	Thu Dec  6 12:34:34 2018	(r341632)
+++ stable/10/sys/security/audit/audit_pipe.c	Thu Dec  6 13:32:51 2018	(r341633)
@@ -800,7 +800,7 @@ audit_pipe_ioctl(struct cdev *dev, u_long cmd, caddr_t
 
 	case AUDITPIPE_SET_QLIMIT:
 		/* Lockless integer write. */
-		if (*(u_int *)data >= AUDIT_PIPE_QLIMIT_MIN ||
+		if (*(u_int *)data >= AUDIT_PIPE_QLIMIT_MIN &&
 		    *(u_int *)data <= AUDIT_PIPE_QLIMIT_MAX) {
 			ap->ap_qlimit = *(u_int *)data;
 			error = 0;

From owner-svn-src-stable@freebsd.org  Thu Dec  6 15:28:10 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A85F81331CA0;
 Thu,  6 Dec 2018 15:28:10 +0000 (UTC) (envelope-from erj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4F0147110B;
 Thu,  6 Dec 2018 15:28:10 +0000 (UTC) (envelope-from erj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 318C2255C6;
 Thu,  6 Dec 2018 15:28:10 +0000 (UTC) (envelope-from erj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6FSA8L089721;
 Thu, 6 Dec 2018 15:28:10 GMT (envelope-from erj@FreeBSD.org)
Received: (from erj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6FS9II089719;
 Thu, 6 Dec 2018 15:28:09 GMT (envelope-from erj@FreeBSD.org)
Message-Id: <201812061528.wB6FS9II089719@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: erj set sender to erj@FreeBSD.org
 using -f
From: Eric Joyner <erj@FreeBSD.org>
Date: Thu, 6 Dec 2018 15:28:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341636 - stable/12/sys/dev/ixl
X-SVN-Group: stable-12
X-SVN-Commit-Author: erj
X-SVN-Commit-Paths: stable/12/sys/dev/ixl
X-SVN-Commit-Revision: 341636
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4F0147110B
X-Spamd-Result: default: False [-1.92 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.866,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 NEURAL_HAM_SHORT(-0.95)[-0.953,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 15:28:10 -0000

Author: erj
Date: Thu Dec  6 15:28:09 2018
New Revision: 341636
URL: https://svnweb.freebsd.org/changeset/base/341636

Log:
  MFC r340010
  
  ixl/iavf(4): Update remaining references of "num_queues" to "num_rx_queues"

Modified:
  stable/12/sys/dev/ixl/iavf_vc.c
  stable/12/sys/dev/ixl/if_iavf.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/ixl/iavf_vc.c
==============================================================================
--- stable/12/sys/dev/ixl/iavf_vc.c	Thu Dec  6 13:52:02 2018	(r341635)
+++ stable/12/sys/dev/ixl/iavf_vc.c	Thu Dec  6 15:28:09 2018	(r341636)
@@ -720,10 +720,6 @@ iavf_update_stats_counters(struct iavf_sc *sc, struct 
 	uint64_t tx_discards;
 
 	tx_discards = es->tx_discards;
-#if 0
-	for (int i = 0; i < vsi->num_queues; i++)
-		tx_discards += sc->vsi.queues[i].txr.br->br_drops;
-#endif
 
 	/* Update ifnet stats */
 	IXL_SET_IPACKETS(vsi, es->rx_unicast +
@@ -826,7 +822,7 @@ iavf_config_rss_lut(struct iavf_sc *sc)
 		/*
 		 * Fetch the RSS bucket id for the given indirection entry.
 		 * Cap it at the number of configured buckets (which is
-		 * num_queues.)
+		 * num_rx_queues.)
 		 */
 		que_id = rss_get_indirection_to_bucket(i);
 		que_id = que_id % sc->vsi.num_rx_queues;

Modified: stable/12/sys/dev/ixl/if_iavf.c
==============================================================================
--- stable/12/sys/dev/ixl/if_iavf.c	Thu Dec  6 13:52:02 2018	(r341635)
+++ stable/12/sys/dev/ixl/if_iavf.c	Thu Dec  6 15:28:09 2018	(r341636)
@@ -1947,10 +1947,10 @@ iavf_config_rss_reg(struct iavf_sc *sc)
 		/*
 		 * Fetch the RSS bucket id for the given indirection entry.
 		 * Cap it at the number of configured buckets (which is
-		 * num_queues.)
+		 * num_rx_queues.)
 		 */
 		que_id = rss_get_indirection_to_bucket(i);
-		que_id = que_id % vsi->num_queues;
+		que_id = que_id % vsi->num_rx_queues;
 #else
 		que_id = j;
 #endif

From owner-svn-src-stable@freebsd.org  Thu Dec  6 16:10:40 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A8401133395C;
 Thu,  6 Dec 2018 16:10:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4E68E73215;
 Thu,  6 Dec 2018 16:10:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 30BAE25D32;
 Thu,  6 Dec 2018 16:10:40 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6GAehM010605;
 Thu, 6 Dec 2018 16:10:40 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6GAeso010604;
 Thu, 6 Dec 2018 16:10:40 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812061610.wB6GAeso010604@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Thu, 6 Dec 2018 16:10:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341637 - stable/12
X-SVN-Group: stable-12
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: stable/12
X-SVN-Commit-Revision: 341637
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4E68E73215
X-Spamd-Result: default: False [-1.91 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.866,0];
 NEURAL_HAM_SHORT(-0.94)[-0.943,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 16:10:40 -0000

Author: emaste
Date: Thu Dec  6 16:10:39 2018
New Revision: 341637
URL: https://svnweb.freebsd.org/changeset/base/341637

Log:
  MFC r340986: UPDATING: add note for ld.bfd removal
  
  r340984 in HEAD, MFC in r341239

Modified:
  stable/12/UPDATING
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/UPDATING
==============================================================================
--- stable/12/UPDATING	Thu Dec  6 15:28:09 2018	(r341636)
+++ stable/12/UPDATING	Thu Dec  6 16:10:39 2018	(r341637)
@@ -16,6 +16,12 @@ from older versions of FreeBSD, try WITHOUT_CLANG and 
 the tip of head, and then rebuild without this option. The bootstrap process
 from older version of current across the gcc/clang cutover is a bit fragile.
 
+20181129:
+	On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld
+	linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as
+	it produces broken binaries when ifuncs are in use.  Users needing
+	GNU ld should install the binutils port or package.
+
 20181115:
 	The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue)
 	has been converted to a port (misc/ctm) and will be removed from

From owner-svn-src-stable@freebsd.org  Thu Dec  6 19:18:53 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id CB2AB130FDAA;
 Thu,  6 Dec 2018 19:18:52 +0000 (UTC)
 (envelope-from kevans@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 6DD977B9B1;
 Thu,  6 Dec 2018 19:18:52 +0000 (UTC)
 (envelope-from kevans@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4F02327F34;
 Thu,  6 Dec 2018 19:18:52 +0000 (UTC)
 (envelope-from kevans@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB6JIqhP010553;
 Thu, 6 Dec 2018 19:18:52 GMT (envelope-from kevans@FreeBSD.org)
Received: (from kevans@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB6JIq8P010552;
 Thu, 6 Dec 2018 19:18:52 GMT (envelope-from kevans@FreeBSD.org)
Message-Id: <201812061918.wB6JIq8P010552@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kevans set sender to
 kevans@FreeBSD.org using -f
From: Kyle Evans <kevans@FreeBSD.org>
Date: Thu, 6 Dec 2018 19:18:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341644 - stable/11/sys/kern
X-SVN-Group: stable-11
X-SVN-Commit-Author: kevans
X-SVN-Commit-Paths: stable/11/sys/kern
X-SVN-Commit-Revision: 341644
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6DD977B9B1
X-Spamd-Result: default: False [-1.90 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.868,0];
 NEURAL_HAM_LONG(-0.07)[-0.070,0];
 NEURAL_HAM_SHORT(-0.96)[-0.965,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Dec 2018 19:18:53 -0000

Author: kevans
Date: Thu Dec  6 19:18:51 2018
New Revision: 341644
URL: https://svnweb.freebsd.org/changeset/base/341644

Log:
  Fix kenv handling in stable/11 following r337333
  
  The aforementioned commit merged revised static_env/static_hint handling to
  allow static_env and loader env to coexist with the variable
  loader_env.disabled=0. init_static_kenv had been rewritten slighly in an
  attempt to maintain historical behavior: the static environment and loader
  environment are mutually exclusive, unless the latter disables the former.
  
  The rewritten version botched this by only setting up the loader environment
  if the static environment was empty or if the loader environment was
  specifically enabled. It was never given a chance to disable the static
  environment, so the default behavior was broken unless the loader
  environment was specifically enabled by the static environment.
  
  Rewrite this again to do the right thing:
  - Setup the static environment and check loader_env.disabled; if it's
    explicitly enabled, we're done.
  - Check static_{env,hints}.disabled and "empty out" the respective
    environments as needed
  - Finally, check: if the static environment is not empty and we've not
    explicitly re-enabled the static environment with loader_env.disabled=0,
    we tear the loader environment (which was setup to 'keep things simple')
    down again.
  
  Future commits to head (and subsequently MFC'd) will likely zero these
  environments out if they're disabled since this normally happens when
  they're merged into the dynamic environment.
  
  This is a direct commit to stable/11 because this particular bug does not
  apply to head.
  
  Fixes:		r337333
  Reported by:	bde

Modified:
  stable/11/sys/kern/kern_environment.c

Modified: stable/11/sys/kern/kern_environment.c
==============================================================================
--- stable/11/sys/kern/kern_environment.c	Thu Dec  6 18:59:33 2018	(r341643)
+++ stable/11/sys/kern/kern_environment.c	Thu Dec  6 19:18:51 2018	(r341644)
@@ -245,7 +245,7 @@ done:
 void
 init_static_kenv(char *buf, size_t len)
 {
-	char *eval;
+	char *eval, *loader_eval;
 
 	KASSERT(!dynamic_kenv, ("kenv: dynamic_kenv already initialized"));
 	/*
@@ -264,21 +264,43 @@ init_static_kenv(char *buf, size_t len)
 	 *
 	 * As a warning, the static environment may not be disabled in any way
 	 * if the static environment has disabled the loader environment.
+	 *
+	 * We're setting up the static environment early here because it will
+	 * either be used or empty.
 	 */
 	kern_envp = static_env;
-	eval = kern_getenv("loader_env.disabled");
-	if (*kern_envp == '\0' || (eval != NULL && strcmp(eval, "0") == 0)) {
-		md_envp = buf;
-		md_env_len = len;
-		md_env_pos = 0;
+	loader_eval = kern_getenv("loader_env.disabled");
+	if (loader_eval != NULL && strcmp(loader_eval, "1") == 0)
+		/* Bail out early, the loader environment is disabled. */
+		return;
 
-		eval = kern_getenv("static_env.disabled");
-		if (eval != NULL && strcmp(eval, "1") == 0)
-			*kern_envp = '\0';
-	}
+	/*
+	 * Next, the loader env is checked for the status of the static env.  We
+	 * are allowing static_env and static_hints to disable themselves here for
+	 * the sake of simplicity.
+	 */
+	md_envp = buf;
+	md_env_len = len;
+	md_env_pos = 0;
+
+	eval = kern_getenv("static_env.disabled");
+	if (eval != NULL && strcmp(eval, "1") == 0)
+		*static_env = '\0';
+
 	eval = kern_getenv("static_hints.disabled");
 	if (eval != NULL && strcmp(eval, "1") == 0)
 		*static_hints = '\0';
+
+	/*
+	 * Now we see if we need to tear the loader environment back down due
+	 * to the presence of a non-empty static environment and lack of request
+	 * to keep it enabled.
+	 */
+	if (*static_env != '\0' &&
+	    (loader_eval == NULL || strcmp(loader_eval, "0") != 0)) {
+		md_envp = NULL;
+		md_env_len = 0;
+	}
 }
 
 static void

From owner-svn-src-stable@freebsd.org  Fri Dec  7 00:33:03 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id D99001322DBC;
 Fri,  7 Dec 2018 00:33:03 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 7ED726EA9A;
 Fri,  7 Dec 2018 00:33:03 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5FDA23A6C;
 Fri,  7 Dec 2018 00:33:03 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB70X34X078716;
 Fri, 7 Dec 2018 00:33:03 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB70X3JS078715;
 Fri, 7 Dec 2018 00:33:03 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812070033.wB70X3JS078715@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 00:33:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341668 - stable/12/sys/kern
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/kern
X-SVN-Commit-Revision: 341668
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 7ED726EA9A
X-Spamd-Result: default: False [-1.92 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.866,0];
 NEURAL_HAM_SHORT(-0.96)[-0.956,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 00:33:04 -0000

Author: kib
Date: Fri Dec  7 00:33:02 2018
New Revision: 341668
URL: https://svnweb.freebsd.org/changeset/base/341668

Log:
  MFC r340862:
  Trivial reduction of the code duplication, reuse the return FALSE code.

Modified:
  stable/12/sys/kern/imgact_elf.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/kern/imgact_elf.c
==============================================================================
--- stable/12/sys/kern/imgact_elf.c	Fri Dec  7 00:27:38 2018	(r341667)
+++ stable/12/sys/kern/imgact_elf.c	Fri Dec  7 00:33:02 2018	(r341668)
@@ -2363,8 +2363,7 @@ __elfN(parse_notes)(struct image_params *imgp, Elf_Bra
 		    curthread->td_ucred, NOCRED, NULL, curthread);
 		if (error != 0) {
 			uprintf("i/o error PT_NOTE\n");
-			res = FALSE;
-			goto ret;
+			goto retf;
 		}
 		note = note0 = (const Elf_Note *)buf;
 		note_end = (const Elf_Note *)(buf + pnote->p_filesz);
@@ -2378,8 +2377,7 @@ __elfN(parse_notes)(struct image_params *imgp, Elf_Bra
 	for (i = 0; i < 100 && note >= note0 && note < note_end; i++) {
 		if (!aligned(note, Elf32_Addr) || (const char *)note_end -
 		    (const char *)note < sizeof(Elf_Note)) {
-			res = FALSE;
-			goto ret;
+			goto retf;
 		}
 		if (note->n_namesz != checknote->hdr.n_namesz ||
 		    note->n_descsz != checknote->hdr.n_descsz ||
@@ -2407,6 +2405,7 @@ nextnote:
 		    roundup2(note->n_namesz, ELF_NOTE_ROUNDSIZE) +
 		    roundup2(note->n_descsz, ELF_NOTE_ROUNDSIZE));
 	}
+retf:
 	res = FALSE;
 ret:
 	free(buf, M_TEMP);

From owner-svn-src-stable@freebsd.org  Fri Dec  7 00:35:57 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5C4BB1322E76;
 Fri,  7 Dec 2018 00:35:57 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 039466EC07;
 Fri,  7 Dec 2018 00:35:57 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D8B7D3A8D;
 Fri,  7 Dec 2018 00:35:56 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB70ZuJ5078881;
 Fri, 7 Dec 2018 00:35:56 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB70ZuhR078880;
 Fri, 7 Dec 2018 00:35:56 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812070035.wB70ZuhR078880@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 00:35:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341669 - stable/12/sys/kern
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/kern
X-SVN-Commit-Revision: 341669
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 039466EC07
X-Spamd-Result: default: False [-1.90 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.868,0];
 NEURAL_HAM_LONG(-0.07)[-0.070,0];
 NEURAL_HAM_SHORT(-0.96)[-0.958,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 00:35:57 -0000

Author: kib
Date: Fri Dec  7 00:35:56 2018
New Revision: 341669
URL: https://svnweb.freebsd.org/changeset/base/341669

Log:
  MFC r340863:
  Generalize ELF parse_notes().

Modified:
  stable/12/sys/kern/imgact_elf.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/kern/imgact_elf.c
==============================================================================
--- stable/12/sys/kern/imgact_elf.c	Fri Dec  7 00:33:02 2018	(r341668)
+++ stable/12/sys/kern/imgact_elf.c	Fri Dec  7 00:35:56 2018	(r341669)
@@ -2340,8 +2340,9 @@ __elfN(note_procstat_auxv)(void *arg, struct sbuf *sb,
 }
 
 static boolean_t
-__elfN(parse_notes)(struct image_params *imgp, Elf_Brandnote *checknote,
-    int32_t *osrel, const Elf_Phdr *pnote)
+__elfN(parse_notes)(struct image_params *imgp, Elf_Note *checknote,
+    const char *note_vendor, const Elf_Phdr *pnote,
+    boolean_t (*cb)(const Elf_Note *, void *, boolean_t *), void *cb_arg)
 {
 	const Elf_Note *note, *note0, *note_end;
 	const char *note_name;
@@ -2379,27 +2380,18 @@ __elfN(parse_notes)(struct image_params *imgp, Elf_Bra
 		    (const char *)note < sizeof(Elf_Note)) {
 			goto retf;
 		}
-		if (note->n_namesz != checknote->hdr.n_namesz ||
-		    note->n_descsz != checknote->hdr.n_descsz ||
-		    note->n_type != checknote->hdr.n_type)
+		if (note->n_namesz != checknote->n_namesz ||
+		    note->n_descsz != checknote->n_descsz ||
+		    note->n_type != checknote->n_type)
 			goto nextnote;
 		note_name = (const char *)(note + 1);
-		if (note_name + checknote->hdr.n_namesz >=
-		    (const char *)note_end || strncmp(checknote->vendor,
-		    note_name, checknote->hdr.n_namesz) != 0)
+		if (note_name + checknote->n_namesz >=
+		    (const char *)note_end || strncmp(note_vendor,
+		    note_name, checknote->n_namesz) != 0)
 			goto nextnote;
 
-		/*
-		 * Fetch the osreldate for binary
-		 * from the ELF OSABI-note if necessary.
-		 */
-		if ((checknote->flags & BN_TRANSLATE_OSREL) != 0 &&
-		    checknote->trans_osrel != NULL) {
-			res = checknote->trans_osrel(note, osrel);
+		if (cb(note, cb_arg, &res))
 			goto ret;
-		}
-		res = TRUE;
-		goto ret;
 nextnote:
 		note = (const Elf_Note *)((const char *)(note + 1) +
 		    roundup2(note->n_namesz, ELF_NOTE_ROUNDSIZE) +
@@ -2412,26 +2404,54 @@ ret:
 	return (res);
 }
 
+struct brandnote_cb_arg {
+	Elf_Brandnote *brandnote;
+	int32_t *osrel;
+};
+
+static boolean_t
+brandnote_cb(const Elf_Note *note, void *arg0, boolean_t *res)
+{
+	struct brandnote_cb_arg *arg;
+
+	arg = arg0;
+
+	/*
+	 * Fetch the osreldate for binary from the ELF OSABI-note if
+	 * necessary.
+	 */
+	*res = (arg->brandnote->flags & BN_TRANSLATE_OSREL) != 0 &&
+	    arg->brandnote->trans_osrel != NULL ?
+	    arg->brandnote->trans_osrel(note, arg->osrel) : TRUE;
+
+	return (TRUE);
+}
+
 /*
  * Try to find the appropriate ABI-note section for checknote,
  * fetch the osreldate for binary from the ELF OSABI-note. Only the
  * first page of the image is searched, the same as for headers.
  */
 static boolean_t
-__elfN(check_note)(struct image_params *imgp, Elf_Brandnote *checknote,
+__elfN(check_note)(struct image_params *imgp, Elf_Brandnote *brandnote,
     int32_t *osrel)
 {
 	const Elf_Phdr *phdr;
 	const Elf_Ehdr *hdr;
+	struct brandnote_cb_arg b_arg;
 	int i;
 
 	hdr = (const Elf_Ehdr *)imgp->image_header;
 	phdr = (const Elf_Phdr *)(imgp->image_header + hdr->e_phoff);
+	b_arg.brandnote = brandnote;
+	b_arg.osrel = osrel;
 
 	for (i = 0; i < hdr->e_phnum; i++) {
-		if (phdr[i].p_type == PT_NOTE &&
-		    __elfN(parse_notes)(imgp, checknote, osrel, &phdr[i]))
+		if (phdr[i].p_type == PT_NOTE && __elfN(parse_notes)(imgp,
+		    &brandnote->hdr, brandnote->vendor, &phdr[i], brandnote_cb,
+		    &b_arg)) {
 			return (TRUE);
+		}
 	}
 	return (FALSE);
 

From owner-svn-src-stable@freebsd.org  Fri Dec  7 00:38:22 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 71B431322FC4;
 Fri,  7 Dec 2018 00:38:22 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 19C4C6EDE8;
 Fri,  7 Dec 2018 00:38:22 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EEF153A9C;
 Fri,  7 Dec 2018 00:38:21 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB70cLhA079033;
 Fri, 7 Dec 2018 00:38:21 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB70cLZD079032;
 Fri, 7 Dec 2018 00:38:21 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812070038.wB70cLZD079032@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 00:38:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341670 - stable/11/sys/kern
X-SVN-Group: stable-11
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/11/sys/kern
X-SVN-Commit-Revision: 341670
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 19C4C6EDE8
X-Spamd-Result: default: False [-1.92 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.866,0];
 NEURAL_HAM_SHORT(-0.96)[-0.956,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.10)[-0.099,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 00:38:22 -0000

Author: kib
Date: Fri Dec  7 00:38:21 2018
New Revision: 341670
URL: https://svnweb.freebsd.org/changeset/base/341670

Log:
  MFC r340862:
  Trivial reduction of the code duplication, reuse the return FALSE code.

Modified:
  stable/11/sys/kern/imgact_elf.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/imgact_elf.c
==============================================================================
--- stable/11/sys/kern/imgact_elf.c	Fri Dec  7 00:35:56 2018	(r341669)
+++ stable/11/sys/kern/imgact_elf.c	Fri Dec  7 00:38:21 2018	(r341670)
@@ -2348,8 +2348,7 @@ __elfN(parse_notes)(struct image_params *imgp, Elf_Bra
 		    curthread->td_ucred, NOCRED, NULL, curthread);
 		if (error != 0) {
 			uprintf("i/o error PT_NOTE\n");
-			res = FALSE;
-			goto ret;
+			goto retf;
 		}
 		note = note0 = (const Elf_Note *)buf;
 		note_end = (const Elf_Note *)(buf + pnote->p_filesz);
@@ -2363,8 +2362,7 @@ __elfN(parse_notes)(struct image_params *imgp, Elf_Bra
 	for (i = 0; i < 100 && note >= note0 && note < note_end; i++) {
 		if (!aligned(note, Elf32_Addr) || (const char *)note_end -
 		    (const char *)note < sizeof(Elf_Note)) {
-			res = FALSE;
-			goto ret;
+			goto retf;
 		}
 		if (note->n_namesz != checknote->hdr.n_namesz ||
 		    note->n_descsz != checknote->hdr.n_descsz ||
@@ -2392,6 +2390,7 @@ nextnote:
 		    roundup2(note->n_namesz, ELF_NOTE_ROUNDSIZE) +
 		    roundup2(note->n_descsz, ELF_NOTE_ROUNDSIZE));
 	}
+retf:
 	res = FALSE;
 ret:
 	free(buf, M_TEMP);

From owner-svn-src-stable@freebsd.org  Fri Dec  7 00:39:36 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E4311132308F;
 Fri,  7 Dec 2018 00:39:35 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 745E16EF4D;
 Fri,  7 Dec 2018 00:39:35 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 555F63AA1;
 Fri,  7 Dec 2018 00:39:35 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB70dZNN079136;
 Fri, 7 Dec 2018 00:39:35 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB70dZuY079135;
 Fri, 7 Dec 2018 00:39:35 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812070039.wB70dZuY079135@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 00:39:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341671 - stable/11/sys/kern
X-SVN-Group: stable-11
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/11/sys/kern
X-SVN-Commit-Revision: 341671
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 745E16EF4D
X-Spamd-Result: default: False [-1.90 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.868,0];
 NEURAL_HAM_SHORT(-0.96)[-0.958,0];
 NEURAL_HAM_LONG(-0.07)[-0.070,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 00:39:36 -0000

Author: kib
Date: Fri Dec  7 00:39:34 2018
New Revision: 341671
URL: https://svnweb.freebsd.org/changeset/base/341671

Log:
  MFC r340863:
  Generalize ELF parse_notes().

Modified:
  stable/11/sys/kern/imgact_elf.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/imgact_elf.c
==============================================================================
--- stable/11/sys/kern/imgact_elf.c	Fri Dec  7 00:38:21 2018	(r341670)
+++ stable/11/sys/kern/imgact_elf.c	Fri Dec  7 00:39:34 2018	(r341671)
@@ -2325,8 +2325,9 @@ __elfN(note_procstat_auxv)(void *arg, struct sbuf *sb,
 }
 
 static boolean_t
-__elfN(parse_notes)(struct image_params *imgp, Elf_Brandnote *checknote,
-    int32_t *osrel, const Elf_Phdr *pnote)
+__elfN(parse_notes)(struct image_params *imgp, Elf_Note *checknote,
+    const char *note_vendor, const Elf_Phdr *pnote,
+    boolean_t (*cb)(const Elf_Note *, void *, boolean_t *), void *cb_arg)
 {
 	const Elf_Note *note, *note0, *note_end;
 	const char *note_name;
@@ -2364,27 +2365,18 @@ __elfN(parse_notes)(struct image_params *imgp, Elf_Bra
 		    (const char *)note < sizeof(Elf_Note)) {
 			goto retf;
 		}
-		if (note->n_namesz != checknote->hdr.n_namesz ||
-		    note->n_descsz != checknote->hdr.n_descsz ||
-		    note->n_type != checknote->hdr.n_type)
+		if (note->n_namesz != checknote->n_namesz ||
+		    note->n_descsz != checknote->n_descsz ||
+		    note->n_type != checknote->n_type)
 			goto nextnote;
 		note_name = (const char *)(note + 1);
-		if (note_name + checknote->hdr.n_namesz >=
-		    (const char *)note_end || strncmp(checknote->vendor,
-		    note_name, checknote->hdr.n_namesz) != 0)
+		if (note_name + checknote->n_namesz >=
+		    (const char *)note_end || strncmp(note_vendor,
+		    note_name, checknote->n_namesz) != 0)
 			goto nextnote;
 
-		/*
-		 * Fetch the osreldate for binary
-		 * from the ELF OSABI-note if necessary.
-		 */
-		if ((checknote->flags & BN_TRANSLATE_OSREL) != 0 &&
-		    checknote->trans_osrel != NULL) {
-			res = checknote->trans_osrel(note, osrel);
+		if (cb(note, cb_arg, &res))
 			goto ret;
-		}
-		res = TRUE;
-		goto ret;
 nextnote:
 		note = (const Elf_Note *)((const char *)(note + 1) +
 		    roundup2(note->n_namesz, ELF_NOTE_ROUNDSIZE) +
@@ -2397,26 +2389,54 @@ ret:
 	return (res);
 }
 
+struct brandnote_cb_arg {
+	Elf_Brandnote *brandnote;
+	int32_t *osrel;
+};
+
+static boolean_t
+brandnote_cb(const Elf_Note *note, void *arg0, boolean_t *res)
+{
+	struct brandnote_cb_arg *arg;
+
+	arg = arg0;
+
+	/*
+	 * Fetch the osreldate for binary from the ELF OSABI-note if
+	 * necessary.
+	 */
+	*res = (arg->brandnote->flags & BN_TRANSLATE_OSREL) != 0 &&
+	    arg->brandnote->trans_osrel != NULL ?
+	    arg->brandnote->trans_osrel(note, arg->osrel) : TRUE;
+
+	return (TRUE);
+}
+
 /*
  * Try to find the appropriate ABI-note section for checknote,
  * fetch the osreldate for binary from the ELF OSABI-note. Only the
  * first page of the image is searched, the same as for headers.
  */
 static boolean_t
-__elfN(check_note)(struct image_params *imgp, Elf_Brandnote *checknote,
+__elfN(check_note)(struct image_params *imgp, Elf_Brandnote *brandnote,
     int32_t *osrel)
 {
 	const Elf_Phdr *phdr;
 	const Elf_Ehdr *hdr;
+	struct brandnote_cb_arg b_arg;
 	int i;
 
 	hdr = (const Elf_Ehdr *)imgp->image_header;
 	phdr = (const Elf_Phdr *)(imgp->image_header + hdr->e_phoff);
+	b_arg.brandnote = brandnote;
+	b_arg.osrel = osrel;
 
 	for (i = 0; i < hdr->e_phnum; i++) {
-		if (phdr[i].p_type == PT_NOTE &&
-		    __elfN(parse_notes)(imgp, checknote, osrel, &phdr[i]))
+		if (phdr[i].p_type == PT_NOTE && __elfN(parse_notes)(imgp,
+		    &brandnote->hdr, brandnote->vendor, &phdr[i], brandnote_cb,
+		    &b_arg)) {
 			return (TRUE);
+		}
 	}
 	return (FALSE);
 

From owner-svn-src-stable@freebsd.org  Fri Dec  7 00:50:04 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5860E132351C;
 Fri,  7 Dec 2018 00:50:04 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id EC3206F72C;
 Fri,  7 Dec 2018 00:50:03 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CD5023C5C;
 Fri,  7 Dec 2018 00:50:03 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB70o3Gn084378;
 Fri, 7 Dec 2018 00:50:03 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB70o3CE084376;
 Fri, 7 Dec 2018 00:50:03 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812070050.wB70o3CE084376@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 00:50:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341673 - in stable/12/sys: kern sys
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: in stable/12/sys: kern sys
X-SVN-Commit-Revision: 341673
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: EC3206F72C
X-Spamd-Result: default: False [-1.92 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.87)[-0.866,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 NEURAL_HAM_SHORT(-0.96)[-0.956,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 00:50:04 -0000

Author: kib
Date: Fri Dec  7 00:50:02 2018
New Revision: 341673
URL: https://svnweb.freebsd.org/changeset/base/341673

Log:
  MFC r340860:
  Provide storage for the process feature control flags in struct proc.

Modified:
  stable/12/sys/kern/kern_exec.c
  stable/12/sys/kern/kern_fork.c
  stable/12/sys/sys/proc.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/kern/kern_exec.c
==============================================================================
--- stable/12/sys/kern/kern_exec.c	Fri Dec  7 00:47:05 2018	(r341672)
+++ stable/12/sys/kern/kern_exec.c	Fri Dec  7 00:50:02 2018	(r341673)
@@ -488,6 +488,7 @@ interpret:
 		goto exec_fail_dealloc;
 
 	imgp->proc->p_osrel = 0;
+	imgp->proc->p_fctl0 = 0;
 
 	/*
 	 * Implement image setuid/setgid.

Modified: stable/12/sys/kern/kern_fork.c
==============================================================================
--- stable/12/sys/kern/kern_fork.c	Fri Dec  7 00:47:05 2018	(r341672)
+++ stable/12/sys/kern/kern_fork.c	Fri Dec  7 00:50:02 2018	(r341673)
@@ -415,6 +415,7 @@ do_fork(struct thread *td, struct fork_req *fr, struct
 
 	bcopy(&p1->p_startcopy, &p2->p_startcopy,
 	    __rangeof(struct proc, p_startcopy, p_endcopy));
+	p2->p_fctl0 = p1->p_fctl0;
 	pargs_hold(p2->p_args);
 
 	PROC_UNLOCK(p1);

Modified: stable/12/sys/sys/proc.h
==============================================================================
--- stable/12/sys/sys/proc.h	Fri Dec  7 00:47:05 2018	(r341672)
+++ stable/12/sys/sys/proc.h	Fri Dec  7 00:50:02 2018	(r341673)
@@ -681,6 +681,7 @@ struct proc {
 	 */
 	LIST_ENTRY(proc) p_orphan;	/* (e) List of orphan processes. */
 	LIST_HEAD(, proc) p_orphans;	/* (e) Pointer to list of orphans. */
+	uint32_t	p_fctl0;	/* (x) ABI feature control, ELF note */
 };
 
 #define	p_session	p_pgrp->pg_session

From owner-svn-src-stable@freebsd.org  Fri Dec  7 03:43:36 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id DED801327A66;
 Fri,  7 Dec 2018 03:43:35 +0000 (UTC) (envelope-from pfg@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 809C174C30;
 Fri,  7 Dec 2018 03:43:35 +0000 (UTC) (envelope-from pfg@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5F6D15ACA;
 Fri,  7 Dec 2018 03:43:35 +0000 (UTC) (envelope-from pfg@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB73hZtx076346;
 Fri, 7 Dec 2018 03:43:35 GMT (envelope-from pfg@FreeBSD.org)
Received: (from pfg@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB73hZkj076345;
 Fri, 7 Dec 2018 03:43:35 GMT (envelope-from pfg@FreeBSD.org)
Message-Id: <201812070343.wB73hZkj076345@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: pfg set sender to pfg@FreeBSD.org
 using -f
From: "Pedro F. Giffuni" <pfg@FreeBSD.org>
Date: Fri, 7 Dec 2018 03:43:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341676 - stable/12/share/man/man5
X-SVN-Group: stable-12
X-SVN-Commit-Author: pfg
X-SVN-Commit-Paths: stable/12/share/man/man5
X-SVN-Commit-Revision: 341676
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 809C174C30
X-Spamd-Result: default: False [-2.06 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_SHORT(-0.97)[-0.973,0];
 NEURAL_HAM_LONG(-0.10)[-0.099,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 03:43:36 -0000

Author: pfg
Date: Fri Dec  7 03:43:34 2018
New Revision: 341676
URL: https://svnweb.freebsd.org/changeset/base/341676

Log:
  MFC r341505:
  ext2fs.5: basic updates.
  
  Starting with FreeBSD 12 we fully support writing ext4 filesystems.
  Mention some features that we don't support while here.

Modified:
  stable/12/share/man/man5/ext2fs.5
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/share/man/man5/ext2fs.5
==============================================================================
--- stable/12/share/man/man5/ext2fs.5	Fri Dec  7 03:13:36 2018	(r341675)
+++ stable/12/share/man/man5/ext2fs.5	Fri Dec  7 03:43:34 2018	(r341676)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 23, 2016
+.Dd December 4, 2018
 .Dt EXT2FS 5
 .Os
 .Sh NAME
@@ -52,9 +52,10 @@ kernel to access
 and
 .Tn ext4
 file systems.
-The
+Support for Extended Attributes in
 .Tn ext4
-support is read-only.
+is experimental.
+Journalling and encryption are currently not supported.
 .Sh EXAMPLES
 To mount a
 .Nm

From owner-svn-src-stable@freebsd.org  Fri Dec  7 09:39:39 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 107D513319E8;
 Fri,  7 Dec 2018 09:39:39 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id AC5F28107F;
 Fri,  7 Dec 2018 09:39:38 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 73BE7114DB;
 Fri,  7 Dec 2018 09:39:38 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB79dcpx060019;
 Fri, 7 Dec 2018 09:39:38 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB79dcKM060018;
 Fri, 7 Dec 2018 09:39:38 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201812070939.wB79dcKM060018@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Fri, 7 Dec 2018 09:39:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341678 - stable/11/sys/net
X-SVN-Group: stable-11
X-SVN-Commit-Author: ae
X-SVN-Commit-Paths: stable/11/sys/net
X-SVN-Commit-Revision: 341678
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: AC5F28107F
X-Spamd-Result: default: False [-2.03 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.989,0];
 NEURAL_HAM_SHORT(-0.97)[-0.971,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.07)[-0.070,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 09:39:39 -0000

Author: ae
Date: Fri Dec  7 09:39:37 2018
New Revision: 341678
URL: https://svnweb.freebsd.org/changeset/base/341678

Log:
  MFC r341008:
    Fix possible panic during ifnet detach in rtsock.
  
    The panic can happen, when some application does dump of routing table
    using sysctl interface. To prevent this, set IFF_DYING flag in
    if_detach_internal() function, when ifnet under lock is removed from
    the chain. In sysctl_rtsock() take IFNET_RLOCK_NOSLEEP() to prevent
    ifnet detach during routes enumeration. In case, if some interface was
    detached in the time before we take the lock, add the check, that ifnet
    is not DYING. This prevents access to memory that could be freed after
    ifnet is unlinked.
  
    Differential Revision:	https://reviews.freebsd.org/D18338

Modified:
  stable/11/sys/net/if.c
  stable/11/sys/net/rtsock.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/net/if.c
==============================================================================
--- stable/11/sys/net/if.c	Fri Dec  7 09:38:25 2018	(r341677)
+++ stable/11/sys/net/if.c	Fri Dec  7 09:39:37 2018	(r341678)
@@ -1031,6 +1031,8 @@ if_detach_internal(struct ifnet *ifp, int vmove, struc
 	TAILQ_FOREACH(iter, &V_ifnet, if_link)
 		if (iter == ifp) {
 			TAILQ_REMOVE(&V_ifnet, ifp, if_link);
+			if (!vmove)
+				ifp->if_flags |= IFF_DYING;
 			found = 1;
 			break;
 		}

Modified: stable/11/sys/net/rtsock.c
==============================================================================
--- stable/11/sys/net/rtsock.c	Fri Dec  7 09:38:25 2018	(r341677)
+++ stable/11/sys/net/rtsock.c	Fri Dec  7 09:39:37 2018	(r341678)
@@ -1548,6 +1548,8 @@ sysctl_dumpentry(struct radix_node *rn, void *vw)
 	struct rt_addrinfo info;
 	struct sockaddr_storage ss;
 
+	IFNET_RLOCK_NOSLEEP_ASSERT();
+
 	if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))
 		return 0;
 	if ((rt->rt_flags & RTF_HOST) == 0
@@ -1560,7 +1562,7 @@ sysctl_dumpentry(struct radix_node *rn, void *vw)
 	info.rti_info[RTAX_NETMASK] = rtsock_fix_netmask(rt_key(rt),
 	    rt_mask(rt), &ss);
 	info.rti_info[RTAX_GENMASK] = 0;
-	if (rt->rt_ifp) {
+	if (rt->rt_ifp && !(rt->rt_ifp->if_flags & IFF_DYING)) {
 		info.rti_info[RTAX_IFP] = rt->rt_ifp->if_addr->ifa_addr;
 		info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
 		if (rt->rt_ifp->if_flags & IFF_POINTOPOINT)
@@ -1925,8 +1927,10 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
 			rnh = rt_tables_get_rnh(fib, i);
 			if (rnh != NULL) {
 				RIB_RLOCK(rnh); 
+				IFNET_RLOCK_NOSLEEP();
 			    	error = rnh->rnh_walktree(&rnh->head,
 				    sysctl_dumpentry, &w);
+				IFNET_RUNLOCK_NOSLEEP();
 				RIB_RUNLOCK(rnh);
 			} else if (af != 0)
 				error = EAFNOSUPPORT;

From owner-svn-src-stable@freebsd.org  Fri Dec  7 09:38:26 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 43CD313318AC;
 Fri,  7 Dec 2018 09:38:26 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id DFD6280E93;
 Fri,  7 Dec 2018 09:38:25 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B9B4E114D3;
 Fri,  7 Dec 2018 09:38:25 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB79cPEf059890;
 Fri, 7 Dec 2018 09:38:25 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB79cPrE059888;
 Fri, 7 Dec 2018 09:38:25 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201812070938.wB79cPrE059888@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Fri, 7 Dec 2018 09:38:25 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341677 - stable/12/sys/net
X-SVN-Group: stable-12
X-SVN-Commit-Author: ae
X-SVN-Commit-Paths: stable/12/sys/net
X-SVN-Commit-Revision: 341677
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: DFD6280E93
X-Spamd-Result: default: False [-2.03 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.989,0];
 NEURAL_HAM_SHORT(-0.97)[-0.971,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.07)[-0.070,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 09:38:26 -0000

Author: ae
Date: Fri Dec  7 09:38:25 2018
New Revision: 341677
URL: https://svnweb.freebsd.org/changeset/base/341677

Log:
  MFC r341008:
    Fix possible panic during ifnet detach in rtsock.
  
    The panic can happen, when some application does dump of routing table
    using sysctl interface. To prevent this, set IFF_DYING flag in
    if_detach_internal() function, when ifnet under lock is removed from
    the chain. In sysctl_rtsock() take IFNET_RLOCK_NOSLEEP() to prevent
    ifnet detach during routes enumeration. In case, if some interface was
    detached in the time before we take the lock, add the check, that ifnet
    is not DYING. This prevents access to memory that could be freed after
    ifnet is unlinked.
  
    Differential Revision:	https://reviews.freebsd.org/D18338
  
  MFC r341334:
    Adapt the fix in r341008 to correctly work with EBR.
  
    IFNET_RLOCK_NOSLEEP() is epoch_enter_preempt() in FreeBSD 12+. Holding
    it in sysctl_rtsock() doesn't protect us from ifnet unlinking, because
    unlinking occurs with IFNET_WLOCK(), that is rw_wlock+sx_xlock, and it
    doesn check that concurrent code is running in epoch section. But while
    we are in epoch section, we should be able to do access to ifnet's
    fields, even it was unlinked. Thus do not change if_addr and if_hw_addr
    fields in ifnet_detach_internal() to NULL, since rtsock code can do
    access to these fields and this is allowed while it is running in epoch
    section.
  
    This should fix the race, when ifnet_detach_internal() unlinks ifnet
    after we checked it for IFF_DYING in sysctl_dumpentry.
  
    Move free(ifp->if_hw_addr) into ifnet_free_internal(). Also remove the
    NULL check for ifp->if_description, since free(9) can correctly handle
    NULL pointer.

Modified:
  stable/12/sys/net/if.c
  stable/12/sys/net/rtsock.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/net/if.c
==============================================================================
--- stable/12/sys/net/if.c	Fri Dec  7 03:43:34 2018	(r341676)
+++ stable/12/sys/net/if.c	Fri Dec  7 09:38:25 2018	(r341677)
@@ -597,8 +597,6 @@ if_free_internal(struct ifnet *ifp)
 #ifdef MAC
 	mac_ifnet_destroy(ifp);
 #endif /* MAC */
-	if (ifp->if_description != NULL)
-		free(ifp->if_description, M_IFDESCR);
 	IF_AFDATA_DESTROY(ifp);
 	IF_ADDR_LOCK_DESTROY(ifp);
 	ifq_delete(&ifp->if_snd);
@@ -606,6 +604,8 @@ if_free_internal(struct ifnet *ifp)
 	for (int i = 0; i < IFCOUNTERS; i++)
 		counter_u64_free(ifp->if_counters[i]);
 
+	free(ifp->if_description, M_IFDESCR);
+	free(ifp->if_hw_addr, M_IFADDR);
 	free(ifp, M_IFNET);
 }
 
@@ -1068,6 +1068,8 @@ if_detach_internal(struct ifnet *ifp, int vmove, struc
 	CK_STAILQ_FOREACH(iter, &V_ifnet, if_link)
 		if (iter == ifp) {
 			CK_STAILQ_REMOVE(&V_ifnet, ifp, ifnet, if_link);
+			if (!vmove)
+				ifp->if_flags |= IFF_DYING;
 			found = 1;
 			break;
 		}
@@ -1182,14 +1184,8 @@ if_detach_internal(struct ifnet *ifp, int vmove, struc
 		if_dead(ifp);
 
 		/*
-		 * Remove link ifaddr pointer and maybe decrement if_index.
 		 * Clean up all addresses.
 		 */
-		free(ifp->if_hw_addr, M_IFADDR);
-		ifp->if_hw_addr = NULL;
-		ifp->if_addr = NULL;
-
-		/* We can now free link ifaddr. */
 		IF_ADDR_WLOCK(ifp);
 		if (!CK_STAILQ_EMPTY(&ifp->if_addrhead)) {
 			ifa = CK_STAILQ_FIRST(&ifp->if_addrhead);

Modified: stable/12/sys/net/rtsock.c
==============================================================================
--- stable/12/sys/net/rtsock.c	Fri Dec  7 03:43:34 2018	(r341676)
+++ stable/12/sys/net/rtsock.c	Fri Dec  7 09:38:25 2018	(r341677)
@@ -1559,6 +1559,8 @@ sysctl_dumpentry(struct radix_node *rn, void *vw)
 	struct rt_addrinfo info;
 	struct sockaddr_storage ss;
 
+	IFNET_RLOCK_NOSLEEP_ASSERT();
+
 	if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))
 		return 0;
 	if ((rt->rt_flags & RTF_HOST) == 0
@@ -1571,7 +1573,7 @@ sysctl_dumpentry(struct radix_node *rn, void *vw)
 	info.rti_info[RTAX_NETMASK] = rtsock_fix_netmask(rt_key(rt),
 	    rt_mask(rt), &ss);
 	info.rti_info[RTAX_GENMASK] = 0;
-	if (rt->rt_ifp) {
+	if (rt->rt_ifp && !(rt->rt_ifp->if_flags & IFF_DYING)) {
 		info.rti_info[RTAX_IFP] = rt->rt_ifp->if_addr->ifa_addr;
 		info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
 		if (rt->rt_ifp->if_flags & IFF_POINTOPOINT)
@@ -1934,8 +1936,10 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
 			rnh = rt_tables_get_rnh(fib, i);
 			if (rnh != NULL) {
 				RIB_RLOCK(rnh); 
+				IFNET_RLOCK_NOSLEEP();
 			    	error = rnh->rnh_walktree(&rnh->head,
 				    sysctl_dumpentry, &w);
+				IFNET_RUNLOCK_NOSLEEP();
 				RIB_RUNLOCK(rnh);
 			} else if (af != 0)
 				error = EAFNOSUPPORT;

From owner-svn-src-stable@freebsd.org  Fri Dec  7 13:53:30 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 78E9A130E78C;
 Fri,  7 Dec 2018 13:53:30 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 1F4F18C300;
 Fri,  7 Dec 2018 13:53:30 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 003EF13F9C;
 Fri,  7 Dec 2018 13:53:30 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7DrTDW094450;
 Fri, 7 Dec 2018 13:53:29 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7DrTAS094448;
 Fri, 7 Dec 2018 13:53:29 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201812071353.wB7DrTAS094448@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Fri, 7 Dec 2018 13:53:29 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341686 - in stable/12: contrib/elftoolchain/readelf
 sys/sys
X-SVN-Group: stable-12
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: in stable/12: contrib/elftoolchain/readelf sys/sys
X-SVN-Commit-Revision: 341686
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 1F4F18C300
X-Spamd-Result: default: False [-2.93 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_SHORT(-0.95)[-0.951,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 13:53:30 -0000

Author: emaste
Date: Fri Dec  7 13:53:29 2018
New Revision: 341686
URL: https://svnweb.freebsd.org/changeset/base/341686

Log:
  MFC r340076: Define NT_FREEBSD_FEATURE_CTL ELF note type
  
  This ELF note will be used to allow binaries to opt out of, or in to,
  upcoming vulnerability mitigation and other features.

Modified:
  stable/12/contrib/elftoolchain/readelf/readelf.c
  stable/12/sys/sys/elf_common.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/contrib/elftoolchain/readelf/readelf.c
==============================================================================
--- stable/12/contrib/elftoolchain/readelf/readelf.c	Fri Dec  7 12:32:25 2018	(r341685)
+++ stable/12/contrib/elftoolchain/readelf/readelf.c	Fri Dec  7 13:53:29 2018	(r341686)
@@ -1121,6 +1121,7 @@ note_type_freebsd(unsigned int nt)
 	case 1: return "NT_FREEBSD_ABI_TAG";
 	case 2: return "NT_FREEBSD_NOINIT_TAG";
 	case 3: return "NT_FREEBSD_ARCH_TAG";
+	case 4: return "NT_FREEBSD_FEATURE_CTL";
 	default: return (note_type_unknown(nt));
 	}
 }

Modified: stable/12/sys/sys/elf_common.h
==============================================================================
--- stable/12/sys/sys/elf_common.h	Fri Dec  7 12:32:25 2018	(r341685)
+++ stable/12/sys/sys/elf_common.h	Fri Dec  7 13:53:29 2018	(r341686)
@@ -759,6 +759,7 @@ typedef struct {
 #define	NT_FREEBSD_ABI_TAG	1
 #define	NT_FREEBSD_NOINIT_TAG	2
 #define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
 
 /* Values for n_type.  Used in core files. */
 #define	NT_PRSTATUS	1	/* Process status. */

From owner-svn-src-stable@freebsd.org  Fri Dec  7 14:25:47 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id B3166130F0CC;
 Fri,  7 Dec 2018 14:25:47 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 5830C8D0F1;
 Fri,  7 Dec 2018 14:25:47 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3933A14474;
 Fri,  7 Dec 2018 14:25:47 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7EPlOF009895;
 Fri, 7 Dec 2018 14:25:47 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7EPk2I009893;
 Fri, 7 Dec 2018 14:25:46 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812071425.wB7EPk2I009893@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 14:25:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341687 - stable/12/libexec/rtld-elf
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/libexec/rtld-elf
X-SVN-Commit-Revision: 341687
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 5830C8D0F1
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_SHORT(-0.97)[-0.971,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 14:25:48 -0000

Author: kib
Date: Fri Dec  7 14:25:46 2018
New Revision: 341687
URL: https://svnweb.freebsd.org/changeset/base/341687

Log:
  MFC r340858:
  rtld: parse FreeBSD Feature Control note on the object load.

Modified:
  stable/12/libexec/rtld-elf/rtld.c
  stable/12/libexec/rtld-elf/rtld.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/libexec/rtld-elf/rtld.c
==============================================================================
--- stable/12/libexec/rtld-elf/rtld.c	Fri Dec  7 13:53:29 2018	(r341686)
+++ stable/12/libexec/rtld-elf/rtld.c	Fri Dec  7 14:25:46 2018	(r341687)
@@ -1453,6 +1453,7 @@ digest_notes(Obj_Entry *obj, Elf_Addr note_start, Elf_
 		    note->n_descsz != sizeof(int32_t))
 			continue;
 		if (note->n_type != NT_FREEBSD_ABI_TAG &&
+		    note->n_type != NT_FREEBSD_FEATURE_CTL &&
 		    note->n_type != NT_FREEBSD_NOINIT_TAG)
 			continue;
 		note_name = (const char *)(note + 1);
@@ -1466,6 +1467,13 @@ digest_notes(Obj_Entry *obj, Elf_Addr note_start, Elf_
 			p += roundup2(note->n_namesz, sizeof(Elf32_Addr));
 			obj->osrel = *(const int32_t *)(p);
 			dbg("note osrel %d", obj->osrel);
+			break;
+		case NT_FREEBSD_FEATURE_CTL:
+			/* FreeBSD ABI feature control note */
+			p = (uintptr_t)(note + 1);
+			p += roundup2(note->n_namesz, sizeof(Elf32_Addr));
+			obj->fctl0 = *(const uint32_t *)(p);
+			dbg("note fctl0 %#x", obj->fctl0);
 			break;
 		case NT_FREEBSD_NOINIT_TAG:
 			/* FreeBSD 'crt does not call init' note */

Modified: stable/12/libexec/rtld-elf/rtld.h
==============================================================================
--- stable/12/libexec/rtld-elf/rtld.h	Fri Dec  7 13:53:29 2018	(r341686)
+++ stable/12/libexec/rtld-elf/rtld.h	Fri Dec  7 14:25:46 2018	(r341687)
@@ -236,6 +236,7 @@ typedef struct Struct_Obj_Entry {
     int fini_array_num; 	/* Number of entries in fini_array */
 
     int32_t osrel;		/* OSREL note value */
+    uint32_t fctl0;		/* FEATURE_CONTROL note desc[0] value */
 
     bool mainprog : 1;		/* True if this is the main program */
     bool rtld : 1;		/* True if this is the dynamic linker */

From owner-svn-src-stable@freebsd.org  Fri Dec  7 14:45:29 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 097A7130F983;
 Fri,  7 Dec 2018 14:45:29 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id A2D5A8DD7D;
 Fri,  7 Dec 2018 14:45:28 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 84E7B147B4;
 Fri,  7 Dec 2018 14:45:28 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7EjSvm020417;
 Fri, 7 Dec 2018 14:45:28 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7EjSY2020416;
 Fri, 7 Dec 2018 14:45:28 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812071445.wB7EjSY2020416@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Fri, 7 Dec 2018 14:45:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341688 - stable/12/sys/kern
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/kern
X-SVN-Commit-Revision: 341688
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: A2D5A8DD7D
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.989,0];
 NEURAL_HAM_SHORT(-0.97)[-0.973,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 14:45:29 -0000

Author: kib
Date: Fri Dec  7 14:45:28 2018
New Revision: 341688
URL: https://svnweb.freebsd.org/changeset/base/341688

Log:
  MFC r340864:
  Parse FreeBSD Feature Control note on the ELF image activation.

Modified:
  stable/12/sys/kern/imgact_elf.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/kern/imgact_elf.c
==============================================================================
--- stable/12/sys/kern/imgact_elf.c	Fri Dec  7 14:25:46 2018	(r341687)
+++ stable/12/sys/kern/imgact_elf.c	Fri Dec  7 14:45:28 2018	(r341688)
@@ -88,7 +88,7 @@ __FBSDID("$FreeBSD$");
 
 static int __elfN(check_header)(const Elf_Ehdr *hdr);
 static Elf_Brandinfo *__elfN(get_brandinfo)(struct image_params *imgp,
-    const char *interp, int interp_name_len, int32_t *osrel);
+    const char *interp, int interp_name_len, int32_t *osrel, uint32_t *fctl0);
 static int __elfN(load_file)(struct proc *p, const char *file, u_long *addr,
     u_long *entry, size_t pagesize);
 static int __elfN(load_section)(struct image_params *imgp, vm_ooffset_t offset,
@@ -99,7 +99,7 @@ static bool __elfN(freebsd_trans_osrel)(const Elf_Note
     int32_t *osrel);
 static bool kfreebsd_trans_osrel(const Elf_Note *note, int32_t *osrel);
 static boolean_t __elfN(check_note)(struct image_params *imgp,
-    Elf_Brandnote *checknote, int32_t *osrel);
+    Elf_Brandnote *checknote, int32_t *osrel, uint32_t *fctl0);
 static vm_prot_t __elfN(trans_prot)(Elf_Word);
 static Elf_Word __elfN(untrans_prot)(vm_prot_t);
 
@@ -255,7 +255,7 @@ __elfN(brand_inuse)(Elf_Brandinfo *entry)
 
 static Elf_Brandinfo *
 __elfN(get_brandinfo)(struct image_params *imgp, const char *interp,
-    int interp_name_len, int32_t *osrel)
+    int interp_name_len, int32_t *osrel, uint32_t *fctl0)
 {
 	const Elf_Ehdr *hdr = (const Elf_Ehdr *)imgp->image_header;
 	Elf_Brandinfo *bi, *bi_m;
@@ -279,7 +279,8 @@ __elfN(get_brandinfo)(struct image_params *imgp, const
 			continue;
 		if (hdr->e_machine == bi->machine && (bi->flags &
 		    (BI_BRAND_NOTE|BI_BRAND_NOTE_MANDATORY)) != 0) {
-			ret = __elfN(check_note)(imgp, bi->brand_note, osrel);
+			ret = __elfN(check_note)(imgp, bi->brand_note, osrel,
+			    fctl0);
 			/* Give brand a chance to veto check_note's guess */
 			if (ret && bi->header_supported)
 				ret = bi->header_supported(imgp);
@@ -788,6 +789,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i
 	vm_prot_t prot;
 	u_long text_size, data_size, total_size, text_addr, data_addr;
 	u_long seg_size, seg_addr, addr, baddr, et_dyn_addr, entry, proghdr;
+	uint32_t fctl0;
 	int32_t osrel;
 	int error, i, n, interp_name_len, have_interp;
 
@@ -823,6 +825,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i
 	n = error = 0;
 	baddr = 0;
 	osrel = 0;
+	fctl0 = 0;
 	text_size = data_size = total_size = text_addr = data_addr = 0;
 	entry = proghdr = 0;
 	interp_name_len = 0;
@@ -888,7 +891,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i
 	}
 
 	brand_info = __elfN(get_brandinfo)(imgp, interp, interp_name_len,
-	    &osrel);
+	    &osrel, &fctl0);
 	if (brand_info == NULL) {
 		uprintf("ELF binary type \"%u\" not known.\n",
 		    hdr->e_ident[EI_OSABI]);
@@ -1091,6 +1094,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i
 	imgp->interpreted = 0;
 	imgp->reloc_base = addr;
 	imgp->proc->p_osrel = osrel;
+	imgp->proc->p_fctl0 = fctl0;
 	imgp->proc->p_elf_machine = hdr->e_machine;
 	imgp->proc->p_elf_flags = hdr->e_flags;
 
@@ -2427,29 +2431,64 @@ brandnote_cb(const Elf_Note *note, void *arg0, boolean
 	return (TRUE);
 }
 
+static Elf_Note fctl_note = {
+	.n_namesz = sizeof(FREEBSD_ABI_VENDOR),
+	.n_descsz = sizeof(uint32_t),
+	.n_type = NT_FREEBSD_FEATURE_CTL,
+};
+
+struct fctl_cb_arg {
+	uint32_t *fctl0;
+};
+
+static boolean_t
+note_fctl_cb(const Elf_Note *note, void *arg0, boolean_t *res)
+{
+	struct fctl_cb_arg *arg;
+	const Elf32_Word *desc;
+	uintptr_t p;
+
+	arg = arg0;
+	p = (uintptr_t)(note + 1);
+	p += roundup2(note->n_namesz, ELF_NOTE_ROUNDSIZE);
+	desc = (const Elf32_Word *)p;
+	*arg->fctl0 = desc[0];
+	return (TRUE);
+}
+
 /*
- * Try to find the appropriate ABI-note section for checknote,
- * fetch the osreldate for binary from the ELF OSABI-note. Only the
- * first page of the image is searched, the same as for headers.
+ * Try to find the appropriate ABI-note section for checknote, fetch
+ * the osreldate and feature control flags for binary from the ELF
+ * OSABI-note.  Only the first page of the image is searched, the same
+ * as for headers.
  */
 static boolean_t
 __elfN(check_note)(struct image_params *imgp, Elf_Brandnote *brandnote,
-    int32_t *osrel)
+    int32_t *osrel, uint32_t *fctl0)
 {
 	const Elf_Phdr *phdr;
 	const Elf_Ehdr *hdr;
 	struct brandnote_cb_arg b_arg;
-	int i;
+	struct fctl_cb_arg f_arg;
+	int i, j;
 
 	hdr = (const Elf_Ehdr *)imgp->image_header;
 	phdr = (const Elf_Phdr *)(imgp->image_header + hdr->e_phoff);
 	b_arg.brandnote = brandnote;
 	b_arg.osrel = osrel;
+	f_arg.fctl0 = fctl0;
 
 	for (i = 0; i < hdr->e_phnum; i++) {
 		if (phdr[i].p_type == PT_NOTE && __elfN(parse_notes)(imgp,
 		    &brandnote->hdr, brandnote->vendor, &phdr[i], brandnote_cb,
 		    &b_arg)) {
+			for (j = 0; j < hdr->e_phnum; j++) {
+				if (phdr[j].p_type == PT_NOTE &&
+				    __elfN(parse_notes)(imgp, &fctl_note,
+				    FREEBSD_ABI_VENDOR, &phdr[j],
+				    note_fctl_cb, &f_arg))
+					break;
+			}
 			return (TRUE);
 		}
 	}

From owner-svn-src-stable@freebsd.org  Fri Dec  7 15:48:43 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0F2EB1311416;
 Fri,  7 Dec 2018 15:48:43 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id A448969D89;
 Fri,  7 Dec 2018 15:48:42 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 807DE151AD;
 Fri,  7 Dec 2018 15:48:42 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7Fmg9G051455;
 Fri, 7 Dec 2018 15:48:42 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7FmgmK051454;
 Fri, 7 Dec 2018 15:48:42 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201812071548.wB7FmgmK051454@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Fri, 7 Dec 2018 15:48:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341691 - stable/12/usr.bin/top
X-SVN-Group: stable-12
X-SVN-Commit-Author: markj
X-SVN-Commit-Paths: stable/12/usr.bin/top
X-SVN-Commit-Revision: 341691
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: A448969D89
X-Spamd-Result: default: False [-2.94 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_SHORT(-0.96)[-0.960,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 15:48:43 -0000

Author: markj
Date: Fri Dec  7 15:48:42 2018
New Revision: 341691
URL: https://svnweb.freebsd.org/changeset/base/341691

Log:
  MFC r341346:
  Add missing display messages when toggling modes.
  
  PR:	233667

Modified:
  stable/12/usr.bin/top/top.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.bin/top/top.c
==============================================================================
--- stable/12/usr.bin/top/top.c	Fri Dec  7 15:19:00 2018	(r341690)
+++ stable/12/usr.bin/top/top.c	Fri Dec  7 15:48:42 2018	(r341691)
@@ -985,6 +985,9 @@ restart:
 				break;
 			    case CMD_viewtog:
 				displaymode = displaymode == DISP_IO ? DISP_CPU : DISP_IO;
+				new_message(MT_standout | MT_delayed,
+				    " Displaying %s statistics.",
+				    displaymode == DISP_IO ? "IO" : "CPU");
 				header_text = format_header(uname_field);
 				display_header(true);
 				d_header = i_header;
@@ -992,9 +995,15 @@ restart:
 				break;
 			    case CMD_viewsys:
 				ps.system = !ps.system;
+				new_message(MT_standout | MT_delayed,
+				    " %sisplaying system processes.",
+				    ps.system ? "D" : "Not d");
 				break;
 			    case CMD_showargs:
 				fmt_flags ^= FMT_SHOWARGS;
+				new_message(MT_standout | MT_delayed,
+				    " %sisplaying process arguments.",
+				    fmt_flags & FMT_SHOWARGS ? "D" : "Not d");
 				break;
 			    case CMD_order:
 				new_message(MT_standout,

From owner-svn-src-stable@freebsd.org  Fri Dec  7 21:42:42 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id D946C132152E;
 Fri,  7 Dec 2018 21:42:42 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 7D06979232;
 Fri,  7 Dec 2018 21:42:42 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5F3D318D2B;
 Fri,  7 Dec 2018 21:42:42 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7Lgggj038042;
 Fri, 7 Dec 2018 21:42:42 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7LggaA038041;
 Fri, 7 Dec 2018 21:42:42 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812072142.wB7LggaA038041@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Fri, 7 Dec 2018 21:42:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341708 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-11
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341708
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 7D06979232
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 NEURAL_HAM_SHORT(-0.98)[-0.975,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 21:42:43 -0000

Author: cy
Date: Fri Dec  7 21:42:41 2018
New Revision: 341708
URL: https://svnweb.freebsd.org/changeset/base/341708

Log:
  MFC r341280:
  
  Clean up a rather useless conditional structure member definition.

Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_fil.h
Directory Properties:
  stable/11/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil.h
  stable/12/sys/contrib/ipfilter/netinet/ip_fil.h
Directory Properties:
  stable/10/   (props changed)
  stable/12/   (props changed)

Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil.h
==============================================================================
--- stable/11/sys/contrib/ipfilter/netinet/ip_fil.h	Fri Dec  7 21:40:35 2018	(r341707)
+++ stable/11/sys/contrib/ipfilter/netinet/ip_fil.h	Fri Dec  7 21:42:41 2018	(r341708)
@@ -1026,11 +1026,7 @@ typedef	struct	iplog	{
 #define	IPLOG_SIZE	sizeof(iplog_t)
 
 typedef	struct	ipflog	{
-#if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199603)) || \
-        (defined(OpenBSD) && (OpenBSD >= 199603))
-#else
-	u_int	fl_unit;
-#endif
+	u_int		fl_unit;
 	u_32_t		fl_rule;
 	u_32_t		fl_flags;
 	u_32_t		fl_lflags;

From owner-svn-src-stable@freebsd.org  Fri Dec  7 21:42:43 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6C094132153D;
 Fri,  7 Dec 2018 21:42:43 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 2B8C079236;
 Fri,  7 Dec 2018 21:42:43 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0D70718D2D;
 Fri,  7 Dec 2018 21:42:43 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7LggfG038054;
 Fri, 7 Dec 2018 21:42:42 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7LggpG038053;
 Fri, 7 Dec 2018 21:42:42 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812072142.wB7LggpG038053@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Fri, 7 Dec 2018 21:42:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341708 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-10
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341708
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 2B8C079236
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 NEURAL_HAM_SHORT(-0.98)[-0.975,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 21:42:43 -0000

Author: cy
Date: Fri Dec  7 21:42:41 2018
New Revision: 341708
URL: https://svnweb.freebsd.org/changeset/base/341708

Log:
  MFC r341280:
  
  Clean up a rather useless conditional structure member definition.

Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil.h
Directory Properties:
  stable/10/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_fil.h
  stable/12/sys/contrib/ipfilter/netinet/ip_fil.h
Directory Properties:
  stable/11/   (props changed)
  stable/12/   (props changed)

Modified: stable/10/sys/contrib/ipfilter/netinet/ip_fil.h
==============================================================================
--- stable/10/sys/contrib/ipfilter/netinet/ip_fil.h	Fri Dec  7 21:40:35 2018	(r341707)
+++ stable/10/sys/contrib/ipfilter/netinet/ip_fil.h	Fri Dec  7 21:42:41 2018	(r341708)
@@ -1026,11 +1026,7 @@ typedef	struct	iplog	{
 #define	IPLOG_SIZE	sizeof(iplog_t)
 
 typedef	struct	ipflog	{
-#if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199603)) || \
-        (defined(OpenBSD) && (OpenBSD >= 199603))
-#else
-	u_int	fl_unit;
-#endif
+	u_int		fl_unit;
 	u_32_t		fl_rule;
 	u_32_t		fl_flags;
 	u_32_t		fl_lflags;

From owner-svn-src-stable@freebsd.org  Fri Dec  7 21:42:43 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0FE1B132152F;
 Fri,  7 Dec 2018 21:42:43 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id CF67079234;
 Fri,  7 Dec 2018 21:42:42 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B220018D2C;
 Fri,  7 Dec 2018 21:42:42 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB7LggC9038048;
 Fri, 7 Dec 2018 21:42:42 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB7LggAZ038047;
 Fri, 7 Dec 2018 21:42:42 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812072142.wB7LggAZ038047@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Fri, 7 Dec 2018 21:42:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341708 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-12
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341708
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: CF67079234
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-0.99)[-0.988,0];
 NEURAL_HAM_SHORT(-0.98)[-0.975,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2018 21:42:43 -0000

Author: cy
Date: Fri Dec  7 21:42:41 2018
New Revision: 341708
URL: https://svnweb.freebsd.org/changeset/base/341708

Log:
  MFC r341280:
  
  Clean up a rather useless conditional structure member definition.

Modified:
  stable/12/sys/contrib/ipfilter/netinet/ip_fil.h
Directory Properties:
  stable/12/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil.h
  stable/11/sys/contrib/ipfilter/netinet/ip_fil.h
Directory Properties:
  stable/10/   (props changed)
  stable/11/   (props changed)

Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil.h
==============================================================================
--- stable/12/sys/contrib/ipfilter/netinet/ip_fil.h	Fri Dec  7 21:40:35 2018	(r341707)
+++ stable/12/sys/contrib/ipfilter/netinet/ip_fil.h	Fri Dec  7 21:42:41 2018	(r341708)
@@ -1026,11 +1026,7 @@ typedef	struct	iplog	{
 #define	IPLOG_SIZE	sizeof(iplog_t)
 
 typedef	struct	ipflog	{
-#if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199603)) || \
-        (defined(OpenBSD) && (OpenBSD >= 199603))
-#else
-	u_int	fl_unit;
-#endif
+	u_int		fl_unit;
 	u_32_t		fl_rule;
 	u_32_t		fl_flags;
 	u_32_t		fl_lflags;

From owner-svn-src-stable@freebsd.org  Sat Dec  8 00:28:29 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id BD0DA13266E8;
 Sat,  8 Dec 2018 00:28:28 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 60E277FECF;
 Sat,  8 Dec 2018 00:28:28 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 41DCC1A75F;
 Sat,  8 Dec 2018 00:28:28 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB80SSQk020985;
 Sat, 8 Dec 2018 00:28:28 GMT (envelope-from eugen@FreeBSD.org)
Received: (from eugen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB80SSJM020984;
 Sat, 8 Dec 2018 00:28:28 GMT (envelope-from eugen@FreeBSD.org)
Message-Id: <201812080028.wB80SSJM020984@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: eugen set sender to
 eugen@FreeBSD.org using -f
From: Eugene Grosbein <eugen@FreeBSD.org>
Date: Sat, 8 Dec 2018 00:28:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341713 - stable/12/sbin/ping
X-SVN-Group: stable-12
X-SVN-Commit-Author: eugen
X-SVN-Commit-Paths: stable/12/sbin/ping
X-SVN-Commit-Revision: 341713
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 60E277FECF
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.997,0];
 NEURAL_HAM_SHORT(-0.96)[-0.962,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 00:28:29 -0000

Author: eugen
Date: Sat Dec  8 00:28:27 2018
New Revision: 341713
URL: https://svnweb.freebsd.org/changeset/base/341713

Log:
  MFC r340245: ping(8): improve diagnostics in case of wrong arguments.
  
    For example, in case of super-user:
    $ sudo ping -s -64 127.0.0.1
    PING 127.0.0.1 (127.0.0.1): -64 data bytes
    ping: sendto: Invalid argument
  
    For unprivileged user:
    $ ping -s -64 127.0.0.1
    ping: packet size too large: 18446744073709551552 > 56: Operation not permitted
  
    Fix this by switching from strtoul() to strtol() for integer arguments
    and adding explicit checks for negative values.

Modified:
  stable/12/sbin/ping/ping.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sbin/ping/ping.c
==============================================================================
--- stable/12/sbin/ping/ping.c	Fri Dec  7 23:07:51 2018	(r341712)
+++ stable/12/sbin/ping/ping.c	Sat Dec  8 00:28:27 2018	(r341713)
@@ -242,7 +242,8 @@ main(int argc, char *const *argv)
 #endif
 	struct sockaddr_in *to;
 	double t;
-	u_long alarmtimeout, ultmp;
+	u_long alarmtimeout;
+	long ltmp;
 	int almost_done, ch, df, hold, i, icmp_len, mib[4], preload;
 	int ssend_errno, srecv_errno, tos, ttl;
 	char ctrl[CMSG_SPACE(sizeof(struct timeval))];
@@ -311,12 +312,12 @@ main(int argc, char *const *argv)
 			options |= F_AUDIBLE;
 			break;
 		case 'c':
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > LONG_MAX || !ultmp)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > LONG_MAX || ltmp <=0)
 				errx(EX_USAGE,
 				    "invalid count of packets to transmit: `%s'",
 				    optarg);
-			npackets = ultmp;
+			npackets = ltmp;
 			break;
 		case 'D':
 			options |= F_HDRINCL;
@@ -334,46 +335,46 @@ main(int argc, char *const *argv)
 			setbuf(stdout, (char *)NULL);
 			break;
 		case 'G': /* Maximum packet size for ping sweep */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp <= 0)
 				errx(EX_USAGE, "invalid packet size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
 			options |= F_SWEEP;
-			sweepmax = ultmp;
+			sweepmax = ltmp;
 			break;
 		case 'g': /* Minimum packet size for ping sweep */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp <= 0)
 				errx(EX_USAGE, "invalid packet size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
 			options |= F_SWEEP;
-			sweepmin = ultmp;
+			sweepmin = ltmp;
 			break;
 		case 'h': /* Packet size increment for ping sweep */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp < 1)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp < 1)
 				errx(EX_USAGE, "invalid increment size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
 			options |= F_SWEEP;
-			sweepincr = ultmp;
+			sweepincr = ltmp;
 			break;
 		case 'I':		/* multicast interface */
 			if (inet_aton(optarg, &ifaddr) == 0)
@@ -399,15 +400,15 @@ main(int argc, char *const *argv)
 			loop = 0;
 			break;
 		case 'l':
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > INT_MAX)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > INT_MAX || ltmp < 0)
 				errx(EX_USAGE,
 				    "invalid preload value: `%s'", optarg);
 			if (uid) {
 				errno = EPERM;
 				err(EX_NOPERM, "-l flag");
 			}
-			preload = ultmp;
+			preload = ltmp;
 			break;
 		case 'M':
 			switch(optarg[0]) {
@@ -425,10 +426,10 @@ main(int argc, char *const *argv)
 			}
 			break;
 		case 'm':		/* TTL */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > MAXTTL)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > MAXTTL || ltmp < 0)
 				errx(EX_USAGE, "invalid TTL: `%s'", optarg);
-			ttl = ultmp;
+			ttl = ltmp;
 			options |= F_TTL;
 			break;
 		case 'n':
@@ -470,24 +471,24 @@ main(int argc, char *const *argv)
 			source = optarg;
 			break;
 		case 's':		/* size of packet to send */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp < 0)
 				errx(EX_USAGE, "invalid packet size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
-			datalen = ultmp;
+			datalen = ltmp;
 			break;
 		case 'T':		/* multicast TTL */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > MAXTTL)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > MAXTTL || ltmp < 0)
 				errx(EX_USAGE, "invalid multicast TTL: `%s'",
 				    optarg);
-			mttl = ultmp;
+			mttl = ltmp;
 			options |= F_MTTL;
 			break;
 		case 't':
@@ -513,10 +514,10 @@ main(int argc, char *const *argv)
 			break;
 		case 'z':
 			options |= F_HDRINCL;
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > MAXTOS)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > MAXTOS || ltmp < 0)
 				errx(EX_USAGE, "invalid TOS: `%s'", optarg);
-			tos = ultmp;
+			tos = ltmp;
 			break;
 		default:
 			usage();

From owner-svn-src-stable@freebsd.org  Sat Dec  8 00:33:21 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6D18E1326A66;
 Sat,  8 Dec 2018 00:33:21 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 11553803E7;
 Sat,  8 Dec 2018 00:33:21 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E67EB1A906;
 Sat,  8 Dec 2018 00:33:20 +0000 (UTC)
 (envelope-from eugen@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB80XKNV025895;
 Sat, 8 Dec 2018 00:33:20 GMT (envelope-from eugen@FreeBSD.org)
Received: (from eugen@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB80XKmk025894;
 Sat, 8 Dec 2018 00:33:20 GMT (envelope-from eugen@FreeBSD.org)
Message-Id: <201812080033.wB80XKmk025894@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: eugen set sender to
 eugen@FreeBSD.org using -f
From: Eugene Grosbein <eugen@FreeBSD.org>
Date: Sat, 8 Dec 2018 00:33:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341714 - stable/11/sbin/ping
X-SVN-Group: stable-11
X-SVN-Commit-Author: eugen
X-SVN-Commit-Paths: stable/11/sbin/ping
X-SVN-Commit-Revision: 341714
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 11553803E7
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.997,0];
 NEURAL_HAM_SHORT(-0.96)[-0.962,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 00:33:21 -0000

Author: eugen
Date: Sat Dec  8 00:33:20 2018
New Revision: 341714
URL: https://svnweb.freebsd.org/changeset/base/341714

Log:
  MFC r340245: ping(8): improve diagnostics in case of wrong arguments.
  
    For example, in case of super-user:
    $ sudo ping -s -64 127.0.0.1
    PING 127.0.0.1 (127.0.0.1): -64 data bytes
    ping: sendto: Invalid argument
  
    For unprivileged user:
    $ ping -s -64 127.0.0.1
    ping: packet size too large: 18446744073709551552 > 56: Operation not permitted
  
    Fix this by switching from strtoul() to strtol() for integer arguments
    and adding explicit checks for negative values.

Modified:
  stable/11/sbin/ping/ping.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sbin/ping/ping.c
==============================================================================
--- stable/11/sbin/ping/ping.c	Sat Dec  8 00:28:27 2018	(r341713)
+++ stable/11/sbin/ping/ping.c	Sat Dec  8 00:33:20 2018	(r341714)
@@ -246,7 +246,8 @@ main(int argc, char *const *argv)
 #endif
 	struct sockaddr_in *to;
 	double t;
-	u_long alarmtimeout, ultmp;
+	u_long alarmtimeout;
+	long ltmp;
 	int almost_done, ch, df, hold, i, icmp_len, mib[4], preload;
 	int ssend_errno, srecv_errno, tos, ttl;
 	char ctrl[CMSG_SPACE(sizeof(struct timeval))];
@@ -315,12 +316,12 @@ main(int argc, char *const *argv)
 			options |= F_AUDIBLE;
 			break;
 		case 'c':
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > LONG_MAX || !ultmp)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > LONG_MAX || ltmp <=0)
 				errx(EX_USAGE,
 				    "invalid count of packets to transmit: `%s'",
 				    optarg);
-			npackets = ultmp;
+			npackets = ltmp;
 			break;
 		case 'D':
 			options |= F_HDRINCL;
@@ -338,46 +339,46 @@ main(int argc, char *const *argv)
 			setbuf(stdout, (char *)NULL);
 			break;
 		case 'G': /* Maximum packet size for ping sweep */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp <= 0)
 				errx(EX_USAGE, "invalid packet size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
 			options |= F_SWEEP;
-			sweepmax = ultmp;
+			sweepmax = ltmp;
 			break;
 		case 'g': /* Minimum packet size for ping sweep */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp <= 0)
 				errx(EX_USAGE, "invalid packet size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
 			options |= F_SWEEP;
-			sweepmin = ultmp;
+			sweepmin = ltmp;
 			break;
 		case 'h': /* Packet size increment for ping sweep */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp < 1)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp < 1)
 				errx(EX_USAGE, "invalid increment size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
 			options |= F_SWEEP;
-			sweepincr = ultmp;
+			sweepincr = ltmp;
 			break;
 		case 'I':		/* multicast interface */
 			if (inet_aton(optarg, &ifaddr) == 0)
@@ -403,15 +404,15 @@ main(int argc, char *const *argv)
 			loop = 0;
 			break;
 		case 'l':
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > INT_MAX)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > INT_MAX || ltmp < 0)
 				errx(EX_USAGE,
 				    "invalid preload value: `%s'", optarg);
 			if (uid) {
 				errno = EPERM;
 				err(EX_NOPERM, "-l flag");
 			}
-			preload = ultmp;
+			preload = ltmp;
 			break;
 		case 'M':
 			switch(optarg[0]) {
@@ -429,10 +430,10 @@ main(int argc, char *const *argv)
 			}
 			break;
 		case 'm':		/* TTL */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > MAXTTL)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > MAXTTL || ltmp < 0)
 				errx(EX_USAGE, "invalid TTL: `%s'", optarg);
-			ttl = ultmp;
+			ttl = ltmp;
 			options |= F_TTL;
 			break;
 		case 'n':
@@ -474,24 +475,24 @@ main(int argc, char *const *argv)
 			source = optarg;
 			break;
 		case 's':		/* size of packet to send */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp < 0)
 				errx(EX_USAGE, "invalid packet size: `%s'",
 				    optarg);
-			if (uid != 0 && ultmp > DEFDATALEN) {
+			if (uid != 0 && ltmp > DEFDATALEN) {
 				errno = EPERM;
 				err(EX_NOPERM,
-				    "packet size too large: %lu > %u",
-				    ultmp, DEFDATALEN);
+				    "packet size too large: %ld > %u",
+				    ltmp, DEFDATALEN);
 			}
-			datalen = ultmp;
+			datalen = ltmp;
 			break;
 		case 'T':		/* multicast TTL */
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > MAXTTL)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > MAXTTL || ltmp < 0)
 				errx(EX_USAGE, "invalid multicast TTL: `%s'",
 				    optarg);
-			mttl = ultmp;
+			mttl = ltmp;
 			options |= F_MTTL;
 			break;
 		case 't':
@@ -517,10 +518,10 @@ main(int argc, char *const *argv)
 			break;
 		case 'z':
 			options |= F_HDRINCL;
-			ultmp = strtoul(optarg, &ep, 0);
-			if (*ep || ep == optarg || ultmp > MAXTOS)
+			ltmp = strtol(optarg, &ep, 0);
+			if (*ep || ep == optarg || ltmp > MAXTOS || ltmp < 0)
 				errx(EX_USAGE, "invalid TOS: `%s'", optarg);
-			tos = ultmp;
+			tos = ltmp;
 			break;
 		default:
 			usage();

From owner-svn-src-stable@freebsd.org  Sat Dec  8 00:44:45 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5AB8713270A0;
 Sat,  8 Dec 2018 00:44:45 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E7D6280DFD;
 Sat,  8 Dec 2018 00:44:44 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C51C21AA9B;
 Sat,  8 Dec 2018 00:44:44 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB80iiuE031363;
 Sat, 8 Dec 2018 00:44:44 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB80ii65031362;
 Sat, 8 Dec 2018 00:44:44 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812080044.wB80ii65031362@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat, 8 Dec 2018 00:44:44 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341715 - in stable/12/sys: arm/arm i386/i386
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: in stable/12/sys: arm/arm i386/i386
X-SVN-Commit-Revision: 341715
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E7D6280DFD
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.960,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 00:44:45 -0000

Author: kib
Date: Sat Dec  8 00:44:44 2018
New Revision: 341715
URL: https://svnweb.freebsd.org/changeset/base/341715

Log:
  MFC r341374:
  Correct the tunable name in the message.
  
  PR:	231577

Modified:
  stable/12/sys/arm/arm/pmap-v6.c
  stable/12/sys/i386/i386/pmap.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/arm/arm/pmap-v6.c
==============================================================================
--- stable/12/sys/arm/arm/pmap-v6.c	Sat Dec  8 00:33:20 2018	(r341714)
+++ stable/12/sys/arm/arm/pmap-v6.c	Sat Dec  8 00:44:44 2018	(r341715)
@@ -3037,7 +3037,7 @@ get_pv_entry(pmap_t pmap, boolean_t try)
 		if (ratecheck(&lastprint, &printinterval))
 			printf("Approaching the limit on PV entries, consider "
 			    "increasing either the vm.pmap.shpgperproc or the "
-			    "vm.pmap.pv_entry_max tunable.\n");
+			    "vm.pmap.pv_entries tunable.\n");
 retry:
 	pc = TAILQ_FIRST(&pmap->pm_pvchunk);
 	if (pc != NULL) {

Modified: stable/12/sys/i386/i386/pmap.c
==============================================================================
--- stable/12/sys/i386/i386/pmap.c	Sat Dec  8 00:33:20 2018	(r341714)
+++ stable/12/sys/i386/i386/pmap.c	Sat Dec  8 00:44:44 2018	(r341715)
@@ -2568,7 +2568,7 @@ get_pv_entry(pmap_t pmap, boolean_t try)
 		if (ratecheck(&lastprint, &printinterval))
 			printf("Approaching the limit on PV entries, consider "
 			    "increasing either the vm.pmap.shpgperproc or the "
-			    "vm.pmap.pv_entry_max tunable.\n");
+			    "vm.pmap.pv_entries tunable.\n");
 retry:
 	pc = TAILQ_FIRST(&pmap->pm_pvchunk);
 	if (pc != NULL) {

From owner-svn-src-stable@freebsd.org  Sat Dec  8 00:46:06 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 02A6E13271FE;
 Sat,  8 Dec 2018 00:46:06 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 9EE8E81028;
 Sat,  8 Dec 2018 00:46:05 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 806E61AA9D;
 Sat,  8 Dec 2018 00:46:05 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB80k5cv031500;
 Sat, 8 Dec 2018 00:46:05 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB80k5AB031499;
 Sat, 8 Dec 2018 00:46:05 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812080046.wB80k5AB031499@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat, 8 Dec 2018 00:46:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341716 - stable/12/sys/vm
X-SVN-Group: stable-12
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/12/sys/vm
X-SVN-Commit-Revision: 341716
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 9EE8E81028
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.960,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 00:46:06 -0000

Author: kib
Date: Sat Dec  8 00:46:05 2018
New Revision: 341716
URL: https://svnweb.freebsd.org/changeset/base/341716

Log:
  MFC r341375:
  Allow to create swap zone larger than v_page_count / 2.

Modified:
  stable/12/sys/vm/swap_pager.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/vm/swap_pager.c
==============================================================================
--- stable/12/sys/vm/swap_pager.c	Sat Dec  8 00:44:44 2018	(r341715)
+++ stable/12/sys/vm/swap_pager.c	Sat Dec  8 00:46:05 2018	(r341716)
@@ -547,12 +547,12 @@ swap_pager_swap_init(void)
 	mtx_unlock(&pbuf_mtx);
 
 	/*
-	 * Initialize our zone, guessing on the number we need based
-	 * on the number of pages in the system.
+	 * Initialize our zone, taking the user's requested size or
+	 * estimating the number we need based on the number of pages
+	 * in the system.
 	 */
-	n = vm_cnt.v_page_count / 2;
-	if (maxswzone && n > maxswzone / sizeof(struct swblk))
-		n = maxswzone / sizeof(struct swblk);
+	n = maxswzone != 0 ? maxswzone / sizeof(struct swblk) :
+	    vm_cnt.v_page_count / 2;
 	swpctrie_zone = uma_zcreate("swpctrie", pctrie_node_size(), NULL, NULL,
 	    pctrie_zone_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM);
 	if (swpctrie_zone == NULL)
@@ -580,7 +580,7 @@ swap_pager_swap_init(void)
 	n = uma_zone_get_max(swblk_zone);
 
 	if (n < n2)
-		printf("Swap blk zone entries reduced from %lu to %lu.\n",
+		printf("Swap blk zone entries changed from %lu to %lu.\n",
 		    n2, n);
 	swap_maxpages = n * SWAP_META_PAGES;
 	swzone = n * sizeof(struct swblk);

From owner-svn-src-stable@freebsd.org  Sat Dec  8 00:47:24 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 31B38132737A;
 Sat,  8 Dec 2018 00:47:24 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id B85FE811EF;
 Sat,  8 Dec 2018 00:47:23 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9AF311AA9E;
 Sat,  8 Dec 2018 00:47:23 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB80lNKP031605;
 Sat, 8 Dec 2018 00:47:23 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB80lNxl031603;
 Sat, 8 Dec 2018 00:47:23 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812080047.wB80lNxl031603@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat, 8 Dec 2018 00:47:23 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341717 - in stable/11/sys: arm/arm i386/i386
X-SVN-Group: stable-11
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: in stable/11/sys: arm/arm i386/i386
X-SVN-Commit-Revision: 341717
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: B85FE811EF
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.960,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 00:47:24 -0000

Author: kib
Date: Sat Dec  8 00:47:22 2018
New Revision: 341717
URL: https://svnweb.freebsd.org/changeset/base/341717

Log:
  MFC r341374:
  Correct the tunable name in the message.
  
  PR:	231577

Modified:
  stable/11/sys/arm/arm/pmap-v6.c
  stable/11/sys/i386/i386/pmap.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/arm/arm/pmap-v6.c
==============================================================================
--- stable/11/sys/arm/arm/pmap-v6.c	Sat Dec  8 00:46:05 2018	(r341716)
+++ stable/11/sys/arm/arm/pmap-v6.c	Sat Dec  8 00:47:22 2018	(r341717)
@@ -3028,7 +3028,7 @@ get_pv_entry(pmap_t pmap, boolean_t try)
 		if (ratecheck(&lastprint, &printinterval))
 			printf("Approaching the limit on PV entries, consider "
 			    "increasing either the vm.pmap.shpgperproc or the "
-			    "vm.pmap.pv_entry_max tunable.\n");
+			    "vm.pmap.pv_entries tunable.\n");
 retry:
 	pc = TAILQ_FIRST(&pmap->pm_pvchunk);
 	if (pc != NULL) {

Modified: stable/11/sys/i386/i386/pmap.c
==============================================================================
--- stable/11/sys/i386/i386/pmap.c	Sat Dec  8 00:46:05 2018	(r341716)
+++ stable/11/sys/i386/i386/pmap.c	Sat Dec  8 00:47:22 2018	(r341717)
@@ -2414,7 +2414,7 @@ get_pv_entry(pmap_t pmap, boolean_t try)
 		if (ratecheck(&lastprint, &printinterval))
 			printf("Approaching the limit on PV entries, consider "
 			    "increasing either the vm.pmap.shpgperproc or the "
-			    "vm.pmap.pv_entry_max tunable.\n");
+			    "vm.pmap.pv_entries tunable.\n");
 retry:
 	pc = TAILQ_FIRST(&pmap->pm_pvchunk);
 	if (pc != NULL) {

From owner-svn-src-stable@freebsd.org  Sat Dec  8 00:48:12 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 99CD11327488;
 Sat,  8 Dec 2018 00:48:12 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 40F0E8141F;
 Sat,  8 Dec 2018 00:48:12 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1928A1AAA1;
 Sat,  8 Dec 2018 00:48:11 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB80mAN3031837;
 Sat, 8 Dec 2018 00:48:10 GMT (envelope-from kib@FreeBSD.org)
Received: (from kib@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB80mAi7031836;
 Sat, 8 Dec 2018 00:48:10 GMT (envelope-from kib@FreeBSD.org)
Message-Id: <201812080048.wB80mAi7031836@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org
 using -f
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat, 8 Dec 2018 00:48:10 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341718 - stable/11/sys/vm
X-SVN-Group: stable-11
X-SVN-Commit-Author: kib
X-SVN-Commit-Paths: stable/11/sys/vm
X-SVN-Commit-Revision: 341718
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 40F0E8141F
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.960,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 00:48:12 -0000

Author: kib
Date: Sat Dec  8 00:48:10 2018
New Revision: 341718
URL: https://svnweb.freebsd.org/changeset/base/341718

Log:
  MFC r341375:
  Allow to create swap zone larger than v_page_count / 2.

Modified:
  stable/11/sys/vm/swap_pager.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/vm/swap_pager.c
==============================================================================
--- stable/11/sys/vm/swap_pager.c	Sat Dec  8 00:47:22 2018	(r341717)
+++ stable/11/sys/vm/swap_pager.c	Sat Dec  8 00:48:10 2018	(r341718)
@@ -514,12 +514,12 @@ swap_pager_swap_init(void)
 	mtx_unlock(&pbuf_mtx);
 
 	/*
-	 * Initialize our zone, guessing on the number we need based
-	 * on the number of pages in the system.
+	 * Initialize our zone, taking the user's requested size or
+	 * estimating the number we need based on the number of pages
+	 * in the system.
 	 */
-	n = vm_cnt.v_page_count / 2;
-	if (maxswzone && n > maxswzone / sizeof(struct swblk))
-		n = maxswzone / sizeof(struct swblk);
+	n = maxswzone != 0 ? maxswzone / sizeof(struct swblk) :
+	    vm_cnt.v_page_count / 2;
 	swpctrie_zone = uma_zcreate("swpctrie", pctrie_node_size(), NULL, NULL,
 	    pctrie_zone_init, NULL, UMA_ALIGN_PTR,
 	    UMA_ZONE_NOFREE | UMA_ZONE_VM);
@@ -549,7 +549,7 @@ swap_pager_swap_init(void)
 	n = uma_zone_get_max(swblk_zone);
 
 	if (n < n2)
-		printf("Swap blk zone entries reduced from %lu to %lu.\n",
+		printf("Swap blk zone entries changed from %lu to %lu.\n",
 		    n2, n);
 	swap_maxpages = n * SWAP_META_PAGES;
 	swzone = n * sizeof(struct swblk);

From owner-svn-src-stable@freebsd.org  Sat Dec  8 14:54:34 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 58AE2131A6DE;
 Sat,  8 Dec 2018 14:54:34 +0000 (UTC)
 (envelope-from karels@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id EFE3C81BAA;
 Sat,  8 Dec 2018 14:54:33 +0000 (UTC)
 (envelope-from karels@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CB761239E3;
 Sat,  8 Dec 2018 14:54:33 +0000 (UTC)
 (envelope-from karels@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8EsXhN071342;
 Sat, 8 Dec 2018 14:54:33 GMT (envelope-from karels@FreeBSD.org)
Received: (from karels@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8EsXSX071340;
 Sat, 8 Dec 2018 14:54:33 GMT (envelope-from karels@FreeBSD.org)
Message-Id: <201812081454.wB8EsXSX071340@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: karels set sender to
 karels@FreeBSD.org using -f
From: Mike Karels <karels@FreeBSD.org>
Date: Sat, 8 Dec 2018 14:54:33 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341737 - stable/12/sys/net/altq
X-SVN-Group: stable-12
X-SVN-Commit-Author: karels
X-SVN-Commit-Paths: stable/12/sys/net/altq
X-SVN-Commit-Revision: 341737
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: EFE3C81BAA
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.997,0];
 NEURAL_HAM_SHORT(-0.96)[-0.963,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 14:54:34 -0000

Author: karels
Date: Sat Dec  8 14:54:33 2018
New Revision: 341737
URL: https://svnweb.freebsd.org/changeset/base/341737

Log:
  MFC r340474:
  Fix flags collision causing inability to enable CBQ in ALTQ
  
  The CBQ BORROW flag conflicts with the RMCF_CODEL flag; the
  two sets of definitions actually define the same things. The symptom
  is that a kernel with CBQ support and not CODEL fails to load a QoS
  policy with the obscure error "pfctl: DIOCADDALTQ: Cannot allocate memory."
  If ALTQ_DEBUG is enabled, the error becomes a little clearer:
  "rmc_newclass: CODEL not configured for CBQ!" is printed by the kernel.
  There really shouldn't be two sets of macros that have to be defined
  consistently, but the include structure isn't right for exporting
  CBQ flags to altq_rmclass.h. Re-align the definitions, and add
  CTASSERTs in the kernel to ensure that the definitions are consistent.
  
  PR:             215716
  Reviewed by:    pkelsey
  Sponsored by:   Forcepoint LLC
  Differential Revision:  https://reviews.freebsd.org/D17758

Modified:
  stable/12/sys/net/altq/altq_cbq.h
  stable/12/sys/net/altq/altq_rmclass.h

Modified: stable/12/sys/net/altq/altq_cbq.h
==============================================================================
--- stable/12/sys/net/altq/altq_cbq.h	Sat Dec  8 14:32:19 2018	(r341736)
+++ stable/12/sys/net/altq/altq_cbq.h	Sat Dec  8 14:54:33 2018	(r341737)
@@ -46,7 +46,7 @@ extern "C" {
 
 #define	NULL_CLASS_HANDLE	0
 
-/* class flags should be same as class flags in rm_class.h */
+/* class flags must be same as class flags in altq_rmclass.h */
 #define	CBQCLF_RED		0x0001	/* use RED */
 #define	CBQCLF_ECN		0x0002  /* use RED/ECN */
 #define	CBQCLF_RIO		0x0004  /* use RIO */
@@ -54,6 +54,15 @@ extern "C" {
 #define	CBQCLF_CLEARDSCP	0x0010  /* clear diffserv codepoint */
 #define	CBQCLF_BORROW		0x0020  /* borrow from parent */
 #define	CBQCLF_CODEL		0x0040	/* use CoDel */
+
+#ifdef _KERNEL
+CTASSERT(CBQCLF_RED == RMCF_RED);
+CTASSERT(CBQCLF_ECN == RMCF_ECN);
+CTASSERT(CBQCLF_RIO == RMCF_RIO);
+CTASSERT(CBQCLF_FLOWVALVE == RMCF_FLOWVALVE);
+CTASSERT(CBQCLF_CLEARDSCP == RMCF_CLEARDSCP);
+CTASSERT(CBQCLF_CODEL == RMCF_CODEL);
+#endif
 
 /* class flags only for root class */
 #define	CBQCLF_WRR		0x0100	/* weighted-round robin */

Modified: stable/12/sys/net/altq/altq_rmclass.h
==============================================================================
--- stable/12/sys/net/altq/altq_rmclass.h	Sat Dec  8 14:32:19 2018	(r341736)
+++ stable/12/sys/net/altq/altq_rmclass.h	Sat Dec  8 14:54:33 2018	(r341737)
@@ -233,13 +233,13 @@ struct rm_ifdat {
 };
 
 /* flags for rmc_init and rmc_newclass */
-/* class flags */
+/* class flags; must be the same as class flags in altq_cbq.h */
 #define	RMCF_RED		0x0001
 #define	RMCF_ECN		0x0002
 #define	RMCF_RIO		0x0004
 #define	RMCF_FLOWVALVE		0x0008	/* use flowvalve (aka penalty-box) */
 #define	RMCF_CLEARDSCP		0x0010  /* clear diffserv codepoint */
-#define	RMCF_CODEL		0x0020
+#define	RMCF_CODEL		0x0040
 
 /* flags for rmc_init */
 #define	RMCF_WRR		0x0100

From owner-svn-src-stable@freebsd.org  Sat Dec  8 17:28:54 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id EF6BC132349C;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 8CBD987057;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6D621252BF;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8HSr9E049674;
 Sat, 8 Dec 2018 17:28:53 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8HSrRx049673;
 Sat, 8 Dec 2018 17:28:53 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812081728.wB8HSrRx049673@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Sat, 8 Dec 2018 17:28:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341739 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-12
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341739
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 8CBD987057
X-Spamd-Result: default: False [-2.96 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.97)[-0.975,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 17:28:54 -0000

Author: cy
Date: Sat Dec  8 17:28:52 2018
New Revision: 341739
URL: https://svnweb.freebsd.org/changeset/base/341739

Log:
  MFC r341384:
  
  Remove IFF_DRVRLOCK as it is used in IRIX only (and we all know IRIX
  is dead). This includes collaterally removing code shared by HP/UX,
  SGI, and Linux, where IP Filter will in all likelihood for various
  reasons never run again.

Modified:
  stable/12/sys/contrib/ipfilter/netinet/ip_log.c
Directory Properties:
  stable/12/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_log.c
  stable/11/sys/contrib/ipfilter/netinet/ip_log.c
Directory Properties:
  stable/10/   (props changed)
  stable/11/   (props changed)

Modified: stable/12/sys/contrib/ipfilter/netinet/ip_log.c
==============================================================================
--- stable/12/sys/contrib/ipfilter/netinet/ip_log.c	Sat Dec  8 14:58:17 2018	(r341738)
+++ stable/12/sys/contrib/ipfilter/netinet/ip_log.c	Sat Dec  8 17:28:52 2018	(r341739)
@@ -97,14 +97,8 @@ struct file;
 #include <netinet/in.h>
 #ifdef __sgi
 # include <sys/ddi.h>
-# ifdef IFF_DRVRLOCK /* IRIX6 */
-#  include <sys/hashing.h>
-# endif
 #endif
-#if !defined(__hpux) && !defined(linux) && \
-    !(defined(__sgi) && !defined(IFF_DRVRLOCK)) /*IRIX<6*/
 # include <netinet/in_var.h>
-#endif
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>

From owner-svn-src-stable@freebsd.org  Sat Dec  8 17:28:53 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 87AFB1323496;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 2A3C887056;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 058E6252BE;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8HSqjh049668;
 Sat, 8 Dec 2018 17:28:52 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8HSqsp049667;
 Sat, 8 Dec 2018 17:28:52 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812081728.wB8HSqsp049667@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Sat, 8 Dec 2018 17:28:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341739 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-11
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341739
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 2A3C887056
X-Spamd-Result: default: False [-2.96 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 NEURAL_HAM_SHORT(-0.97)[-0.975,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 17:28:53 -0000

Author: cy
Date: Sat Dec  8 17:28:52 2018
New Revision: 341739
URL: https://svnweb.freebsd.org/changeset/base/341739

Log:
  MFC r341384:
  
  Remove IFF_DRVRLOCK as it is used in IRIX only (and we all know IRIX
  is dead). This includes collaterally removing code shared by HP/UX,
  SGI, and Linux, where IP Filter will in all likelihood for various
  reasons never run again.

Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_log.c
Directory Properties:
  stable/11/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_log.c
  stable/12/sys/contrib/ipfilter/netinet/ip_log.c
Directory Properties:
  stable/10/   (props changed)
  stable/12/   (props changed)

Modified: stable/11/sys/contrib/ipfilter/netinet/ip_log.c
==============================================================================
--- stable/11/sys/contrib/ipfilter/netinet/ip_log.c	Sat Dec  8 14:58:17 2018	(r341738)
+++ stable/11/sys/contrib/ipfilter/netinet/ip_log.c	Sat Dec  8 17:28:52 2018	(r341739)
@@ -97,14 +97,8 @@ struct file;
 #include <netinet/in.h>
 #ifdef __sgi
 # include <sys/ddi.h>
-# ifdef IFF_DRVRLOCK /* IRIX6 */
-#  include <sys/hashing.h>
-# endif
 #endif
-#if !defined(__hpux) && !defined(linux) && \
-    !(defined(__sgi) && !defined(IFF_DRVRLOCK)) /*IRIX<6*/
 # include <netinet/in_var.h>
-#endif
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>

From owner-svn-src-stable@freebsd.org  Sat Dec  8 17:28:54 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 33F9013234A1;
 Sat,  8 Dec 2018 17:28:54 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id CC25187058;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A74BD252C0;
 Sat,  8 Dec 2018 17:28:53 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8HSrVF049680;
 Sat, 8 Dec 2018 17:28:53 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8HSrQS049679;
 Sat, 8 Dec 2018 17:28:53 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812081728.wB8HSrQS049679@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Sat, 8 Dec 2018 17:28:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341739 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-10
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341739
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: CC25187058
X-Spamd-Result: default: False [-2.96 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.97)[-0.975,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 17:28:54 -0000

Author: cy
Date: Sat Dec  8 17:28:52 2018
New Revision: 341739
URL: https://svnweb.freebsd.org/changeset/base/341739

Log:
  MFC r341384:
  
  Remove IFF_DRVRLOCK as it is used in IRIX only (and we all know IRIX
  is dead). This includes collaterally removing code shared by HP/UX,
  SGI, and Linux, where IP Filter will in all likelihood for various
  reasons never run again.

Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_log.c
Directory Properties:
  stable/10/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_log.c
  stable/12/sys/contrib/ipfilter/netinet/ip_log.c
Directory Properties:
  stable/11/   (props changed)
  stable/12/   (props changed)

Modified: stable/10/sys/contrib/ipfilter/netinet/ip_log.c
==============================================================================
--- stable/10/sys/contrib/ipfilter/netinet/ip_log.c	Sat Dec  8 14:58:17 2018	(r341738)
+++ stable/10/sys/contrib/ipfilter/netinet/ip_log.c	Sat Dec  8 17:28:52 2018	(r341739)
@@ -97,14 +97,8 @@ struct file;
 #include <netinet/in.h>
 #ifdef __sgi
 # include <sys/ddi.h>
-# ifdef IFF_DRVRLOCK /* IRIX6 */
-#  include <sys/hashing.h>
-# endif
 #endif
-#if !defined(__hpux) && !defined(linux) && \
-    !(defined(__sgi) && !defined(IFF_DRVRLOCK)) /*IRIX<6*/
 # include <netinet/in_var.h>
-#endif
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>

From owner-svn-src-stable@freebsd.org  Sat Dec  8 17:50:02 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6DA531323E8D;
 Sat,  8 Dec 2018 17:50:02 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 03E2E888B6;
 Sat,  8 Dec 2018 17:50:02 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DA5B9255F4;
 Sat,  8 Dec 2018 17:50:01 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8Ho1sL060282;
 Sat, 8 Dec 2018 17:50:01 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8Ho1NR060281;
 Sat, 8 Dec 2018 17:50:01 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812081750.wB8Ho1NR060281@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Sat, 8 Dec 2018 17:50:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341740 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-12
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341740
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 03E2E888B6
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.961,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 17:50:02 -0000

Author: cy
Date: Sat Dec  8 17:50:00 2018
New Revision: 341740
URL: https://svnweb.freebsd.org/changeset/base/341740

Log:
  MFC r341377, r341388 (fixup):
  
  Restore handling of PMTU discovery, removed through an unifdef(1)
  following the MFV of r254219 into r255332. In addition the 'FreeBSD'
  macro was never defined in ipfilter 5.1.2 thus it never would have
  been enabled in the first place.
  
  This work is prompted by a general cleanup of the IP Filter code
  prompted by working to resolve a PR. More to follow.

Modified:
  stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/12/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/10/   (props changed)
  stable/11/   (props changed)

Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sat Dec  8 17:28:52 2018	(r341739)
+++ stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sat Dec  8 17:50:00 2018	(r341740)
@@ -85,7 +85,6 @@ static const char rcsid[] = "@(#)$Id$";
 #endif
 extern	int	ip_optcopy __P((struct ip *, struct ip *));
 
-
 # ifdef IPFILTER_M_IPFILTER
 MALLOC_DEFINE(M_IPFILTER, "ipfilter", "IP Filter packet filter data structures");
 # endif
@@ -477,11 +476,7 @@ ipf_send_ip(fin, m)
 		IP_HL_A(ip, sizeof(*oip) >> 2);
 		ip->ip_tos = oip->ip_tos;
 		ip->ip_id = fin->fin_ip->ip_id;
-#if defined(FreeBSD) && (__FreeBSD_version > 460000)
-		ip->ip_off = htons(path_mtu_discovery ? IP_DF : 0);
-#else
-		ip->ip_off = 0;
-#endif
+		ip->ip_off = htons(V_path_mtu_discovery ? IP_DF : 0);
 		ip->ip_ttl = V_ip_defttl;
 		ip->ip_sum = 0;
 		break;

From owner-svn-src-stable@freebsd.org  Sat Dec  8 17:50:02 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9AB351323E8E;
 Sat,  8 Dec 2018 17:50:02 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 41BA3888B8;
 Sat,  8 Dec 2018 17:50:02 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1F078255F5;
 Sat,  8 Dec 2018 17:50:02 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8Ho2VP060288;
 Sat, 8 Dec 2018 17:50:02 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8Ho2dN060287;
 Sat, 8 Dec 2018 17:50:02 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812081750.wB8Ho2dN060287@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Sat, 8 Dec 2018 17:50:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject: svn commit: r341740 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-10
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341740
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 41BA3888B8
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.961,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 17:50:02 -0000

Author: cy
Date: Sat Dec  8 17:50:00 2018
New Revision: 341740
URL: https://svnweb.freebsd.org/changeset/base/341740

Log:
  MFC r341377, r341388 (fixup):
  
  Restore handling of PMTU discovery, removed through an unifdef(1)
  following the MFV of r254219 into r255332. In addition the 'FreeBSD'
  macro was never defined in ipfilter 5.1.2 thus it never would have
  been enabled in the first place.
  
  This work is prompted by a general cleanup of the IP Filter code
  prompted by working to resolve a PR. More to follow.

Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/10/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/11/   (props changed)
  stable/12/   (props changed)

Modified: stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sat Dec  8 17:28:52 2018	(r341739)
+++ stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sat Dec  8 17:50:00 2018	(r341740)
@@ -88,7 +88,6 @@ static const char rcsid[] = "@(#)$Id$";
 #endif
 extern	int	ip_optcopy __P((struct ip *, struct ip *));
 
-
 # ifdef IPFILTER_M_IPFILTER
 MALLOC_DEFINE(M_IPFILTER, "ipfilter", "IP Filter packet filter data structures");
 # endif
@@ -472,11 +471,7 @@ ipf_send_ip(fin, m)
 		IP_HL_A(ip, sizeof(*oip) >> 2);
 		ip->ip_tos = oip->ip_tos;
 		ip->ip_id = fin->fin_ip->ip_id;
-#if defined(FreeBSD) && (__FreeBSD_version > 460000)
-		ip->ip_off = htons(path_mtu_discovery ? IP_DF : 0);
-#else
-		ip->ip_off = 0;
-#endif
+		ip->ip_off = htons(V_path_mtu_discovery ? IP_DF : 0);
 		ip->ip_ttl = V_ip_defttl;
 		ip->ip_sum = 0;
 		break;

From owner-svn-src-stable@freebsd.org  Sat Dec  8 17:50:02 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0917C1323E70;
 Sat,  8 Dec 2018 17:50:02 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id A5028888B4;
 Sat,  8 Dec 2018 17:50:01 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 87A4F255F3;
 Sat,  8 Dec 2018 17:50:01 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8Ho13v060276;
 Sat, 8 Dec 2018 17:50:01 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8Ho1ZD060275;
 Sat, 8 Dec 2018 17:50:01 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201812081750.wB8Ho1ZD060275@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Sat, 8 Dec 2018 17:50:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r341740 - in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Group: stable-11
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet
 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet
X-SVN-Commit-Revision: 341740
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: A5028888B4
X-Spamd-Result: default: False [-2.95 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.996,0];
 NEURAL_HAM_SHORT(-0.96)[-0.961,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-0.99)[-0.990,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 17:50:02 -0000

Author: cy
Date: Sat Dec  8 17:50:00 2018
New Revision: 341740
URL: https://svnweb.freebsd.org/changeset/base/341740

Log:
  MFC r341377, r341388 (fixup):
  
  Restore handling of PMTU discovery, removed through an unifdef(1)
  following the MFV of r254219 into r255332. In addition the 'FreeBSD'
  macro was never defined in ipfilter 5.1.2 thus it never would have
  been enabled in the first place.
  
  This work is prompted by a general cleanup of the IP Filter code
  prompted by working to resolve a PR. More to follow.

Modified:
  stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/11/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
Directory Properties:
  stable/10/   (props changed)
  stable/12/   (props changed)

Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sat Dec  8 17:28:52 2018	(r341739)
+++ stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sat Dec  8 17:50:00 2018	(r341740)
@@ -85,7 +85,6 @@ static const char rcsid[] = "@(#)$Id$";
 #endif
 extern	int	ip_optcopy __P((struct ip *, struct ip *));
 
-
 # ifdef IPFILTER_M_IPFILTER
 MALLOC_DEFINE(M_IPFILTER, "ipfilter", "IP Filter packet filter data structures");
 # endif
@@ -477,11 +476,7 @@ ipf_send_ip(fin, m)
 		IP_HL_A(ip, sizeof(*oip) >> 2);
 		ip->ip_tos = oip->ip_tos;
 		ip->ip_id = fin->fin_ip->ip_id;
-#if defined(FreeBSD) && (__FreeBSD_version > 460000)
-		ip->ip_off = htons(path_mtu_discovery ? IP_DF : 0);
-#else
-		ip->ip_off = 0;
-#endif
+		ip->ip_off = htons(V_path_mtu_discovery ? IP_DF : 0);
 		ip->ip_ttl = V_ip_defttl;
 		ip->ip_sum = 0;
 		break;

From owner-svn-src-stable@freebsd.org  Sat Dec  8 19:45:07 2018
Return-Path: <owner-svn-src-stable@freebsd.org>
Delivered-To: svn-src-stable@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1DD7013279E1;
 Sat,  8 Dec 2018 19:45:07 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id B9F068D5A8;
 Sat,  8 Dec 2018 19:45:06 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7E35F269EC;
 Sat,  8 Dec 2018 19:45:06 +0000 (UTC)
 (envelope-from yuripv@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id wB8Jj67S023784;
 Sat, 8 Dec 2018 19:45:06 GMT (envelope-from yuripv@FreeBSD.org)
Received: (from yuripv@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id wB8Jj5jh023781;
 Sat, 8 Dec 2018 19:45:05 GMT (envelope-from yuripv@FreeBSD.org)
Message-Id: <201812081945.wB8Jj5jh023781@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: yuripv set sender to
 yuripv@FreeBSD.org using -f
From: Yuri Pankov <yuripv@FreeBSD.org>
Date: Sat, 8 Dec 2018 19:45:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r341745 - in stable/12/lib/libc: regex tests/regex
X-SVN-Group: stable-12
X-SVN-Commit-Author: yuripv
X-SVN-Commit-Paths: in stable/12/lib/libc: regex tests/regex
X-SVN-Commit-Revision: 341745
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: B9F068D5A8
X-Spamd-Result: default: False [-2.96 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.997,0];
 NEURAL_HAM_LONG(-0.99)[-0.990,0];
 NEURAL_HAM_SHORT(-0.97)[-0.972,0]
X-Rspamd-Server: mx1.freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-stable>, 
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable/>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Dec 2018 19:45:07 -0000

Author: yuripv
Date: Sat Dec  8 19:45:05 2018
New Revision: 341745
URL: https://svnweb.freebsd.org/changeset/base/341745

Log:
  MFC r340835:
  regexec: fix processing multibyte strings.
  
  Matcher function incorrectly assumed that moffset that we get from
  findmust is in bytes. Fix this by introducing a stepback function,
  taking short path if MB_CUR_MAX is 1, and going back byte-by-byte,
  checking if we have a legal character sequence otherwise.
  
  PR:		153502
  Reviewed by:	pfg, kevans
  Differential revision:	https://reviews.freebsd.org/D18297

Added:
  stable/12/lib/libc/tests/regex/multibyte.sh
     - copied unchanged from r340835, head/lib/libc/tests/regex/multibyte.sh
Modified:
  stable/12/lib/libc/regex/engine.c
  stable/12/lib/libc/tests/regex/Makefile
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/libc/regex/engine.c
==============================================================================
--- stable/12/lib/libc/regex/engine.c	Sat Dec  8 19:42:01 2018	(r341744)
+++ stable/12/lib/libc/regex/engine.c	Sat Dec  8 19:45:05 2018	(r341745)
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
  */
 
 #ifdef SNAMES
+#define	stepback sstepback
 #define	matcher	smatcher
 #define	walk	swalk
 #define	dissect	sdissect
@@ -58,6 +59,7 @@ __FBSDID("$FreeBSD$");
 #define	match	smat
 #endif
 #ifdef LNAMES
+#define	stepback lstepback
 #define	matcher	lmatcher
 #define	walk	lwalk
 #define	dissect	ldissect
@@ -68,6 +70,7 @@ __FBSDID("$FreeBSD$");
 #define	match	lmat
 #endif
 #ifdef MNAMES
+#define	stepback mstepback
 #define	matcher	mmatcher
 #define	walk	mwalk
 #define	dissect	mdissect
@@ -142,6 +145,39 @@ static const char *pchar(int ch);
 #endif
 
 /*
+ * Given a multibyte string pointed to by start, step back nchar characters
+ * from current position pointed to by cur.
+ */
+static const char *
+stepback(const char *start, const char *cur, int nchar)
+{
+	const char *ret;
+	int wc, mbc;
+	mbstate_t mbs;
+	size_t clen;
+
+	if (MB_CUR_MAX == 1)
+		return ((cur - nchar) > start ? cur - nchar : NULL);
+
+	ret = cur;
+	for (wc = nchar; wc > 0; wc--) {
+		for (mbc = 1; mbc <= MB_CUR_MAX; mbc++) {
+			if ((ret - mbc) < start)
+				return (NULL);
+			memset(&mbs, 0, sizeof(mbs));
+			clen = mbrtowc(NULL, ret - mbc, mbc, &mbs);
+			if (clen != (size_t)-1 && clen != (size_t)-2)
+				break;
+		}
+		if (mbc > MB_CUR_MAX)
+			return (NULL);
+		ret -= mbc;
+	}
+
+	return (ret);
+}
+
+/*
  - matcher - the actual matching engine
  == static int matcher(struct re_guts *g, const char *string, \
  ==	size_t nmatch, regmatch_t pmatch[], int eflags);
@@ -244,9 +280,14 @@ matcher(struct re_guts *g,
 	ZAPSTATE(&m->mbs);
 
 	/* Adjust start according to moffset, to speed things up */
-	if (dp != NULL && g->moffset > -1)
-		start = ((dp - g->moffset) < start) ? start : dp - g->moffset;
+	if (dp != NULL && g->moffset > -1) {
+		const char *nstart;
 
+		nstart = stepback(start, dp, g->moffset);
+		if (nstart != NULL)
+			start = nstart;
+	}
+
 	SP("mloop", m->st, *start);
 
 	/* this loop does only one repetition except for backrefs */
@@ -1083,6 +1124,7 @@ pchar(int ch)
 #endif
 #endif
 
+#undef	stepback
 #undef	matcher
 #undef	walk
 #undef	dissect

Modified: stable/12/lib/libc/tests/regex/Makefile
==============================================================================
--- stable/12/lib/libc/tests/regex/Makefile	Sat Dec  8 19:42:01 2018	(r341744)
+++ stable/12/lib/libc/tests/regex/Makefile	Sat Dec  8 19:45:05 2018	(r341745)
@@ -2,6 +2,9 @@
 
 PACKAGE=	tests
 
+# local test cases
+ATF_TESTS_SH+=	multibyte
+
 .include "Makefile.inc"
 .include "${.CURDIR:H}/Makefile.netbsd-tests"
 .include <bsd.test.mk>

Copied: stable/12/lib/libc/tests/regex/multibyte.sh (from r340835, head/lib/libc/tests/regex/multibyte.sh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/12/lib/libc/tests/regex/multibyte.sh	Sat Dec  8 19:45:05 2018	(r341745, copy of r340835, head/lib/libc/tests/regex/multibyte.sh)
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+atf_test_case multibyte
+multibyte_head()
+{
+	atf_set "descr" "Check matching multibyte characters (PR153502)"
+}
+multibyte_body()
+{
+	export LC_CTYPE="C.UTF-8"
+
+	printf 'é' | atf_check -o "inline:é" \
+	    sed -ne '/^.$/p'
+	printf 'éé' | atf_check -o "inline:éé" \
+	    sed -ne '/^..$/p'
+	printf 'aéa' | atf_check -o "inline:aéa" \
+	    sed -ne '/a.a/p'
+	printf 'aéa'| atf_check -o "inline:aéa" \
+	    sed -ne '/a.*a/p'
+	printf 'aaéaa' | atf_check -o "inline:aaéaa" \
+	    sed -ne '/aa.aa/p'
+	printf 'aéaéa' | atf_check -o "inline:aéaéa" \
+	    sed -ne '/a.a.a/p'
+	printf 'éa' | atf_check -o "inline:éa" \
+	    sed -ne '/.a/p'
+	printf 'aéaa' | atf_check -o "inline:aéaa" \
+	    sed -ne '/a.aa/p'
+	printf 'éaé' | atf_check -o "inline:éaé" \
+	    sed -ne '/.a./p'
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case multibyte
+}