This commit adds support for the Real-time Transport Protocol (RTP) as
defined in RFC 3550. Some tests have also been added to ensure that the
RTP PDU class functionality is working as expected.
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Based on RFC 7348, the default IANA-assigned destination UDP port number
for VXLAN is 4789, not the source port number. Update the value in the
VXLANTest class to align with the RFC.
The VXLAN implementation still allows for the destination port number to
be configurable to allow interoperability (as specified by the RFC),
such as with the Linux kernel's default value of 8472.
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
This patch adds a new PDU class to support VXLAN. Several VXLAN-related
tests have also been added.
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
According to the C/C++ Standard, for shift operations, the behavior is undefined if the right operand is equal to the width of the promoted left operand.
On a 64-bit Windows machine, this causes IP addresses 0.0.0.0 and 255.255.255.255 to have the same internal representation, leading to various issues when using a /0 prefix.
* Add parsing of well known IPv6 extension headers
Add classes for IPv6 extension headers defined in the IPv6 protocol
specification (RFC 2460) as well as functions for creating them from
the IPv6 class' ext_header type.
The currently known extension headers are Hop-By-Hop Option,
Destination Routing, Routing and Fragment.
* Cleanup after PR #287 comments
Pull in stuff from the std namespace with "using" instead of
qualifying with std::.
Keep starting braces on the same line.
Avoid potential copy when appending to vector.
* * add or-operator and a simlple unit test for hw_address, ip_address, ipv6_address
* add not-operator and a simlple unit test for hw_address, ip_address, ipv6_address
* add greater-then-operator and a simlple unit test for ipv6_address
* add new constructor and a simlple unit test for network_interface, which use a ipv6_address to find the nic
* add override the function gateway_from_ip for ipv6_address parameter (untested)
* change the ipv6_address in NotMaskAdress_Test, so that the expceted addresses are valid for the winsock api
* Delete CMakeLists.txt.user
* * add <=, >, >= operator for HWAddress with tests
* add <=, >, >= operator for IPv4Address with tests
* add <=,>= operator for IPv6Address with tests
* refactoring the & , |, ~ operator of ipv6_address to "regular" operator
This was broken by design. Each header held the next header's
type, which made iterating through them very tricky (you'd have
to look at the previous header's next header value to know the
current one while doing so).
Now each header contains its own value and the next header
value is computed during serialization and then reverted back
after that.