-
Notifications
You must be signed in to change notification settings - Fork 21
Misc fixes #393
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Misc fixes #393
Conversation
Fix a race condition where we get a packet on interface creation before every thing is properly set up. Fixes: 35a0677 ("ndp: handle nexthop updates in control plane") Signed-off-by: Christophe Fontaine <[email protected]>
Current synchronisation pushes a /128 for all ip6 addresses. Yet, a /64 is required for link local addresses, so OSPF6d can reach its neighbors. Signed-off-by: Christophe Fontaine <[email protected]>
rte_ipv6_llocal_from_ethernet doesn't comply with RFC 2491 appendix A which defines the Modified EUI-64. http://tools.ietf.org/html/rfc4291#appendix-A The first byte should be xor'ed with 0x02. Signed-off-by: Christophe Fontaine <[email protected]>
Add missing string in the debug function 'gr_req_type_to_str'. Fixes: 5e970e0 ("frr: use tunsrc api") Signed-off-by: Christophe Fontaine <[email protected]>
Add new fields in the existing stats structure to track the number of packets sent/received by the control plane interfaces, gr-loop included. Signed-off-by: Christophe Fontaine <[email protected]>
📝 WalkthroughWalkthroughAdds four per-interface core-pinned counters (cp_rx_packets, cp_rx_bytes, cp_tx_packets, cp_tx_bytes) across infra and control modules: initialized, aggregated per-core, emitted in telemetry, and shown in CLI. Updates loopback to increment these counters. Adjusts netlink address add/del to use /64 for IPv6 link-local addresses (otherwise /128). Alters IPv6 post-add handling to flip bit 0x02 of MAC first byte before deriving the link-local address. Adds a NULL check in ndp_probe_input_cb to skip processing when L3 nexthop state is missing. Extends zebra request-type string mapping with two entries. Pre-merge checks❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (8)
🚧 Files skipped from review as they are similar to previous changes (4)
🧰 Additional context used📓 Path-based instructions (1)**/*.{c,h}⚙️ CodeRabbit configuration file
Files:
🧠 Learnings (3)📓 Common learnings📚 Learning: 2025-09-09T09:22:31.596ZApplied to files:
📚 Learning: 2025-09-09T06:02:47.703ZApplied to files:
🧬 Code graph analysis (1)modules/infra/api/stats.c (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
🔇 Additional comments (6)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
0935191 to
b186e0b
Compare
| // Modify the mac address to match a Modified EUI-64 | ||
| mac.addr_bytes[0] ^= 0x02; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should fix this in DPDK?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DPDK states compliance against RFC 2464.
/*
* Generate a link-local IPv6 address from an Ethernet address as specified in
* RFC 2464, section 5.
*
* @param[out] ip
* The link-local IPv6 address to generate.
* @param[in] mac
* An Ethernet address.
*/
static inline void
rte_ipv6_llocal_from_ethernet(struct rte_ipv6_addr *ip, const struct rte_ether_addr *mac)
Section 5 points at section 4 of this RFC and reads like:
The Interface Identifier is then formed from the EUI-64 by
complementing the "Universal/Local" (U/L) bit, which is the next-to-
lowest order bit of the first octet of the EUI-64. Complementing
this bit will generally change a 0 value to a 1, since an interface's
built-in address is expected to be from a universally administered
address space and hence have a globally unique value. A universally
administered IEEE 802 address or an EUI-64 is signified by a 0 in the
U/L bit position, while a globally unique IPv6 Interface Identifier
is signified by a 1 in the corresponding position. For further
discussion on this point, see [[AARCH](https://datatracker.ietf.org/doc/html/rfc2464#ref-AARCH)].
The reference AARCH is a link to the discussion on IPv6 address architecture, which is current RFC 4291.
So it indeed seems like DPDK should be fixed.
Summary by CodeRabbit
New Features
Bug Fixes