mirror of
https://passt.top/passt
synced 2025-05-20 08:25:34 +02:00
ndp.c: Turn NDP responder into more declarative implementation
- Add structs for NA, RA, NS, MTU, prefix info, option header, link-layer address, RDNSS, DNSSL and link-layer for RA message. - Turn NA message from purely imperative, going byte by byte, to declarative by filling it's struct. - Turn part of RA message into declarative. - Move packet_add() to be before the call of ndp() in tap6_handler() if the protocol of the packet is ICMPv6. - Add a pool of packets as an additional parameter to ndp(). - Check the size of NS packet with packet_get() before sending an NA packet. - Add documentation for the structs. - Add an enum for NDP option types. Link: https://bugs.passt.top/show_bug.cgi?id=21 Signed-off-by: AbdAlRahman Gad <abdobngad@gmail.com> [sbrivio: Minor coding style fixes] Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
f6d5a52392
commit
c16141eda5
3 changed files with 244 additions and 77 deletions
5
tap.c
5
tap.c
|
@ -808,12 +808,13 @@ resume:
|
|||
if (l4len < sizeof(struct icmp6hdr))
|
||||
continue;
|
||||
|
||||
if (ndp(c, (struct icmp6hdr *)l4h, saddr))
|
||||
packet_add(pkt, l4len, l4h);
|
||||
|
||||
if (ndp(c, (struct icmp6hdr *)l4h, saddr, pkt))
|
||||
continue;
|
||||
|
||||
tap_packet_debug(NULL, ip6h, NULL, proto, NULL, 1);
|
||||
|
||||
packet_add(pkt, l4len, l4h);
|
||||
icmp_tap_handler(c, PIF_TAP, AF_INET6,
|
||||
saddr, daddr, pkt, now);
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue