1.14 (2024-05-14)
    - Small performance gain: set TCP_NODELAY on the socket

1.13 (2024-05-01)
    - Fixed a bug for Mac users by removing sx_maxsockbuf()
    - Fixed a comma printing bug in IOS XR as-path-set output

1.12 (2024-02-12)
    - Fix a bug in the mikrotik printer

1.11 (2023-06-20)
    - disallow AS 23456 as origin (can be bypassed via -p)

1.10 (2023-06-03)
    - Add support for Nokia SR Linux IP prefix lists / ACL filters
    - Accept -3 as a no-op for bgpq3 compatibility

1.9 (2023-03-05)
    - Bugfix for -S problem (bgpq4#83) by James Bensley

1.8 (2023-01-20)
    - Downgrade 'key not found' to DEBUG level to reduce noise
    - Re-introduce -p for private ASN support option

1.7 (2022-11-03)
    - Support SOURCE:: syntax (contributed by James Bensley)

1.6 (2022-09-07)
    - Fix a bug in address prefix range parsing

1.5 (2022-07-25)
    - Add support for the new Junos as-path-origins feature

1.4 (2021-08-20)
    - Fix BIRD aspath output

1.3 (2021-08-20)
    - Change versioning from X.Y.Z to Y.Z
    - The repository file hierachy has been reorganized (compat/ include/)
    - Man page has been extended
    - Large portions of code have been reformatted to adhere to OpenBSD's source
      file style guide to improve readability.
    - Refactor: replace two-dimensional array for ASN storage with Red-Black tree
    - Reduced memory usage

0.0.9 (2021-08-18)
    - Fix various memory errors

0.0.8 (2021-08-17)
    - Reorganize automake files and includes
    - Normalize code to adhere to KNF
    - Fix all compiler warnings

0.0.6 (2020-03-12):
    - Bugfixes - Thanks Chris Caputo!

0.0.5 (2020-01-01):
    - Bugfixes

0.0.4 (2019-12-31):
    - Remove the '-3' command line option, assume all devices are
      32-bit ASN safe

0.0.3 (2019-12-30):
    - Remove the '-2' command line option
    - Significant code reformating
    - Improve performance by using IRRd 4's A query when available

0.0.2 (2019-12-14):
    - Add Mikrotik support
    - Remove ASDDOT support

0.0.1 (2019-12-14):
    - Fork bgpq3 into bgpq4

0.1.36-pre (2019-11-08):
    - minor documentation cleanup: bgpq3 supports much more vendors
    than just Cisco and Juniper. Copyright years updated.
    - Nokia SR OS "classic" actually supports aggregation and
    and more-specific filtering in prefix-lists. Thanks to mfisher128
    for reporting.
    - change log level for prefixes with wrong address family from error
    to debugging: it's perfectly correct to have prefixes of different
    families in route-sets. Thanks to Jay Ford for suggestion.

0.1.35 (2018-11-30):
    - initial support for Juniper route-filter-lists (JunOS 16.2+).
    - too large (>124bytes) sources list was not handled correctly.
    Reported by Pier Carlo Chiodi.
	- initial support for Huawei format (prefix-lists and as-path filters)
	New flag -U. Requested by Alexander Wagberg.
	- fix ipv6 prefix-ranges. Reported by Jay Ford.
    - OpenBGPd change: -E now generates prefix-set instead of prefix-list.
    Based on submission by Denis Fondras
    - new option -w, allowing to 'validate' AS numbers included in as-path
    access-lists: only those AS having registered route-objects are allowed.
    By default checks route[4] presence, to check route6 objects shall be
    used together with -6.
    - cleanup OpenBGPd prefix-sets. Submitted by Claudio Jeker.
	- new flag -t: generate as-sets for OpenBGPD (OpenBSD 6.4+), BIRD and
    JSON formats. Based on submission by Claudio Jeker.
    - new flag -n: support for Nokia SR OS MD-CLI. Based on examples
    provided by Greg Hankins.
    - irrd queries for asn32 changed from asdot to asplain notation.
    Thanks to Troy2914 for heads up.

0.1.35-rc2 (2017-06-14)
    - OpenBSD need <sys/select.h>. Reported by Denis Fondras.
    - OpenBGPD output shall not emit 'deny any from any' in case of empty
    prefix-list. New flag -a <asn> introduced to allow peer-as indication.
    When this flag is not specified, empty prefix-list is generated (will
    not be accepted by OpenBGPD).
    Reported by Denis Fondras

0.1.35-rc (2017-30-05)
	- Nokia SR OS (formerly Alcatel-Lucent) support. Based on submission by
    Michail Litvak.
    - sync man-page with readme.md
    - socket() EAFNOSUPPORT error handling

0.1.33 (2016-10-14)
    - OpenBGPD support (-B). Submitted by Peter Hessler.

0.1.32 (2016-08-28)
    - rollback 0.1.32-rc2 (2015-07-01) change: by default all IRRD sources
      are allowed by default. Documentation updated to mark radb,ripe,apnic
      as 'recommended', not as 'preset default'.

untagged yet (2016-05-10)
    - fix: was not able to build on Solaris. Thanks to Mansoor Ali Khan.
    - feature: IOS XR mode now supports as-paths (ios-regexs). Thanks
      to Tassos Chatzithomaoglou for examples and proofreading.
    (additions from 2015-09-23)
    - bugfix: stoplist shall be able to catch AS numbers as promised.
    - bugfix: bgpq3 shall not hang at unknown escapes in -M..
    - gotcha: "ANY" object in recursive mode ignored: shut complaints on
     "ERROR:unexpected object 'ANY' in expanded_macro_limit (in response
      to !iAS-SET-SCOPESKY)" (object contains mbrs-by-ref: ANY).
    (additions from 2015-08-30)
    - bugfix: OpenBSD sys/queue.h does not have STAILQ_ interface.
      Thanks to Pedro Caetano for reporting and testing.
    - feature: alternate whois port can be configured with -h host[:port]
    - feature: new format char %N (object name) in formatted output.
      Thanks to Denis Fondras.
    - feature: new format chars %m (prefix mask) and %i (inverse mask) in
      formatted output.

