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

From: Roman Mashak <[email-masked]>
Date: Thu, 02 Nov 2017 18:44:48 -0400

Cong Wang <[email-masked]> writes:

> On Mon, Oct 30, 2017 at 2:17 PM, Roman Mashak <[email-masked]> wrote:
>> Cong Wang <[email-masked]> writes:
>>
>>> On Mon, Oct 30, 2017 at 11:07 AM, Roman Mashak <[email-masked]> wrote:
>>>> Cong Wang <[email-masked]> writes:
>>>>
>>>>> On Sat, Oct 28, 2017 at 8:36 PM, Roman Mashak <[email-masked]> wrote:
>>>>>> Cong Wang <[email-masked]> writes:
>>>>>
>>>>> 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.
>>>
>>> Is there any reason we can't use RTM_NEWQDISC+RTM_DELQDISC
>>> rather than NLM_F_REPLACE to determine it is replacement?
>>>
>>
>> I'm not sure this would be valid semantics for replace operation, look at
>> the rfc3549:
>>
>> Additional flag bits for NEW requests
>>           NLM_F_REPLACE   Replace existing matching config object with
>>                           this request.
>>
>
> I am not saying NLM_F_REPLACE is not correct, I am saying the
> RTM_NEWQDISC+RTM_DELQDISC in a same message probably
> exists for a reason.
>
>
>>> Note, RTM_NEWQDISC+RTM_DELQDISC are put in a same
>>> message not two.
>>
>> Hmm, could you clarify how do you expect to put two event IDs in nlmsg_type?
>
> Looking at qdisc_notify(), it is essentially two skb_put() on a same
> skb, right? So two nlmsghdr in one skb? Or I read it wrong?

So there will be two netlink messages in a single skb, and the user
receives two events. But apparently this only happens when a new
_egress_ qdisc is being added and the default egress qdisc is deleted.