Objective: Enhance the lib/layers module by introducing an ICMP layer that can read and create ICMP packets, aligning with the existing layer interface structure.
Detailed Description
The ICMP (Internet Control Message Protocol) layer is used by network devices, including routers, to send error messages and operational information indicating success or failure when communicating with another IP address. Implementing this layer will enable our library to handle ICMP packets, both in parsing and creation scenarios.
Starting Point
For the implementation, please refer to the existing exampleLayer.js in lib/layers as a base structure for the new layer.
Requirements:
ICMP Layer Implementation: The ICMP layer should be capable of understanding and constructing ICMP packets. It should adhere to the specifications outlined for ICMP packets, including fields like type, code, checksum and the rest.
Interface Compliance: The new ICMP layer must comply with the existing layer interface to ensure compatibility with the rest of the library. This includes implementing any required methods and properties defined in the layer interface.
Testing: Comprehensive tests must be written to cover:
Parsing ICMP packets from a buffer and verifying the accuracy of the parsed data.
Creating ICMP packets and ensuring the generated buffer is correct as per ICMP specifications.
Comparison with existing protocol layers and their tests for consistency in implementation and testing approach.
Reference:
Developers should refer to the implementation and tests of adjacent protocols within the lib/layers directory for guidance on structure, coding standards, and testing methodologies.
Outcome: By introducing ICMP layer support, the library will be significantly more versatile in handling network traffic, paving the way for more advanced features and use cases.
Next Steps:
Review the ICMP protocol specifications.
Design the ICMP layer interface in alignment with the existing layer structure.
Implement the ICMP layer, followed by the development of unit tests.
Perform thorough testing to ensure reliability and compliance with ICMP standards.
Contributions: We welcome contributions for this feature. If you are interested in working on this, please comment below, and let's discuss how we can collaborate effectively. For any questions or to propose implementation details, feel free to reach out or start a discussion in this issue.
Feature Request: ICMP Layer Support
Objective: Enhance the
lib/layers
module by introducing an ICMP layer that can read and create ICMP packets, aligning with the existinglayer
interface structure.Detailed Description
The ICMP (Internet Control Message Protocol) layer is used by network devices, including routers, to send error messages and operational information indicating success or failure when communicating with another IP address. Implementing this layer will enable our library to handle ICMP packets, both in parsing and creation scenarios.
Starting Point
For the implementation, please refer to the existing
exampleLayer.js
inlib/layers
as a base structure for the new layer.Requirements:
ICMP Layer Implementation: The ICMP layer should be capable of understanding and constructing ICMP packets. It should adhere to the specifications outlined for ICMP packets, including fields like
type, code, checksum
and the rest.Interface Compliance: The new ICMP layer must comply with the existing
layer
interface to ensure compatibility with the rest of the library. This includes implementing any required methods and properties defined in thelayer
interface.Testing: Comprehensive tests must be written to cover:
Reference:
Developers should refer to the implementation and tests of adjacent protocols within the
lib/layers
directory for guidance on structure, coding standards, and testing methodologies.Outcome: By introducing ICMP layer support, the library will be significantly more versatile in handling network traffic, paving the way for more advanced features and use cases.
Next Steps:
Contributions: We welcome contributions for this feature. If you are interested in working on this, please comment below, and let's discuss how we can collaborate effectively. For any questions or to propose implementation details, feel free to reach out or start a discussion in this issue.