Subject: Re: [PATCH net-next 1/1] net sched qdisc: pass netlink message flags in event notification

From: Roman Mashak <[email-masked]>
Date: Mon, 30 Oct 2017 14:07:27 -0400

Cong Wang <[email-masked]> writes:

> On Sat, Oct 28, 2017 at 8:36 PM, Roman Mashak <[email-masked]> wrote:
>> Cong Wang <[email-masked]> writes:
>>
>>> On Thu, Oct 26, 2017 at 2:40 PM, Roman Mashak <[email-masked]> wrote:
>>>> Userland client should be able to read an event, and reflect it back to
>>>> the kernel, therefore it needs to extract complete set of netlink flags.
>>>>
>>>> For example, this will allow "tc monitor" to distinguish Add and Replace
>>>> qdisc operations.
>>>>
>>>> Signed-off-by: Roman Mashak <[email-masked]>
>>>> ---
>>>>  net/sched/sch_api.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
>>>> index a9ac912..e3e29be 100644
>>>> --- a/net/sched/sch_api.c
>>>> +++ b/net/sched/sch_api.c
>>>> @@ -859,7 +859,7 @@ static int qdisc_notify(struct net *net, struct sk_buff *oskb,
>>>>         }
>>>>         if (new && !tc_qdisc_dump_ignore(new, false)) {
>>>>                 if (tc_fill_qdisc(skb, new, clid, portid, n->nlmsg_seq,
>>>> -                                 old ? NLM_F_REPLACE : 0, RTM_NEWQDISC) < 0)
>>>> +                                 n->nlmsg_flags, RTM_NEWQDISC) < 0)
>>>
>>>
>>> Don't you want to change the other tc_fill_qdisc() in the same function
>>> too? ;)
>>
>> The other tc_fill_qdisc generates RTM_DELQDISC event, in that case
>> netlink flags for user don't matter.
>
> Hmm, I thought you use RTM_NEWQDISC+RTM_DELQDISC to
> determine it is replacement, no?

Create is RTM_NEWQDISC and NLM_F_EXCL|NLM_F_CREATE, replacement is
RTM_NEWQDISC and NLM_F_REPLACE in netlink flags.