0.1.32-rc5 (2015-07-12)
    - feature: -L <depth>: limit recursion depth when expanding as-sets
      (default: not limited). Based on idea by Eugene Demidov.
    - feature: stoplist. Now you can add EXCEPT Object... at the end of
      bgpq3 command line and corresponding as-sets and asns will not be
      expanded (does not works for prefixes and prefix-sets yet).
    - internals: major pipelining rewrite and some code cleanup.

0.1.32-rc4 (2015-07-06)
    - change: BIRD can't handle empty lists (NAME = []), so they are not
      generated at all.

0.1.32-rc3 (2015-07-01)
    - feature: option -s can be used to generate sequence numbers in IOS
      prefix-lists
	- feature: option -F <fmt> can be used to generate output in user-defined
      format. Only prefix-lists supported for now.

0.1.32-rc2 (2015-07-01)
    - bugfix: when no sources provided in command line and via IRRD_SOURCES env,
      no source limitation were sent to IRRd. Thanks to Mikhail A. Grishin.

0.1.32-rc (2015-06-28)
    - bugfix: F source(s) unavailable message from IRRD was ignored.
      Please note: this error is caught only when all the specified sources
      are invalid. For example, 'bgpq3 -s nonexistant' will fail, however,
      'bgpq3 -s nonexistant,ripe' will not fail and will use only ripe source.
      Thanks to Mikhail A. Grishin for reporting.
    - RIPE-style queries (-T route6 -i origin asNNN) replaced with IRRd-style
      !6asNNN queries.

0.1.31   (2015-06-23)
    - pipelining mode now counts buffered requests and issues dequeue
      when new request can overflow allocated buffer. So, bgpq3 shall no
      more require TCP tuning (it is still recomended, though).
    - tcp tuning parameters decreased in README (sx_maxsockbuf will not
      allow buffer over 2Mb anyway).

