On 09/05/18 03:20, Marek Lindner wrote: > On Sunday, May 6, 2018 4:23:37 AM HKT Sven Eckelmann wrote: >>> * batadv_tt_tvlv_generate() - fill the tvlv buff with the tt entries from >>> the * specified tt hash >>> * @bat_priv: the bat priv with all the soft interface information >>> @@ -2934,6 +2969,7 @@ static void batadv_tt_tvlv_generate(struct >>> batadv_priv *bat_priv, struct batadv_tvlv_tt_change *tt_change; >>> struct hlist_head *head; >>> u16 tt_tot, tt_num_entries = 0; >>> + int flags; >>> u32 i; >>> >>> tt_tot = batadv_tt_entries(tt_len); >>> @@ -2951,8 +2987,12 @@ static void batadv_tt_tvlv_generate(struct >>> batadv_priv *bat_priv, if ((valid_cb) && (!valid_cb(tt_common_entry, >>> cb_data))) >>> continue; >>> >>> + flags = batadv_tt_get_flags(tt_common_entry, >>> cb_data); + if (flags < 0) >>> + continue; >> >> The second argument of batadv_tt_get_flags is a little bit tricky here. The >> kernel-doc says that cb_data is "data passed to the filter function as >> argument" and is of type "void *". But you are now using it here as if would >> always be of type "struct batadv_orig_node *". This doesn't make problem >> for now because only two functions are using this argument - luckily they >> are either set it to NULL or to "batadv_orig_node *". >> >> I would propose to make it clear that this argument must be >> "struct batadv_orig_node *" and not an arbitrary argument which is only used >> by the valid_cb callback. > > I second that concern. An alternative suggestion: Modify > batadv_tt_local_valid() / batadv_tt_global_valid() to return the flags as > those functions already distinguish between the local and global case. > Moreover, you save the extra batadv_tt_global_orig_entry_find() call which > already happens in batadv_tt_global_valid().
I like Marek's idea, but I'd suggest to change the name of the tt_*_valid() functions to something a bit more generic. Apart from that I agree that that the flags retrieval could directly be done within the callback which already knows if we are in the local or global case. Cheers, -- Antonio Quartulli
signature.asc
Description: OpenPGP digital signature