All notable changes to this project will be documented in this file.
v3.0.4 - 2023-10-10
- Fix licensing inconsistencies.
- Add support for the latest versions of Python.
- Remove mentions of Python 3.6.
v3.0.3 - 2022-02-06
- Add the
sock
property to theICMPSocket
class.
v3.0.2 - 2021-10-31
- Add support for IPv6 addresses with zone index.
- The
payload
property of anICMPRequest
now returns a random value if the payload is not defined instead ofNone
. - Optimize imports.
v3.0.1 - 2021-08-14
- Make the
SocketPermissionError
more explicit when the OS does not allow instantiation of unprivileged sockets. - Delete unnecessary properties from exceptions.
- Improve SEO on GitHub.
v3.0.0 - 2021-06-01
icmplib 3.0 is here! 🚀
- The library is now asynchronous!
- Introduce new functions:
async_ping
,async_multiping
andasync_resolve
. - Add a new
AsyncSocket
class to make an ICMP socket asynchronous.
- Introduce new functions:
- Rewrite models:
- All the properties of
Host
andHop
classes are now lazy. - Add new properties to the
Host
andHop
classes: you can retrieve the list of round-trip times and calculate the jitter. - Add the metaclass
__str__
to visualize the results more easily.
- All the properties of
- Rewrite the
ping
,multiping
andtraceroute
functions:- The identifier of ICMP requests is now handled automatically by the library.
- Add the ability to set the address family if a hostname or an FQDN is specified.
- A new implementation is used for the
multiping
function. It should be more reliable. - The
multiping
function is now in a dedicated module.
- Rewrite the documentation to help you get started with icmplib.
- Improve the
resolve
function to return all IP addresses found. - Add the
is_hostname
function to check if a string is a hostname or an FQDN. - Delete the experimental class
BufferedSocket
, replaced byAsyncSocket
. - Performance and compatibility improvement.
- Many other small changes and fixes.
Special thanks to @JonasKs and @bdraco for their suggestions, advice and feedback!
Python 3.7 or later is now required.
v2.1.1 - 2021-03-21
- 🐛 Revert changes made to the
traceroute
function due to a bug.
This version is the last of the 2.x branch. See you soon for the release of icmplib 3.0!
v2.1.0 - 2021-03-20
- Add a
family
parameter to theresolve
function to define the address family. - Improve the reliability of the results of the
traceroute
function.
v2.0.2 - 2021-02-07
- Rename the default branch from
master
tomain
. - Add more details about the
privileged
parameter in theREADME
file (part 2). - 🐛 Fix a bug preventing the
traceroute
function to work with IPv6 addresses (part 2).
v2.0.1 - 2020-12-12
- Handle
EACCES
errors at sockets level. - Add some details about the
privileged
parameter in theREADME
file. - 🐛 Fix a bug preventing the
traceroute
function to work with IPv6 addresses.
v2.0.0 - 2020-11-15
icmplib 2.0 is here! 🚀
- New library architecture.
- Add a new
multiping
function. This function will be faster and more memory efficient. - Add the ability to use the library without root privileges.
- Add the ability to set a source IP address for sending your ICMP packets.
- Add a
first_hop
parameter to thetraceroute
function to set the initial time to live value (@scoulondre). - Add two new exceptions:
NameLookupError
: raised when the requested name does not exist or cannot be resolved.SocketAddressError
: raised when the requested address cannot be assigned to the socket.
- Add a new
BufferedSocket
class (experimental) to send several packets simultaneously without waiting for a response. - The
receive
method of sockets can receive all incoming packets. - Throw new exceptions when instantiating sockets, sending and receiving packets.
- Improve the
resolve
function:- A
NameLookupError
is now raised if the requested name does not exist or cannot be resolved.
- A
- Improve compatibility with Linux, macOS and Windows.
- Delete deprecated properties.
- Update docstrings, examples and documentation.
Compatibility with existing programs is maintained.
v1.2.2 - 2020-10-10
- Add support for hostnames and FQDN resolution to IPv6 addresses.
- Performance improvement.
v1.2.1 - 2020-09-26
- 🐛 Fix an issue in the
traceroute
function which gave the wrong value for theavg_rtt
property (@patrickfnielsen).
v1.2.0 - 2020-09-12
- Add the ability to modify the traffic class of ICMP packets.
- Add new optional parameters to the
traceroute
function. - Add a new exception
SocketUnavailableError
when an action is performed while a socket is closed. - Add a warning message on deprecated properties.
- Explicit closure of sockets on built-in functions.
- 🐛 Fix a bug when ICMP responses are not correctly formatted (part 2).
v1.1.3 - 2020-09-03
- 🐛 Fix a bug when ICMP responses are not correctly formatted.
v1.1.2 - 2020-08-29
- 🐛 Fix a compatibility issue.
v1.1.1 - 2020-07-10
- 🐛 Fix a bug when the source host does not have an IP address.
v1.1.0 - 2020-06-25
- Add support for odd size payloads.
- Normalize the names of variables and properties:
ICMPReply
class: thereceived_bytes
property is deprecated. Usebytes_received
instead.Host
andHop
classes: thetransmitted_packets
property is deprecated. Usepackets_sent
instead.Host
andHop
classes: thereceived_packets
property is deprecated. Usepackets_received
instead.
- Normalize docstrings.
- Optimizations.
v1.0.4 - 2020-06-14
- Add the
is_closed
property to theICMPSocket
class. - Round round-trip time values by default.
- Add an index for examples.
- 🐛 Fix a bug in the
multiping
function where theid
parameter was ignored. - 🐛 Fix a bug in the
ICMPSocket
class when instantiated without root privileges.
v1.0.3 - 2020-05-09
- Add the ability to customize the payload.
- Improve the
ping
andmultiping
functions:- You can pass arguments to the
ICMPRequest
object using keywords arguments**kwargs
.
- You can pass arguments to the
- Update some docstrings.
- Add new examples.
v1.0.2 - 2019-10-20
- Change the license. This project now uses the more permissive license LGPLv3.
v1.0.1 - 2019-10-07
- Add some examples.
- Rename
model.py
tomodels.py
. - Update setup keywords.
v1.0.0 - 2019-09-29
- 🎉 Initial release.