0.1.30   (2015-06-16)
    - bugfix: private asns with number > 2^31 were printed as negative integers.
      Thanks to Henrik Thostrup Jensen.
    - do not use ASNs reserved for documentation purposes and private use:
       64496-64511 For documentation and sample code; reserved by [RFC5398]
       64512-65534 For private use; reserved by [RFC6996]
       65535       Reserved by [RFC7300]
       65536-65551 For documentation and sample code; reserved by [RFC5398]
       4200000000-4294967294  For private use; reserved by [RFC6996]
       4294967295  Reserved by [RFC7300]
      Please, use new -p flag to include these asn's.
      Suggested by Henrik Thostrup Jensen and Job Snijders.
    - allow as-path generation with BIRD output. Suggested by Jiri Mikulas.
    - merge README.md changes by Job Snijders.
    - bugfix: incorrect asdot representation (as101. without symbols after dot)
      is not allowed anymore.

0.1.29   (2015-05-04)
    - do not include routes registered for AS23456 (transition-as) by default.
    Use new option -2 to restore old behaviour.

0.1.28   (2015-03-10)
    - minor changes: .spec update, non-silent failure on wrong af,
    more room for masklen...

0.1.27   (2015-03-10)
    - bugfix: some ipv6 prefixes were not parsed correctly since 0.1.26.
    Thanks to Job Snijders.

0.1.26   (2015-02-19)
    - RPSL <address-prefix-range> support, can be found in rs-esnetcustomers.
    Thanks to Kris O'Connell for reporting.

0.1.25   (2014-10-29)
    - JSON support extended to handle "as-paths" too. Well, actually, as
    there are no defined format for as-path in json, bgpq3 just creates
    simple object like following:

		snar@fri:~/compile/bgpq3>./bgpq3 -j3f 20597 as-eltel
		{"NN": [
		  112,5495,6857,8377,20597,34102,35357,43951,
		  52007,56764,197759,197888,198610,201499
		]}

	Based on suggestion by Henrik Thostrup Jensen.
    - -W len option documented.

0.1.24   (2014-07-31)
    - empty prefix-lists (Cisco), extended access-lists (Cisco), as-path
    filters (Cisco and Juniper) and route-filters (Juniper) handling:
    explicit 'deny any' entry now generated instead of implicit 'permit-any'.
    Based on suggestion by Tore Anderson.

0.1.23   (2014-07-30)
    - bugfix: use of -M option caused major slowdown as it turned off
    request pipelining... Thanks to Tore Anderson.

0.1.22   (2014-07-27)
    - bugfix: allow network object with stray spaces after prefix length.
    Found by Tom Eichhorn in 2620:74:14::/48 (VeriSign Route6, RADB).
    - bugfix: networks with leading zeros (02.51.252.0/22, as4787) are not
    parsed correctly in inet_ntop.. Found by Tom Eichhorn.

