From nobody Thu Oct 06 13:57:04 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MjtKY1XNHz4dfy3; Thu, 6 Oct 2022 13:57:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MjtKY0wW1z3GMQ; Thu, 6 Oct 2022 13:57:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665064625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KJOVoO+4y97ArujrBHYl8fSPKfOCUoDEgJ/DYhp+pnw=; b=k5V9e6mZdqdumc4ip59QM2Qe9Hn48GfP/7cwr8Ezqlqc+FEAZAb/fKE/6H4YHda/qoQbRN WHOnC+z1qYbI9hWYCbG/mGcs4W37SpmFiCI1asWu51xZONugb5/ko97DuG7BVhpd+UuNaZ C4sBdbCsv8/svnjI+QquJTrmtVUjxH/+vmhXb7kQ79jK37lLJS4KQY7zZX8F2nDPr0eE6Y fXx9JH1uFxiHxPFQmJwxqqnkuZV3iUS70fSF48YyCe/SoKUgecjunUBrqUHAQukSE41zkp gvcLjivgfFWPSSZAQp+zaISwRbddVatnl+teh7fsd2ZgVE5QYbBi6OObVSqJtQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4MjtKX6gnjzGr1; Thu, 6 Oct 2022 13:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 296Dv4Ku042649; Thu, 6 Oct 2022 13:57:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 296Dv4DV042648; Thu, 6 Oct 2022 13:57:04 GMT (envelope-from git) Date: Thu, 6 Oct 2022 13:57:04 GMT Message-Id: <202210061357.296Dv4DV042648@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 9007a642472c - stable/13 - ipfilter/ippool: Dump a copy of ippool in ippool.conf format List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 9007a642472c753fd8c45d482a1e219f9867c06a Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665064625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KJOVoO+4y97ArujrBHYl8fSPKfOCUoDEgJ/DYhp+pnw=; b=oiXtV0pPeq7DFEOvWNrklnpT92Mj71O1vULwM7mgI+0WcHCG9o4zgxCRiAoC/5tsbJHVh8 E/Cd+uEj2imCmbwI4QqerEG4xMm8VlcR4kXBQNFq9IXnY0H0w9sU11KWbcWAQlojKcXeWu UtEbkwYXhxJjfh/osMoW+pvBMaby3sFUNy1JZHxG2t4pFoWi+CuFw9GEvyP0As/ETAOpJz ZRlmVq2TxSDoosLNDIdVt3ForC4ZSlqK+IEPFvIMw+WRU5Dt/2c3jVLuYSPIcUZy9UhjBT GCPoz7ySx3J+llZ4cVrINxEs6Pb5I2tpYan5uQszkZgRyMHwJ9L24cHZ4hAquw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1665064625; a=rsa-sha256; cv=none; b=LYNmKyEJecyLbl0wfdrgqrLw/GViV4i/WafyV7gLg+aXX9U9u7vBatFNr6u8/xY2UTVkZK IAFGby9zHvrqJLe4Ups44q+GJnplUALBYvj7WSqshjc9WASdf1aV365bHyICml3tDqDger NvLQE01wDI3oRB0X7dDtmze4pWFtiAYMY3u28yaFnX8nQzN1Ql0mnqSDgSufA6Z+wLH/gU hHTbvSgFiHOnAhmgqCxeICxHc5nIJVFl79r7+f/1xPDOiGwsYne8+UwcqJJ4Wm+0LXa8AA hMlZeTRmk0URW+OvFwqr4AQ8RzCd9uO+tIdTQn7xRoE0a/6ULKelUflj/Rxgqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=9007a642472c753fd8c45d482a1e219f9867c06a commit 9007a642472c753fd8c45d482a1e219f9867c06a Author: Cy Schubert AuthorDate: 2022-09-21 15:33:11 +0000 Commit: Cy Schubert CommitDate: 2022-10-06 13:55:39 +0000 ipfilter/ippool: Dump a copy of ippool in ippool.conf format Add an ippool(8) option to dump a copy of the inm-memory ippool tables in an ippool(5) format so that it can be reloaded using ippool -f. (cherry picked from commit 7531c434a593b2f369d69c85551e7ad1ebb7499a) --- sbin/ipf/ippool/ippool.8 | 6 +++++- sbin/ipf/ippool/ippool.c | 5 ++++- sbin/ipf/libipf/printpool_live.c | 12 ++++++++++-- sbin/ipf/libipf/printpooldata.c | 10 ++++++++-- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/sbin/ipf/ippool/ippool.8 b/sbin/ipf/ippool/ippool.8 index bcc8f3cbd71d..358ece5a26ff 100644 --- a/sbin/ipf/ippool/ippool.8 +++ b/sbin/ipf/ippool/ippool.8 @@ -18,7 +18,7 @@ ippool \- user interface to the IPFilter pools -F [-dv] [-o ] [-t ] .br .B ippool --l [-dv] [-m ] [-t ] [-o ] [-M ] [-N ] +-l [-dDv] [-m ] [-t ] [-o ] [-M ] [-N ] .br .B ippool -r [-dnv] [-m ] [-o ] [-t ] -i [/] @@ -121,6 +121,10 @@ as a number of seconds. When parsing a configuration file, rather than load new pool data into the kernel, unload it. .TP +.B -D +When used in conjuction with -l, dump the ippool configuration to stdout in +a format that can be subsequently used as input into ippool -f. +.TP .SH FILES .br /dev/iplookup diff --git a/sbin/ipf/ippool/ippool.c b/sbin/ipf/ippool/ippool.c index 3e8918e1fcfa..384146d729c9 100644 --- a/sbin/ipf/ippool/ippool.c +++ b/sbin/ipf/ippool/ippool.c @@ -670,12 +670,15 @@ poollist(int argc, char *argv[]) poolname = NULL; role = IPL_LOGALL; - while ((c = getopt(argc, argv, "dm:M:N:o:t:v")) != -1) + while ((c = getopt(argc, argv, "dDm:M:N:o:t:v")) != -1) switch (c) { case 'd' : opts |= OPT_DEBUG; break; + case 'D' : + opts |= OPT_SAVEOUT; + break; case 'm' : poolname = optarg; break; diff --git a/sbin/ipf/libipf/printpool_live.c b/sbin/ipf/libipf/printpool_live.c index 324deb629d0b..c1d770b4ef77 100644 --- a/sbin/ipf/libipf/printpool_live.c +++ b/sbin/ipf/libipf/printpool_live.c @@ -26,7 +26,9 @@ printpool_live(ip_pool_t *pool, int fd, char *name, int opts, if ((pool->ipo_flags & IPOOL_DELETE) != 0) PRINTF("# "); - if ((opts & OPT_DEBUG) == 0) + if (opts & OPT_SAVEOUT) + PRINTF("{\n"); + else if ((opts & OPT_DEBUG) == 0) PRINTF("\t{"); obj.ipfo_rev = IPFILTER_VERSION; @@ -48,9 +50,13 @@ printpool_live(ip_pool_t *pool, int fd, char *name, int opts, while (!last && (ioctl(fd, SIOCLOOKUPITER, &obj) == 0)) { if (entry.ipn_next == NULL) last = 1; + if (opts & OPT_SAVEOUT) + PRINTF("\t"); (void) printpoolnode(&entry, opts, fields); if ((opts & OPT_DEBUG) == 0) putchar(';'); + if (opts & OPT_SAVEOUT) + PRINTF("\n"); printed++; } } @@ -58,7 +64,9 @@ printpool_live(ip_pool_t *pool, int fd, char *name, int opts, if (printed == 0) putchar(';'); - if ((opts & OPT_DEBUG) == 0) + if (opts & OPT_SAVEOUT) + PRINTF("};\n"); + else if ((opts & OPT_DEBUG) == 0) PRINTF(" };\n"); (void) ioctl(fd,SIOCIPFDELTOK, &iter.ili_key); diff --git a/sbin/ipf/libipf/printpooldata.c b/sbin/ipf/libipf/printpooldata.c index ce754f9a89bb..bd5af316eb19 100644 --- a/sbin/ipf/libipf/printpooldata.c +++ b/sbin/ipf/libipf/printpooldata.c @@ -12,7 +12,9 @@ void printpooldata(ip_pool_t *pool, int opts) { - if ((opts & OPT_DEBUG) == 0) { + if (opts & OPT_SAVEOUT) { + PRINTF("pool "); + } else if ((opts & OPT_DEBUG) == 0) { if ((pool->ipo_flags & IPOOL_ANON) != 0) PRINTF("# 'anonymous' tree %s\n", pool->ipo_name); if ((pool->ipo_flags & IPOOL_DELETE) != 0) @@ -32,7 +34,11 @@ printpooldata(ip_pool_t *pool, int opts) printunit(pool->ipo_unit); - if ((opts & OPT_DEBUG) == 0) { + if ((opts & OPT_SAVEOUT)) { + PRINTF("/tree (%s \"\%s\";)\n", + (!*pool->ipo_name || ISDIGIT(*pool->ipo_name)) ? \ + "number" : "name", pool->ipo_name); + } else if ((opts & OPT_DEBUG) == 0) { PRINTF(" type=tree %s=%s\n", (!*pool->ipo_name || ISDIGIT(*pool->ipo_name)) ? \ "number" : "name", pool->ipo_name);