On 21 Jan 2025, at 15:32, [email protected] wrote:
> Thanks for the review Ilya,
> honestly I was skeptical about how could those prerequisite-patch-id
> hashes work, but I saw it in other patch series, so I gave it a shot :D
>
> Thanks for the formatting comments, I'll apply them in v4, but I'll
> wait first for technical review.
I think it looks good (from visual inspection). Please go ahead with posting a
v4, and I’ll review it (and maybe Frode can have another look also).
Cheers,
Eelco
> Martin.
>
> On Tue, 2025-01-21 at 15:03 +0100, Ilya Maximets wrote:
>> On 1/21/25 11:44, Martin Kalcok wrote:
>>
>> Hi, Martin. Thanks for the patch.
>>
>> I'll let Eelco to reply with a technical review. But see some style
>> and
>> formatting comments below.
>>
>> Best regards, Ilya Maximets.
>>
>>> A recent commit added condition to "route_table_parse__" function
>>> that
>>> causes it to throw an error when parsing route without "nexthop
>>> information" (either RTA_OIF, RTA_GATEWAY, RTA_VIA or
>>> RTA_MULTIPATH). While
>>> this requirement is reasonable for regular routes, there are some
>>> route types
>>> that don't need nexthop. We intend to use one of these types,
>>> (RTN_BLACKHOLE)[0], in OVN for route advertising .
>>>
>>> This change does not enforce the above-mentioned condition for
>>> those special
>>> route types that don't require "nexthop information".
>>>
>>> v3:
>>> * Fix typo in arguments for the "route_type_needs_nexthop"
>>> function
>>>
>>> v2:
>>> * Ensure that the list of nexthops is cleared if the route does
>>> not have
>>> them.
>>> * The function for determining whether a route requires nexthop
>>> now takes
>>> route_type (unsigned char) as an argument directly. Previously
>>> it
>>> took a pointer to rtmsg struct.
>>> * The patch is rebased on top of the in-flight patch series by
>>> Frode[1]
>>> * Fixed typos.
>>
>> This should not be in the commit message. Patch version history
>> should be
>> under the cut line ("---"), so it doesn't end up in git.
>>
>>>
>>> [0]
>>> https://mail.openvswitch.org/pipermail/ovs-dev/2025-January/419383.html
>>> [1]
>>> https://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/
>>>
>>> CC: Frode Nordahl <[email protected]>
>>> Fixes: 91fc51106cfe ("route-table: Support parsing multipath
>>> routes.")
>>> Signed-off-by: Martin Kalcok <[email protected]>
>>> ---
>>> lib/route-table.c | 28 ++++++++++++++++++++++++++--
>>> 1 file changed, 26 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/lib/route-table.c b/lib/route-table.c
>>> index 6dfb364a4..ecc7fd7e5 100644
>>> --- a/lib/route-table.c
>>> +++ b/lib/route-table.c
>>> @@ -226,6 +226,23 @@ route_table_reset(void)
>>> }
>>> }
>>>
>>> +/* Returns true if the given route requires nexthop information
>>> (output
>>> + * interface, nexthop IP, ...). Returns false for special route
>>> types
>>> + * that don't need this information. */
>>> +static bool
>>> +route_type_needs_nexthop(unsigned char rtmsg_type) {
>>
>> '{' should be on a new line for function definitions.
>>
>>> + switch (rtmsg_type) {
>>> + case RTN_BLACKHOLE:
>>> + case RTN_THROW:
>>> + case RTN_UNREACHABLE:
>>> + case RTN_PROHIBIT:
>>> + return false;
>>
>> An empty line here.
>>
>>> + default:
>>> + return true;
>>
>> Cases should be on the same level with the switch.
>>
>>> + }
>>> +}
>>> +
>>> +
>>
>> One too many empty lines.
>>
>>> static int
>>> route_table_parse__(struct ofpbuf *buf, size_t ofs,
>>> const struct nlmsghdr *nlmsg,
>>> @@ -450,13 +467,20 @@ route_table_parse__(struct ofpbuf *buf,
>>> size_t ofs,
>>> ofpbuf_uninit(&mp_buf);
>>> }
>>> }
>>> - if (!attrs[RTA_OIF] && !attrs[RTA_GATEWAY]
>>> - && !attrs[RTA_VIA] && !attrs[RTA_MULTIPATH]) {
>>> + if (route_type_needs_nexthop(rtm->rtm_type) &&
>>> !attrs[RTA_OIF]
>>
>> I'd suggest to break the line after the function call and have
>> two attr checks per line on subsequent lines.
>>
>>> + && !attrs[RTA_GATEWAY] && !attrs[RTA_VIA]
>>> + && !attrs[RTA_MULTIPATH]) {
>>> VLOG_DBG_RL(&rl, "route message needs an RTA_OIF,
>>> RTA_GATEWAY, "
>>> "RTA_VIA or RTA_MULTIPATH
>>> attribute");
>>> goto error_out;
>>> }
>>> /* Add any additional RTA attribute processing before
>>> RTA_MULTIPATH. */
>>> +
>>> + /* Ensure that the change->rd->nexthops list is cleared in
>>> case that
>>> + * the route does not need a next hop. */
>>> + if (!route_type_needs_nexthop(rtm->rtm_type)) {
>>> + route_data_destroy_nexthops__(&change->rd);
>>> + }
>>> } else {
>>> VLOG_DBG_RL(&rl, "received unparseable rtnetlink route
>>> message");
>>> goto error_out;
>>>
>>> base-commit: caed64d1685409d1f9b53b35621a08ad6588200c
>>> prerequisite-patch-id: 9d606dcf57f9213291028029f2a71a43f346ce1e
>>> prerequisite-patch-id: b61606e7f32fede1bd34248957f67d72040be326
>>> prerequisite-patch-id: 907ead49b46ccf4b2e81e9f49f535788e592348b
>>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev