Knowledge Base ISC Main Website Ask a Question/Contact ISC
Kea 1.1.0-beta Release Notes
Author: Wlodzimierz Wencel Reference Number: AA-01417 Views: 9589 Created: 2016-08-31 10:47 Last Updated: 2016-08-31 18:50 0 Rating/ Voters

= Kea 1.1.0-beta, August 31 2016, Release Notes =

Welcome to the 1.1.0-beta release of Kea. Kea is an alternative DHCP

implementation being developed by Internet Systems Consortium, Inc. that

features fully functional DHCPv4 and DHCPv6 servers, a dynamic DNS update

daemon, and a DHCP performance measurement tool. Both DHCP servers fully

support server discovery, address assignment, renewal, rebinding, release,

decline, information request, DNS updates, client classification and host

reservations. The DHCPv6 server supports prefix delegation. Lease

information can be stored in MySQL, PostgreSQL or Cassandra databases;

it can also be stored in a CSV file. Host reservations can be stored

in configuration file, MySQL or PostgreSQL.

Version 1.1.0-beta adds the following features to Kea:

* Additional Database Backend - Kea 1.1.0 has added preliminary support

  for Cassandra as a database backend.  In this release of Kea it can

  only be used to store lease information, it is not able store host

  reservations. Cassandra support is currently considered experimental.

  Use with caution.

* Host Reservations - Kea 1.0 contained limited support for storing host

  reservations in the database backend.  Kea 1.1.0-beta has expanded that

  capability, allowing host reservations to be stored in a MySQL or PostgreSQL

  database. In particular, Kea 1.1.0-beta:

  - Adds host reservation (DHCPv4 and DHCPv6) using the PostgreSQL backend.

  - Adds host reservation for DHCPv6 to the existing MySQL support.

  - Significantly extends the existing host reservation capabilities to

     include reservations of specific DHCP options, reservations of siaddr,

     sname, and file fields within DHCPv4 messages, and reservations of

     multiple IPv6 addresses/prefixes.

  - Allows the MySQL or PostgreSQL host reservation database to be configured

    read-only, in which case Kea will be able to retrieve reservations from it,

    but not insert or update existing reservations. This feature is useful

    when a database (or database view) exists for the particular deployment

    and the administrator doesn't want to grant read-write access for

    security reasons.

* Client Classification - In Kea 1.1 the client classification system has

  been expanded.  A class definition contains a name and a test expression

  of arbitrary complexity; if the test expression evaluates to "true" the

  client is a member of that class. A client may be a member of multiple

  classes and can acquire options from different classes. If the configuration

  contains multiple definitions for data for an option in two or more of

  the global, class, subnet or host entries, the server will choose the

  definition from the most specific entry.

  There are a number of objects and operators available for use in the test


  - Operators include: equal, not, and, or, substring, concat

  - Objects include:

    - literals: string, hexadecimal, IP address and integer

    - options: existence and content

    - relay options for DHCPv4 and DHCPv6: existence and content

    - subfields within vendor and vendor class options: existence and content

    - selected fields from DHCPv4 and DHCPv6 packets

  - Classes may be used to select subnets

  - Classes and class specific subnets may contain option data to serve to

    clients within that class

* Hook Library Parameters - It is now possible to specify parameters for hook

  libraries in the Kea configuration file. In earlier versions of Kea, hook

  library authors had to use a external mechanism (such as file of a known

  name) to pass information across.

License Change:

 Since version 1.0.0  Kea has been released under the Mozilla Public License,

 version 2.0.

== Download ==

The Kea 1.1.0-beta source may be downloaded from:

A PGP signature of the distribution is at

The signature was generated with the ISC code signing key which is available at

ISC provides detailed documentation, including installation instructions and

usage tutorials in the Kea Administrator Reference Manual. Documentation is

included with the installation or via in HTML, plain

text, or PDF formats.  ISC maintains a public open source code tree at

and wiki pages with roadmap and issue tracking at

Limitations and known issues with this release can be found at

We'd like users of this software to please let us know how it worked for you

and what operating system you tested on. Feel free to share your

configuration or use case.  Also we would like to hear whether the

documentation is adequate and accurate (please open tickets for documentation

omissions and errors). We want to hear from you even if everything worked.

== Support ==

Professional support for Kea is available from ISC. Free best-effort support

