Hey Vladimir,

Medvedkin, Vladimir, Nov 03, 2026 at 18:24:
Yes, because the control plane will iterate over the RIB and will expect addresses to be in a consistent endianness.

Honestly, I would really prefer if that host-order thing was only an internal implementation detail of the FIB algorithm and that *all* user facing APIs only dealt with *network order* addresses.

But that would be a hard-break of the ABI. Would that be so terrible? Who reasonably needs IPv4 host-order addresses for real world applications?

I think we can't just give up host order, we need to maintain some level of backward compatibility with the good old LPM library. People have been using it for a long time and have built their code around its API, which uses host order in both the control and data planes.

Too bad, it was worth a try ;)

I would be interested to know which real applications use the LPM/FIB libraries. It would give us some confidence if we ever need to break the APIs.

FIB keeps the same semantics, which makes migrating from LPM straightforward. The problem with a hard break is not only the ABI, function prototypes remains the same (use uint32_t), so existing apps would still compile and links without warnings, they just will install byte-swapped routes.

Yeah, we had talked about this last year [1]. The solutions wouldn't be pretty. We would need to change the APIs to use a struct instead of integers. That wouldn't be that bad honestly.

[1] https://inbox.dpdk.org/dev/[email protected]/

Let's table this discussion for next time.

The existing RTE_FIB_F_LOOKUP_NETWORK_ORDER flag has been there since 24.11 and is part of two LTS releases, so I would keep it as is, at least for a while.

However you have a fair point about the RIB, it is exposed through rte_fib_get_rib(), it is not 100% internal, and user may expect to have the same byte order as was used for FIB add/del. I'm fine with propagating the flag to the internal RIB, although we can just mark host order in documentation.

So I'd suggest:
- keep host order (for both CP and DP ops) as default (to maintain alignment with legacy LPM)
- keep RTE_FIB_F_LOOKUP_NETWORK_ORDER unchanged (lookup only)
- add a new flag that makes all IPv4 operations (CP and DP) use network order (with this flag order propagated to the RIB if you think it would be better)

OK.

--
Robin

# Portions not affecting outcome have been edited for broadcast.

Reply via email to