0.1.21   (2014-06-05)
    - new flag -b: generate prefix-filters for BIRD (http://bird.network.cz),
    contributed by Job Snijders.

0.1.20-todo2 (2014-05-01)
    - new flag -r <len>, allowing bgpq to generate limited set of more-specific
    routes - only routes with prefix-length >= <len> are accepted.
    Thanks to Pavel Gulchouck for suggesion.

0.1.20-todo (2013-10-07)
    - socket close code fixed. Thanks to Martin J. Levy.
    - new flag -4, "force ipv4". Actually does a little more than allowing
    for pedantic checks. Thanks to Martin J. Levy.

0.1.19 (2013-05-09)
    - CLANG compilation issues fixed.
    - bgpq3.spec added. Thanks to Arnoud Vermeer.

0.1.18 (2013-01-08)
    - JSON output format. Thanks to Job Snijders (Atrato Networks).

0.1.17 (2012-10-25)
    - route-sets handling in command-line added. Thanks to Alexandr Turovsky
    for pointing out.
    - bug in aggregation documentation fixed. Thanks to Nikolay Shopik.

0.1.16 (2012-01-19)
    - new option -m <len>: maximum length of accepted prefixes.
    Suggested by Eugene Demidov, used to discard 'too long prefixes'
    (like /30-/32) even if they are registered in IRR. By default
    limit is not set and all prefixes accepted.
    - documentation redesigned into text/markdown and text/html (manpage
    supported still).

0.1.15 (2011-07-15)
    - prefix-set's for Cisco IOS XR now supported too.

0.1.14 (2011-06-18)
    - Fixed bug in sx_maxsockbuf in rare cases of OS maxsockbuf >2M.
    Thanks to Andreas Lundin.

0.1.13 (2011-06-14)
    - never publically released.

0.1.12 (2010-10-08)
    - Fixed bug preventing AS262144 (that's AS4.0 in asdot) to expand.
    Thanks to Sergey Matveychuk

0.1.11 (2010-04-19)
    - Fixed another bug in aggregation (-A) mode, thanks to Dmitry Tejblum.

0.1.10 (2009-06-13)
    - Fixed bug in aggregation (-A) mode, thanks to Sergey Gonchar.

0.1.9 (2009-03-27)
    - RIPE changed ASN32 notation to asplain. And RADB does not support
    asplain indexing (yet?).... Fixed. Thanks to Pavel Gluchouk.

0.1.8 (2008-12-25)
    - new flag -D for Cisco asdot notation. Cisco behaviour is a bit
    strange for me, but, well, that's their decision:
When the asdot format is enabled as the default, any regular expressions
to match 4-byte autonomous system numbers must be written using the asdot
format, or else the regular expression match will fail.
    (c) http://www.cisco.com/en/US/docs/ios/12_0s/release/ntes/120SNEWF.html
        #wp3521658 (note the URL wrap).

0.1.7 (2008-12-19):
    - man page. Finally :)
    - option -h now means not help, but now it can be used to point to
    alternate IRRD host, like in old bgpq.

0.1.6 (2008-08-08):
    - maxsockbuf call added, that can help with pipelining of really large
    as-sets.
    - new key -M <extra match condition> for juniper route-filters, f.e.:
    bgpq3 -JEM "protocol bgp;\n    community no-export" -l PolicyName/TermName
    will generate term with additional match conditions, like:

    policy-options {
     policy-statement PolicyName {
      term TermName {
    replace:
       from {
        protocol bgp;
        community no-export;
        route-filter 10.0.0.0/24 exact;
       }
      }
     }
    }

0.1.5 (2008-06-02):
    - route-set's expansion added. Fully functional for IPv4 prefixes, but
    not for IPv6 - only those prefixes explicitely marked as 'member-of: RS..'
    will be expanded. This is due to limitation in IRRd.
    - extended access-lists (Cisco) and route-filters (Juniper) generation
    is supported now with new -E key. For Cisco ipv6 access-lists is not
    yet supported.

0.1.4 (2008-05-30):
    - bugfix for juniper as-path group generation. Thanks to Alexander Shikoff.

0.1.3 (2008-05-20):
    - aggregation (-A) now supported for Cisco prefix-lists.
    - pipelining now can be enabled for RIPE-style queries too (ipv6).
    - more-specific routes (-R len) feature ported from bgpq
    - pipelining now set by default. -T flag now disables pipelining.
    - strlcpy.c imported into sources. Not found on Linux :)

0.1.2 (2008-05-19):
    - final support for asn32, now with correct syntax for Juniper.
    - experimental 'pipelining' mode (flag -T), much faster when
    working with big as-set's.
    - RIPE-style query (-i origin) now requests only route6 objects.

0.1.1 (2008-05-16):
    - initial support for asn32 added (flag -3). By default it's off,
    and when bgpq sees 32-bit asn in resolver queue, it either replaces
    it with AS23456 (in as-path generation mode) or queries radb for
    prefixes with that origin.
    Note: for now only JunOS 9.1 can handle asn32, not Cisco IOS..