is provided by our user community via a mailing list. Information on all public

email lists is available at

If you have any comments or questions about working with Kea, please share

them to the Kea Users List

Bugs and feature requests may be submitted via the ticket tracking system at

== Changes ==

The following summarizes changes and important upgrade notes since the

previous release (1.0.0). (See the git history for more details and

additional development.)

1160.   [build]         marcin

        Bumped up version numbers of Kea libraries and KEA_HOOKS_VERSION

        for the Kea 1.1.0 beta release.

        (Trac #4632, git 93941523e039a1cc4bb34182a290f9d7b805df34)

1159.   [func]          marcin

        MySQL database schema updated to version 5.0.

        (Trac #4562, git 0e40b35e280f0845686bcfdb2efb577c7878ede6)

1158.   [func]          tomek

        It is now possible to specify fixed fields (next-server,

        server-hostname and boot-file-name parameters) for client classes.

        (Trac #4626, git 89cf54524d8b55cc982ab2146915c0a90fc6efe2)

1157.   [func]          marcin

        Added support for static reservations for fixed fields in

        DHCPv4 messages: siaddr, sname and file.

        (Trac #4552, git 9b79fe005dd77328ea7c596fc6886f8fb838d1cf)

1156.   [bug]           tmark

        Lease statistics are now recalculated during server startup and

        after each successful reconfiguration for Memfile, MySQL, and PostgreSQL

        back ends.  This addresses issues caused by accumulated values being lost

        across restarts and reconfigurations making rendering values incorrect.

        (Trac #4294 git 0abdcf15f85861ffcb67d50fa4ce3965d25e4a9f)

1155.   [func]          marcin

        Kea can be configured to operate using read-only host database.

        This is only supported for MySQL and PostgreSQL databases.

        (Trac #4489 git 0d8dc7affb67ad8066b44c6f81532b79a641d50b)

1154.   [bug]           stephen

        Changes to logging to avoid premature destruction of some

        objects during program exit.  On some systems this caused

        one of the unit test programs to crash when it terminated.

        (Trac #4494, git 023c2fc3688bcdbccb4b286bea873c8f9c06cd5f)

1153.   [func]          tomek

        Integers can now be used in client classification.

        (Trac #4483, git e90cf0ee4007521b86177be6d5fbb970c02c1075)

1152.   [doc]           marcin

        Use of PostgreSQL as a storage for host reservations is now

        documented in the Kea Administrator Reference Manual.

        (Trac #4282, git f2879919772c10b1ae8c45d0e761ef199cf84061)

1151.   [func]          tmark

        Support for assigning client classes to host reservations has

        been added to both the PostgreSQL and MySQL backends.

        (Trac #4277, #4213 git 6990ab9d542e984c59ce5a11ff926c3c732a75fc)

1150.   [bug]           tomek

        Extended gcc bug workaround to work on all versions of gcc

        from 5.2 up to, but not including 6.0. See !ChangeLog entry

        1103 or Trac ticket #4243 for details.

        (Trac #4553, git 80243d9d246b982d86dd7e0d00597383cae01706)

1149.   [bug]           marcin

        Corrected a bug whereby clients were not assigned reserved

        addresses from an external database, as a result of unexpected

        closure of a connection to that database.

        (Trac #4544, git 7f682112dd5ab9fcd6bfa4e10505c246775f353d)

1148.   [func]          tomek

        The vendor options (124, 125 in DHCPv4 and 16, 17 in DHCPv6) are

        now accessible from client classification.

        (Trac #4270, #4271, git ef676368f9036625d73f7f34e3fe9b5eeeaee7f1)

1148.   [func]          fdupont

        Added the pkt classification token to extract incoming packet

        meta-data (receiving interface name, source and destination

        address, length).

        (Trac #4272, git 9a3bdfa43cf65ef56a8d63580dd5d7414fc41373)

1147.   [func]          stephen

        -Werror is no longer the default for compilation.  Promotion of all

        compilation warnings to errors now requires the --with-werror switch

        to be specified when running configure.

        (Trac #4533, git 874e3a3f5cb10313856284646fcee7cf86e4fcce)

1146.   [func]          sar

        Add the forensic hook library documentation to the admin guide.

        (Trac #4511, git 0bb39840a3cbdaf815819f846120c90d9ca038ff)

1145.   [func]          tmark

        The Postgresql backend now supports host reservations for both

        DHCPv4 and DHCPv6, with options and IPv6 reservations.

        (Trac #4277 git ac1eaa1026987c2d86d57b4aa0dc9a4d093787f0)

1144.   [bug]           mihu

        Response to DHCPINFORM is generally sent to port 68, rather

        than port 67. Thanks to Michal Humpula for providing a patch.

        (github #23, git 4216a4bedf8a884df087c68d48c88ee9ffa444dc)

1143.   [doc]           fdupont

        User's Guide has been updated with DHCPv4-over-DHCPv6 support


        (Trac #4273, git fe8cb64adeabe00d84ee390b579a8328717ae521)

1142.   [doc]           sar
        Uncomment the example columns in some rows in the table
        listing the classification examples.
        (None, git dee442a64f57c8d9dd87636f9e39084ed1b11e03)

1141.   [func]          marcin
        Pkt4, Pkt6 and Pkt4o6 objects passed to hooks libraries
        return copies of DHCP options to avoid unintended modification
        of the options stored in the server configuration.
        (Trac #4497, git e50d2ebe998ec3faad8ade22b6971d6584c81044)

1140.   [func]          marcin
        DHCPv6 server supports assigning multiple reserved addresses
        and/or prefixes to a single client.
        (Trac #4321, git 0bfb2a9093174e4424051c01beeee7637ac95be0)

1139.   [doc]           tomek
        New features of host reservations have been documented: ability
        to reserve standard and vendor options in host reservations. Separate
        sections for each backend added.
        (Trac #4518, git 99a40fead28f4324dfb55f1962a8bf3e85ab70e2)

1138.   [build]         fdupont
        Compilation problem on FreeBSD caused by unused parameter in
        certain version of boost headers is now resolved. Also, INSTALL
        file has been updated and now lists dependencies.
        (Trac #4283, git 7dbd95651c308527f2e42c533fdc0a12aeec5308)

1137.   [doc]           fdupont
        Developer's Guide has been updated with DHCPv4-over-DHCPv6 support
        (Trac #4274, git b3eda594e055f03a9a601bacf0c72c3db0ef8e3c)

1136.   [doc]           tomek
        Included full text of MPL 2.0 and Apache licenses.
        (Trac #4529, git baefb4b3e2078a0a0f794b42ef52d6b7d53c9dab)

1135.   [func]          fdupont
        Integrated the DHCPv4 service part of DHCPv4-over-DHCPv6 support.
        (Trac #4110, git 7d36aebe14db10b0cbac8e6c0e82160b9d5d7ecd)

1134.   [func]          fdupont
        Integrated the DHCPv6 service part of DHCPv4-over-DHCPv6 support.
        (Trac #4109, git 8d1f330d9b0a44039a8b9e0b479f8da1743b9504)

1133.   [func]          razvan
        The initial support for CQL (Cassandra) backend added. It is able
        to store leases information.
        (Github #21, git d3a412d4b090bfd84ec5bc5d7817b1dfcc92602e)

1132.   [func]          tmark
        The Postgresql schema has been updated to support host
        reservations and its version number has been bumped to 3.0.
        This schema is content equivalent to the MySQL schema version 4.2.
        (Trac #4275, git 6f8e646bee9de22c921ed26409f3d1856ebce9e6)

1131.   [func]          fdupont
        Update the DHCPv4-over-DHCPv6 inter-process communication code.
        (Trac #4106, git 1ce1cba00af5d81822d5bbe26ddd28b718f51d54)

1130.   [func]          marcin
        DHCPv6 server assigns DHCP options specified for hosts. Host
        specific options take precedence over class specific options,
        subnet specific options and global options.
        (Trac #3573, git c29551e43010a345cfa2efda46389f4433d84650)

1129.   [bug]           marcin
        libdhcp++: Removed unnecessary copies of the container holding
        option definitions to improve performance of both DHCPv4 and
        DHCPv6 server.
        (Trac #4498, git 14716853a92e08c4cc5be75ae85c5e84d6356a1e)

1128.   [func]          tomek
        Subnet selection in DHCPv4 will now work, even if the addresses
        configured on interface are not in range of the subnet definition
        from the configuration file.
        (Trac #4308, git 7c74ecdbb64c69d341d623422216b0a54e6ff519)

1127.   [func]          marcin
        DHCPv4 server assigns DHCP options specified for hosts. Host
        specific options take precedence over class specific options,
        subnet specific options and global options.
        (Trac #3572, git 49f67aaf36dab38b4fcbf59dcad97e4309903b2f)

1126.   [func]          marcin
        Host reservations can be assigned using DHCPv4 client identifier.
        (Trac #4317, git 5f14fca1e029b04ad21a417936c2b8889acef10d)

1125.   [func]          fdupont
        Inter-process communication for exchanging packets between
        DHCPv4 and DHCPv6 components of DHCPv4-over-DHCPv6 has been
        (Trac #4106, git 3223bb8280bfd99c225e725de660ae764abe3c87)

1124.   [bug]           sar
        Update the classification document to match the output from
        the debug statements.
        (Trac NA, git 8b3ea8e26c3e6cd3c46073b635212fd29f031774)

1123.   [func]          marcin
        Extended MySQL host data source to retrieve DHCPv4 and DHCPv6
        options associated with hosts from a MySQL database.
        (Trac #4281, git b8a306a27d1cae03f6bc5223c30806f5cd1b64f4)

1122.   [func]          sar
        Add debug logging to the classification tokens.  This uses
        the loggers "kea-dhcp4.eval" and "kea-dhcp6.eval" to capture
        details of the classification expression evaluations.
        (Trac #4480, git cf14d0d21c69879f21733457a97a6ac0bdb1dae2)

1121.   [func]          stephen
        Make the database connection timeout a configurable parameter with
        a default value of five seconds.
        (Trac #3164, git 3332ad17523c6fcc1e735e4297169ebb2de95118)

1120.   [bug]           marcin
        Performance improvement in libdhcp++: improved efficiency of the
        DHCPv4 Message Type option creation.
        (Trac #4495, git 41c43a2a9e34931fc3ebf58c459f10ad08575d19)

1119.   [bug]           marcin
        Performance improvement in hosts reservation: removed
        inefficient conversion of the host identifier to text
        when logging.
        (Trac #4499, git 48c20790480d5ed7bfde0ef7b052dd4a9745607d)

1118.   [func]          tmark
        The "query4" argument, containing the client packet received, has been
        added to the DHCPv4 hook points: lease4_select and lease4_renew.  The
        "query6" argument, containing the client packet received, has been
        added to the DHCPv6 hook points: lease6_select and pkt6_send.
        (Trac #4481, git c0af94c47bda85eb1caa3a78a46280b63990672a)

1117.   [bug]           stephen
        Adjusted variable type in a MySQL-related file to overcome a
        type mismatch problem reported by one particular compiler.
        (Trac #4485, git 4c6fb189b5d12ffdf4ab171c9154366e70e6082c)

1116.   [func]          tomek
        DHCPv4 subnet selection can now be selected based on IPv6
        information. This is part of ongoing effort to support RFC7341:
        (Trac #4112, git 3352685981ec8ca9a90f7405ff56cd31af6fb0d9)

1115.   [bug]           tmark
        An explicit call to unload the hook libraries prior to server
        exit was added to both kea-dhcp6 and kea-dhcp4.  This corrects
        an issue where logging components were being destroyed prior
        to hook libraries being unloaded.
        (Trac #4492, git 2a4792b3551cce2fb9147f33f032ae7e71791d21)

1114.   [bug]           marcin
        perfdhcp: Improved algorithm for dropping timed out transactions.
        This prevents growing memory consumption due to storing timed
        out transactions when the DHCP server drops many messages.
        (Trac #4493, git 9757a93110afb82c5379643f2f48e223d497efae)

1113.   [func]          tomek
        It is now possible to specify parameters for hook libraries.
        (Trac #4297, git f45d0b5d297f6ad522eb8b7e6f6a0de1064b8569)

1112.   [func]          marcin
        "host-reservation-identifiers" configuration parameter has been
        implemented. It allows for specifying an ordered list of
        host identifiers that DHCPv4 and DHCPv6 servers use to
        retrieve static host reservations for a client.
        (Trac #4303, git 942808400e7116d95acfd53b0dc1ecad1c45c598)

1111.   [func]          tmark
        Schema scripts have been relocated from src/bin/admin/scripts to
        src/share/database/scripts and are now shared by both kea-admin
        and unit testing.
        (Trac #4239, git 131fcf52f2a65cedb53975f99114296366fb0199)

1110.   [func]          fdupont
        Added support for extracting constant length fields from a DHCPv4
        (Trac #4268a, git 5d1397efc05802b72e86785528870b7154307ff0)

1109.   [func]          sar
        Added support for accessing DHCPv6 packet fields message type
        and transaction id in a classification expression.
        (Trac #4269, git 48be5f5ceaba6b0d0a2b31465e8a5904524e894c)

1108.   [bug]           pallotron
        perfdhcp uses the same transaction id throughout the DORA
        exchange to adhere with RFC 2131.
        (github #19, git d260a70d6aa0baecd68131bc35f58f097aa77bcc)
1107.   [func]          tmark
        The DDNS parameter, replace-client-name, has been changed from a boolean
        to list of modes, which provides greater flexibility in when the Kea
        servers replace or supply DNS names for clients.  This is supported both
        kea-dhcp4 and kea-dhcp6.
        (Trac #4529, git 45e56d7aa0d4a6224a1a28941f6cb11575391222)

1106.   [func]          marcin
        "circuit-id" can be specified as host identifier in host
        host reservations. However, the server ignores the reservations
        by "circuit-id" at this point.
        (Trac #4301, git cf56fc2a2e0e821a17dd95de49a43755745682fb)

1105.   [func]          sar
        Added access to the peer address, link address and option
        information added by relays in a DHCPv6 message.
        (Trac #4265, git bb00d9d205ee047961ba70417d7ce02c37d80ce7)

1104.   [bug]           stephen
        Made DHCPSRV_MEMFILE_LFC_UNREGISTER_TIMER_FAILED a debug message as the
        condition leading to it (trying to unregister a timer that is not
        registered) does not have an adverse effect on the operation of Kea.
        (Trac #4293, git 06204c5d347d0df359af69974c155d0fa9725b44)

1103.   [bug]           tmark
        Wrapped asio/asio.hpp with logic to suppress optimization when building
        under GCC 5.2.0 through 5.3.1 and BOOST_ERROR_CODE_HEADER only is defined.
        This avoids an issue in the asio socket layer that was incorrectly
        reporting socket read errors causing unit tests to fail and kea-dhcp-ddns
        to loop logger calls in the error handler (aka double errors).
        (Trac #4243, git 082f846f37cb32964c876b2bff5fcac82d1eaaf0)

1102.   [func]          marcin
        Updated Host Manager API to allow for retrieving host reservations
        by any type of host identifier. Previously it was only possible
        to retrieve host reservations by hardware address or DUID.
        (Trac #4302, git 3979656c918164e3c39e0e8fb78b2862a2b5e95a)

1101.   [func]          kalmus, marcin
        Implemented IPv6 address/prefix reservations in MySQL.
        (Trac #4212, git 79481043935789fc6898d4743bede1606f82eb75)

1100.   [func]          fdupont
        Reorganized the DHCPv4 and DHCPv6 services into run() (service
        loop), run_one() (receive, call next routine and send) and
        processPacket() (internal core processing of an incoming packet).
        (Trac #4108,#4266,#4267, git ba24bd770d1a1791f8fdc3df7f2e41f9f0c851ec)

1099.   [func]          tmark
        Both kea-dhcp4 and kea-dhcp6, now log the primary lease events (e.g.
        grants, renewals, releases, declines) at the INFO log level to the
        lease4_logger and lease6_logger respectively.  Prior to this these
        events were logged at the DEBUG log level.
        (Trac #4316, git 9beca27e3d76d0ccec925125f23074227db08869)

1098.   [bug]           fdupont
        Fixed some minor Coverity-detected issues.
        (Trac #4326, git ad1f442ee4382b354dc8be84ba77785e565aa86b)

1097.   [bug]           marcin
        libdhcpsrv: Fixed issues with lease indexing in Memfile
        database backend.
        (Trac #4339, git a065144663ac716b1fa1c8c224a88aa176da9630)

1096.   [bug]           fdupont
        Fixed Coverity-detected overflows in pkt4::setFile() and setName().
        (Trac #4306, git 0b7388891eaab39fe727b076468d672551126796)

1095.   [func]          marcin
        DHCP option values can be specified within host reservations
        in the configuration file.
        (Trac #4319, git 069dd7c248afcfcb7e4d958f20faa32e946e74ce)

1094.   [bug]           fdupont
        Fixed Coverity-detected exception-handling issues.
        (Trac #4307, git 3e1050749d9684144e1bd17552af7e4abf3c0d17)

1093.   [func]          fdupont
        Added support for IP address (IPv4 and IPv6) literals in
        classification expressions.
        (Trac #4232, git b98cc019b172a4903a2121e910f3cee4eaca2d51)

1092.   [func]          fdupont
        Added relay4[X].exists method in classifications that checks
        whether a sub-option is present in theDHCPv4 RAI (Relay Agent
        Information, 82) option.
        (Trac #4313, git 87397fd75215b69ad79708aaa1d7505aca299fb5)

1091.   [bug]           fdupont
        Protected DHCP server main() routines against errors raised from
        logger calls in the error handler (aka double errors).
        (Trac #4310, git 6813e1a7520335f6920ff8de5e52ecdb24712910)

1090.   [bug]           fdupont
        Empty option specifications no longer require setting the
        csv-format parameter.
        (Trac #4291, git 398458f3ad4680fd5f3c032eb6c99d50c2981368)

1089.   [func]          marcin
        The Host class has been extended to store DHCP options to
        be assigned to a client.
        (Trac #3571, git 9d434f28cc4683eccbcca1ba0d1e45bceb5230d2)

1088.   [bug]           sar
        Always copy the DHCPv4 flags field from a client's request to the
        the server's response.
        (Trac #4292, git 8b7182abdc7ff47eb9b68451e7507b7e4b9872e0)

1087.   [bug]           fdupont
        Removed obsolete requirement of python3 by --enable-generate-docs
        configuration option.
        (Trac #4315, git 2c236316d5fbac9906cf48a6e4df1649e7545e67)

1086.   [bug]           marcin
        When lease-database configuration parameter is not
        specified the default lease database backend (memfile)
        is used.
        (Trac #3696, git 0be5e6eb32680a742ddcf427b8181f55c0c98115)
1085.   [func]          fdupont
        The following DHCPv4 options are now supported:
                nisplus-domain-name (64),
                nisplus-servers (65),
                mobile-ip-home-agent (68),
                smtp-server (69),
                pop-server (70),
                nntp-server (71),
                www-server (72),
                finger-server (73),
                irc-server (74),
                streettalk-server (75)
                streettalk-directory-assistance-server (76)
        (Trac #4286, git 5ed03ed5ea48334bbd16a9a8e1676f3b4cc730a0)

1084.   [bug]           jpopelka
        Added missing slashed in
        (Github #10, git 8986813825623b19fb220534434d0c13785fc14c)

1083.   [func]          fdupont
        Added a concat function in classification which concatenates two
        (Trac #4233, git eec10b436b928bd5eb3139c2f98ec9a6a818f30e)

1082.   [func]          fdupont
        Added Not, And and Or logical operators, parentheses around
        logical expressions and option[code].exist logical predicate
        (to check the presence of an empty option).
        (Trac #4231, git 8e01dbe2fe2d8c97f89c20f5bb1d03748a2432e0)

1081.   [func]          tomek
        Client classification in DHCPv4 has been enhanced. It is now
        possible to access relay sub-options using the expression
        (Trac #4264, git c13791e916ceae9a73ca44005581e0e39385a572)

1080.   [func]          marcin
        perfdhcp now accepts -f option for DHCPv4 server testing, which
        enables lease renewals at the specified rate.
        (Trac #4254, git 8c5630b9ce6d3fba224f0643a7c69e4f7aaefca7)

Thank you again to everyone who assisted us in making this release
possible. If you would like to contribute to ISC to assist us in
continuing to make quality open source software, please visit our
donations page at

We look forward to receiving your feedback.

© 2001-2018 Internet Systems Consortium

For assistance with problems and questions for which you have not been able to find an answer in our Knowledge Base, we recommend searching our community mailing list archives and/or posting your question there (you will need to register there first for your posts to be accepted). The bind-users and the dhcp-users lists particularly have a long-standing and active membership.

ISC relies on the financial support of the community to fund the development of its open source software products. If you would like to support future product evolution and maintenance as well having peace of mind knowing that our team of experts are poised to provide you with individual technical assistance whenever you call upon them, then please consider our Professional Subscription Support services - details can be found on our main website.

  • There is no feedback for this article
Quick Jump Menu